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

namespace Trash\Http\Controllers;

use Illuminate\Http\Request;

use Trash\Http\Requests;
use Trash\Http\Controllers\Controller;
use Trash\Cuenta;
use Input;
use Validator;

class CuentaController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        return view('egreso.cuenta');
    }

    public function cuentaTable()
    {
        //
        $cuentas = Cuenta::where('status_id', '=', 1)->get();
        return view('egreso.cuentaTable')->with(compact('cuentas'));
    }

    public function saveCuenta()
    {
        //
        $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'       => 'required',
            'referencia'   => 'required',
            'tipo'         => 'required',
        );
        $messages =  array(
            'cuenta.required'       => 'Por favor ingrese la Cuenta',
            'referencia.required'   => 'Por favor ingrese la Referencia',
            'tipo.required'         => 'Por favor selecion el Tipo',
        );

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

    public function store($data, Cuenta $c = null)
    {
        try{
            \DB::beginTransaction();
            if( isset($data[ 'id' ]) && $data[ 'id' ] != 'undefined'){
                $cuenta = Cuenta::find($data['id']);
                // $existCuenta=$this->checkCuenta($data);
                // if( $existCuenta==false )throw new \Exception('Ya existe cuenta: '.$data['cuenta']);
            }
            else {
                $cuenta = new Cuenta();
                $existCuenta=$this->checkCuenta($data);
                if( $existCuenta==false )throw new \Exception('Ya existe cuenta: '.$data['cuenta']);
            }
            $cuenta->cuenta     = $data['cuenta'];
            $cuenta->referencia = $data['referencia'];
            $cuenta->tipo       = $data['tipo'];
            $cuenta->status_id  = 1;

            $cuenta->save();

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

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

    }
    public function deleteCuenta(Request $request){
        $id = $request->input('id');
        $cuenta = Cuenta::find($id);
        $cuenta->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']);
        }
    }
}