MINI Sh3ll
<?php
namespace App\Http\Controllers;
use App\Http\Requests\CompnayUsersRequest;
use App\Http\Requests\CompnayUsersUpdateRequest;
use App\Solar\Repositories\User\UserInterface;
use App\Solar\Repositories\Plant\PlantInterface;
use App\Solar\Repositories\Spcl_user\SpclInterface;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Arr;
class CompanyUsersController extends Controller {
private $companyUser;
private $plant;
public function __construct(UserInterface $companyUser, PlantInterface $plant, SpclInterface $scpluser) {
//$this->middleware('hasAccess', ['except' => ['getAllUsers','getRegisteredUser','getNonRegisteredUser','deleteInvitedUser']]);
$this->companyUser = $companyUser;
$this->plant = $plant;
$this->scpluser = $scpluser;
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index() {
$breadcrumb = breadCrumb('Invite User', 'all-users.index', '');
return view('users.index', compact('breadcrumb'));
}
public function getAllUsers() {
$returnArray = array();
try {
$users = $this->companyUser->getUser();
foreach ($users as $user) {
$id = $user->user->id;
$name = ucfirst($user->user->first_name) . ' ' . ucfirst($user->user->last_name);
$email = $user->user->email;
$mobile = $user->user->mobile;
$regisStatus = $user->user->mobile?'Registered':'Non-registered';
$regisDate = date('d-m-Y', strtotime($user->user->created_at));
$company = $user->company->company_name;
$invite_by = $this->companyUser->getUserName($user->user->invited_by);
$invited_by_name = $invite_by->first_name.' '.$invite_by->last_name;
$status = ($user->user->status == 1) ? '<span class="m-badge m-badge--primary m-badge--wide">Active</span>' : '<span class="m-badge m-badge--danger m-badge--wide">InActive</span>';
$action = '<div class="btn-group mr-2" role="group" aria-label="First group">
<a class="m-btn btn btn-secondary" href=' . route("all-users.edit", encrypt($user->user->id)) . '>
<i class="la la-edit"></i>
</a>
<a class="m-btn btn btn-secondary delete_user" data-id=' . $id . ' href="javascript:void(0);">
<i class="la la-trash"></i>
</a>
<a class="m-btn btn btn-secondary" href=' . route("all-users.show", encrypt($user->user->id)) . '>
<i class="la la-eye"></i>
</a>
</div>';
$returnArray[] = array($name, $email, $mobile, $regisStatus,$regisDate, $company,$invited_by_name, $status, $action);
}
} catch (Exception $ex) {
$returnArray = array();
}
return json_encode(['data' => $returnArray]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create() {
$breadcrumb = breadCrumb('User', 'all-users.index', 'Invite');
$companies = $this->plant->getCompanies();
return view('users.create', compact('companies', 'breadcrumb'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(CompnayUsersRequest $request) {
DB::beginTransaction();
try {
$this->companyUser->store($request);
DB::commit();
return redirect()->route('all-users.index')->with('success', 'User Invited successfully.');
} catch (\Exception $e) {
DB::rollBack();
logger($e->getMessage());
return redirect()->back()->with('error', $e->getMessage());
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id) {
$breadcrumb = breadCrumb('User', 'all-users.index', 'Show');
$userCompanies = $this->companyUser->getUserCompanies(decrypt($id));
$user = $this->companyUser->find(decrypt($id));
return view('users.show', compact('user', 'breadcrumb', 'userCompanies'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id, $url = null) {
$breadcrumb = breadCrumb('User', 'all-users.index', 'Edit');
$userCompanies = $this->companyUser->getUserCompanies(decrypt($id));
$user = $this->companyUser->find(decrypt($id));
$modules = $this->scpluser->getModules();
return view('users.edit', compact('user', 'url', 'modules', 'breadcrumb', 'userCompanies'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(CompnayUsersUpdateRequest $request, $id) {
$url = $request->url;
DB::beginTransaction();
try {
$this->companyUser->update($id, $request);
DB::commit();
if ($url == 'registered_user') {
return redirect()->route('registered')->with('success', 'User updated successfully.');
}
if ($url == 'company_user') {
return redirect()->route('company.index')->with('success', 'User updated successfully.');
}
if ($url == 'plant_user') {
return redirect()->route('plant.index')->with('success', 'User updated successfully.');
}
return redirect()->route('all-users.index')->with('success', 'User updated successfully.');
} catch (\Exception $e) {
DB::rollBack();
logger($e->getMessage());
return redirect()->back()->with('error', $e->getMessage());
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy(Request $request) {
DB::beginTransaction();
try {
$this->companyUser->destroy($request['id']);
DB::commit();
return json_encode(['status' => 1, 'success' => 'Non registered user deleted successfully.']);
} catch (\Exception $exc) {
DB::rollBack();
logger($exc->getMessage());
return redirect()->back()->with('error', $exc->getMessage());
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function deleteInvitedUser(Request $request) {
DB::beginTransaction();
try {
$this->companyUser->delete($request['id']);
DB::commit();
return json_encode(['status' => 1, 'success' => 'Invited user deleted successfully.']);
} catch (\Exception $exc) {
DB::rollBack();
logger($exc->getMessage());
return redirect()->back(
)->with('error', $exc->getMessage());
}
}
public function nonRegisteredUser() {
$breadcrumb = breadCrumb('User', 'nonRegistered', '');
$companies = $this->plant->getCompanies();
$roles = array_except(config('constants.role'),array('superadmin','scpl_user'));
return view('users.non_registered', compact('companies','roles', 'breadcrumb'));
}
public function registeredUser() {
$breadcrumb = breadCrumb('User', 'registered', '');
$companies = $this->plant->getCompanies();
$roles = array_except(config('constants.role'),array('superadmin','scpl_user'));
return view('users.registered', compact('companies','roles','breadcrumb'));
}
public function getRegisteredUser(Request $request) {
$returnArray = array();
try {
$name = $name = $request->name?$request->name:'';
$company_id = $request->company?$request->company:'';
$role_id = $request->role?$request->role:'';
$users = $this->companyUser->getRegistered($name, $company_id,$role_id);
foreach ($users as $user) {
$id = $user->id;
$url = 'registered_user';
$name = $user->first_name . ' ' . $user->last_name;
$email = $user->email;
$mobile = $user->mobile;
$company = $user->company_users_count;
$role = $user->roles->role_name;
$status = ($user->status == '1') ? 'Active' : 'Inactive';
$action = '<div class="btn-group mr-2" role="group" aria-label="First group">
<a class="m-btn btn btn-secondary" href=' . url("company-users/" . encrypt($user->id) . "/" . $url . "/edit") . '>
<i class="la la-edit"></i>
</a>
<a class="m-btn btn btn-secondary delete_user" data-id=' . $id . ' href="javascript:void(0);">
<i class="la la-trash"></i>
</a>
<a class="m-btn btn btn-secondary" href=' . route("all-users.show", encrypt($user->id)) . '>
<i class="la la-eye"></i>
</a>
</div>';
$returnArray[] = array($name, $email, $mobile, $company,$role,$status, $action);
}
} catch (Exception $ex) {
$returnArray = array();
}
return json_encode(['data' => $returnArray]);
}
public function getNonRegisteredUser(Request $request) {
$returnArray = array();
try {
$name = $name = $request->name?$request->name:'';
$company_id = $request->company?$request->company:'';
$role_id = $request->role?$request->role:'';
$users = $this->companyUser->getNonRegistered($name, $company_id,$role_id);
foreach ($users as $user) {
$id = $user->id;
$name = $user->first_name . ' ' . $user->last_name;
$email = $user->email;
$mobile = $user->mobile;
$otp = $user->otp;
$company = $user->company_users_count;
$role = $user->roles->role_name;
$action = '<div class="btn-group mr-2" role="group" aria-label="First group">
<a class="m-btn btn btn-secondary delete_user" data-id=' . $id . ' href="javascript:void(0);">
<i class="la la-trash"></i>
</a>
<form action=' . route("loginVerification", ['request_from' => 'non_registration']) . ' method="post">
<input type="hidden" class="form-control m-input" name="email" value=" ' . $email . ' " readonly="">
<input type="hidden" class="form-control m-input" name="_token" value=" ' . csrf_token() . ' " readonly="">
<input type="hidden" class="form-control m-input" name="phone" value=" ' . $mobile . ' " readonly="">
<button type="submit" class="m-btn btn btn-secondary" title="Resend email and otp">
<i class="la la-send-o"></i>
</button>
</form>
</div>';
$returnArray[] = array($name, $email, $mobile, $otp, $company,$role, $action);
}
} catch (Exception $ex) {
$returnArray = array();
}
return json_encode(['data' => $returnArray]);
}
public function getUserByname(Request $request) {
$returnArray = array();
$mobile_verified = $request->mobile_verified;
$email_verified = $request->email_verified;
$name = !empty($request->name) ? $request->name : null;
$company_id = !empty($request->company) ? $request->company : null;
try {
$users = $this->companyUser->getUserByname($name, $company_id, $mobile_verified, $email_verified);
foreach ($users as $user) {
$id = $user->user->id;
$url = 'register';
$name = $user->user->first_name . ' ' . $user->user->last_name;
$email = $user->user->email;
$mobile = $user->user->mobile;
$action = '<div class="btn-group mr-2" role="group" aria-label="First group">
<a class="m-btn btn btn-secondary" href=' . route("company-users.show", $user->user->id) . '>
<a class="m-btn btn btn-secondary" href=' . url("company-users/" . $user->user->id . "/" . $url . "/edit") . '>
<i class="la la-edit"></i>
</a>
<a class="m-btn btn btn-secondary delete_user" data-id=' . $id . ' href="javascript:void(0);">
<i class="la la-trash"></i>
</a>
<a class="m-btn btn btn-secondary" href=' . route("company-users.show", $user->user->id) . '>
<a class="m-btn btn btn-secondary" href=' . route("company-users.show", $user->user->id) . '>
<i class="la la-eye"></i>
</a>
</div>';
$returnArray[] = array($name, $email, $mobile, $action);
}
} catch (Exception $ex) {
$returnArray = array();
}
return json_encode(['data' => $returnArray]);
}
}
OHA YOOOO