<?php

namespace Predial\Http\Controllers;

use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Predial\Paquete;

class PaqueteController extends Controller{

    public function store(Request $request){
        $compania = session()->get('compania');

        $ff = explode("/", $request->txtFecha);
        $fecha = Carbon::createFromDate($ff[2], $ff[1], $ff[0]);

        $paquete = $this->buscarPaquete($fecha->format('Y-m-d'), $request->sltBancos, $request->txtNumeroPaquete);

        if(empty($paquete)){
            $new = new Paquete();
            $new->banco   = $request->sltBancos;
            $new->fecha   = $fecha->format('Y-m-d');
            $new->numero  = $request->txtNumeroPaquete;
            $new->cupones = $request->txtCupones;
            $new->valor   = $request->txtValorR;
            $new->save();

            flash()->overlay("Información guardada correctamente", "Información");

            $paquete = $this->buscarPaquete($fecha->format('Y-m-d'), $request->sltBancos);
        }

        return redirect()->route("Pay", encrypt($paquete->id_unico));
    }

    public static function buscarPaquete($fecha, $banco, $numero = NULL){
        if(empty($numero)){
            $data = DB::table('gr_paquete as paq')
                         ->select(
                            'paq.id_unico',
                            'cta.numerocuenta as cod',
                            'cta.descripcion',
                            DB::raw('DATE_FORMAT(paq.fecha, "%d/%m/%Y") as fecha'),
                            'paq.numero',
                            'paq.cupones',
                            'paq.valor',
                            'paq.banco'
                        )
                         ->leftJoin('gf_cuenta_bancaria as cta', 'paq.banco', '=', 'cta.id_unico')
                         ->where('paq.fecha', '=', $fecha)
                         ->where('paq.banco', '=', $banco)
                         ->first();
        }else{
            $data = DB::table('gr_paquete as paq')
                         ->select(
                            'paq.id_unico',
                            'cta.numerocuenta as cod',
                            'cta.descripcion',
                            DB::raw('DATE_FORMAT(paq.fecha, "%d/%m/%Y") as fecha'),
                            'paq.numero',
                            'paq.cupones',
                            'paq.valor',
                            'paq.banco'
                        )
                         ->leftJoin('gf_cuenta_bancaria as cta', 'paq.banco', '=', 'cta.id_unico')
                         ->where('paq.fecha', '=', $fecha)
                         ->where('paq.banco', '=', $banco)
                         ->where('paq.numero', '=', $numero)
                         ->first();
        }
        return $data;
    }

    public static function buscarPaqueteIdUnico($id_unico){
        $data = DB::table('gr_paquete as paq')
                     ->select(
                        'paq.id_unico',
                        'cta.numerocuenta as cod',
                        'cta.descripcion',
                        DB::raw('DATE_FORMAT(paq.fecha, "%d/%m/%Y") as fecha'),
                        'paq.numero',
                        'paq.cupones',
                        'paq.valor',
                        'paq.banco'
                    )
                     ->leftJoin('gf_cuenta_bancaria as cta', 'paq.banco', '=', 'cta.id_unico')
                     ->where('paq.id_unico', '=', $id_unico)
                     ->first();
        return $data;
    }

    public static function guardar_paquete($fecha, $banco, $cupones, $numero, $valor){
        $compania = session()->get('compania');

        $ff = explode("/", $fecha);
        $fecha = Carbon::createFromDate($ff[2], $ff[1], $ff[1]);

        $paquete = PaqueteController::buscarPaquete($fecha->format('Y-m-d'), $banco);

        if(empty($paquete)){
            $new = new Paquete();
            $new->banco   = $banco;
            $new->fecha   = $fecha->format('Y-m-d');
            $new->numero  = $numero;
            $new->cupones = $cupones;
            $new->valor   = $valor;
            $new->save();

            $paquete = PaqueteController::buscarPaquete($fecha->format('Y-m-d'), $banco);
        }
        return $paquete->id_unico;
    }
}
