private void priorizarProyectos(List <ProyectoPorPriorizar> proyectos, Datos.AsignacionActa actaDePriorizacion)
        {
            using (Datos.FonadeDBDataContext db = new Datos.FonadeDBDataContext(System.Configuration.ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString))
            {
                foreach (var proyectoParaPriorizar in proyectos)
                {
                    var proyecto = (from p in db.Proyecto where p.Id_Proyecto == proyectoParaPriorizar.Codigo select p).FirstOrDefault();

                    if (proyectoParaPriorizar.Priorizado)
                    {
                        proyecto.CodEstado = Constantes.CONST_LegalizacionContrato;
                    }

                    var asignacionActaProyecto = new Datos.AsignacionActaProyecto
                    {
                        CodActa     = actaDePriorizacion.Id_Acta,
                        CodProyecto = proyectoParaPriorizar.Codigo,
                        Asignado    = proyectoParaPriorizar.Priorizado
                    };

                    db.AsignacionActaProyecto.InsertOnSubmit(asignacionActaProyecto);
                    db.SubmitChanges();
                }
            }
        }
        protected void btn_asignarRecursos_Click(object sender, EventArgs e)
        {
            try
            {
                lblError.Visible    = false;
                lnkRutaActa.Visible = false;

                FieldValidate.ValidateString("Numero de acta", txtNumero.Text, true, 20);
                FieldValidate.ValidateString("Nombre de acta", txtNombre.Text, true, 250);
                FieldValidate.ValidateString("Fecha de acta", txtFecha.Text, true, 250);
                FieldValidate.ValidateString("Observaciones", txtObservaciones.Text, true, 1500);
                FieldValidate.ValidateString("Convocatoria", cmbConvocatoria.SelectedValue, true, 1500);

                DateTime fechaActa = DateTime.ParseExact(txtFecha.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                if (fechaActa > DateTime.Now.Date)
                {
                    throw new ApplicationException("La fecha del acta no puede ser mayor a la fecha de hoy");
                }

                Datos.AsignacionActa actaDePriorizacion = new Datos.AsignacionActa();

                actaDePriorizacion.NumActa         = txtNumero.Text;
                actaDePriorizacion.NomActa         = txtNombre.Text;
                actaDePriorizacion.FechaActa       = fechaActa;
                actaDePriorizacion.Observaciones   = txtObservaciones.Text;
                actaDePriorizacion.CodConvocatoria = Convert.ToInt32(cmbConvocatoria.SelectedValue);
                actaDePriorizacion.Publicado       = true;

                using (Datos.FonadeDBDataContext db = new Datos.FonadeDBDataContext(System.Configuration.ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString))
                {
                    db.AsignacionActas.InsertOnSubmit(actaDePriorizacion);
                    db.SubmitChanges();
                }

                List <ProyectoPorPriorizar> proyectosParaPriorizar = getProyectosParaPriorizar();

                priorizarProyectos(proyectosParaPriorizar, actaDePriorizacion);

                showLinkActa(actaDePriorizacion);
            }
            catch (ApplicationException ex)
            {
                lblError.Visible = true;
                lblError.Text    = "Advertencia : " + ex.Message;
            }
            catch (Exception ex)
            {
                lblError.Visible = true;
                lblError.Text    = "Sucedio un error inesperado, intentelo de nuevo. detalle : " + ex.Message;
            }
        }
        private void showLinkActa(Datos.AsignacionActa actaDePriorizacion)
        {
            gvProyectosAPriorizar.DataBind();
            txtNumero.Text        = "";
            txtNombre.Text        = "";
            txtFecha.Text         = "";
            txtObservaciones.Text = "";

            lnkRutaActa.Visible     = true;
            lnkRutaActa.NavigateUrl = "VerActaAsignacionRecursos.aspx";
            lnkRutaActa.Text        = "Se ha generado el acta número " + actaDePriorizacion.NumActa + " de Asignación de recursos.  Click aquí para verla.";
            lnkRutaActa.Focus();
            Session["Id_Acta"] = actaDePriorizacion.Id_Acta;

            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Mensaje", "alert('Nueva acta creada: " + actaDePriorizacion.NumActa + " satisfactoriamente!');", true);
        }