MINI Sh3ll
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Http\Requests\AddCompanyRequest;
use App\Http\Requests\EditCompanyRequest;
use App\Models\Company;
use App\Models\CompanyUser;
use App\Models\Panel;
use App\Solar\Repositories\Company\CompanyInterface;
use Validator;
use Response;
use Redirect;
class CompanyController extends Controller {
/*
* @var CompanyInterface
* */
private $company;
public function __construct(CompanyInterface $company) {
$this->company = $company;
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index() {
$breadcrumb = breadCrumb('Company', 'company.index', '');
$companies_name = $this->company->getAllCompanyNames();
return view('company.index', compact('companies_name','breadcrumb'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create() {
$breadcrumb = breadCrumb('Comapny', 'company.index', 'Create');
$countries = $this->company->getCountries();
$companyAdmins = $this->company->getCompanyAdmins();
return view('company.create', compact('countries', 'companyAdmins','breadcrumb'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(AddCompanyRequest $request) {
try {
$this->company->store($request);
DB::commit();
return redirect()->route('company.index')->with('success', 'Company added 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('Comapny', 'company.index', 'Show');
$id = decrypt($id);
$company = $this->company->find($id);
$company_users = $this->company->getCompanyAdminsForCompany($id);
$companyDomains = $this->company->getCompanyDomains($id);
return view('company.show', compact('company', 'company_users', 'companyDomains','breadcrumb'));
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Company $company
* @return \Illuminate\Http\Response
*/
public function edit($id) {
$breadcrumb = breadCrumb('Comapny', 'company.index', 'Edit');
$id = decrypt($id);
$users = array();
$countries = $this->company->getCountries();
$companyAdmins = $this->company->getCompanyAdmins();
$company_users = $this->company->getCompanyAdminsForCompany($id);
$companyDomains = $this->company->getCompanyDomains($id);
$company = $this->company->find($id);
return view('company.edit', compact('countries', 'company', 'companyAdmins', 'company_users', 'companyDomains','breadcrumb'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Company $company
* @return \Illuminate\Http\Response
*/
public function update(EditCompanyRequest $request, Company $company) {
DB::beginTransaction();
try {
$this->company->update($company->id, $request);
DB::commit();
return redirect()->route('company.index')->with('success', 'Company updated successfully.');
} catch (\Exception $e) {
DB::rollBack();
logger($e->getMessage());
return redirect()->back()->with('error', $e->getMessage());
}
}
/**
* Remove the specified resource from storage.
*
* @param \App\Company $company
* @return \Illuminate\Http\Response
*/
public function destroy(Company $company) {
}
/**
* Display a listing of the Company in DataTable.
*
* @return \Illuminate\Http\Response
*/
public function getCompany(Request $request) {
$returnArray = array();
$status = null;
try {
$status = $request->input('status');
$company_id = $request->input('id');
$companies = $this->company->getCompany($status, $company_id);
foreach ($companies as $company) {
$id = $company->id;
$company_name = ucfirst($company->company_name);
$city = ucfirst($company->city);
$company_users = count($this->company->getCompanyAdminsForCompany($id));
$created_at = date('Y-m-d', strtotime($company->created_at));
$status = ($company->status == 1) ? '<span class="m-badge m-badge--primary m-badge--wide">Active</span>' : '<span class="m-badge m-badge--danger m-badge--wide">In Active</span>';
$action = '<div class="btn-group mr-2" role="group" aria-label="First group">
<a class="m-btn btn btn-secondary" href=' . route("company.edit", encrypt($company->id)) . '>
<i class="la la-edit"></i>
</a>
<a class="m-btn btn btn-secondary delete_company" data-id=' . $id . ' href="javascript:void(0);">
<i class="la la-trash"></i>
</a>
<a class="m-btn btn btn-secondary" href='. route("company.show", encrypt($company->id)) . '>
<i class="la la-eye"></i>
</a>
</div>';
$returnArray[] = array($company_name, $city, $company_users, $status, $created_at, $action);
}
} catch (Exception $ex) {
$returnArray = array();
}
return json_encode(['data' => $returnArray]);
}
public function deleteCompany(Request $request) {
DB::beginTransaction();
$status = 0;
try {
$company = $this->company->delete($request['id']);
if($company){
$status = 1;
$message = "Company deleted successfully.";
DB::commit();
}else{
$status = 0;
$message = "Cannot delete the company,some plants of the company are active";
DB::rollBack();
}
return json_encode(['status' => $status, 'message' => $message]);
} catch (\Exception $exc) {
DB::rollBack();
logger($exc->getMessage());
return redirect()->back()->with('error', $exc->getMessage());
}
}
public function checkDomain(Request $req)
{
try {
$domain = $req;
$checkDomain = $this->company->checkDomain($req->domain);
if (count($checkDomain)>0) {
return 0;
} else {
return 1;
}
}catch(\Exception $exc){
dd($exc->getMessage());
}
}
}
OHA YOOOO