MINI Sh3ll
<?php
namespace App\Exceptions;
namespace App\Solar\Repositories\Treepye;
use Exception;
use App\Models\Panel;
use App\Models\TreepyePlantDetails;
use Auth;
use App\Models\CompanyUser;
use App\Models\Company;
use App\Models\Plant;
use App\Models\PlantUser;
class TreepyeRepository implements TreepyeInterface {
private $client;
private $apiBaseURL;
private $email;
private $password;
public function __construct() {
$this->client = new \GuzzleHttp\Client();
$this->apiBaseURL = config('treepye_constants.base_url');
$this->email = config('treepye_constants.email');
$this->password = config('treepye_constants.password');
$this->service_section = config('treepye_constants.service_section');
$this->service_category = config('treepye_constants.service_category');
$this->service_type = config('treepye_constants.service_type');
$this->register_apidata = config('register_api.graph_duration_dates');
}
/*
* Login on Treepye account having name Solar IOT, and company is Smartcirqls Infotech Pvt Ltd. and get session id for other api.
*/
public function getApiResponse($qid,$serviceIds,$min_date,$max_date,$plants,$min_date_key='min_created',$max_date_key='max_created')
{
$response['status'] = FALSE;
$response['details'] = array();
try{
$session_id = $this->getApiLogin();
$service_id = implode(",",$serviceIds);
if (isset($session_id) && (!empty($session_id))) {
//$url = $this->apiBaseURL . $session_id . "/data/get-data?qid=".$qid."&".$min_date_key."=".$min_date."&".$max_date_key."=".$max_date."&service_id=".$service_id;
$url = $this->apiBaseURL . "data/get-data?sid=".$session_id."&qid=".$qid."&".$min_date_key."=".$min_date."&".$max_date_key."=".$max_date."&service_id=".$service_id;
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
/*print '<pre>';
print "[".$url."]";
print_r($service_response);
die;*/
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
$response['service_id'] = $service_id;
$response['plants'] = $plants;
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
public function getApiLogin() {
$session_id = NULL;
try {
/*$login_request = $this->client->post($this->apiBaseURL . 'auth/login', [
'form_params' => [
'email' => $this->email,
'password' => $this->password
]
]);
$login_response = $login_request->getBody()->getContents();
$login_result = json_decode($login_response);
$session_id = $login_result->session_id;*/
$login_request = $this->client->post($this->apiBaseURL . 'auth/login', [
'form_params' => [
'email' => $this->email,
'password' => $this->password
]
]);
$login_response = $login_request->getBody()->getContents();
$login_result = json_decode($login_response);
//print "<pre>"; print $this->email." ".$this->password; print_r($login_response); print '</pre>'; die;
$session_id = $login_result->session_id;
} catch (Exception $e) {
dd("Login", $e->getMessage());
}
return $session_id;
}
/*
* Create plant service on treepye
*/
public function createService($plant) {
$response['status'] = FALSE;
$response['details'] = array();
try {
$session_id = $this->getApiLogin();
if (isset($session_id) && (!empty($session_id))) {
$url = $this->apiBaseURL . $session_id . "/services/createService";
$service_request = $this->client->post($url, [
'form_params' => [
'plant_name' => $plant->plant_name,
'service_section' => $this->service_section,
'service_category' => $this->service_category,
'service_type' => $this->service_type,
'plant_id' => $plant->id,
'company_id' => $plant->company_id
]
]);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Get total energy for the registered plant on treepye.
*/
// comman function to get energy data //
public function getApiResponseData($startDate,$endDate,$graph_duration,$plot_type,$qid,$x_value,$y_value,$request,$service_id,$min_date_key,$max_date_key)
{
$response['status'] = FALSE;
$response['details'] = array();
try {
$session_id = $this->getApiLogin();
$plants = $this->getServiceIds($request);
$response['plants'] = $plants['plantName'];
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-data?qid=" . $qid . "&".$min_date_key."=" . $startDate . "&".$max_date_key."=" . $endDate. "&service_id=".$plants['service_id'];*/
$url = $this->apiBaseURL . "data/get-data?sid=".$session_id."&qid=" . $qid . "&".$min_date_key."=" . $startDate . "&".$max_date_key."=" . $endDate. "&service_id=".$plants['service_id'];
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
$arrangeResponse = $this->rearrangeResponse($service_response['records'],$x_value,$y_value,$service_id);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details']['records'] = $arrangeResponse;
$response['service_id'] = $plants['service_id'];
$response['plants'] = $plants['plantName'];
// $response['details'] = $service_response;
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
public function rearrangeResponse($rearrangeResponse,$x_value,$y_value,$service_id){
$response1 = array();
$user_values = array($x_value=>$x_value,
$y_value=>$y_value,
$service_id => $service_id);
foreach ($rearrangeResponse as $key => $value) {
$data[] = array_intersect_key($value, $user_values);
}
return $data;
}
public function getTotalEnergy($startDate, $endDate ,$request) {
$response['status'] = FALSE;
$response['details'] = array();
try {
$session_id = $this->getApiLogin();
$qid = '_UWUtm4B5nmuHXCswxge';
$plants = $this->getServiceIds($request);
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
if($request != null && $request->has('plant_id') && $request->plant_id != null && !empty($request->plant_id)) {
//$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate . "&service_id=".$plants['service_id'];
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate . "&service_id=".$plants['service_id'];
}
elseif (Auth::user()->role_id != config('constants.role.superadmin.id') && Auth::user()->role_id != config('constants.role.scpl_user.id')) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate . "&service_id=".$plants['service_id'];*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate . "&service_id=".$plants['service_id'];
} else {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate ;*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id."&qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate ;
}
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Get Daily energy for last date on treepye.
*/
public function getDailyEnergy($startDate, $endDate ,$request) {
$response['status'] = FALSE;
$response['details'] = array();
try {
$session_id = $this->getApiLogin();
$qid = 'IEWatm4B5nmuHXCs9BmW';
$plants = $this->getServiceIds($request);
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
if($request != null && $request->has('plant_id') && $request->plant_id != null && !empty($request->plant_id)) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate ."&service_id=".$plants['service_id'];*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate ."&service_id=".$plants['service_id'];
}
elseif (Auth::user()->role_id != config('constants.role.superadmin.id') && Auth::user()->role_id != config('constants.role.scpl_user.id')) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate ."&service_id=".$plants['service_id'];*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate ."&service_id=".$plants['service_id'];
} else {
//$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate;
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate;
}
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Store panel data
*/
function storePanelData($request) {
$panelExist = Panel::where(['company_id' => $request->company_id, 'api_type' => $request->panel]);
if ($panelExist) {
Panel::where(['company_id' => $request->company_id, 'api_type' => $request->panel])->delete();
}
$panel = new Panel();
$panel->company_id = $request->company_id;
$panel->api_type = $request->panel;
$panel->chart_type = $request->chart_type;
$panel->save();
return $panel;
}
/*
* Get Panel details.
*/
public function getPanelDetails($request,$api_type) {
$response['status'] = FALSE;
$response['details'] = array();
try{
if($request != null && $request->has('company_id') && $request->has('plant_id') && $request->plant_id != null && !empty($request->plant_id)) {
$panels = Panel::where('company_id',$request->company_id)->where('api_type',$api_type)->first();
} else {
if(Auth::user()->role_id != config('constants.role.superadmin.id') && Auth::user()->role_id != config('constants.role.scpl_user.id')){
$company = CompanyUser::where('user_id',Auth::id())->orderBy('company_id', 'DESC')->first();
$plant_id = Plant::with('treepye')->where('company_id',$company->company_id)->where('status','1')->orderBy('id', 'DESC')->first();
$panels = Panel::where('company_id',$company->company_id)->where('api_type',$api_type)->first();
} else {
$company = Company::orderBy('id', 'DESC')->first();
$plant_id = Plant::with('treepye')->where('company_id',$company->id)->where('status','1')->orderBy('id', 'DESC')->first();
$panels = Panel::where('company_id',$company->id)->where('api_type',$api_type)->first();
}
}
return $panels;
}catch(\Exception $e){
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Get Plant service Id
* - Checked condition
* - Request has company ID - Display company's latest plant
* - Request has company ID and plant Id - Display according company and plant * Id
* - Checked roles and according role return service Id.
*/
public function getServiceIds($request) {
$response['status'] = FALSE;
$response['details'] = array();
$plantsdetails = array();
$service_details = array();
$plants = array();
try{
$limit = config('constants.serviceId_limit');
if($request != null && $request->has('company_id') && $request->company_id != null && !empty($request->company_id) && $request->status !=0 ){
if($request->has('plant_id') && $request->plant_id != null && !empty($request->plant_id)) {
$plant_id = explode(',',$request->plant_id);
$plants = Plant::whereIn('id',$plant_id)->where('status','1')->pluck('plant_name');
$service_details = TreepyePlantDetails::whereIn('plant_id',$plant_id)->whereNotNull('treepye_plant_id')->pluck('treepye_plant_id')->toarray();
$service_ids = implode(',', $service_details);
}else {
if(Auth::user()->role_id == config('constants.role.user.id') ){
$userplants = PlantUser::whereHas('plant.treepye', function($q){
$q->whereNotNull('treepye_plant_id');
})->with('plant.treepye')->where('user_id',\Auth::id())->limit($limit)->get();
foreach ($userplants as $userplant) {
$plant_ids[] = $userplant->plant->id;
}
$plantsdetails = Plant::whereHas('treepye', function($q){
$q->whereNotNull('treepye_plant_id');
})->with('treepye')->whereIn('id',$plant_ids)
->where('status','1')->orderBy('id', 'DESC')->limit($limit)->get();
}else{
$limit = 1;
if($request->has('page') &&!empty($request->page) && $request->page =='dashboard'){
$limit = config('constants.serviceId_limit');
}
$plantsdetails = Plant::whereHas('treepye', function($q){
$q->whereNotNull('treepye_plant_id');
})->with('treepye')->where('company_id',$request->company_id)->where('status','1')->orderBy('id', 'DESC')->limit($limit)->get();
}
foreach ($plantsdetails as $plant) {
$plants[] = $plant->plant_name;
$service_details[] = $plant->treepye->treepye_plant_id;
}
$service_ids = implode(',', $service_details);
}
} else {
if(Auth::user()->role_id == config('constants.role.user.id') ){
$userplants = PlantUser::with('plant','plant.treepye')->where('user_id',\Auth::id())->limit($limit)->get();
foreach ($userplants as $userplant) {
$plantsdetails[] = $userplant->plant;
}
$service_details = TreepyePlantDetails::whereIn('plant_id',$plantsdetails)->whereNotNull('treepye_plant_id')->pluck('treepye_plant_id')->toarray();
} elseif(Auth::user()->role_id != config('constants.role.superadmin.id') && Auth::user()->role_id != config('constants.role.scpl_user.id')){
$company = CompanyUser::where('user_id',Auth::id())->orderBy('company_id', 'DESC')->first();
$plantsdetails = Plant::whereHas('treepye', function($q){
$q->whereNotNull('treepye_plant_id');
})->with('treepye')->where('company_id',$company->company_id)->where('status','1')->orderBy('id', 'DESC')->limit($limit)->get();
} else {
$company = Company::orderBy('id', 'DESC')->first();
$plantsdetails = Plant::whereHas('treepye', function($q){
$q->whereNotNull('treepye_plant_id');
})->with('treepye')->where('company_id',$company->id)->where('status','1')->orderBy('id', 'DESC')->limit($limit)->get();
}
foreach ($plantsdetails as $plant) {
$plants[] = $plant->plant_name;
$service_details[] = $plant->treepye->treepye_plant_id;
}
$service_ids = implode(',', $service_details);
}
$response = array('service_id'=>$service_ids,'plantName'=>$plants);
}catch(\Exception $e){
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Get daily energy generated by plants energy on treepye.
*/
public function getDayWiseEnergyChartData($request) {
$response['status'] = FALSE;
$response['details'] = array();
try{
$plants = $this->getServiceIds($request);
$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');
$startDate = $date.'-01';
$endDate = $date.'-'.$end;
// //for tetsing
// $startDate = '2019-12-01' ;
// $endDate ='2019-12-31';
$session_id = $this->getApiLogin();
$qid = 'MJl66m4BhyfQeOkwd3yP';
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=".$qid."&startdate=".$startDate."&enddate=".$endDate."&service_id=".$plants['service_id'];
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
$response['service_id'] = $plants['service_id'];
$response['plants'] = $plants['plantName'];
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Get total power input 1 for the registered plant on treepye.
*/
public function getTotalPowerInput1($startDate, $endDate, $request) {
$response['status'] = FALSE;
$response['details'] = array();
try {
$session_id = $this->getApiLogin();
$qid = 'splX7m4BhyfQeOkwYXw5';
$plants = $this->getServiceIds($request);
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
if($request != null && $request->has('plant_id') && $request->plant_id != null && !empty($request->plant_id)) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate ."&service_id=".$plants['service_id'];*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate ."&service_id=".$plants['service_id'];
}
elseif (Auth::user()->role_id != config('constants.role.superadmin.id') && Auth::user()->role_id != config('constants.role.scpl_user.id')) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate . "&service_id=" . $plants['service_id'];*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate . "&service_id=" . $plants['service_id'];
} else {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate;*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate;
}
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Get total power input2 for the registered plant on treepye.
*/
public function getTotalPowerInput2($startDate, $endDate, $request) {
$response['status'] = FALSE;
$response['details'] = array();
try {
$session_id = $this->getApiLogin();
$qid = 'qZrQWm8BhyfQeOkwZO-R';
$plants = $this->getServiceIds($request);
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
if($request != null && $request->has('plant_id') && $request->plant_id != null && !empty($request->plant_id)) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate ."&service_id=".$plants['service_id'];*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate ."&service_id=".$plants['service_id'];
}
elseif (Auth::user()->role_id != config('constants.role.superadmin.id') && Auth::user()->role_id != config('constants.role.scpl_user.id')) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate . "&service_id=" . $plants['service_id'];*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate . "&service_id=" . $plants['service_id'];
} else {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate ;*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=" . $qid . "&startdate=" . $startDate . "&enddate=" . $endDate ;
}
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Get Inverters Temperature trend for today on treepye.
*/
public function getInvertersTemperatureToday($startDate, $endDate ,$request) {
$response['status'] = FALSE;
$response['details'] = array();
try {
$session_id = $this->getApiLogin();
$plants = $this->getServiceIds($request);
$qid = 'A5lR6m4BhyfQeOkwTnyr';
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=" . $qid . "&startdate=" . $startDate . "&enddate=". $endDate . '&service_id='.$plants['service_id'];;*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=" . $qid . "&startdate=" . $startDate . "&enddate=". $endDate . '&service_id='.$plants['service_id'];;
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
$response['service_id'] = $plants['service_id'];
$response['plants'] = $plants['plantName'];
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Get Hourly Energy for Today on treepye.
*/
public function getTodayEnergyChart($request) {
$response['status'] = FALSE;
$response['details'] = array();
try{
$plants = $this->getServiceIds($request);
$date = date('Y-m-d');
$day_before = date( 'Y-m-d', strtotime( $date . ' -1 day' ) );
$startdate =$day_before;
$enddate = $day_before;
$session_id = $this->getApiLogin();
$qid = 'OkWftm4B5nmuHXCsvRkF';
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=" . $qid . "&startdate=" . $startdate . "&enddate=" . $enddate . "&service_id=" . $plants['service_id'];;*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=" . $qid . "&startdate=" . $startdate . "&enddate=" . $enddate . "&service_id=" . $plants['service_id'];;
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
$response['service_id'] = $plants['service_id'];
$response['plants'] = $plants['plantName'];
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Todays power genration trend
*/
public function getTodayPowerChart($request) {
$response['status'] = FALSE;
$response['details'] = array();
try{
$plants = $this->getServiceIds($request);
$date = date('Y-m-d');
$day_before = date( 'Y-m-d', strtotime( $date . ' -1 day' ) );
$startdate =$day_before;
$enddate = $day_before;
$session_id = $this->getApiLogin();
$qid = 'W5mH824BhyfQeOkwOX7E';
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=" . $qid . "&startdate=" . $startdate . "&enddate=" . $enddate . "&service_id=" . $plants['service_id'];;*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=" . $qid . "&startdate=" . $startdate . "&enddate=" . $enddate . "&service_id=" . $plants['service_id'];;
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
$response['service_id'] = $plants['service_id'];
$response['plants'] = $plants['plantName'];
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Todays energy generation trend
*/
public function getTodayEnergyTrendChart($request) {
$response['status'] = FALSE;
$response['details'] = array();
try{
$plants = $this->getServiceIds($request);
$date = date('Y-m-d');
$day_before = date( 'Y-m-d', strtotime( $date . ' -1 day' ) );
$startdate =$day_before;
$enddate = $day_before;
$session_id = $this->getApiLogin();
$qid = 's5lU724BhyfQeOkwy31o';
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=" . $qid . "&startdate=" . $startdate . "&enddate=" . $enddate . "&service_id=" . $plants['service_id'];;*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=" . $qid . "&startdate=" . $startdate . "&enddate=" . $enddate . "&service_id=" . $plants['service_id'];;
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
$response['service_id'] = $plants['service_id'];
$response['plants'] = $plants['plantName'];
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Daily Power Generated By Grid
*/
public function getDailyPowerGeneratedByGrid($request) {
$response['status'] = FALSE;
$response['details'] = array();
try{
$plants = $this->getServiceIds($request);
$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');
$startDate = $date.'-01';
$endDate = $date.'-'.$end;
$session_id = $this->getApiLogin();
$qid = 'bZmgDW8BhyfQeOkwloOM';
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=".$qid."&startdate=".$startDate."&enddate=".$endDate."&service_id=".$plants['service_id'];*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=".$qid."&startdate=".$startDate."&enddate=".$endDate."&service_id=".$plants['service_id'];
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
$response['service_id'] = $plants['service_id'];
$response['plants'] = $plants['plantName'];
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Get day wise total energy on treepye.
*/
public function getDailyPowerChart($request) {
$response['status'] = FALSE;
$response['details'] = array();
try{
$plants = $this->getServiceIds($request);
$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');
$startDate = $date.'-01';
$endDate = $date.'-'.$end;
// //for tetsing
// $startDate = '2019-12-01' ;
// $endDate ='2019-12-31';
$session_id = $this->getApiLogin();
$qid = 'ZURf9m8Bl554_rSnghFB';
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=".$qid."&startdate=".$startDate."&enddate=".$endDate."&service_id=".$plants['service_id'];*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=".$qid."&startdate=".$startDate."&enddate=".$endDate."&service_id=".$plants['service_id'];
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
$response['service_id'] = $plants['service_id'];
$response['plants'] = $plants['plantName'];
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Daily Energy generated by Grid
*/
public function getDailyEnergyGridChart($request) {
$response['status'] = FALSE;
$response['details'] = array();
try{
$plants = $this->getServiceIds($request);
$session_id = $this->getApiLogin();
$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');
$startDate = $date.'-01';
$endDate = $date.'-'.$end;
$qid = 'bZmgDW8BhyfQeOkwloOM';
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=".$qid."&startdate=".$startDate."&enddate=".$endDate."&service_id=".$plants['service_id'];*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=".$qid."&startdate=".$startDate."&enddate=".$endDate."&service_id=".$plants['service_id'];
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
$response['service_id'] = $plants['service_id'];
$response['plants'] = $plants['plantName'];
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Multiline/stacked chart data for monthly power generated by grid
*/
public function getMonthlyPowerGridChart($request) {
$response['status'] = FALSE;
$response['details'] = array();
try{
$plants = $this->getServiceIds($request);
$session_id = $this->getApiLogin();
$year = $request->year ? $request->year : date('Y');
//$lastday = $request->date ? date('Y-m',strtotime($request->date)) : date('y-m-d');
//$end = $request->date ? date('t',strtotime($lastday)) : date('d');
$startDate = $year.'-01-01';
$endDate = $year.'-12-01';
$qid = 'IUQD628Bl554_rSnEQhY';
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=".$qid."&startdate=".$startDate."&enddate=".$endDate."&service_id=".$plants['service_id'];*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=".$qid."&startdate=".$startDate."&enddate=".$endDate."&service_id=".$plants['service_id'];
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
$response['service_id'] = $plants['service_id'];
$response['plants'] = $plants['plantName'];
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Multiline/stacked chart data for monthly power generated by plant
*/
public function getMonthlyPowerPlantChart($request) {
$response['status'] = FALSE;
$response['details'] = array();
try{
$plants = $this->getServiceIds($request);
$session_id = $this->getApiLogin();
$year = $request->year ? $request->year : date('Y');
//$lastday = $request->date ? date('Y-m',strtotime($request->date)) : date('y-m-d');
//$end = $request->date ? date('t',strtotime($lastday)) : date('d');
$startDate = $year.'-01-01';
$endDate = $year.'-12-01';
$qid = '_0Tv6m8Bl554_rSnAQd8';
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=".$qid."&startdate=".$startDate."&enddate=".$endDate."&service_id=".$plants['service_id'];*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=".$qid."&startdate=".$startDate."&enddate=".$endDate."&service_id=".$plants['service_id'];
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
$response['service_id'] = $plants['service_id'];
$response['plants'] = $plants['plantName'];
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Multiline/stacked chart data for monthly Energy generated by plant
*/
public function getMonthlyEnergyPlantChart($request) {
$response['status'] = FALSE;
$response['details'] = array();
try{
$plants = $this->getServiceIds($request);
$session_id = $this->getApiLogin();
$year = $request->year ? $request->year : date('Y');
//$lastday = $request->date ? date('Y-m',strtotime($request->date)) : date('y-m-d');
//$end = $request->date ? date('t',strtotime($lastday)) : date('d');
$startDate = $year.'-01-01';
$endDate = $year.'-12-01';
$qid = 'h0TG6m8Bl554_rSnBgeV';
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=".$qid."&startdate=".$startDate."&enddate=".$endDate."&service_id=".$plants['service_id'];*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=".$qid."&startdate=".$startDate."&enddate=".$endDate."&service_id=".$plants['service_id'];
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
$response['service_id'] = $plants['service_id'];
$response['plants'] = $plants['plantName'];
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Get Plant name from service ID
*/
public function getPlantName($key) {
return $plants = Plant::whereHas('treepye',function($q) use($key){
$q->where('treepye_plant_id',$key);
})->first();
}
/*
* Report and logs
*/
public function getReportLog($request) {
$response['status'] = FALSE;
$response['details'] = array();
try{
if($request->has('company_id') && $request->has('plant_id') && $request->has('from_date') && $request->has('to_date')) {
$plants = $this->getAllServiceIds($request);
if($request->plant_id != null) {
$plants = $this->getServiceIds($request);
}
$session_id = $this->getApiLogin();
$startDate = date('Y-m-d',strtotime($request->from_date));
$endDate = date('Y-m-d',strtotime($request->to_date));;
$qid = 'IkRqM3ABl554_rSnETDT';
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
/*$url = $this->apiBaseURL . $session_id . "/data/get-records?qid=".$qid."&startdate=".$startDate."&enddate=".$endDate."&service_id=".$plants['service_id'];*/
$url = $this->apiBaseURL . "/data/get-records?sid=".$session_id ."&qid=".$qid."&startdate=".$startDate."&enddate=".$endDate."&service_id=".$plants['service_id'];
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
}
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
public function numericData($request) {
$response['status'] = FALSE;
$response['details'] = array();
try {
$session_id = $this->getApiLogin();
$qid = $request->qid;
$min_created = '2019-11-01';
$max_created = '2020-04-01';
$graph_duration = $request->graph_duration;
if($graph_duration == 1)
{ // TODAY
$startDate = $request->day ? $request->day:date('Y-m-d');
$endDate = $request->day ? $request->day:date('Y-m-d');
// $startDate = '2020-04-16';
// $endDate = '2020-04-16';
}elseif($graph_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');
$startDate = $date.'-01';
$endDate = $date.'-'.$end;
}elseif($graph_duration == 3)
{ //MONTH
/*For dynamic dates plotting*/
$year = $request->year ? $request->year : date('Y');
$startDate = $year.'-01-01';
$endDate = $year.'-12-31';
}elseif ($graph_duration == 4) {
// total energy/power till date //
// $startDate = '2019-06-02';
$startDate = date('Y-01-01');
$endDate = date('Y-m-d',strtotime("-1 days"));
}elseif ($graph_duration == 5) {
// total energy/power till date //
// $startDate = '2019-06-02';
$startDate = config('treepye_constants.tillDate_startDate');
$endDate = date('Y-m-d');
}
$min_created = $startDate;
$max_created = $max_created;
$min_date_key = $request->input('min_date');
$max_date_key = $request->input('max_date');
$plants = $this->getServiceIds($request);
$response['plants'] = $plants['plantName'];
if (empty($plants['service_id']) && $plants['service_id'] == "" && $plants['service_id'] == null) {
return $response;
}
if (isset($session_id) && (!empty($session_id))) {
/*$url = $this->apiBaseURL.$session_id .'/data/get-data?qid='.$qid."&".$min_date_key."=".$min_created."&".$max_date_key."=".$max_created."&service_id=".$plants['service_id'];*/
$url = $this->apiBaseURL.'data/get-data?sid='.$session_id .'&qid='.$qid."&".$min_date_key."=".$min_created."&".$max_date_key."=".$max_created."&service_id=".$plants['service_id'];
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
if ($service_response['code'] == 0) {
$response['status'] = TRUE;
$response['details'] = $service_response;
} else {
throw new Exception($service_response['message'] . ' on treepye.', 1);
}
} else {
throw new Exception("Error while processing plant request on treepye", 1);
}
}catch(Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
/*
* Get All plants service ID
*/
public function getAllServiceIds($request) {
try{
$plantsdetails = Plant::whereHas('treepye', function($q){
$q->whereNotNull('treepye_plant_id');
})->with('treepye')->where('company_id',$request->company_id)->where('status','1')->orderBy('id', 'DESC')->get();
foreach ($plantsdetails as $plant) {
$plants[] = $plant->plant_name;
$service_details[] = $plant->treepye->treepye_plant_id;
}
$service_ids = implode(',', $service_details);
$response = array('service_id'=>$service_ids,'plantName'=>$plants);
}catch(Exception $ex) {
$response['error'] = $e->getMessage();
}
return $response;
}
public function getAllApiList(){
$response['status'] = FALSE;
$response['details'] = array();
try{
$session_id = $this->getApiLogin();
$url = $this->apiBaseURL . $session_id . "/data/get-api-list";
$service_request = $this->client->get($url);
$service_response = $service_request->getBody()->getContents();
$service_response = json_decode($service_response, true);
$response['status'] = TRUE;
$response['details'] = $service_response;
} catch (\Exception $e) {
$response['error'] = $e->getMessage();
}
return $response;
}
}
OHA YOOOO