#region using
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
#endregion

namespace LLNet.GUI.Dialogs.MessageBoxes
{
    public partial class frmPassword : GUI.FormBases.frmBase
    {
        #region Constructor
        public frmPassword()
        {
            InitializeComponent();
        }
        #endregion

        #region Declaraciones

        public string Usuario;
        private string pModule = "";

        #endregion

        public override void Init(object[] pArgs)
        {
            base.Init(pArgs);
            if (pArgs != null)
            {
                pModule = pArgs[0].ToString();
                this.Text = pArgs[1].ToString();
            }
        }

        #region Eventos

        #region Eventos de la Forma

        private void frmPassword_Load(object sender, EventArgs e)
        {
            textEdit1.Focus();
        }

        private void frmPassword_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.F12:
                    btnAceptar_Click(null, null);
                    break;
                case Keys.Escape:
                    btnCancelar_Click(null, null);
                    break;
            }
        }

        #endregion

        #region Eventos de Controles

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if (pModule != string.Empty)
            {

                if (!GUI.CApp.GetAccessByPassword(pModule, textEdit1.Text))
                {
                    GUI.CApp.ShowMessage("Clave de acceso no válida o usuario no tiene acceso a la opción!", "Logistika POS Retail", true);
                    return;
                }
            }
            else
            {
                Utils.QueryParams qp = new Utils.QueryParams();
                qp.AddReplaceParam("PASSWORD", textEdit1.Text );

                try
                {
                    string seguridad = Utils.Helpers.ObjToStr(GUI.CApp.bll.GetSingleValue("seguridad", qp, "General", true));
                    if (seguridad == String.Empty)
                    {
                        GUI.CApp.ShowMessage("Clave de acceso no válida o usuario no tiene acceso a la opción!", "Logistika POS Retail", true);
                        textEdit1.Text = null;
                    }
                    else
                    {
                        Usuario = seguridad;
                    }
                }
                catch (Exception ex)
                {
                    if (ex.Message.IndexOf("ORA-01017") != -1)
                    {
                        GUI.CApp.EventLog.WriteLog(ex);
                        GUI.CApp.ShowMessage("Error de conexión al esquema de la base de datos, consulte con su administrador", "Logistika POS Retail", true);
                    }
                    else if (ex.Message.IndexOf("ORA-12154") != -1)
                    {
                        GUI.CApp.EventLog.WriteLog(ex);
                        GUI.CApp.ShowMessage("No se pudo establecer la conexión con la base de datos, consulte con su administrador", "Logistika POS Retail", true);
                    }
                    else
                    {
                        GUI.CApp.EventLog.WriteLog(ex);
                        GUI.CApp.ShowMessage(ex.Message, "Logistika POS Retail", true);
                    }
                    textEdit1.Text = null;
                }

            }
            
            DialogResult = DialogResult.OK;
        } 

        private void textEdit1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnAceptar_Click(null, null);
            }
        }

        #endregion


        #endregion
    }
}