protected void btnCrearPlanDeNegocio_Click(object sender, EventArgs e)
        {
            try
            {
                string nombreProyecto      = txtNombre.Text;
                string descripcionProyecto = txtDescripcion.Text;

                FieldValidate.ValidateString("Nombre del proyecto", nombreProyecto, true, 300);
                FieldValidate.ValidateString("Descripción del proyecto", descripcionProyecto, true, 5000);

                FieldValidate.ValidateString("Departamento", cmbDepartamento.SelectedValue, true, 0, false, true);
                FieldValidate.ValidateString("Ciudad", cmbCiudad.SelectedValue, true, 0, false, true);
                FieldValidate.ValidateString("Sector", cmbSector.SelectedValue, true, 0, false, true);
                FieldValidate.ValidateString("Subsector", cmbSubSector.SelectedValue, true, 0, false, true);

                int codigodDepartamento = Convert.ToInt32(cmbDepartamento.SelectedValue);
                int codigoCiudad        = Convert.ToInt32(cmbCiudad.SelectedValue);
                int codigoSector        = Convert.ToInt32(cmbSector.SelectedValue);
                int codigoSubsector     = Convert.ToInt32(cmbSubSector.SelectedValue);

                if (existePlanDeNegocioDuplicado(nombreProyecto.htmlEncode()))
                {
                    throw new ApplicationException("Ya existe un plan de negocio con ese mismo nombre.");
                }

                Proyecto1 nuevoProyecto = new Proyecto1
                {
                    NomProyecto       = Id_VersionProyecto.Equals(Constantes.CONST_PlanV2) ? nombreProyecto.ToUpper() : nombreProyecto.ToUpper().htmlEncode(),
                    Sumario           = Id_VersionProyecto.Equals(Constantes.CONST_PlanV2) ? descripcionProyecto : descripcionProyecto.htmlEncode(),
                    FechaCreacion     = DateTime.Now,
                    CodTipoProyecto   = 1,
                    CodEstado         = Constantes.CONST_Inscripcion,
                    CodCiudad         = codigoCiudad,
                    CodSubSector      = codigoSubsector,
                    CodContacto       = usuario.IdContacto,
                    CodInstitucion    = usuario.CodInstitucion,
                    IdVersionProyecto = Id_VersionProyecto
                };

                insertPlanDeNegocio(nuevoProyecto);
                agendarTareaJefeUnidad(nuevoProyecto.Id_Proyecto);
                Session["codigoPlanDeNegocio"] = nuevoProyecto.Id_Proyecto;
                Response.Redirect(Request.RawUrl, false);
            }
            catch (ApplicationException ex)
            {
                lblError.Visible = true;
                lblError.Text    = "Advertencia : " + ex.Message;
            }
            catch (Exception ex)
            {
                lblError.Visible = true;
                lblError.Text    = "Lo sentimos sucedio un error inesperado, intentalo de nuevo por favor !";
            }
        }
        protected void btnActualizarPlanDeNegocio_Click(object sender, EventArgs e)
        {
            try
            {
                string nombreProyecto      = txtNombre.Text;
                string descripcionProyecto = txtDescripcion.Text;

                FieldValidate.ValidateString("Nombre del proyecto", nombreProyecto, true, 300);
                FieldValidate.ValidateString("Descripción del proyecto", descripcionProyecto, true, 5000);

                FieldValidate.ValidateString("Departamento", cmbDepartamento.SelectedValue, true, 0, false, true);
                FieldValidate.ValidateString("Ciudad", cmbCiudad.SelectedValue, true, 0, false, true);
                FieldValidate.ValidateString("Sector", cmbSector.SelectedValue, true, 0, false, true);
                FieldValidate.ValidateString("Subsector", cmbSubSector.SelectedValue, true, 0, false, true);

                int codigodDepartamento = Convert.ToInt32(cmbDepartamento.SelectedValue);
                int codigoCiudad        = Convert.ToInt32(cmbCiudad.SelectedValue);
                int codigoSector        = Convert.ToInt32(cmbSector.SelectedValue);
                int codigoSubsector     = Convert.ToInt32(cmbSubSector.SelectedValue);

                if (existePlanDeNegocioDuplicado(nombreProyecto, planNegocioActual.Id))
                {
                    throw new ApplicationException("Ya existe un plan de negocio con ese mismo nombre.");
                }

                using (Datos.FonadeDBDataContext db = new Datos.FonadeDBDataContext(System.Configuration.ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString))
                {
                    Proyecto1 planActual = db.Proyecto1s.Single(proyecto => proyecto.Id_Proyecto == planNegocioActual.Id);

                    planActual.NomProyecto  = Id_VersionProyecto.Equals(Constantes.CONST_PlanV2) ? nombreProyecto.ToUpper() : nombreProyecto.ToUpper().htmlEncode();
                    planActual.Sumario      = Id_VersionProyecto.Equals(Constantes.CONST_PlanV2) ? descripcionProyecto : descripcionProyecto.htmlEncode();
                    planActual.CodCiudad    = codigoCiudad;
                    planActual.CodSubSector = codigoSubsector;

                    db.SubmitChanges();
                }

                Response.Redirect("~/FONADE/PlandeNegocio/PlanDeNegocio.aspx", false);
            }
            catch (ApplicationException ex)
            {
                lblError.Visible = true;
                lblError.Text    = "Advertencia : " + ex.Message;
            }
            catch (Exception ex)
            {
                lblError.Visible = true;
                lblError.Text    = "Lo sentimos sucedio un error inesperado, intentalo de nuevo por favor !";
            }
        }
        /// <summary>
        /// Insertar plan de negocio nuevo
        /// </summary>
        /// <param name="nuevoProyecto">Objecto de tipo proyecto de base de datos</param>
        public void insertPlanDeNegocio(Proyecto1 nuevoProyecto)
        {
            using (Datos.FonadeDBDataContext db = new Datos.FonadeDBDataContext(System.Configuration.ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString))
            {
                db.Proyecto1s.InsertOnSubmit(nuevoProyecto);
                db.SubmitChanges();

                foreach (ProyectoGastosModelo modeloDeGasto in db.ProyectoGastosModelos)
                {
                    ProyectoGasto nuevoGasto = new ProyectoGasto
                    {
                        CodProyecto = nuevoProyecto.Id_Proyecto,
                        Descripcion = modeloDeGasto.Descripcion,
                        Valor       = 0,
                        Tipo        = modeloDeGasto.Tipo,
                        Protegido   = true
                    };

                    db.ProyectoGastos.InsertOnSubmit(nuevoGasto);
                    db.SubmitChanges();
                }
            }
        }