コード例 #1
0
ファイル: AccountController.cs プロジェクト: IPenkov/OnLeave
        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);
        }
コード例 #2
0
ファイル: AccountController.cs プロジェクト: IPenkov/OnLeave
        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);
        }