public int ActualizaActividad(int pIntIdCronograma, int pIntIdExpediente, int pIntIdActividad, ActividadCronogramaOP pObjActividadCronogramaOP)
        {
            int intResultado = -999;
            try
            {
                ObrasPublicasEntities objContext = new ObrasPublicasEntities();
                ObjectParameter objResult = new ObjectParameter("pIntResult_out", typeof(int));

                objContext.sp_gop_upd_act_cron_ejec_obra(pIntIdCronograma, pIntIdActividad, pObjActividadCronogramaOP.Nombre,
                    pObjActividadCronogramaOP.FechaIniProg, pObjActividadCronogramaOP.FechaFinProg,
                    pObjActividadCronogramaOP.FechaIniEjec, pObjActividadCronogramaOP.FechaFinEjec,
                    pObjActividadCronogramaOP.Costo, pObjActividadCronogramaOP.CantidadRRHH, pObjActividadCronogramaOP.IdTipoResponsable,
                    pObjActividadCronogramaOP.IdEmpleado, objResult);

                intResultado = Convert.ToInt32(objResult.Value.ToString());
            }
            catch (Exception ex)
            {
            }
            return intResultado;
        }
        public ActividadCronogramaOP ObtieneActvidadXId(int pIntIdCronograma, int pIntIdActividad)
        {
            ActividadCronogramaOP objActividadCronograma = null;
            try
            {
                ObrasPublicasEntities objContext = new ObrasPublicasEntities();
                var objResult = objContext.sp_gop_get_act_cron_ejec_obra_x_id(pIntIdCronograma, pIntIdActividad).ToList();

                List<sp_gop_get_act_cron_ejec_obra_x_id_Result> lstActividad = objResult;

                foreach (sp_gop_get_act_cron_ejec_obra_x_id_Result objAct in lstActividad)
                {
                    objActividadCronograma = new ActividadCronogramaOP();
                    if (objAct.NUCANTIDADRRHH.HasValue)
                    {
                        objActividadCronograma.CantidadRRHH = objAct.NUCANTIDADRRHH.Value;
                    }
                    if (objAct.NUCOSTODIRECTO.HasValue)
                    {
                        objActividadCronograma.Costo = objAct.NUCOSTODIRECTO.Value;
                    }
                    if (objAct.FEFINEJECUCION.HasValue)
                    {
                        objActividadCronograma.FechaFinEjec = objAct.FEFINEJECUCION.Value;
                    }
                    if (objAct.FEFINPROGRAMADA.HasValue)
                    {
                        objActividadCronograma.FechaFinProg = objAct.FEFINPROGRAMADA.Value;
                    }
                    if (objAct.FEINICIOEJECUCION.HasValue)
                    {
                        objActividadCronograma.FechaIniEjec = objAct.FEINICIOEJECUCION.Value;
                    }
                    if (objAct.FEINICIOPROGRAMADA.HasValue)
                    {
                        objActividadCronograma.FechaIniProg = objAct.FEINICIOPROGRAMADA.Value;
                    }
                    if (objAct.idPersonaNatural.HasValue)
                    {
                        objActividadCronograma.IdEmpleado = objAct.idEmpleado;
                        objActividadCronograma.ResponsableNom = objAct.NOMBRES;
                        objActividadCronograma.ResponsableApe = objAct.APELLIDOPATERNO;
                        objActividadCronograma.IdTipoResponsable = "P";
                        if (objAct.idArea.HasValue)
                        {
                            objActividadCronograma.IdArea = objAct.idArea.Value;
                        }
                    }
                    if (objAct.idPersonaJuridica.HasValue)
                    {
                        objActividadCronograma.IdEmpleado = objAct.idEmpleado;
                        objActividadCronograma.ResponsableRazSoc = objAct.RAZONSOCIAL;
                        objActividadCronograma.IdTipoResponsable = "E";
                    }
                    objActividadCronograma.Nombre = objAct.noActividad;

                    break;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString());
            }
            return objActividadCronograma;
        }
        public ActionResult CreateActividad(CreateActividadCronogramaEjecucionModel pObjModel)
        {
            var valid = TryUpdateModel(pObjModel);

            if (valid)
            {
                try
                {
                    int intResultado = 1;
                    CronogramaEjecucionObra_DAL objCronogramaEjecucionObra_DAL = new CronogramaEjecucionObra_DAL();

                    ActividadCronogramaOP objActividadCronogramaOP = new ActividadCronogramaOP();
                    objActividadCronogramaOP.CantidadRRHH = pObjModel.CantidadRRHHAct;
                    objActividadCronogramaOP.Costo = pObjModel.CostoAct;
                    objActividadCronogramaOP.Nombre = pObjModel.NomAct;
                    objActividadCronogramaOP.FechaFinEjec = Convert.ToDateTime(pObjModel.FechaFinEjecAct);
                    objActividadCronogramaOP.FechaFinProg = Convert.ToDateTime(pObjModel.FechaFinProgAct);
                    objActividadCronogramaOP.FechaIniEjec = Convert.ToDateTime(pObjModel.FechaIniEjecAct);
                    objActividadCronogramaOP.FechaIniProg = Convert.ToDateTime(pObjModel.FechaIniProgAct);
                    objActividadCronogramaOP.IdTipoResponsable = pObjModel.ResponsableActTipo;

                    if (pObjModel.ResponsableActTipo == "P")
                    {
                        objActividadCronogramaOP.IdEmpleado = Convert.ToInt32(pObjModel.IdResponsablePersonaNatural);
                    }
                    else if (intResultado == -997)
                    {
                        ModelState.AddModelError("General", "No puede modificar el cronograma debido a que el proyecto está en estado ADJUDICADO.");
                    }
                    else
                    {
                        objActividadCronogramaOP.IdEmpleado = Convert.ToInt32(pObjModel.IdResponsablePersonaJuridica);
                    }

                   intResultado = objCronogramaEjecucionObra_DAL.InsertaActividad(pObjModel.IdExpediente, pObjModel.IdProyecto,
                        pObjModel.IdCronograma, objActividadCronogramaOP);

                    if (intResultado == 1)
                    {
                        //TempData["MsgSuccess"] = "Se realizó la operación satisfactoriamente";
                        //return RedirectToAction("Index");
                    }
                    else
                    {
                        valid = false;
                        ModelState.AddModelError("General", "No se pudo insertar la actividad en el cronograma");
                    }
                }
                catch (Exception ex)
                {
                    valid = false;
                    ModelState.AddModelError("General", ex.ToString());
                }
            }

            return Json(new
            {
                Valid = valid,
                Errors = GetErrorsFromModelState()
            });
        }