public Listar_Datos_Formulario_Form(FORMULARIO form, int selectIndex)
        {
            InitializeComponent();
            specie = new SpeciesBL(Program.ContextData);
            quality = new QualityBL(Program.ContextData);
            state = new StateBL(Program.ContextData);
            notimberLine = new NonTimberLineBL(Program.ContextData);
            inventoryLine = new InventoryLineBL (Program.ContextData);
            regenerationLine = new RegenerationLineBL(Program.ContextData);

            this.form = form;
            especieBS.DataSource = specie.GetSpecies();
            calidadBS.DataSource = quality.GetQualities();
            estadoSanitarioBS.DataSource = state.GetStates();

            lineaInventarioBS.DataSource = form.LINEAINVENTARIO.Count == 0 ? new List<LINEAINVENTARIO>() : form.LINEAINVENTARIO;
            lineaInventarioDGW.DataSource = lineaInventarioBS;

            regeneracionBS.DataSource = form.LINEAREGENERACION.Count == 0 ? new List<LINEAREGENERACION>() : form.LINEAREGENERACION;
            regeneracionDGW.DataSource = regeneracionBS;

            noMaderablesBS.DataSource = form.LINEANOMADERABLES.Count == 0 ? new List<LINEANOMADERABLES>() : form.LINEANOMADERABLES;
            noMaderablesDGW.DataSource = noMaderablesBS;

            criterioInvCbx.SelectedIndex = 0;
            criterioNoMaderCbx.SelectedIndex = 0;
            criterioRegenCbx.SelectedIndex = 0;
            lineasTab.SelectedIndex = selectIndex;
        }
 /// <summary>
 /// Constructor para inicializar atributos y elementos del formulario
 /// </summary>
 public EstadosSanitarios_Form()
 {
     try
     {
         InitializeComponent();
         state = new ESTADOSANITARIO();
         stateBL = new StateBL(Program.ContextData);
         StateBSource.DataSource = stateBL.GetStates();
         criterioCbx.SelectedIndex = 0;
         pn_listado.Show();
         pn_crear.Hide();
         pn_editar.Hide();
         this.Width = pn_listado.Width;
         this.Height = pn_listado.Height;
         this.CenterToScreen();
     }
     catch (Exception ex)
     {
         Error_Form errorForm = new Error_Form(ex.Message);
         errorForm.MdiParent = ParentForm;
         errorForm.Show();
     }
 }
        public Crear_Editar_Formulario_Form(FORMULARIO f)
        {
            InitializeComponent();
            modified = false;
            if (f == null) newForm = new FORMULARIO();
            else newForm = f;

            project = new ProjectBL(Program.ContextData);
            species = new SpeciesBL(Program.ContextData);
            stratums = new StratumBL(Program.ContextData);
            quality = new QualityBL(Program.ContextData);
            state = new StateBL(Program.ContextData);
            form = new FormBL(Program.ContextData);
            lineInv = new InventoryLineBL(Program.ContextData);
            lineRegen = new  RegenerationLineBL(Program.ContextData);
            lineNonTimber = new NonTimberLineBL(Program.ContextData);
            typeUses = new TypeUseBL(Program.ContextData);

            int countEspecies = ((PROYECTO)Program.Cache.Get("project")).ESPECIE.ToList().Count;
            if (countEspecies != 0) especieBS.DataSource = ((PROYECTO)Program.Cache.Get("project")).ESPECIE.ToList().OrderBy(e => e.NOMCOMUN);
            else
            {
                MessageBox.Show("No existen especies asociadas a este proyecto, seleccione uno o mas especies.", "Parametros insuficiente.", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Close();
            }

            List<ESTRATO> listStratums = new List<ESTRATO>();
            foreach(LISTADODEESTRATOS list in ((PROYECTO)Program.Cache.Get("project")).LISTADODEESTRATOS)
            {
                listStratums.Add(list.ESTRATO);
            }
            estratoBS.DataSource =listStratums;
            if (estratoBS.Count != 0) estratoCbx.SelectedItem = (ESTRATO)estratoBS.Current;
            else estratoBS.Add(new ESTRATO() { DESCRIPESTRATO = "Diseño muestral simple." });

            calidadBS.DataSource = quality.GetQualities();

            estadoSanitarioBS.DataSource = state.GetStates();

            tipoUsoBS.DataSource=typeUses.GetTypeUse();
            tipoDeUsosLbc.DataSource = tipoUsoBS;
            tipoDeUsosLbc.DisplayMember ="DESCRIPCION";
            tipoDeUsosLbc.ValueMember = "NOMBRETIPOUSO";

            List<KeyValuePair<string, string>> data = new List<KeyValuePair<string, string>>();
            data.Add(new KeyValuePair<string, string>("BFB", "Bifurcacion Abajo de la A.P."));
            data.Add(new KeyValuePair<string, string>("NBF", "Ninguna Bifurcacion"));

            tipoArbolCbx.DataSource = data;
            tipoArbolCbx.DisplayMember = "Value";
            tipoArbolCbx.ValueMember = "Key";
            tipoArbolCbx.SelectedValue = "NBF";

            newLineNoTimber =  new LINEANOMADERABLES();

            if (f == null)
            {
                noMaderableBS.DataSource = new List<LINEANOMADERABLES>();
                regeneracionBS.DataSource = new List<LINEAREGENERACION>();
                lineaInvBS.DataSource = new List<LINEAINVENTARIO>();
                USUARIO user = (USUARIO)Program.Cache.Get("user");
                PROYECTO p = (PROYECTO)Program.Cache.Get("project");
                responsableTxt.Text = user.NOMBRES + " " + user.APELLIDOS;
                proyectoTxt.Text = p.LUGAR;
            }
            else
            {
                noMaderableBS.DataSource = newForm.LINEANOMADERABLES.ToList();
                regeneracionBS.DataSource = newForm.LINEAREGENERACION.ToList();
                lineaInvBS.DataSource = newForm.LINEAINVENTARIO.ToList();
                responsableTxt.Text = f.USUARIO.NOMBRES + " " + f.USUARIO.APELLIDOS;
                proyectoTxt.Text = f.PROYECTO.LUGAR;
                datosTabControl.Enabled = true;
                guardarformularioBtn.Text = "Actualizar formulario";
                finalDpk.Enabled = true;
                finalDpk.Value = (System.DateTime)newForm.HORAFINAL;
                inicioDpk.Enabled = false;
                this.Text = "Editando formulario e introduciendo datos";
                lineaInvBS.AddNew();
                regeneracionBS.AddNew();
                noMaderableBS.AddNew();
            }

            PROYECTO py = (PROYECTO)Program.Cache.Get("project");
            if (py.TIPODISENOMUESTRAL.NOMTIPODISEMUEST.ToString() == "SI")
            {
                estratoCbx.Enabled = false;
            }
            if(f!=null)formularioBS.DataSource = f;
            else formularioBS.DataSource = newForm;

            modified = true;
        }
 /// <summary>
 /// Funcion que valida que los campos del formulario crear no esten vacios si pasa las validaciones entonces se inserta 
 /// el nuevo registro y se alerta al usuario con un mensaje de exito, si ocurre un mensaje durante el proceso se notifica al usuario con un mensaje de mensaje
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void Btn_Crear_Click(object sender, EventArgs e)
 {
     try
     {
         state = new ESTADOSANITARIO();
         if (txt_Nombre.Text != "" && txt_Descripcion.Text != "")
         {
             if (stateBL.GetState(txt_Nombre.Text) != null) eP_errors.SetError(txt_Nombre, "Ingrese una abreviatura diferente, esta ya esta en uso");
             else
             {
                 eP_errors.Dispose();
                 state.ESTADO = txt_Nombre.Text.ToString();
                 state.DESCRIPESTADO = txt_Descripcion.Text.ToString();
                 stateBL = new StateBL(Program.ContextData);
                 stateBL.InsertState(state);
                 string result = stateBL.SaveChanges();
                 if (result == "")
                 {
                     MessageBox.Show("Los datos fueron almacenados de manera exitosa.", "Operacion exitosa", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 }
                 else
                 {
                     Error_Form errorForm = new Error_Form(result);
                     errorForm.MdiParent = ParentForm;
                     errorForm.Show();
                 }
                 StateBSource.DataSource = stateBL.GetStates();
                 txt_Nombre.Text = "";
                 txt_Descripcion.Text = "";
                 ListadoEstados.Refresh();
                 pn_crear.Hide();
                 pn_listado.Show();
                 pn_editar.Hide();
                 this.Width = pn_listado.Width;
                 this.Height = pn_listado.Height;
                 this.CenterToScreen();
             }
         }
         else
         {
             if (txt_Nombre.Text == "") eP_errors.SetError(txt_Nombre, "Ingrese una abreviatura, este campo es requerido");
             if (txt_Descripcion.Text == "") eP_errors.SetError(txt_Descripcion, "Ingrese una descripción, este campo es requerido");
         }
     }
     catch (Exception ex)
     {
         Error_Form errorForm = new Error_Form(ex.Message);
         errorForm.MdiParent = ParentForm;
         errorForm.Show();
     }
 }