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

namespace Trash\Http\Controllers;

use Illuminate\Http\Request;

use Trash\Http\Requests;
use Trash\Http\Controllers\Controller;
use Trash\Poliza;
use Trash\Cuenta;
use Trash\SubCuenta;
use Auth;
use Input;
use Validator;

class PolizaController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $cuentas = Cuenta::where('status_id', '=', 1)->get();
        $subcuentas = SubCuenta::where('status_id', '=', 1)->get();
        return view('egreso.poliza')->with(compact('cuentas', 'subcuentas'));
    }

    public function polizaTable() {

        $poliza = new Poliza();
        $polizas = $poliza->getPolizas();
        $total = 0;
        $total_p = 0;
        $total_np = 0;
        foreach($polizas as $_poliza) {
            if ($_poliza->status == 'Pagado') $total_p += $_poliza->total;
            else if ($_poliza->status == 'No pagado') $total_np += $_poliza->total;
        }
        $total = $total_p + $total_np;
        return view('egreso.polizaTable')->with(compact('polizas', 'total', 'total_p','total_np'));
    }

    public function savePoliza()
    {
        //
        $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( 
            'cuenta_id'      => 'required',
            'subcuenta_id'   => 'required',
            'nombre'         => 'required',
            'referencia'     => 'required',
            'estado'         => 'required',
        );
        $messages =  array(
            'cuenta_id.required'       => 'Por favor seleccione una Cuenta',
            'subcuenta_id.required'    => 'Por favor seleccione una SubCuenta',
            'nombre.required'          => 'Por favor ingrese el Nombre',
            'referencia.required'      => 'Por favor ingrese la Referencia',
            'estado.required'          => 'Por favor selecion el estado',
        );

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

    public function store($data, Poliza $c = null)
    {
        try{
            \DB::beginTransaction();
            if( isset($data[ 'id' ]) && $data[ 'id' ] != 'undefined'){
                $poliza = Poliza::find($data['id']);
                // $existCuenta=$this->checkCuenta($data);
                // if( $existCuenta==false )throw new \Exception('Ya existe cuenta: '.$data['cuenta']);
            }
            else {
                $poliza = new Poliza();
                // $existPoliza=$this->checkPoliza($data);
                // if( $existCuenta==false )throw new \Exception('Ya existe cuenta: '.$data['cuenta']);
            }
            $poliza->cuenta_id          = $data['cuenta_id'];
            $poliza->subcuenta_id       = $data['subcuenta_id'];
            $poliza->nombre             = $data['nombre'];
            $poliza->referencia         = $data['referencia'];
            $poliza->status             = $data['estado'];
            $poliza->fecha_vencimiento  = $data['vencimiento'];
            $poliza->importe            = $data['importe'];
            $poliza->iva                = $data['iva'];
            $poliza->total              = $data['total'];
            $poliza->created_by         = Auth::user()->id;
            $poliza->status_id          = 1;

            $poliza->save();

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

    public function checkPoliza($data){
    $exist = Poliza::where('status_id', '=', 1)->where('referencia','=',$data['referencia'])->get();
       if( count( $exist ) < 1){
            return true;
        }else{
           return false;
        }
   }
   public function getPoliza()
    {
        //
        $data = \Input::all();
        $poliza = Poliza::find($data['id']);
        return response()->json(array('status'=> true, 'data'=> $poliza));

    }
    public function deletePoliza(Request $request){
        $id = $request->input('id');
        $poliza = Poliza::find($id);
        $poliza->status_id = 0;
        if($cuenta->save()){
          return response()->json(['status'=> true, 'message'=> 'Eliminado Correctamente!', 'type'=>'success']);
        }else{
          return response()->json(['status'=> false, 'message'=> 'Error al Eliminar!','type'=>'danger']);
        }
    }
    public function getSubCuenta(Request $request) {
        $id = $request->input('id');
        $subcuentas = SubCuenta::where('cuenta_id', '=', $id)->where('status_id', 1)->get();
        return view('egreso.subcuentaFiltered')->with(compact('subcuentas'));
    }

    public function filterEgreso(Request $request) {
        $data = $request->all();

        $poliza = new Poliza();
        $polizas = $poliza->getPolizas($data['data']);
        $total = 0;
        $total_p = 0;
        $total_np = 0;
        foreach($polizas as $_poliza) {
            if ($_poliza->status == 'Pagado') $total_p += $_poliza->total;
            else if ($_poliza->status == 'No pagado') $total_np += $_poliza->total;
        }
        $total = $total_p + $total_np;
        return view('egreso.polizaTable')->with(compact('polizas', 'total', 'total_p','total_np'));
    }
}