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); }
public ActionResult GetUtilityBuildingExternal(int? buildingId, bool? edit) { UtilityBuildingExternalModel utilityBuilding = null; if (buildingId.HasValue) { using (var db = new OnLeaveContext()) { var buildingDB = db.UtilityBuildings .Include(b => b.UtilityBuildingLocales) .FirstOrDefault(b => b.UtilityBuildingId == buildingId); if (buildingDB == null) new HttpStatusCodeResult(System.Net.HttpStatusCode.NotFound); utilityBuilding = new UtilityBuildingExternalModel { Id = buildingDB.UtilityBuildingId, PhoneNumber = buildingDB.PhoneNumber, CityId = buildingDB.CityId, UrlAddress = buildingDB.ExternalUrl, PhotoIds = buildingDB.UtilityBuildingPhotoDetails.Select(ph => ph.PhotoId).ToList(), }; var bg = buildingDB.UtilityBuildingLocales.FirstOrDefault(l => l.LocaleId == (int)LocaleTypes.BG); if (bg == null) bg = new UtilityBuildingLocale(); var en = buildingDB.UtilityBuildingLocales.FirstOrDefault(l => l.LocaleId == (int)LocaleTypes.EN); if (en == null) en = new UtilityBuildingLocale(); utilityBuilding.Name = bg.Name; utilityBuilding.NameEN = en.Name; } } else { utilityBuilding = new UtilityBuildingExternalModel { UtilityBuildingTypeId = (int)UtilityBuildingTypes.Hotel, PhotoIds = new List<int>() }; } 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 = edit ?? false; return PartialView("UtilityBuildingExternal", utilityBuilding); }