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

namespace Trash\Http\Controllers;

use Illuminate\Http\Request;

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

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

    public function subCuentaTable()
    {
        $subcuentas = SubCuenta::where('subcuenta.status_id', '=', 1)
                            ->join('cuenta', 'cuenta.id', '=', 'subcuenta.cuenta_id')->where('cuenta.status_id', '=', 1)->get();
        $cuentas = Cuenta::where('status_id', '=', 1)->get();
        return view('egreso.SubCuentaTable')->with(compact('subcuentas', 'cuentas'));
    }

    public function saveSubCuenta()
    {
        //
        $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( 
            'subcuenta'       => 'required',
            'referencia'      => 'required',
            'cuenta_id'       => 'required|Int',
        );
        $messages =  array(
            'subcuenta.required'       => 'Por favor ingrese la SubCuenta',
            'referencia.required'    => 'Por favor ingrese la Referencia',
            'cuenta_id.required'         => 'Por favor selecion la Cuenta',
        );

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

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

            $subCuenta->save();

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

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

    }
    public function deleteSubCuenta(Request $request){
        $id = $request->input('id');
        $subCuenta = SubCuenta::find($id);
        $subCuenta->status_id = 0;
        if($subCuenta->save()){
          return response()->json(['status'=> true, 'message'=> 'Eliminado Correctamente!', 'type'=>'success']);
        }else{
          return response()->json(['status'=> false, 'message'=> 'Error al Eliminar!','type'=>'danger']);
        }
    }
}