/// <summary>
        /// Listado de Avances de actividad por mes
        /// </summary>
        /// <param name="CodActividad"> Codigo de actividad </param>
        /// <returns>Listado de avances por actividad</returns>
        public List <AvanceActividadPOMes> TraerAvanceActividadPOXMes(string CodActividad)
        {
            List <AvanceActividadPOMes> lista = new List <AvanceActividadPOMes>();

            try
            {
                IDataReader reader;
                sbQuery = new StringBuilder();

                sbQuery.Append("SELECT CodActividad            ");
                sbQuery.Append("      ,Mes                     ");
                sbQuery.Append("      ,CodTipoFinanciacion     ");
                sbQuery.Append("      ,Valor                   ");
                sbQuery.Append("      ,Observaciones           ");
                sbQuery.Append("      ,CodContacto             ");
                sbQuery.Append("      ,ObservacionesInterventor");
                sbQuery.Append("      ,Aprobada                ");
                sbQuery.Append("  FROM AvanceActividadPOMes    ");
                sbQuery.Append("  WHERE codactividad = " + CodActividad);
                sbQuery.Append("  ORDER By Mes ");

                db.Open();
                reader = db.ExecuteDataReader(sbQuery.ToString(), CommandType.Text);

                AvanceActividadPOMes oAvance = new AvanceActividadPOMes();
                while (reader.Read())
                {
                    oAvance = new AvanceActividadPOMes();
                    oAvance.CodActividad        = Convert.ToInt32(reader["CodActividad"]);
                    oAvance.Mes                 = Convert.ToByte(reader["Mes"]);
                    oAvance.CodTipoFinanciacion = Convert.ToByte(reader["CodTipoFinanciacion"]);
                    oAvance.Valor               = Convert.ToDecimal(reader["Valor"]);
                    oAvance.Observaciones       = reader["Observaciones"].ToString();
                    if (!DBNull.Value.Equals(reader["CodContacto"]))
                    {
                        oAvance.CodContacto = Convert.ToInt32(reader["CodContacto"]);
                    }
                    oAvance.ObservacionesInterventor = reader["ObservacionesInterventor"].ToString();
                    if (!DBNull.Value.Equals(reader["Aprobada"]))
                    {
                        oAvance.Aprobada = Convert.ToBoolean(reader["Aprobada"]);
                    }

                    lista.Add(oAvance);
                }
                reader.Close();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                db.Close();
            }

            return(lista);
        }
        private void insertarHistorico(AvanceActividadPOMes avance, decimal aporteEmprendedor, int _CodProyecto)
        {
            HistoricoAvanceModel avanceHis = new HistoricoAvanceModel
            {
                codActividad           = avance.CodActividad,
                codContacto            = usuario.IdContacto,
                FechaAvanceEmprendedor = avance.FechaAvance,
                Mes = avance.Mes,
                ValorFondoEmprender    = avance.Valor,
                ValorAporteEmprendedor = aporteEmprendedor,
                fechaRegistro          = DateTime.Now,
                ObservacionEmprendedor = avance.Observaciones,
                ObservacionInterventor = avance.ObservacionesInterventor,
                FechaAvanceInterventor = avance.FechaAprobacion,
                Aprobada    = avance.Aprobada,
                codProyecto = _CodProyecto
            };

            AvancesInterventoriaReg.insertarHistoricoPlanOperativo(avanceHis);
        }
        private void Metodos()
        {
            var parametros = Session["CodActividad2"].ToString().Split(';');

            switch (B_Acion.Text)
            {
            case "Crear":
                var mensaje = Validar(B_Acion.Text);
                if (string.IsNullOrEmpty(mensaje))
                {
                    var consultar = (from aa in consultas.Db.AvanceActividadPOMes
                                     where aa.CodActividad == CodActividad && aa.Mes == Mes     //int.Parse(parametros[0])
                                     select aa).ToList();

                    if (consultar.Count == 0)
                    {
                        var avance = new AvanceActividadPOMes
                        {
                            CodActividad             = CodActividad,
                            Mes                      = Convert.ToByte(Mes),
                            CodTipoFinanciacion      = 1,
                            Valor                    = decimal.Parse((!string.IsNullOrEmpty(txt_sueldo_obtenido.Text.Replace(".", ","))) ? txt_sueldo_obtenido.Text : "0"),
                            Observaciones            = txt_observaciones.Text,
                            CodContacto              = usuario.IdContacto,
                            ObservacionesInterventor = "",
                            Aprobada                 = false,
                            FechaAvance              = DateTime.Now
                        };

                        consultas.Db.AvanceActividadPOMes.InsertOnSubmit(avance);
                        consultas.Db.SubmitChanges();

                        var avance2 = new AvanceActividadPOMes
                        {
                            CodActividad             = CodActividad, // int.Parse(parametros[0]),
                            Mes                      = Convert.ToByte(Mes),
                            CodTipoFinanciacion      = 2,
                            Valor                    = decimal.Parse((!string.IsNullOrEmpty(txt_prestaciones_obtenidas.Text)) ? txt_prestaciones_obtenidas.Text.Replace(".", ",") : "0"),
                            Observaciones            = txt_observaciones.Text,
                            CodContacto              = usuario.IdContacto,
                            ObservacionesInterventor = "",
                            Aprobada                 = false,
                            FechaAvance              = DateTime.Now
                        };

                        consultas.Db.AvanceActividadPOMes.InsertOnSubmit(avance2);
                        consultas.Db.SubmitChanges();

                        //Consultar Id Interventor para agendar tarea
                        var datos = (from ei in consultas.Db.EmpresaInterventors
                                     join ee in consultas.Db.Empresas on ei.CodEmpresa equals ee.id_empresa
                                     join p in consultas.Db.Proyecto on ee.codproyecto equals p.Id_Proyecto
                                     where ee.codproyecto == CodProyecto && ei.Inactivo == false
                                     select new datosAgendar
                        {
                            idContacto = (int)ei.CodContacto,
                            idProyecto = (int)p.Id_Proyecto,
                            nombre = p.NomProyecto
                        }).ToList();

                        //Insertar Historico
                        insertarHistorico(avance, avance2.Valor, CodProyecto);

                        var asunto = "Revisar Actividad del Plan Operativo. Se ha creado una actividad.";
                        TareaAgendar(int.Parse(parametros[0]), CodProyecto, usuario.IdContacto, datos[0].idContacto, datos[0].nombre, parametros[1],
                                     asunto, txt_observaciones.Text.Trim());
                    }
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Mensaje", "alert('Avance registrado.'); window.close();", true);
                }
                else
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Mensaje", "alert('" + mensaje + "');", true);
                }
                break;

            case "Actualizar":
                if (usuario.CodGrupo == Constantes.CONST_Emprendedor)
                {
                    mensaje = Validar(B_Acion.Text);
                    if (string.IsNullOrEmpty(mensaje))
                    {
                        var avancesActividad = (from aa in consultas.Db.AvanceActividadPOMes
                                                where aa.CodActividad == CodActividad && aa.Mes == Mes     //int.Parse(parametros[0])
                                                select aa).ToList();

                        foreach (var avance in avancesActividad)
                        {
                            avance.FechaAvance   = DateTime.Now;
                            avance.Observaciones = txt_observaciones.Text.Trim();
                            avance.Valor         = (avance.CodTipoFinanciacion == 1) ? decimal.Parse((!string.IsNullOrEmpty(txt_sueldo_obtenido.Text.Replace(",00", "").Replace(".00", "").Replace(".", ","))) ? txt_sueldo_obtenido.Text.Replace(",00", "").Replace(".00", "").Replace(".", ",") : "0") : decimal.Parse((!string.IsNullOrEmpty(txt_prestaciones_obtenidas.Text.Replace(",00", "").Replace(".00", "").Replace(".", ","))) ? txt_prestaciones_obtenidas.Text.Replace(",00", "").Replace(".00", "").Replace(".", ",") : "0");
                        }

                        consultas.Db.SubmitChanges();

                        //Consultar Id Interventor para agendar tarea
                        var datos = (from ei in consultas.Db.EmpresaInterventors
                                     join ee in consultas.Db.Empresas on ei.CodEmpresa equals ee.id_empresa
                                     join p in consultas.Db.Proyecto on ee.codproyecto equals p.Id_Proyecto
                                     where ee.codproyecto == CodProyecto && ei.Inactivo == false
                                     select new datosAgendar
                        {
                            idContacto = (int)ei.CodContacto,
                            idProyecto = (int)p.Id_Proyecto,
                            nombre = p.NomProyecto
                        }).ToList();

                        decimal valorEmprendedor = decimal.Parse((!string.IsNullOrEmpty(txt_prestaciones_obtenidas.Text)) ? txt_prestaciones_obtenidas.Text.Replace(".", ",") : "0");

                        var avanceHis = avancesActividad.Where(x => x.CodTipoFinanciacion == 1).FirstOrDefault();

                        //Insertar Historico
                        insertarHistorico(avanceHis, valorEmprendedor, CodProyecto);


                        var asunto = "Revisar Actividad del Plan Operativo. Se ha modificado una actividad.";
                        TareaAgendar(int.Parse(parametros[0]), CodProyecto, usuario.IdContacto, datos[0].idContacto, datos[0].nombre, parametros[1],
                                     asunto, txt_observaciones.Text.Trim());

                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Mensaje", "alert('Información de Plan Operativo procesada correctamente.'); window.close();", true);
                    }
                    else
                    {
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Mensaje", "alert('" + mensaje + "');", true);
                    }
                }
                else
                {
                    mensaje = Validar(B_Acion.Text);
                    if (string.IsNullOrEmpty(mensaje))
                    {
                        var avancesActividad = (from aa in consultas.Db.AvanceActividadPOMes
                                                where aa.CodActividad == CodActividad && aa.Mes == Mes     //int.Parse(parametros[0])
                                                select aa).ToList();

                        foreach (var avance in avancesActividad)
                        {
                            avance.FechaAprobacion          = DateTime.Now;
                            avance.ObservacionesInterventor = txt_observ_interventor.Text.Trim();
                            avance.Aprobada = (dd_aprobado.SelectedValue == "0") ? false : true;
                        }
                        consultas.Db.SubmitChanges();

                        //consulta Id del emprendedor para agendar tarea
                        var datos = (from pc in consultas.Db.ProyectoContactos
                                     join p in consultas.Db.Proyecto on pc.CodProyecto equals p.Id_Proyecto
                                     where pc.CodProyecto == CodProyecto && pc.CodRol == 3 && pc.FechaFin == null
                                     select new datosAgendar
                        {
                            idContacto = pc.CodContacto,
                            idProyecto = p.Id_Proyecto,
                            nombre = p.NomProyecto
                        }).ToList();

                        decimal valorEmprendedor = decimal.Parse((!string.IsNullOrEmpty(txt_prestaciones_obtenidas.Text)) ? txt_prestaciones_obtenidas.Text.Replace(".", ",") : "0");

                        var avanceHis = avancesActividad.Where(x => x.CodTipoFinanciacion == 1).FirstOrDefault();

                        //Insertar Historico
                        insertarHistorico(avanceHis, valorEmprendedor, CodProyecto);

                        var asunto = "Revisar Actividad del Plan Operativo. Se ha modificado una actividad.";
                        TareaAgendar(int.Parse(parametros[0]), CodProyecto, usuario.IdContacto, datos[0].idContacto, datos[0].nombre, parametros[1],
                                     asunto, txt_observaciones.Text.Trim());

                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Mensaje", "alert('Información de Plan Operativo procesada correctamente.'); window.close();", true);
                    }
                    else
                    {
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Mensaje", "alert('" + mensaje + "');", true);
                    }
                }
                break;
            }
        }