Exemplo n.º 1
0
        public ActionResult SaveUtilityBuildingExternal(UtilityBuildingExternalModel model)
        {
            ViewBag.Cities = StaticDataProvider.Cities.Select(c => new SelectListItem { Text = c.Name, Value = c.CityId.ToString() });
            ViewBag.UtilityBuildingTypes = StaticDataProvider.UtilityBuildingTypes.Select(t => new SelectListItem
            {
                Text = t.Description,
                Value = t.UtilityBuildingTypeId.ToString()
            });
            ViewBag.edit = ViewBag.edit ?? false;

            if (!ModelState.IsValid) return PartialView("UtilityBuildingExternal", model);

            if (model.UrlAddress != null && !model.UrlAddress.ToLowerInvariant().Contains("http"))
            {
                // make it absolute
                model.UrlAddress = string.Format("http://{0}", model.UrlAddress);
            }
            
            using (var db = new OnLeaveContext())
            {
                UtilityBuilding building = new UtilityBuilding();
                if (model.Id > 0)
                {
                    building = db.UtilityBuildings
                        .Include(b => b.UtilityBuildingPhotoDetails)
                        .FirstOrDefault(b => b.UtilityBuildingId == model.Id);
                    if (building == null || building.UserId != User.Identity.GetUserId())
                    {
                        new HttpStatusCodeResult(System.Net.HttpStatusCode.NotFound);
                    }

                    building.KeyWords = model.Name;
                    building.PhoneNumber = model.PhoneNumber;
                    building.CityId = model.CityId;
                    building.ExternalUrl = model.UrlAddress;

                    var buildingLocaleBG = building.UtilityBuildingLocales.FirstOrDefault(l => l.LocaleId == (int)LocaleTypes.BG);
                    if (buildingLocaleBG != null)
                    {
                        buildingLocaleBG.Name = model.Name;                        
                    }
                    else
                    {
                        building.UtilityBuildingLocales.Add(new UtilityBuildingLocale
                        {
                            LocaleId = (int)LocaleTypes.BG,
                            Name = model.Name                            
                        });
                    }

                    var buildingLocaleEN = building.UtilityBuildingLocales.FirstOrDefault(l => l.LocaleId == (int)LocaleTypes.EN);
                    if (buildingLocaleEN != null)
                    {
                        if (string.IsNullOrWhiteSpace(model.NameEN))
                        {
                            // remove if no data                             
                            db.UtilityBuildingLocales.Remove(buildingLocaleEN);
                        }
                        else
                        {
                            buildingLocaleEN.Name = model.NameEN;                            
                        }
                    }
                    else
                    {
                        if (!string.IsNullOrWhiteSpace(model.NameEN))
                        {
                            building.UtilityBuildingLocales.Add(new UtilityBuildingLocale
                            {
                                LocaleId = (int)LocaleTypes.EN,
                                Name = model.NameEN                                
                            });
                        }
                    }
                }
                else
                {
                    building = new UtilityBuilding
                    {
                        KeyWords = model.Name,
                        UtilityBuildingTypeId = model.UtilityBuildingTypeId,
                        UserId = User.Identity.GetUserId(),
                        PhoneNumber = model.PhoneNumber,
                        CityId = model.CityId,
                        SystemTypeId = (int)Common.Constant.SystemType.Booking,
                        ExternalUrl = model.UrlAddress
                    };

                    building.UtilityBuildingLocales.Add(new UtilityBuildingLocale
                    {
                        LocaleId = (int)LocaleTypes.BG,
                        Name = model.Name,
                    });

                    if (!string.IsNullOrWhiteSpace(model.NameEN))
                    {
                        building.UtilityBuildingLocales.Add(new UtilityBuildingLocale
                        {
                            LocaleId = (int)LocaleTypes.EN,
                            Name = model.NameEN,
                        });
                    }

                    db.UtilityBuildings.Add(building);
                }                
                
                db.SaveChanges();
                
                model.Id = building.UtilityBuildingId;
                model.PhotoIds = building.UtilityBuildingPhotoDetails.Select(ph => ph.PhotoId).ToList();
            }

            ViewBag.edit = true;            

            ModelState.Clear();
            return PartialView("UtilityBuildingExternal", model);
        }
Exemplo n.º 2
0
        public ActionResult AddUtilityBuilding(UtilityBuildingModel model)
        {
            if (ModelState.IsValid)
            {  
                using (var db = new Models.OnLeaveContext())
                {
                    var city = StaticDataProvider.Cities.FirstOrDefault(c => c.CityId == model.CityId);
                    model.Longitude = city.lon;
                    model.Latitude = city.lat;

                    var building = new UtilityBuilding
                    {
                        KeyWords = model.Name,                        
                        UtilityBuildingTypeId = model.UtilityBuildingTypeId,
                        UserId = User.Identity.GetUserId(),
                        PhoneNumber = model.PhoneNumber,
                        CityId = city.CityId,
                        Rating = model.Rating,
                        lon = model.Longitude,
                        lat = model.Latitude,
                        Size = model.Size
                    };

                    building.UtilityBuildingLocales.Add(new UtilityBuildingLocale
                    {
                        LocaleId = (int)LocaleTypes.BG,
                        Name = model.Name,
                        Description = model.Description,
                        ContactPerson = model.ContactPerson,
                        Address = model.Address
                    });

                    if (!string.IsNullOrWhiteSpace(model.ContactPersonEN)
                        || !string.IsNullOrWhiteSpace(model.NameEN)
                        || !string.IsNullOrWhiteSpace(model.DescriptionEN)
                        || !string.IsNullOrWhiteSpace(model.Address))
                    {
                        building.UtilityBuildingLocales.Add(new UtilityBuildingLocale
                        {
                            LocaleId = (int)LocaleTypes.EN,
                            Name = model.NameEN,
                            Description = model.DescriptionEN,
                            ContactPerson = model.ContactPersonEN,
                            Address = model.AddressEN
                        });
                    }

                    var buildingDB = db.UtilityBuildings.Add(building);                    

                    // update facilities info
                    var facilitiesToRemove = buildingDB.UtilityBuidingFacilityDetails
                        .Where(fd => !model.Facilities.Any(f => f.FacilityTypeId == fd.UtilityBuildingFacilityTypeId && f.Selected));                    

                    db.UtilityBuidingFacilityDetails.RemoveRange(facilitiesToRemove);

                    model.Facilities.Where(f => f.Selected).ToList().ForEach(f =>
                    {
                        if (!buildingDB.UtilityBuidingFacilityDetails.Any(fd => fd.UtilityBuildingFacilityTypeId == f.FacilityTypeId))
                        {
                            buildingDB.UtilityBuidingFacilityDetails.Add(new UtilityBuidingFacilityDetail
                            {
                                UtilityBuildingFacilityTypeId = f.FacilityTypeId,
                            });
                        }
                    });

                    model.Periods.Where(p => p.RoomAmounts.Any(a => a.Amount != 0M)).ToList().ForEach(p =>
                    {
                        buildingDB.Periods.Add(p);
                        p.RoomAmounts.Where(a => a.Amount == 0M)
                            .ToList()
                            .ForEach(a => p.RoomAmounts.Remove(a));                        
                    });

                    db.SaveChanges();

                    model.Id = buildingDB.UtilityBuildingId;                   
                }
                
            }

            ViewBag.Cities = StaticDataProvider.Cities.Select(c => new SelectListItem { Text = c.Name, Value = c.CityId.ToString() });
            ViewBag.RoomTypes = StaticDataProvider.RoomTypes;
            ViewBag.UtilityBuildingTypes = StaticDataProvider.UtilityBuildingTypes.Select(t => new SelectListItem
            {
                Text = t.Description,
                Value = t.UtilityBuildingTypeId.ToString()
            });

            ModelState.Keys.Where(key => key.StartsWith("Periods")).ToList().ForEach(key => ModelState.Remove(key));
            return PartialView(model);
        }