<?php

namespace App\Http\Controllers;

use App\Models\Bancos;
use App\Models\CuentaBancaria;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

class CuentaBancariaController extends Controller
{
    public function CrearCuentaIndex()
    {
        $dataBancos = Bancos::where('estado', 'A')->get();
        return  view('Mantenimiento.Items.crearCuentaBancaria', ['bancos' => $dataBancos]);
    }

    public function CrearCuentaBancaria(Request $r)
    {
        try {
           $validator = Validator::make($r->all(), [
                'id_ncuenta' => 'required',
                'ncuenta' => 'required',
                'nombre' => 'required',
                'tcuenta' => 'required',
                'idbanco' => 'required',
                'estado' => 'required',
            ]);

            if ($validator->fails()) {
                return response()->json([
                    'status' => 'error',
                    'message' => 'Debe llenar todos los campos son obligatorio.!!',
                ]);
            }
            $dataBanco = new CuentaBancaria();
            if ($r->id_ncuenta != 0) {
                $dataBanco =  CuentaBancaria::where('id', $r->id_ncuenta)->first();
            }
            $dataBanco->cuenta = $r->ncuenta;
            $dataBanco->nombre = $r->nombre;
            $dataBanco->codigocliente = $r->ccliente;
            $dataBanco->tipocuenta = $r->tcuenta;
            $dataBanco->id_banco_fk = $r->idbanco;
            $dataBanco->save();
            return response()->json([
                'status' => 'ok',
                'message' => 'Cuenta Bancaria Grabada con Exito.!!'
            ]);
        } catch (\Throwable $th) {
          return response()->json([
                'status' => 'error',
                'message' => 'Se presentaron inconvenientes al guardar la información'
            ]);
        }
    }
    public function ListarCuentas()
    {
        //  $dataCuenta = CuentaBancaria::get();
        return datatables(
            DB::table('cuenta_bancaria')
                ->join('bancos', 'bancos.id', 'cuenta_bancaria.id_banco_fk')
                ->select(['cuenta_bancaria.id','cuenta_bancaria.id_banco_fk', 'cuenta_bancaria.cuenta', 'cuenta_bancaria.nombre', 'cuenta_bancaria.codigocliente', 'cuenta_bancaria.tipocuenta', 'cuenta_bancaria.estado', 'bancos.descripcion'])
                ->get()
        )->toJson();
    }

    public function ListarBancos(){
        $dataBancos = Bancos::where('estado', 'A')->get();
        return response()->json([
            'status' => 'ok',
            'success' => true,
            'object' => $dataBancos
        ]);
    }

    public function CrearBancos(Request $r)
    {
        try {
          
            $validator = Validator::make($r->all(), [
                'descripcion' => 'required'
            ]);

            if ($validator->fails()) {
                return response()->json([
                    'status' => 'error',
                    'message' => 'Debe llenar todos los campos son obligatorio.!!',
                ]);
            }

            $existe = Bancos::where('descripcion', $r->descripcion)->count();
            if($existe > 0){
                return response()->json([
                    'status' => 'error',
                    'message' => 'El banco ya Existe.!!',
                ]);
            }

            $dataBanco = new Bancos();
            $r->descripcion = strtoupper($r->descripcion);
            
            $dataBanco->descripcion = $r->descripcion;
            $dataBanco->estado = 'A';

            $dataBanco->save();
            return response()->json([
                'status' => 'ok',
                'message' => 'Banco Grabado con Exito.!!'
            ]);
        } catch (\Throwable $th) {
            return response()->json([
                'status' => 'error',
                'message' => 'Se presentaron inconvenientes al guardar la información'
            ]);
        }
    }
}
