MINI Sh3ll
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
use Validator;
use Response;
use App\Solar\Repositories\User\UserInterface;
use App\Solar\Repositories\Enquiry\EnquiryInterface;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use App\Notifications\SupportMail;
use App\User;
use App\Models\Module;
use App\Models\ModulePermission;
use App\Models\Company;
use App\Models\Panel;
use App\Models\RegisterAPI;
use App\Solar\Repositories\Treepye\TreepyeInterface;
class HomeController extends Controller {
/**
* Create a new controller instance.
*
* @return void
*/
private $user;
public function __construct(UserInterface $user, EnquiryInterface $enquiry,TreepyeInterface $api) {
$this->middleware('auth')->except(['rejectInvitation']);
$this->user = $user;
$this->enquiry = $enquiry;
$this->api = $api;
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Contracts\Support\Renderable
*/
public function test() {
$breadcrumb = breadCrumb('Dashboard', 'home', '');
$companies = $this->user->getCompany();
$panelDetails = User::with('company_users','company_users.panels')->where('id',Auth::id())->get();
return view('home1', compact('breadcrumb','companies','panelDetails'));
}
public function index(Request $request) {
$breadcrumb = breadCrumb('Dashboard', 'home', '');
$companies = $this->user->getCompany();
$panelDetails = User::with('company_users','company_users.panels')->where('id',Auth::id())->get();
//Fetch API Listinig Details
$companyID = $request->input('param',$companies->pluck('id')->first());
$apiListings = Panel::with('register_api')->where("company_id",$companyID)->get();
list($numericAPI, $graphicalAPI) = $apiListings->partition(function($item) {
return $item->register_api->plot_type==2;
});
$plants = $request->input('plant',[]);
return view('home', compact('breadcrumb','companies','panelDetails','numericAPI','graphicalAPI','companyID','plants'));
}
public function supportView() {
$breadcrumb = breadCrumb('Support', 'support-user', '');
return view('layouts.support', compact('breadcrumb'));
}
public function profile() {
$breadcrumb = breadCrumb('User', 'home', 'Profile');
$user = Auth::user();
return view('auth.profile', compact('user', 'breadcrumb'));
}
public function profileUpdate(Request $request) {
$validatedData = $request->validate([
'first_name' => 'required|min:3',
'last_name' => 'required|min:3',
]);
$updateData = $this->user->update_profile($request);
return redirect()->back()->with('success', 'Profile Updated successfully.');
}
public function changePassword() {
$breadcrumb = breadCrumb('User', 'home', 'Change Password');
return view('auth.passwords.change_password', compact('breadcrumb'));
}
public function updatePassword(Request $request) {
$validatedData = $request->validate([
'current_password' => 'required|min:6|max:16',
'password' => 'required|min:6|max:16|confirmed',
'password_confirmation' => 'required|min:6|max:16',
]);
$updateData = $this->user->updatePassword($request);
if ($updateData == 1) {
return redirect()->back()->with('success', 'Password update successfully');
} else if ($updateData == 2) {
return redirect()->back()->with('error', 'You enter new password same as current password');
}
return redirect()->back()->with('error', 'You enter incorrect current password');
}
public function checkCurrentPassword(Request $request) {
$user = \Auth::user();
if ($checkCurerent = Hash::check($request->current_password, $user->password)) {
return response::json('success', 200);
} else {
return response::json('not match', 404);
}
}
public function checkPassword(Request $request) {
$user = \Auth::user();
// check new password with current password
if ($check = Hash::check($request->password, $user->password)) {
return response::json('same as current password', 404);
} else {
return response::json('success', 200);
}
}
public static function getMenus() {
$menusData = Module::whereHas('module_permissions', function($q) {
$q->where('status', '=', '1');
$q->where('user_id', '=', Auth::user()->id);
})->orderBy('id', 'asc')->get();
return $menusData;
}
public static function getSubMenus($menu_id) {
$subMenusData = Module::whereHas('module_permissions', function($q) use($menu_id) {
$q->where('status', '=', '1');
$q->where('user_id', '=', Auth::user()->id);
$q->where('parent_id', '=', $menu_id);
})->orderBy('id', 'asc')->get();
return $subMenusData;
}
public function sendSupportMail(Request $request) {
try {
$user = Auth::user();
$user->response_to = $request->response_to;
$user->message = $request->message;
//Send support mail to portal support
$user->notify(new SupportMail($user));
return redirect()->route('support-user')->with('success', 'Email sent successfully.');
} catch (Exception $exc) {
return redirect()->route('support-user')->with('error', $exc->getMessage());
}
}
public function addPanel() {
$breadcrumb = breadCrumb('Dashboard', 'home', '');
$companies = $this->user->getCompany();
$chartTypes = config('chart.types');
$registerAPI = RegisterAPI::get();
return view('dashboard.add_panel', compact('breadcrumb','companies','chartTypes','registerAPI'));
}
public function getCompanyPlants(Request $request)
{
$company_id = $request->company_id;
$plants = $this->user->getPlants($company_id);
return \Response::json($plants);
}
/*
* Get charts according panel
*/
public function getCharts(Request $request)
{
$key = $request->key;
$charts = config('charts_constant.'.$key);
return response::json($charts);
}
/*
* Delete records, if user reject the invitation
*/
public function rejectInvitation($id) {
$userId = decrypt($id);
$user = $this->user->find($userId);
$user->forceDelete();
return redirect()->route('invitation')->with('success', 'You have rejected this invitation.');
}
public function invitationView() {
return view('invite');
}
/*
* display privacy page
*/
public function privacy() {
try{
$breadcrumb = breadCrumb('Privacy', 'privacy', '');
return view('dashboard.privacy', compact('breadcrumb'));
}catch(Exception $ex) {
}
}
/*
* display terms and condistion page
*/
public function termsAndConditions() {
try{
$breadcrumb = breadCrumb('Terms and Condition', 'terms-and-conditions', '');
return view('dashboard.terms', compact('breadcrumb'));
}catch(Exception $ex) {
}
}
/*
* display about us page
*/
public function about() {
try{
$breadcrumb = breadCrumb('About-Us', 'about', '');
return view('dashboard.about', compact('breadcrumb'));
}catch(Exception $ex) {
}
}
/*
* Get State details
*/
public function getStates(Request $request) {
$countryData = array();
try{
$countryData = $this->user->getState($request);
}catch(Exception $ex){
$countryData = array();
}
return \Response::json($countryData);
}
/*
* load SMS Setting form
*/
public function smsSetting(){
try{
$breadcrumb = breadCrumb('SMS Setting', 'sms-setting', '');
$getDetails = $this->user->getSettingDetails();
return view('dashboard.sms_setting', compact('getDetails','breadcrumb'));
}catch(Exception $ex) {
}
}
/*
* load SMS Setting form
*/
public function smsSettingStore(Request $request , $id){
try {
$storeDetails = $this->user->storeSettingDetails($request,$id);
DB::commit();
return redirect()->route('home')->with('success', 'SMS Details Update successfully.');
} catch (\Exception $e) {
DB::rollBack();
logger($e->getMessage());
return redirect()->back()->with('error', $e->getMessage());
}
}
}
OHA YOOOO