using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Exferia_Controles;
using Exferia_Aplicacion.General;
using Exferia_EntityFramework;
using Exferia_Formularios;
using Exferia_General.General;
using Exferia_Maestros.General;
using Exferia_Aplicacion.Visualizacion;

namespace Exferia_Maestros._3_Vistas.ControlesPersonalizados_DentroPaneles
{
    public partial class CTU_P_Articulo_Tasas : UserControl
    {
        #region Propiedades Privades
        private P_Articulo g_frm_P_Articulo = null;
        private MAE_Tasas g_mdl_GEN_Tasas=null;
        private int g_int_Numero_Objeto=-1;
        #endregion

        #region Eventos publicos
        public event EventHandler<INTERNO_EventArgs> Boton_P_Articulo_TasasDelete_Click;
        #endregion

        #region Constructor

        public CTU_P_Articulo_Tasas(P_Articulo _frm_P_Articulo,
                                   int _int_Numero_Objeto, 
                                   MAE_Tasas _mdl_MAE_Tasas)
        {
            InitializeComponent();

            Repintar.Empezar(this);

            g_mdl_GEN_Tasas = _mdl_MAE_Tasas;
            g_int_Numero_Objeto = _int_Numero_Objeto;
            g_frm_P_Articulo = _frm_P_Articulo;

            //Rellenar para los F3......................................
            ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_PantallaContenedora = _frm_P_Articulo;
            ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_PRINCIPAL_Opcion_BuscarDatos = Variables.G_STR_OPCION_MAE_TASA;

            //CargarDatos
            Cargar();
        }

        #endregion

        #region Cargar
        private void Cargar()
        {
            try
            {
                if (g_mdl_GEN_Tasas != null)
                {
                    //Si hay datos no puede estar vacio
                    ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Id = g_mdl_GEN_Tasas.id;
                    ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Codigo = g_mdl_GEN_Tasas.codigo;
                    ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Descripcion = g_mdl_GEN_Tasas.descripcion;
                    ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_FechaBorrado = g_mdl_GEN_Tasas.fechaBorrado;
                }
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log(ex.Message, ex, nameof(CTU_P_Articulo_Tasas) + "/" + nameof(Cargar));
            }
        }
        #endregion

        #region Vaciar
        public void Vaciar()
        {
            ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Id = -1;
            ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Codigo = string.Empty;
            ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Descripcion = string.Empty;
            ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_FechaBorrado = null;
        }
        #endregion

        #region Grabar
        public INTERNO_ValorDevuelto_Modelo Validar()
        {
            INTERNO_ValorDevuelto_Modelo mdl_INTERNO_ValorDevuelto_Modelo = new INTERNO_ValorDevuelto_Modelo();
            mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = true;

            //Tasa no puede estar vacio (Obligatorio)
            if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Codigo.Trim().Length == 0 &&
                 ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Descripcion.Trim().Length == 0)
            {
                mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO(ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Titulo);
                mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_PRINCIPAL_TextBox_Codigo;
            }

            //Si hay Tasa Validar que es correcta
            if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && (ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Codigo.Trim().Length != 0 ||
                 ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Descripcion.Trim().Length != 0) && ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Id == -1)
            {
                mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO(ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Titulo);
                mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_PRINCIPAL_TextBox_Codigo;
            }

            //Si esta todo correcto, ponemos el id de la tasa para que no se repita
            if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto)
            {
                mdl_INTERNO_ValorDevuelto_Modelo.Id = ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Id;
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }

        public MAE_Tasas Obtener_Para_Grabar()
        {
            MAE_Tasas mdl_MAE_Tasas = null;

            //Si tiene TASA
            if (ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Id != -1)
            {
                mdl_MAE_Tasas = new MAE_Tasas();
                mdl_MAE_Tasas.id = ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Id;
                mdl_MAE_Tasas.codigo = ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Codigo.Trim();
                mdl_MAE_Tasas.descripcion = ex_usc_F3_CTU_P_Articulo_Tasas.Exferia_F3_Descripcion.Trim();
            }

            return mdl_MAE_Tasas;
        }
        #endregion

        #region Eventos
        private void ex_btn_CTU_P_Articulo_Tasas_Borrar_Click(object sender, EventArgs e)
        {
            // para que salte el evento en el otro lado
            EventHandler<INTERNO_EventArgs> temp = Boton_P_Articulo_TasasDelete_Click;
            if(temp != null)
                temp(sender, new INTERNO_EventArgs(g_int_Numero_Objeto));
        }

        private void ex_usc_F3_CTU_P_Articulo_Tasas_Exferia_F3_Evento_TextChanged(object sender, EventArgs e)
        {
            g_frm_P_Articulo.Controlar_Modificaciones();
        }
        #endregion
    }
}
