using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LLNet.GUI;
using System.Text.RegularExpressions;

namespace LLNet.Tienda.Dialogs.Refunds
{
    public partial class FrmDatosClienteDevol : Form
    {
        private string vCedula = String.Empty;
        private string vNDocumento_Devol = String.Empty;
        private String vNDocumento_Fact = String.Empty;

        public FrmDatosClienteDevol()
        {
            InitializeComponent();
        }

        #region Propiedades

        /// <summary>
        /// Documento devolución
        /// </summary>
        public string NDocumento_Devol
        {
            set
            {
                this.vNDocumento_Devol = value;
            }
        }

        /// <summary>
        /// Documento de la factura a la que se le está haciendo devolución
        /// </summary>
        public string NDocumento_Fact
        {
            set
            {
                this.vNDocumento_Fact = value;
            }
        }

        #endregion

        #region mCargarBancos
        /// <summary>
        /// Carga los bancos para la transferencia
        /// </summary>
        private void mCargarBancos()
        {
            cbxBancos.DataSource = null;

            using (DataSet vBancos = GUI.CApp.bll.getDataSet("PDV", "EC_V_BANCOS_TRANSF"))
            {
                if (vBancos.Tables.Count > 0 && vBancos.Tables[0].Rows.Count > 0)
                {
                    cbxBancos.DataSource = vBancos.Tables[0];
                    cbxBancos.DisplayMember = "BANCO";
                    cbxBancos.ValueMember = "ID";
                }
                else
                {
                    btnAceptar.Enabled = false;
                }
            }
        }
        #endregion

        #region mGuardarDatos
        /// <summary>
        /// Almacena los datos del cliente para la transferencia
        /// </summary>
        private void mGuardarDatos()
        {
            Utils.QueryParams vParametros = new Utils.QueryParams();
            vParametros.AddReplaceParam("pNDOCUMENTO_DEVOL", this.vNDocumento_Devol);
            vParametros.AddReplaceParam("pNDOCUMENTO_FACT", this.vNDocumento_Fact);

            if (cbxBancos.Text.ToUpper() == "OTRO")
            {
                vParametros.AddReplaceParam("pCBANCO", txtOtroBanco.Text);
            }
            else
            {
                vParametros.AddReplaceParam("pCBANCO", cbxBancos.Text);
            }
            vParametros.AddReplaceParam("pCCEDULA", txtCedula.Text);
            vParametros.AddReplaceParam("pCNOMBRE", txtNombre.Text);
            vParametros.AddReplaceParam("pCAPELLIDO1", txtApellido1.Text);
            vParametros.AddReplaceParam("pCAPELLIDO2", txtApellido2.Text);
            vParametros.AddReplaceParam("pCTELEFONO", mtxtTelefono.Text);

            if (txtEmail.Text != String.Empty)
            {
                vParametros.AddReplaceParam("pCEMAIL", txtEmail.Text);
            }
            else
            {
                vParametros.AddReplaceParam("pCEMAIL", "");
            }

            vParametros.AddReplaceParam("pCCREADO_POR", GUI.CApp.usuario);

            if (GUI.CApp.Sup != String.Empty)
            {
                vParametros.AddReplaceParam("pCAUTORIZADO_POR", GUI.CApp.Sup);
            }
            else
            {
                vParametros.AddReplaceParam("pCAUTORIZADO_POR", GUI.CApp.usuario);
            }
            vParametros.AddReplaceParam("pCCUENTA", txtNumCuenta.Text);

            GUI.CApp.bll.ExecuteSql("EC_P_ALM_TRANSF_DEVOL", vParametros, "PDV");
            CApp.ShowMessage("¡Datos almacenados con éxito!", "Datos Cliente - Transferencia", true);
            btnSalir_Click(null, null);
        }
        #endregion

        #region btnAceptar_Click
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            try
            {
                //Expresión regular para el número de cédula
                Regex vExpresionCedula = new Regex(@"^\d-\d{4,4}-\d{4,4}$");
                //Expresión regular para el número de correo
                Regex vExpresionCorreo = new Regex(@"^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$");
                //
                if (this.rbtnCedula.Checked)
                {
                    if (!vExpresionCedula.IsMatch(this.txtCedula.Text))
                    {
                        this.txtCedula.Focus();
                        CApp.ShowMessage("¡Digite/complete la cédula del cliente con el formato 0-0000-0000!", "Datos Cliente - Transferencia", true);
                    }
                    else
                    {
                        this.vCedula = this.txtCedula.Text;
                    }
                }
                else if (this.rbtnPasaporte.Checked)
                {
                    if (this.txtCedula.Text == "")
                    {
                        this.txtCedula.Focus();
                        CApp.ShowMessage("¡Digite el número de pasaporte del cliente!", "Datos Cliente - Transferencia", true);
                    }
                    else
                    {
                        this.vCedula = this.txtCedula.Text;
                    }
                }
                //
                if (this.vCedula != "")
                {
                    if (this.txtNombre.Text == "")
                    {
                        this.txtNombre.Focus();
                        CApp.ShowMessage("¡Digite el nombre del cliente!", "Datos Cliente - Transferencia", true);
                    }
                    else if (this.txtApellido1.Text == "")
                    {
                        this.txtApellido1.Focus();
                        CApp.ShowMessage("¡Digite el primer apellido del cliente!", "Datos Cliente - Transferencia", true);
                    }
                    else if (this.txtApellido2.Text == "")
                    {
                        this.txtApellido2.Focus();
                        CApp.ShowMessage("¡Digite el segundo apellido del cliente!", "Datos Cliente - Transferencia", true);
                    }
                    else if (!this.mtxtTelefono.MaskCompleted)
                    {
                        this.mtxtTelefono.Focus();
                        CApp.ShowMessage("¡Digite/complete el teléfono del cliente!", "Datos Cliente - Transferencia", true);
                    }
                    else if (this.txtEmail.Text != String.Empty && !vExpresionCorreo.IsMatch(this.txtEmail.Text))
                    {
                        this.txtEmail.Focus();
                        CApp.ShowMessage("El correo digitado es incorrecto. Ingrese un correo válido", "Datos Cliente - Transferencia", true);
                    }
                    else if (this.cbxBancos.Text.ToUpper() == "OTRO" && txtOtroBanco.Text == String.Empty)
                    {
                        txtOtroBanco.Focus();
                        CApp.ShowMessage("¡Digite el banco para la transferencia al cliente!", "Datos Cliente - Transferencia", true);
                    }
                    else if (txtNumCuenta.Text == String.Empty)
                    {
                        txtNumCuenta.Focus();
                        CApp.ShowMessage("¡Digite el número de cuenta del cliente en el banco indicado!", "Datos Cliente - Transferencia", true);
                    }
                    else
                    {
                        mGuardarDatos();
                    }
                }
            }
            catch (Exception vEx)
            {
                CApp.ShowMessage(vEx.Message, "Datos Cliente - Transferencia", true);
            }
        }
        #endregion

        #region btnSalir_Click
        private void btnSalir_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }
        #endregion

        #region rbtnCedula_CheckedChanged
        private void rbtnCedula_CheckedChanged(object sender, EventArgs e)
        {
            try
            {
                if (rbtnCedula.Checked)
                {
                    txtCedula.Mask = "0-0000-0000"; 
                }
                else
                {
                    txtCedula.Mask = "";
                }
            }
            catch (Exception vEx)
            {
                CApp.ShowMessage(vEx.Message, "Datos Cliente - Transferencia", true);
            }
        }
        #endregion

        #region rbtnPasaporte_CheckedChanged
        private void rbtnPasaporte_CheckedChanged(object sender, EventArgs e)
        {
            try
            {
                if (rbtnPasaporte.Checked)
                {
                    txtCedula.Mask = "";
                }
                else
                {
                    txtCedula.Mask = "0-0000-0000";
                }
            }
            catch (Exception vEx)
            {
                CApp.ShowMessage(vEx.Message, "Datos Cliente - Transferencia", true);
            }
        }
        #endregion

        #region FrmDatosClienteDevol_Load
        private void FrmDatosClienteDevol_Load(object sender, EventArgs e)
        {
            try
            {
                mCargarBancos();
            }
            catch (Exception vEx)
            {
                CApp.ShowMessage(vEx.Message, "Datos Cliente - Transferencia", true);
            }
        }
        #endregion

        #region cbxBancos_SelectedIndexChanged
        private void cbxBancos_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (cbxBancos.Text.ToUpper() == "OTRO")
                {
                    txtOtroBanco.Visible = true;
                    lblOtroBanco.Visible = true;
                    this.txtOtroBanco.Focus();
                }
                else
                {
                    txtOtroBanco.Text = String.Empty;
                    txtOtroBanco.Visible = false;
                    lblOtroBanco.Visible = false;
                }
            }
            catch (Exception vEx)
            {
                CApp.ShowMessage(vEx.Message, "Datos Cliente - Transferencia", true);
            }
        }
        #endregion

        #region FrmDatosClienteDevol_KeyDown
        private void FrmDatosClienteDevol_KeyDown(object sender, KeyEventArgs e)
        {
            try
            {
                if (e.KeyCode == Keys.F12 && btnAceptar.Enabled)
                {
                    btnAceptar_Click(null, null);
                }
                else if (e.KeyCode == Keys.Escape)
                {
                    btnSalir_Click(null, null);
                }
            }
            catch (Exception vEx)
            {
                CApp.ShowMessage(vEx.Message, "Datos Cliente - Transferencia", true);
            }
        }
        #endregion
    }
}
