/home/dvjjulio/softtrash/app/Http/Controllers/MetricasController.php
<?php

namespace Trash\Http\Controllers;

use Illuminate\Http\Request;

use Trash\Http\Requests;
use Trash\Http\Controllers\Controller;
use Trash\Ordenes;
use Trash\CombustibleOrden;
use Trash\VertederoOrden;
use stdClass;

class MetricasController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $ordenes = new Ordenes();
        $orden = $ordenes->orden_mes_year();
        $orden_year = $orden->getData()->data;

        return view('catalogo.Metricas')->with(compact('orden_year'));
    }
    public function metrica_op(Request $request){
        $op = $request->input('op');
        $year = $request->input('year');
        $month = $request->input('month');
        switch($op){
            case 1:
                $ordenes = new Ordenes();
                $reciclable = $ordenes->metricasReciclables($year);
                if (isset($reciclable)){
                    $meses = $this->sumMonth($reciclable);
                    $total = array_sum(array_map(function($item) { 
                        return $item->peso_kg; 
                    }, $reciclable));
                }
                return view('catalogo.metricaReciclable')->with(compact('reciclable','total','meses','year'));
            break;
            case 2:
                $ordenes = new Ordenes();
                $residuos = $ordenes->metricasResiduos($year) ?? [];
                if(isset($residuos)){
                    $meses = $this->sumMonth($residuos);
                    $total = array_sum(array_map(function($item) { 
                        return $item->total; 
                    }, $residuos));
                }
                return view('catalogo.metricaResiduos')->with(compact('residuos','total','meses','year'));
            break;
            case 3:
                $ordenes = new Ordenes();
                $unidades = $ordenes->metricasUnidad($year);
                return view('catalogo.metricaUnidad')->with(compact('unidades','year'));
            break;
            case 4:
                $ordenes = new Ordenes();
                $cobro = $ordenes->metricasCobroChofer($year, $month);
                $cobroTotal = $ordenes->metricasCobroTotal($year, $month);
                return view('catalogo.metricaCobro')->with(compact('cobro','cobroTotal','year','month'));
            break;
            case 5:
                $ordenes = new Ordenes();
                $utilidad = $ordenes->metricasUtilidad($year, $month);
                return view('catalogo.metricaUtilidad')->with(compact('utilidad','year','month'));
            break;
            case 6:
                $ordenes = new Ordenes();
                $residuos = $ordenes->metricasReciclablesCantidad($year);
                if (isset($residuos)){
                    $meses = $this->sumMonth($residuos);
                    $total = array_sum(array_map(function($item) { 
                        return $item->total; 
                    }, $residuos));
                }
                return view('catalogo.metricaResiduosCantidad')->with(compact('residuos','total','meses','year'));
            break;
            case 7:
                $combustibleOrden = new CombustibleOrden();
                $getCombustibleOrden = $combustibleOrden->getCombustibleOrden($year, $month);
                $combustibleOrdenYear = $combustibleOrden->getCombustibleOrdenYear($year);
                $combustibleObject = [];
                if (isset($getCombustibleOrden)) {
                    $total = 0;
                    $litros = 0.0;
                    $notesAdded = [];
                    $subtotales = [];
                    $nombre = '';
                    $totalChofer = 0;
                    $litrosChofer = 0.0;
                    $prev = [];
                    foreach($getCombustibleOrden as $key => $value) {
                        $semana = $value->semana;
                        $year = $value->year;
                        $total += $value->total;
                        $totalChofer += $value->total;
                        $litros += floatval($value->litros);
                        $litrosChofer += floatval($value->litros);
                        $nombre = $value->nombre;
                        array_push($notesAdded, $value);

                        $combustibleObject['semana-'.$semana] = ['semana' => $semana, 'year' => $year, 'total' => 0, 'litros' => 0, 'notas' => null];

                        $combustibleObject['semana-'.$semana]['total'] += $total;
                        $combustibleObject['semana-'.$semana]['litros'] += $litros;
                        $combustibleObject['semana-'.$semana]['notas'] = $notesAdded;

                         if (isset($getCombustibleOrden[$key + 1]) && $value->semana != $getCombustibleOrden[$key + 1]->semana) {
                            $combustibleObject['semana-'.$semana]['subtotales'] = $subtotales;
                            $total = 0;
                            $litros = 0;
                            $notesAdded = [];
                        }
                    }
                }
                return view('catalogo.metricaCombustible')->with(compact('combustibleObject', 'combustibleOrdenYear'));
            break;
            case 8:
                $type = $request->input('type');
                $vertederoOrden = new VertederoOrden();
                $getVertederoOrden = $vertederoOrden->getVertederoOrden($year, $month, $type);
                $vertederoOrdenYear = $vertederoOrden->getVertederoOrdenYear($year);
                $vertederoObject = [];
                if (isset($getVertederoOrden)) {
                    $total = 0;
                    $pesoNeto = 0;
                    $notesAdded = [];
                    foreach($getVertederoOrden as $key => $value) {
                        $semana = $value->semana;
                        $year = $value->year;
                        $total += $value->total;
                        $pesoNeto += floatval($value->peso_neto);
                        array_push($notesAdded, $value);
                        $vertederoObject['semana-'.$semana] = ['semana' => $semana, 'year' => $year, 'peso_neto' => 0, 'total' => 0, 'notas' => null];

                        $vertederoObject['semana-'.$semana]['total'] += $total;
                        $vertederoObject['semana-'.$semana]['peso_neto'] += $pesoNeto;
                        $vertederoObject['semana-'.$semana]['notas'] = $notesAdded;
                        if (isset($getVertederoOrden[$key + 1]) && $value->semana != $getVertederoOrden[$key + 1]->semana) {
                            $total = 0;
                            $pesoNeto = 0;
                            $notesAdded = [];
                        }
                    }
                }
                return view('catalogo.metricaVertedero')->with(compact('vertederoObject', 'vertederoOrdenYear', 'type'));
            break;
        }
    }
    public function sumMonth($data){
        $meses = []; $m1 = 0; $m2 = 0; $m3 = 0; $m4 = 0; $m5 = 0; $m6 = 0; $m7 = 0; $m8 = 0; $m9 = 0; $m10 = 0; $m11 = 0; $m12 = 0;
        foreach($data as $key => $values){
            $m1 += $values->mes_1;
            $m2 += $values->mes_2;
            $m3 += $values->mes_3;
            $m4 += $values->mes_4;
            $m5 += $values->mes_5;
            $m6 += $values->mes_6;
            $m7 += $values->mes_7;
            $m8 += $values->mes_8;
            $m9 += $values->mes_9;
            $m10 += $values->mes_10;
            $m11 += $values->mes_11;
            $m12 += $values->mes_12;
            $meses[1] = [$m1];
            $meses[2] = [$m2];
            $meses[3] = [$m3];
            $meses[4] = [$m4];
            $meses[5] = [$m5];
            $meses[6] = [$m6];
            $meses[7] = [$m7];
            $meses[8] = [$m8];
            $meses[9] = [$m9];
            $meses[10] = [$m10];
            $meses[11] = [$m11];
            $meses[12] = [$m12];

        }
        return $meses;
    }

    
}