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

namespace Trash\Http\Controllers;

use Illuminate\Http\Request;

use Trash\Http\Requests;
use Trash\Http\Controllers\Controller;
use Trash\OrdenC;
use Trash\Clientes;
use Trash\User;
use Auth;

class OrdenController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $clientes = Clientes::where('status_id',1)->OrderBy('nombre_comercial')->get();
        $conductores = User::where('tipo_usuario_id',2)->where('status_id',1)->OrderBy('username')->get();
        return view('catalogo.orden')->with(compact('clientes','conductores'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
     public function saveOrdenC()
     {
         //
         $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(
                 'cliente_id' => 'required',
                 'user_id'    => 'required',
                 'dias'        => 'required',
                 'time'       => 'required',
                  );
         $messages    =  array(
                 'cliente_id.required'  => 'Por favor seleccione un cliente',
                 'user_id.required'     => 'Por favor seleccione un Conductor',
                 'dias.required'         => 'Por favor seleccione un Dia',
                 'time.required'        => 'Por favor ingrese la hora',
                 );

         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, OrdenC $o = null)
     {
         try{
             \DB::beginTransaction();
             if( $data[ 'id' ] != 'undefined'){
                 $orden = OrdenC::find($data['id']);
                 //$existOrdenC   = $this->checkOrdenC($data['cliente_id'],$data['user_id'],$data['dias']);
                 //if( $existOrdenC   == false )throw new \Exception('Esta Combinacion ya existe con este dia: '.$data['dias']);

                 $orden->cliente_id         = $data['cliente_id'];
                 $orden->user_id            = $data['user_id'];
                 $orden->dia                = $data['dias'];
                 $orden->hora               = $data['time'];
                 $orden->user_created       = Auth::user()->id;

                 $orden->save();
                 //$existOrdenC   = $this->checkOrdenC($data);
                 //if( $existOrdenC   == false )throw new \Exception('Esta Combinacion ya existe');
             }
             else {

               $dias = explode(',',$data['dias']);
                 foreach ($dias as $key => $dia) {
                   $existOrdenC   = $this->checkOrdenC($data['cliente_id'],$data['user_id'],$dia);
                   if( $existOrdenC   == false )throw new \Exception('Esta Combinacion ya existe con este dia: '.$dia);
                   $orden = new OrdenC();
                   $orden->cliente_id         = $data['cliente_id'];
                   $orden->user_id            = $data['user_id'];
                   $orden->dia                = $dia;
                   $orden->hora               = $data['time'];
                   $orden->user_created       = Auth::user()->id;

                   $orden->save();
                 }

             }



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

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
     public function checkOrdenC($cliente_id, $user_id, $dia){
          $exist = OrdenC::where('cliente_id',$cliente_id)
                  ->where('user_id',$user_id)
                  ->where('dia','=',$dia)
                  ->get();
         if( count( $exist ) < 1){
              return true;
          }else{
             return false;
          }
     }

     /**
      * Show the form for editing the specified resource.
      *
      * @param  int  $id
      * @return \Illuminate\Http\Response
      */
     public function showOrdenes()
     {
         //
         $ordenes =  new OrdenC();
         $orden = $ordenes->getCheckList();
         $clientes = Clientes::where('status_id',1)->OrderBy('nombre_comercial')->get();
         $conductores = User::where('tipo_usuario_id',2)->where('status_id',1)->OrderBy('username')->get();
         return view('catalogo.ordencAll')->with(compact('orden','clientes','conductores'));
     }

     /**
      * Update the specified resource in storage.
      *
      * @param  \Illuminate\Http\Request  $request
      * @param  int  $id
      * @return \Illuminate\Http\Response
      */
     public function getOrden()
     {
         //
         $data = \Input::all();
         return $orden = OrdenC::find($data['id']);
         //return $camion = $camiones->getCamion($data['id']);
     }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function deleteOrden()
    {
        //
        $data = \Input::all();
        return OrdenC::destroy($data['id']);
    }
}