MINI Sh3ll
<?php
namespace App\Http\Controllers;
use App\Models\Plant;
use Illuminate\Http\Request;
use App\Http\Requests\AddPlantRequest;
use App\Http\Requests\EditPlantRequest;
use App\Solar\Repositories\Plant\PlantInterface;
use DB;
use Response;
class PlantController extends Controller
{
/**
* @var PlantInterface
*/
private $plant;
public function __construct(PlantInterface $plant) {
$this->plant = $plant;
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$breadcrumb = breadCrumb('Plant', 'plant.index', '');
$plants_name = $this->plant->getAllPlantNames();
return view('plants.index', compact('plants_name','breadcrumb'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$breadcrumb = breadCrumb('Plant', 'plant.index', 'Create');
$companies = $this->plant->getCompanies();
$countries = $this->plant->getCountries();
//$users = $this->plant->getUsers();
return view('plants.create', compact('companies', 'countries','breadcrumb'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(AddPlantRequest $request)
{
DB::beginTransaction();
try {
$result = $this->plant->store($request);
$message = 'Plant added successfully.';
if($result['message'] != ' '){
$message = $result['message'];
}
DB::commit();
return redirect()->route('plant.index')->with('success', $message);
} catch (\Exception $e) {
DB::rollBack();
logger($e->getMessage());
return redirect()->back()->with('error', $e->getMessage());
}
}
/**
* Display the specified resource.
*
* @param \App\Models\Plant $plant
* @return \Illuminate\Http\Response
*/
public function show($id) {
$breadcrumb = breadCrumb('Plant', 'plant.index', 'Show');
$plant = $this->plant->find(decrypt($id));
return view('plants.show', compact('plant','breadcrumb'));
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Plant $plant
* @return \Illuminate\Http\Response
*/
public function edit($id) {
$id = decrypt($id);
$breadcrumb = breadCrumb('Plant', 'plant.index', 'Edit');
$companies = $this->plant->getCompanies();
$countries = $this->plant->getCountries();
$plant = $this->plant->find($id);
$plant_users = $this->plant->getPlantUsersForPlant($id);
return view('plants.edit', compact('plant', 'companies', 'countries', 'plant_users','breadcrumb'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Plant $plant
* @return \Illuminate\Http\Response
*/
public function update(EditPlantRequest $request, Plant $plant) {
DB::beginTransaction();
try {
$this->plant->update($plant->id, $request);
DB::commit();
return redirect()->route('plant.index')->with('success', 'Plant 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\Models\Plant $plant
* @return \Illuminate\Http\Response
*/
public function destroy(Plant $plant) {
}
/**
* Display a listing of the Plant in DataTable.
*
* @return \Illuminate\Http\Response
*/
public function getPlant(Request $request) {
$returnArray = array();
$status = null;
try {
$status = $request->input('status');
$id = $request->input('id');
$plants = $this->plant->getPlant($id, $status);
foreach ($plants as $plant) {
$id = $plant->id;
$name = $plant->plant_name;
$company = $plant->company->company_name;
$city = $plant->city;
$status = ($plant->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>';
$editButton = '';
$deleteButton = '';
if(\Auth::user()->role_id != config('constants.role.user.id')) {
$editButton ='<a class="m-btn btn btn-secondary" href=' . route("plant.edit", encrypt($plant->id)) . '>
<i class="la la-edit"></i>
</a>';
$deleteButton = '<a class="m-btn btn btn-secondary delete_user" data-id=' . $id . ' href="javascript:void(0);">
<i class="la la-trash"></i>
</a>';
}
$action = '<div class="btn-group mr-2" role="group" aria-label="First group">
'.$editButton.' '.$deleteButton.'
<a class="m-btn btn btn-secondary" href='. route("plant.show", encrypt($plant->id)) . '>
<i class="la la-eye"></i>
</a>';
if($plant->status == 0){
$action .= '<a class="m-btn btn btn-secondary" href='. route("syncPlant", encrypt($plant->id)) . '>
<i class="la la-refresh"></i>
</a>';
}
$action .= '</div>';
$returnArray[] = array($name, $company, $city, $status, $action);
}
} catch (Exception $ex) {
$returnArray = array();
}
return json_encode(['data' => $returnArray]);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function delete(Request $request) {
DB::beginTransaction();
try {
$this->plant->delete($request['id']);
DB::commit();
return json_encode([ 'status' => 1, 'success'=> 'User deleted successfully.' ]);
} catch (\Exception $exc) {
DB::rollBack();
logger($exc->getMessage());
return redirect()->back()->with('error', $exc->getMessage());
}
}
/*
* Sync plant if it is inactive. Creating plant on treepye.
*/
public function syncPlant($id) {
$id = decrypt($id);
DB::beginTransaction();
try {
$result = $this->plant->syncPlant($id);
$message = $result['message'];
DB::commit();
if($result['flag'] == 1){
return redirect()->route('plant.index')->with('success', $message);
}else{
return redirect()->route('plant.index')->with('error', $message);
}
} catch (\Exception $exc) {
DB::rollBack();
logger($exc->getMessage());
return redirect()->back()->with('error', $exc->getMessage());
}
}
public function getUsers(Request $req) {
$getUser = $this->plant->getUsers($req->company_id);
return Response::json($getUser);
}
}
OHA YOOOO