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

namespace Trash\Http\Controllers;

use Illuminate\Http\Request;

use Trash\Http\Requests;
use Trash\Http\Controllers\Controller;
use Trash\Clientes;
use Trash\Cuotas;
use Trash\Unidades;
use Trash\Giro;
use Trash\Peso;
use Trash\Ruta;
use Auth;

class ClienteController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $cuotas   = Cuotas::all();
        $unidades = Unidades::all();
        $giros    = Giro::all();
        $rutas    = Ruta::all();
        return view('catalogo.cliente')->with(compact('cuotas','unidades','giros','rutas'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function saveCliente()
    {
        //
        $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'           => 'required',
                'nombre_comercial'  => 'required',
                'fecha_alta'        => 'required',
                'latitude'          => 'required',
                'longitude'         => 'required',
                'semades'           => 'required',
                'cuota'             => 'required',
                'ruta'              => 'required',
                'unidad'            => 'required',
                //'peso'              => 'required',
                'inorganicos'       => 'required|integer',
                'organicos'         => 'required|integer',
                'sanitarios'        => 'required|integer',
                'giro'              => 'required',
                'cont_fact'         => 'string'
                 );
        $messages    =  array(
                'cliente.required'              => 'Por favor ingrese el Cliente',
                'nombre_comercial.required'     => 'Por favor ingrese el Nombre Comercial',
                'fecha_alta.required'           => 'Por favor ingrese la Fecha de Alta',
                'latitude.required'             => 'Por favor ingrese la Latitude',
                'longitude.required'            => 'Por favor ingrese la Longitude',
                'semades.required'              => 'Por favor ingrese el No. SEMADES',
                'cuota.required'                => 'Por favor seleccione la Cuota',
                'ruta.required'                 => 'Por favor seleccione la Ruta',
                'unidad.required'               => 'Por favor seleccione la Unidada',
               // 'peso.required'                 => 'Por favor ingrese el peso',
                'inorganicos.required'          => 'Por favor ingrese los Inorganicos',
                'inorganicos.integer'           => 'El formato no ingresado no coincide en Inorganicos',
                'organicos.required'            => 'Por favor ingrese los Organicos',
                'organicos.integer'             => 'El formato no ingresado no coincide en Organicos',
                'sanitarios.required'           => 'Por favor ingrese los Sanitarios',
                'sanitarios.integer'            => 'El formato no ingresado no coincide en Sanitarios',
                'giro.required'                 => 'Por favor seleccione el Giro del Cliente',


                 );

        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, Clientes $c = null)
    {
        //
        try{
            \DB::beginTransaction();
            if( $data[ 'id' ] != 'undefined'){
                 $cliente = Clientes::find($data['id']);
            }
            else {
                $cliente = new Clientes();
                $existCliente=$this->checkCliete($data);
                if( $existCliente==false )throw new \Exception('Ya existe cliente: '.$data['nombre_comercial']);
            }

            /*if($_COOKIE['id'] == null){ throw new \Exception('La sessión ha caducado vuelve a iniciar');
            URL:To('/');
          }*/

            $cliente->cliente               = $data['cliente'];
            $cliente->nombre_comercial      = $data['nombre_comercial'];
            $cliente->latitude              = $data['latitude'];
            $cliente->longitude             = $data['longitude'];
            $cliente->alta                  = $data['fecha_alta'];
            $cliente->semades               = $data['semades'];
            $cliente->cuota_id              = $data['cuota'];
            $cliente->ruta_id               = $data['ruta'];
            $cliente->unidad_id             = $data['unidad'];
            //$cliente->cantidad              = $data['cantidad'];
            //$cliente->peso                  = $data['peso'];
            $cliente->pu                    = $data['pu'];
            $cliente->ret                   = $data['ret'];
            $cliente->inorganicos           = $data['inorganicos'];
            $cliente->organicos             = $data['organicos'];
            $cliente->sanitarios            = $data['sanitarios'];
            $cliente->giro_id               = $data['giro'];
            $cliente->contacto_factura      = $data['cont_fact'];
            $cliente->email_factura         = $data['email_fact'];
            $cliente->contacto_cobranza     = $data['cont_cobr'];
            $cliente->email_cobranza        = $data['email_cobr'];
            $cliente->rfc                   = $data['rfc'];
            $cliente->direccion             = $data['direccion'];
            $cliente->telefono              = $data['tel'];
            $cliente->municipio             = $data['municipio'];
            $cliente->colonia               = $data['colonia'];
            $cliente->cp                    = $data['cp'];
            $cliente->modo_pago             = $data['pago'];
            $cliente->factura_entrega       = $data['entrega'];
            $cliente->cuenta_bancaria       = $data['cuenta'];
            $cliente->fiscal                = $data['fiscal'];
            $cliente->ultima_facturada      = $data['ultima_fact'];
            $cliente->observaciones         = $data['observaciones'];
            $cliente->status_id             = ($data['status_id']!='') ? $data['status_id'] : 1;
            $cliente->user_created          = Auth::user()->id;
            $cliente->save();
           /* if($data['pu']!=''){
                $importe    = $data['cantidad']*$data['pu'];
                $iva        = $importe * (.16);
                $total      = $importe + $iva;

                $cliente->importe   = $importe;
                $cliente->iva       = $iva;
                $cliente->total     = $total;
            }
            if($data['ret']==1){
                $retencion = $importe * (.04);
                $total_gral = $total - $retencion;
                $cliente->retencion     = $retencion;
                $cliente->total_gral    = $total_gral;
            }else{
                $cliente->retencion     = 0;
                $cliente->total_gral    = $total;
            }*/

          /*  for ($i=1; $i <= 12; $i++) {
                if($data[ 'id' ] != 'undefined'){
                     $peso = Peso::where('cliente_id','=',$cliente->id)->where('mes_id','=',$i)->get();
                     $peso[$i] = Peso::find( $peso[0]->id);
                }else{
                    $peso[$i] = new Peso();
                }
                   $peso[$i]->cliente_id    = $cliente->id;
                   $peso[$i]->peso          = ($data['peso_'.$i]=='')? 0 : $data['peso_'.$i];
                   $peso[$i]->mes_id        = $i;
                   $peso[$i]->user_created  = 1;
                  $peso[$i]->save();
            }*/
        } catch( \Exception $e ){
            \DB::rollback();
            return array( 'status' => false, 'message' => $e->getMessage() );
        }
        \DB::commit();
        return  array( 'status' => true , 'data' => $cliente );
    }

    public function checkCliete($data){
         $exist = Clientes::where('nombre_comercial','=',$data['nombre_comercial'])->get();
        if( count( $exist ) < 1){
             return true;
         }else{
            return false;
         }
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function showClientes()
    {
        //
        $clientes =  new Clientes();
        $cliente = $clientes->getClientes();

        $cuotas   = Cuotas::all();
        $unidades = Unidades::all();
        $giros    = Giro::all();
        $rutas    = Ruta::all();

        return view('catalogo.clienteAll')->with(compact('cliente','cuotas','unidades','giros','rutas'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function getCliente()
    {
        //
        $data = \Input::all();
        $clientes = new Clientes();
        return $cliente = $clientes->getCliente($data['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)
    {
        //
    }
}