<?php
namespace App\Http\Controllers;

use Request;
use Session;
use App\Custom\SQLConnection;
use App\Custom\Misc;
use DB;
use stdClass;
use DateTime;
use Route;

class CotizacionesController extends Controller{
    
    public function cotizacionesVista(){
        try {
            $monedas = SQLConnection::backendStoreProcedure('obtener_monedas', []);
            if ($monedas === null) {
                throw new \Exception("Error: No se pudieron obtener las monedas.");
            }
            return view('/cotizaciones/cotizaciones', ['monedas' => $monedas]);
        } catch (\Exception $e) {
            return response()->json(['error' => $e->getMessage()], 500);
        }
    }

    public function cotizacionesTabla(){
        try {
            $moneda = Request::input('moneda');
            if ($moneda === null) {
                throw new \InvalidArgumentException("Error: Moneda no proporcionada.");
            }
            $result = SQLConnection::backendStoreProcedure('abm_cotizaciones', ['SELECCIONAR', null, $moneda]);
            if ($result === null) {
                throw new \Exception("Error: No se pudieron obtener las cotizaciones.");
            }
            return $result;
        } catch (\InvalidArgumentException $e) {
            return response()->json(['error' => $e->getMessage()], 400);
        } catch (\Exception $e) {
            return response()->json(['error' => $e->getMessage()], 500);
        }
    }

    public function cotizacionesAlta() {
        $inputs = Request::only(['monedaAlta', 'fechaAlta', 'tasaDolar', 'tasaEuro']);
        $monedaAlta = $inputs['monedaAlta'] ?? null;
        $tasaDolar = $inputs['tasaDolar'] ?? null;
        $tasaEuro = $inputs['tasaEuro'] ?? null;

        if ($monedaAlta && ($tasaDolar !== null || $tasaEuro !== null)) {
            try {
                $params = ['ALTA', $inputs['fechaAlta'], $monedaAlta, $tasaDolar, $tasaEuro];
                SQLConnection::backendStoreProcedure('abm_cotizaciones', $params);
                return SQLConnection::backendStoreProcedure('abm_cotizaciones', ['SELECCIONAR', null, $monedaAlta]);
            } catch (\Exception $e) {
                return "Error en la ejecución: " . $e->getMessage();
            }
        }

        return "Error en el alta: datos incompletos";
    }
}