public Resultado UpdatePresupuesto(Presupuesto presupuesto)
        {
            try
            {
                var presupuestoDb = dbContext.Presupuestos.FirstOrDefault(p => p.Id == presupuesto.Id);
                if (presupuestoDb != null)
                {
                    presupuestoDb.EstadoPresupuestoId = presupuesto.EstadoPresupuestoId;
                    presupuestoDb.UsuarioModificacion = presupuesto.UsuarioModificacion;
                    presupuestoDb.FechaModificacion   = DateTime.Now;

                    dbContext.Entry(presupuestoDb).State = EntityState.Modified;
                    dbContext.SaveChanges();
                    return(new Resultado("El registro se guardó correctamente."));
                }
                return(new Resultado("No se encontró el presupuesto específicado"));
            }
            catch (Exception excepcion)
            {
                LogHelper.RegisterError(excepcion.Message);
                return(new Resultado("Ocurrio un error. Favor contactarse con el administrador."));
            }
        }
        ////public List<VPresupuestoCiudad> GetPresupuestosCiudades(int gestion)
        ////{
        ////    return GetPresupuestosCiudades(null, gestion);
        ////}

        ////public List<VPresupuestoCiudad> GetPresupuestosCiudades(List<int> ciudadesIds, int gestion)
        ////{
        ////    MapperManager.GetInstance();
        ////    var presupuestoCiudadDb = new List<VPresupuesto>();

        ////    if (ciudadesIds != null)
        ////    {
        ////        presupuestoCiudadDb = dbContext.VPresupuestos.Where(p => ciudadesIds.Contains(p.CiudadId) && p.Gestion == gestion).ToList();
        ////    }
        ////    else
        ////    {
        ////        presupuestoCiudadDb = dbContext.VPresupuestos.Where(p => p.Gestion == gestion).ToList();
        ////    }

        ////    var presupuestos = new List<VPresupuestoCiudad>();

        ////    presupuestoCiudadDb.ForEach(p => presupuestos.Add(Mapper.Map<VPresupuesto, VPresupuestoCiudad>(p)));

        ////    return presupuestos;
        ////}

        public Resultado InsertPresupuesto(Presupuesto presupuesto)
        {
            MapperManager.GetInstance();

            try
            {
                var presupuestoDb = Mapper.Map <Presupuesto, DataAccess.Models.Presupuesto>(presupuesto);

                presupuestoDb.EstadoPresupuestoId = 2;
                presupuestoDb.FechaCreacion       = DateTime.Now;
                presupuestoDb.FechaModificacion   = DateTime.Now;
                dbContext.Presupuestos.Add(presupuestoDb);
                dbContext.SaveChanges();

                //Crear Presupuestos por ciudades
                var presupuestoCiudad = new DataAccess.Models.PresupuestoCiudad();
                var ciudades          = dbContext.Ciudades.Where(c => c.Activo);
                foreach (var ciudad in ciudades)
                {
                    presupuestoCiudad = new DataAccess.Models.PresupuestoCiudad
                    {
                        PresupuestoId       = presupuestoDb.Id,
                        CiudadId            = ciudad.Id,
                        EstadoPresupuestoId = 2,
                        Monto               = 0,
                        UsuarioCreacion     = presupuestoDb.UsuarioCreacion,
                        FechaCreacion       = DateTime.Now,
                        UsuarioModificacion = presupuestoDb.UsuarioModificacion,
                        FechaModificacion   = DateTime.Now
                    };
                    dbContext.PresupuestosCiudades.Add(presupuestoCiudad);
                }
                dbContext.SaveChanges();

                //Crear Presupuestos por facilities
                var presupuestoFacility = new DataAccess.Models.PresupuestoFacility();
                var facilities          = dbContext.Facilities.Where(c => c.Activo);
                foreach (var facility in facilities)
                {
                    presupuestoFacility = new DataAccess.Models.PresupuestoFacility
                    {
                        PresupuestoId       = presupuestoDb.Id,
                        FacilityId          = facility.Id,
                        EstadoPresupuestoId = 2,
                        Monto               = 0,
                        UsuarioCreacion     = presupuestoDb.UsuarioCreacion,
                        FechaCreacion       = DateTime.Now,
                        UsuarioModificacion = presupuestoDb.UsuarioModificacion,
                        FechaModificacion   = DateTime.Now
                    };
                    dbContext.PresupuestosFacilities.Add(presupuestoFacility);
                }
                dbContext.SaveChanges();

                return(new Resultado("El Presupuesto se guardó correctamente."));
            }
            catch (Exception excepcion)
            {
                LogHelper.RegisterError(excepcion.Message);
                return(new Resultado("Ocurrio un error. Favor contactarse con el administrador."));
            }
        }