MINI Sh3ll
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Solar\Repositories\Treepye\TreepyeInterface;
use App\Solar\Repositories\RegisterAPI\RegisterAPIInterface;
use App\Http\Requests\AddRegisterAPIRequest;
use App\Http\Requests\EditRegisterAPIRequest;
use App\Models\RegisterAPI;
use App\Models\Plant;
use DB;
class RegisterAPIController extends Controller
{
/**
* @var RegisterAPIInterface
*/
private $api;
/**
* @var TreePye Interface
*/
private $treeApi;
public function __construct(TreepyeInterface $treeApi,RegisterAPIInterface $api) {
$this->api = $api;
$this->treeApi = $treeApi;
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$breadcrumb = breadCrumb('Register API', 'register-api.index', '');
return view('register_api.index', compact('breadcrumb'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$breadcrumb = breadCrumb('Register API', 'register-api.index', 'Create');
$graphDuration = config("register_api.graph_duration");
$plants = Plant::whereHas('treepye', function($q){
$q->whereNotNull('treepye_plant_id');
})->with('treepye')->get();
return view('register_api.create', compact('graphDuration','plants','breadcrumb'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(AddRegisterAPIRequest $request)
{
DB::beginTransaction();
try {
$result = $this->api->store($request);
$message = 'Plant added successfully.';
if($result['message'] != ' '){
$message = $result['message'];
}
DB::commit();
return redirect()->route('register-api.index')->with('success', $message);
} catch (\Exception $e) {
DB::rollBack();
logger($e->getMessage());
return redirect()->back()->with('error', $e->getMessage());
}
}
/**
* Display the specified resource.
*
* @param string $id
* @return \Illuminate\Http\Response
*/
public function show($id) {
$id = decrypt($id);
$breadcrumb = breadCrumb('Register API', 'register-api.index', 'Edit');
$registerApi = $this->api->find($id);
$graphDuration = config("register_api.graph_duration");
return view('register_api.show', compact('graphDuration','registerApi','breadcrumb'));
}
/**
* Show the form for editing the specified resource.
*
* @param string $id
* @return \Illuminate\Http\Response
*/
public function edit($id) {
$id = decrypt($id);
$breadcrumb = breadCrumb('Register API', 'register-api.index', 'Edit');
$registerApi = $this->api->find($id);
$plants = Plant::whereHas('treepye', function($q){
$q->whereNotNull('treepye_plant_id');
})->with('treepye')->get();
$graphDuration = config("register_api.graph_duration");
return view('register_api.edit', compact('graphDuration','registerApi','plants','breadcrumb'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param string $id
* @return \Illuminate\Http\Response
*/
public function update(EditRegisterAPIRequest $request,$id) {
DB::beginTransaction();
try {
$this->api->update($id, $request);
DB::commit();
return redirect()->route('register-api.index')->with('success', 'API 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\RegisterAPI $registerAPI
* @return \Illuminate\Http\Response
*/
public function destroy(RegisterAPI $registerAPI) {
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function delete(Request $request) {
DB::beginTransaction();
try {
$this->api->delete($request['id']);
DB::commit();
return json_encode([ 'status' => 1, 'success'=> 'API deleted successfully.' ]);
} catch (\Exception $exc) {
DB::rollBack();
logger($exc->getMessage());
return redirect()->back()->with('error', $exc->getMessage());
}
}
/**
* Display a listing of the Register API in DataTable.
*
* @return \Illuminate\Http\Response
*/
public function getRegisteredAPI(Request $request) {
$returnArray = array();
$status = null;
try {
$searchkey = $request->input('searchKey');
$registeredAPIs = $this->api->getRegisteredAPI($searchkey);
$graphDuration = config("register_api.graph_duration");
$numericDuration = config("register_api.numeric_duration");
foreach ($registeredAPIs as $registeredAPI) {
$id = $registeredAPI->id;
$name = $registeredAPI->name;
$qid = $registeredAPI->qid;
$plot_type = $registeredAPI->plot_type==1?"Graph":"Numeric";
$duration = $registeredAPI->plot_type==1?ucfirst($graphDuration[$registeredAPI->graph_duration]):ucfirst($numericDuration[$registeredAPI->graph_duration]);
$editButton = '';
$deleteButton = '';
if(\Auth::user()->role_id != config('constants.role.user.id')) {
$editButton ='<a class="m-btn btn btn-secondary" href=' . route("register-api.edit", encrypt($registeredAPI->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("register-api.show", encrypt($registeredAPI->id)) . '>
<i class="la la-eye"></i>
</a>';
$action .= '</div>';
$returnArray[] = array($name, $qid, $plot_type, $duration, $action);
}
} catch (Exception $ex) {
$returnArray = array();
}
return json_encode(['data' => $returnArray]);
}
/**
* Display a listing of the Register API in DataTable.
*
* @return \Illuminate\Http\Response
*/
public function fetchAPIStructure(Request $request) {
$returnArray = array();
$status = null;
try {
$qid = $request->input('qid');
$serviceId = $request->input('service_id');
$duration = $request->input('duration');
$min_date_key = $request->input('min_date');
$max_date_key = $request->input('max_date');
$min_date = null;
$max_date = null;
if($duration == 1)
{ // TODAY
$min_date = $request->day ? $request->day:date('Y-m-d');
$max_date = $request->day ? $request->day:date('Y-m-d');
// $min_date = '2020-04-16';
// $max_date = '2020-04-16';
}elseif($duration == 2)
{ // Daily
/*For dynamic dates plotting*/
$date = $request->date ? $request->date : date('Y-m');
$lastday = $request->date ? date('Y-m',strtotime($request->date)) : date('y-m-d');
$end = $request->date ? date('t',strtotime($lastday)) : date('d');
$min_date = $date.'-01';
$max_date = $date.'-'.$end;
}elseif($duration == 3)
{ //MONTH
/*For dynamic dates plotting*/
$year = $request->year ? $request->year : date('Y');
$min_date = $year.'-01-01';
$max_date = $year.'-12-31';
}elseif ($duration == 4) {
// total energy/power last date //
// $min_date = '2019-06-02';
$min_date = date('Y-01-01');
$max_date = date('Y-m-d',strtotime("-1 days"));
} elseif ($duration == 5) {
// total energy/power till date //
// $min_date = '2019-06-02';
$min_date = config('treepye_constants.tillDate_startDate');
$max_date = date('Y-m-d');
}
$plants = array();
$returnArray = $this->treeApi->getApiResponse($qid,array($serviceId),$min_date,$max_date,$plants,$min_date_key,$max_date_key);
} catch (Exception $ex) {
$returnArray = array();
}
return $returnArray;
}
/*
* Get duration according chart type
*/
public function getDuration(Request $request){
try{
$graphDuration = config("register_api.graph_duration");
if((isset($request->durationType)) && (!empty($request->durationType)) && (!empty($request->durationType==2))) {
$graphDuration = config("register_api.numeric_duration");
}
return \Response::json($graphDuration);
}catch(Exception $ex) {
}
}
}
OHA YOOOO