MINI Sh3ll
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Solar\Repositories\Panel\PanelInterface;
use App\Solar\Repositories\User\UserInterface;
use App\Solar\Repositories\RegisterAPI\RegisterAPIInterface;
use App\Solar\Repositories\Treepye\TreepyeInterface;
use App\Models\RegisterAPI;
use DB;
class PanelController extends Controller
{
/**
* @var Panel Interface
*/
private $panel;
private $user;
private $regApi;
private $api;
public function __construct(PanelInterface $panel , UserInterface $user , RegisterAPIInterface $regApi,TreepyeInterface $api) {
$this->panel = $panel;
$this->user = $user;
$this->regApi = $regApi;
$this->api = $api;
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$breadcrumb = breadCrumb('Panel', 'panels.index', '');
$search = '';
$companies_name = $this->user->getCompany();
$regApi = $this->regApi->getRegisteredAPI($search);
$graphDuration = config("register_api.graph_duration");
return view('panel.index', compact('companies_name','regApi','graphDuration','breadcrumb'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
try {
$breadcrumb = breadCrumb('Panels', 'panels.index', '');
$companies = $this->user->getCompany();
$chartTypes = config('chart.types');
$registerAPI = RegisterAPI::orderBy('id' , 'DESC')->get();
return view('dashboard.add_panel', compact('breadcrumb','companies','chartTypes','registerAPI'));
} catch(Exception $ex) {
logger($exc->getMessage());
}
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
try {
$panel = $this->api->storePanelData($request);
if($panel) {
return response()->json(['success'=>true]);
}
return response()->json(['success'=>false]);
}catch (\Exception $exc) {
logger($exc->getMessage());
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
try{
$breadcrumb = breadCrumb('Panels', 'panels.index', 'Show');
$panel = $this->panel->paneldetails($id);
return view('panel.show', compact('panel','breadcrumb'));
}catch(Exception $ex) {
}
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
try {
$breadcrumb = breadCrumb('Panel', 'panels.index', 'Edit');
$companies = $this->user->getCompany();
$chartTypes = config('chart.types');
$registerAPI = RegisterAPI::get();
$paneldetails = $this->panel->paneldetails($id);
$graphDuration = config("register_api.graph_duration");
$chartTypes = config('chart.types');
return view('panel.edit', compact('registerAPI','companies','paneldetails','graphDuration','chartTypes','breadcrumb'));
} catch(Exception $ex) {
logger($exc->getMessage());
return redirect()->back()->with('error', $exc->getMessage());
}
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy(Request $request)
{
//
}
/**
* Display a listing of the Panel Added in DataTable.
*
* @return \Illuminate\Http\Response
*/
public function getPanelList(Request $request) {
$returnArray = array();
$status = null;
try {
$panelList = $this->panel->getPanelList($request);
foreach ($panelList as $panel) {
$id = $panel->id;
$apiName = $panel->register_api->name;
$company = $panel->company->company_name;
$type = $panel->register_api->plot_type==1?"Graph":"Numeric";
$chartType = (($panel->register_api->plot_type==1)?ucfirst($panel->chart_type).' Chart':'-');
if($chartType == 'HorizontalBar Chart'){
$chartType = 'Bar Chart';
}elseif($chartType == 'Bar Chart'){
$chartType = 'Column Chart';
}
$editButton = '';
$deleteButton = '';
$editButton ='<a class="m-btn btn btn-secondary" href=' . route("panels.edit",encrypt($panel->id)) . '>
<i class="la la-edit"></i>
</a>';
$deleteButton = '<a class="m-btn btn btn-secondary delete_panel" data-id=' . $id . ' href="javascript:void(0);">
<i class="la la-trash"></i>
</a>';
$viewButton = '<a class="m-btn btn btn-secondary" href='. route("panels.show", encrypt($panel->id)) . '>
<i class="la la-eye"></i>
</a>';
$action = '<div class="btn-group mr-2" role="group" aria-label="First group">
'.$editButton.' '.$viewButton.' '.$deleteButton;
$action .= '</div>';
$returnArray[] = array($apiName, $company, $type, $chartType, $action);
}
} catch (Exception $ex) {
$returnArray = array();
}
return json_encode(['data' => $returnArray]);
}
/**
* Remove the specified Panel details from storage.
* @param int $id
* @return \Illuminate\Http\Response
*/
public function deletePanel(Request $request) {
DB::beginTransaction();
try {
$this->panel->deletePanel($request['id']);
DB::commit();
return json_encode([ 'status' => 1, 'success'=> 'Panel deleted successfully.' ]);
} catch (\Exception $exc) {
DB::rollBack();
logger($exc->getMessage());
return redirect()->back()->with('error', $exc->getMessage());
}
}
}
OHA YOOOO