public static function getDatatable() { /*number of users*/ $users = User::select('id')->active()->count(); /*consumption*/ $today = date("Y-m-d"); $id = Session::get('user_id'); $user = User::select(['state_id'])->with('state')->where('id', $id)->first(); $state = $user->state->name; $consumption = WaterRegister::where('date', '=', $today)->where('state', '=', $state)->sum('value'); /*consumption per hour*/ $consumptionPerHour = $consumption / 60; /*largest consumer*/ $consumers = DB::table('water_registers')->select('city', DB::raw('sum(value) as total'))->where('date', '=', $today)->where('state', '=', $state)->orderBy('total', 'desc')->groupBy('city')->get(); //manejar errores $largestConsumer = reset($consumers); //1er elemento, mayor $smallestConsumer = end($consumers); //ultimo elemento, menor /*Total month consumption*/ $first_day = date("Y-m-01"); $last_day = date("Y-m-t"); $totalConsumption = WaterRegister::where('state', '=', $state)->whereBetween('date', [$first_day, $last_day])->sum('value'); $aux = new StdClass(); $aux->users = $users; $aux->consumption = $consumption; $aux->consumptionPerHour = $consumptionPerHour; $aux->largestConsumer = $largestConsumer->city; $aux->smallestConsumer = $smallestConsumer->city; $aux->totalConsumption = $totalConsumption; $data = [collect($aux)]; //hack super villa, para transformar a coleccion de datos $datatable = Datatables::of(collect($data)); return $datatable->make(true); }
public static function showMonthConsumptionGraph() { //consumo por hora $id = Session::get('user_id'); $first_day = date("Y-m-01"); $last_day = date("Y-m-t"); $previous_first_day = date("Y-m-01", strtotime('-1 month')); $previous_last_day = date("Y-m-t", strtotime('-1 month')); /*consumo del mes actual*/ $currentMonthConsumption = WaterRegister::where('state', '=', 'Mendoza')->where('user_id', '=', $id)->whereBetween('date', [$first_day, $last_day])->sum('value'); /*consumo del mes anterior*/ $previousMonth = WaterRegister::where('state', '=', 'Mendoza')->where('user_id', '=', $id)->whereBetween('date', [$previous_first_day, $previous_last_day])->sum('value'); $consumption = [['month' => date('M', strtotime('-1 month')), 'value' => $previousMonth], ['month' => date('M'), 'value' => $currentMonthConsumption]]; //Google charts JSON's format $cols = [["label" => "Mes", "type" => "string"], ["label" => "Consumo", "type" => "number"]]; $aux = []; $param1 = []; $param2 = []; $param3 = []; $param4 = []; $cell = []; $rows = []; $cell['cols'] = $cols; foreach ($consumption as $key => $value) { $param1['v'] = $consumption[$key]['month']; $param2['v'] = $consumption[$key]['value']; $rows['c'] = [$param1, $param2]; $param3[] = $rows; $cell['rows'] = $param3; } return response()->json($cell); }