public static object AddRecord(RegistroObra registro)
        {

            UnitOfWork uow = new UnitOfWork(HttpContext.Current.Session["IdUser"].ToString());

            int unidadpresupuestalId = Utilerias.StrToInt(HttpContext.Current.Session["UnidadPresupuestalId"].ToString());
            int ejercicioId = Utilerias.StrToInt(HttpContext.Current.Session["EjercicioId"].ToString());
          
            DataAccessLayer.Models.POA poa = uow.POABusinessLogic.Get(p => p.UnidadPresupuestalId == unidadpresupuestalId & p.EjercicioId == ejercicioId).FirstOrDefault();
            POADetalle poadetalle = null;          

            if (poa == null)
            {
                poa = new DataAccessLayer.Models.POA();
                poa.UnidadPresupuestalId = unidadpresupuestalId;
                poa.EjercicioId = ejercicioId;
            }


            Obra obra = new Obra();

            obra.Numero = registro.Numero;
            obra.Descripcion = registro.Descripcion;
            obra.MunicipioId = registro.MunicipioId;
            obra.LocalidadId = registro.LocalidadId;
            obra.CriterioPriorizacionId = registro.CriterioPriorizacionId;
            obra.Convenio = registro.Convenio;
            obra.AperturaProgramaticaId = registro.AperturaProgramaticaId;
            obra.AperturaProgramaticaUnidadId = registro.UnidadMedidaId;
            obra.CantidadUnidades = registro.CantidadUnidades;
            obra.NumeroBeneficiarios = registro.NumeroBeneficiarios;
            obra.Empleos = registro.Empleos;
            obra.Jornales = registro.Jornales;
            obra.SituacionObraId = registro.SituacionObraId;
            obra.NumeroAnterior = registro.NumeroAnterior;
            obra.ImporteLiberadoEjerciciosAnteriores = registro.ImporteLiberadoEjerciciosAnteriores;
            obra.ModalidadObra = (enumModalidadObra)registro.ModalidadEjecucionId;

            if(registro.FuncionalidadId==0)
            {
                obra.FuncionalidadId =null;
            }else
            {
                obra.FuncionalidadId =registro.FuncionalidadId;
            };

            if (registro.EjeId == 0)
            {
                obra.EjeId = null;
            }
            else
            {
                obra.EjeId = registro.EjeId;
            };

            if (registro.PlanSectorialId == 0)
            {
                obra.PlanSectorialId = null;
            }
            else
            {
                obra.PlanSectorialId = registro.PlanSectorialId;
            };

            if (registro.ModalidadPVDId == 0)
            {
                obra.ModalidadId = null;
            }
            else
            {
                obra.ModalidadId = registro.ModalidadPVDId;
            };

            if (registro.ProgramaPVDId == 0)
            {
                obra.ProgramaId = null;
            }
            else
            {
                obra.ProgramaId = registro.ProgramaPVDId;
            };

            if (registro.GrupoBeneficiarioId == 0)
            {
                obra.GrupoBeneficiarioId = null;
            }
            else
            {
                obra.GrupoBeneficiarioId = registro.GrupoBeneficiarioId;
            };
      

            //Crear un poadetalle para una nueva obra

                    poadetalle = new POADetalle();
                    poadetalle.Numero = obra.Numero;
                    poadetalle.Descripcion = obra.Descripcion;
                    poadetalle.MunicipioId = obra.MunicipioId;
                    poadetalle.LocalidadId = obra.LocalidadId;                
                    poadetalle.CriterioPriorizacionId = obra.CriterioPriorizacionId;
                    poadetalle.Convenio = obra.Convenio;
                    poadetalle.AperturaProgramaticaId = obra.AperturaProgramaticaId;
                    poadetalle.AperturaProgramaticaMetaId = obra.AperturaProgramaticaMetaId;
                    poadetalle.AperturaProgramaticaUnidadId = obra.AperturaProgramaticaUnidadId;
                    poadetalle.NumeroBeneficiarios = obra.NumeroBeneficiarios;
                    poadetalle.CantidadUnidades = obra.CantidadUnidades;
                    poadetalle.Empleos = obra.Empleos;
                    poadetalle.Jornales = obra.Jornales;

                    poadetalle.FuncionalidadId = obra.FuncionalidadId;
                    poadetalle.EjeId = obra.EjeId;
                    poadetalle.PlanSectorialId = obra.PlanSectorialId;
                    poadetalle.ModalidadId = obra.ModalidadId;
                    poadetalle.ProgramaId = obra.ProgramaId;
                    poadetalle.GrupoBeneficiarioId = obra.GrupoBeneficiarioId;


                    poadetalle.SituacionObraId = obra.SituacionObraId;
                    poadetalle.NumeroAnterior = obra.NumeroAnterior;
                    poadetalle.ImporteLiberadoEjerciciosAnteriores = obra.ImporteLiberadoEjerciciosAnteriores;
                    poadetalle.ModalidadObra = obra.ModalidadObra;               
                    poadetalle.Observaciones = obra.Observaciones;
                    poadetalle.Extemporanea = true;
                    poadetalle.POA = poa;                

                    obra.POA = poa;
                    obra.POADetalle = poadetalle;                  
                        
            
            uow.ObraBusinessLogic.Insert(obra);

            uow.SaveChanges();

            return uow.GetResult();

        }
        public static object UpdateRecord(RegistroObra registro)
        {

            UnitOfWork uow = new UnitOfWork(HttpContext.Current.Session["IdUser"].ToString());
           
            Obra obra = uow.ObraBusinessLogic.GetByID(registro.Id);

            obra.Numero = registro.Numero;
            obra.Descripcion = registro.Descripcion;
            obra.MunicipioId = registro.MunicipioId;
            obra.LocalidadId = registro.LocalidadId;
            obra.CriterioPriorizacionId = registro.CriterioPriorizacionId;
            obra.Convenio = registro.Convenio;
            obra.AperturaProgramaticaId = registro.AperturaProgramaticaId;
            obra.AperturaProgramaticaUnidadId = registro.UnidadMedidaId;
            obra.CantidadUnidades = registro.CantidadUnidades;
            obra.NumeroBeneficiarios = registro.NumeroBeneficiarios;
            obra.Empleos = registro.Empleos;
            obra.Jornales = registro.Jornales;
            obra.SituacionObraId = registro.SituacionObraId;
            obra.NumeroAnterior = registro.NumeroAnterior;
            obra.ImporteLiberadoEjerciciosAnteriores = registro.ImporteLiberadoEjerciciosAnteriores;
            obra.ModalidadObra = (enumModalidadObra)registro.ModalidadEjecucionId;           

            if (registro.FuncionalidadId == 0)
            {
                obra.FuncionalidadId = null;
            }
            else
            {
                obra.FuncionalidadId = registro.FuncionalidadId;
            };

            if (registro.EjeId == 0)
            {
                obra.EjeId = null;
            }
            else
            {
                obra.EjeId = registro.EjeId;
            };

            if (registro.PlanSectorialId == 0)
            {
                obra.PlanSectorialId = null;
            }
            else
            {
                obra.PlanSectorialId = registro.PlanSectorialId;
            };

            if (registro.ModalidadPVDId == 0)
            {
                obra.ModalidadId = null;
            }
            else
            {
                obra.ModalidadId = registro.ModalidadPVDId;
            };

            if (registro.ProgramaPVDId == 0)
            {
                obra.ProgramaId = null;
            }
            else
            {
                obra.ProgramaId = registro.ProgramaPVDId;
            };

            if (registro.GrupoBeneficiarioId == 0)
            {
                obra.GrupoBeneficiarioId = null;
            }
            else
            {
                obra.GrupoBeneficiarioId = registro.GrupoBeneficiarioId;
            };

            uow.ObraBusinessLogic.Update(obra);                       

            uow.SaveChanges();

            return uow.GetResult();
        }