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

namespace Trash\Http\Controllers;

use Illuminate\Http\Request;

use Trash\Http\Requests;
use Trash\Http\Controllers\Controller;
use Trash\User;
use Trash\Histories;
use Trash\Ordenes;


class MovilController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        //return $_COOKIE['id'];
        if(isset($_COOKIE['id'])){
          $users = new User();
            $user = $users->user_camion($_COOKIE['id']);
             if($user == false){
                print 'usuario sin Camion registrado vuelve a logearte';
                echo '<br><a href="'.\URL::To("/")."/movil/login".'">Login</a>';
            }else{
                $histories = new Histories();
                $history = $histories->checkHistoryInicio($_COOKIE['id']);
                
                $ordenes = new Ordenes();
                $reciclables = $ordenes->reciclableUser($_COOKIE['id']);
                

                return view('movil.index')->with(compact('user','history','reciclables'));
            }
        }else{
            //return 'no id';
            header("Location: ".\URL::To("/")."/movil/login");
           //redirect(\URL::To("/")."/movil/login");
             exit;
        }

    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function saveInicio()
    {
        //
        $data = \Input::all();
         $validator = $this->get_validate($data);
        if( $validator->fails() )
            return response()->json( array( 'status' => false, 'message' => $validator->errors()->all() ));
        return response()->json( $this->store($data));
    }

    public function get_validate( $data ){
        $array_rules = array(
                'km'         => 'required|integer',
                'latitude'   => 'required',
                'longitude'  => 'required',
                'user_id'    => 'required|integer',
                'camion_id'  => 'required|integer' );
        $messages    =  array(
                'km.required'           => 'Por favor ingrese el Kilometraje',
                'km.integer'            => 'Por favor ingrese el formato correcto',
                'latitude.required'     => 'Error con la latitude encienda su GPS',
                'longitude.required'    => 'Error con la longitude encienda su GPS',
                'user_id.required'      => 'Error en el usuario favor de salir y volver a logearte',
                'user_id.integer'       => 'Error en el usuario favor de salir y volver a logearte',
                'camion_id.required'    => 'Error en el camion favor de salir y volver a logearte',
                'camion_id.integer'     => 'Error en el camion favor de salir y volver a logearte',
                );

        return \Validator::make( $data, $array_rules, $messages );
    }

    public function saveTermino()
    {
        //
        $data = \Input::all();
         $validator = $this->get_validate_termino($data);
        if( $validator->fails() )
            return response()->json( array( 'status' => false, 'message' => $validator->errors()->all() ));
        return response()->json( $this->store($data));
    }

    public function get_validate_termino( $data ){
        $array_rules = array(
                'km_termino'         => 'required|integer',
                'latitude_termino'   => 'required',
                'longitude_termino'  => 'required');
        $messages    =  array(
                'km_termino.required'           => 'Por favor ingrese el Kilometraje',
                'km_termino.integer'            => 'Por favor ingrese el formato correcto',
                'latitude_termino.required'     => 'Error con la latitude encienda su GPS',
                'longitude_termino.required'    => 'Error con la longitude encienda su GPS'
                );

        return \Validator::make( $data, $array_rules, $messages );
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store($data, Histories $h = null)
    {
        try{
            \DB::beginTransaction();
            if( isset( $data[ 'id' ] ) ){

                $history = Histories::find($data[ 'id' ]);
                $history->fecha_termino         = date('Y-m-d H:i:s');
                $history->kilometraje_termino    = $data['km_termino'];
                $history->observaciones_termino  = $data['obs_termino'];
                $history->latitude_termino       = $data['latitude_termino'];
                $history->longitude_termino      = $data['longitude_termino'];
                $history->session_status         = 'FALSE';

                if($data['reciclable']!=0){
                    $this->updateCostoOrden($data);
                }
            }
            else {
                $history = new Histories();
                $existHistory = $history->checkHistory($_COOKIE['id']);
                if( $existHistory == false )throw new \Exception('Ya tienes un inicio guardado ');

                $history->user_id             = $_COOKIE['id'];
                $history->camion_id           = $data['camion_id'];
                $history->fecha_inicio        = date('Y-m-d H:i:s');
                $history->kilometraje_inicio  = $data['km'];
                $history->observaciones_inicio= $data['obs'];
                $history->latitude_inicio     = $data['latitude'];
                $history->longitude_inicio    = $data['longitude'];
                $history->session_status      = 'TRUE';
                
            }

            $history->save();

        } catch( \Exception $e ){
            \DB::rollback();
            return array( 'status' => false, 'message' => $e->getMessage() );
        }
        \DB::commit();
        return  array( 'status' => true , 'data' => $history );
    }

    public function updateCostoOrden($data){
        for($i = 0; $i < $data['reciclable']; $i++){
            $ordenes = new Ordenes();
            $ordenes_ids = $ordenes->getOrdenesCosto($_COOKIE['id'], $data['reciclable_id'.$i],$fecha = null);
            if(isset($ordenes_ids)){
                $ids = "";
                foreach($ordenes_ids as $val){
                    $ids .= $val->id.","; 
                }
                $ids = substr($ids,0,-1);
            }
            $query = $ordenes->updateCostoOrden($ids,$data['reciclable_costo'.$i]);
            if(!$query->getData()->status)throw new \Exception('Error al guardar el costo pago');
        }
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 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($id)
    {
        //
    }
}