public void SaveDetailedSearchCriterias(DetailedSearchResultsModel model, string userId) { var user = _dbContext.Users.Find(userId); var selectedLocationIds = (from loc2 in model.Locations let children = loc2.Children from loc3 in children where loc3.Selected select loc3.Id).ToList(); if (model.DetailedSearchFlatForRent != null) { var spEntity = _autoMapper.Map <SearchProfileFlatForRent>(model.DetailedSearchFlatForRent); spEntity.Title = model.SearchName; FillSpLoc(spEntity, selectedLocationIds); user.SearchProfiles.Add(spEntity); _dbContext.SaveChanges(); } if (model.DetailedSearchFlatForSale != null) { var spEntity = _autoMapper.Map <SearchProfileFlatForSale>(model.DetailedSearchFlatForSale); spEntity.Title = model.SearchName; FillSpLoc(spEntity, selectedLocationIds); user.SearchProfiles.Add(spEntity); _dbContext.SaveChanges(); } if (model.DetailedSearchHouseForRent != null) { var spEntity = _autoMapper.Map <SearchProfileHouseForRent>(model.DetailedSearchHouseForRent); spEntity.Title = model.SearchName; FillSpLoc(spEntity, selectedLocationIds); user.SearchProfiles.Add(spEntity); _dbContext.SaveChanges(); } if (model.DetailedSearchHouseForSale != null) { var spEntity = _autoMapper.Map <SearchProfileHouseForSale>(model.DetailedSearchHouseForSale); spEntity.Title = model.SearchName; FillSpLoc(spEntity, selectedLocationIds); user.SearchProfiles.Add(spEntity); _dbContext.SaveChanges(); } }
public ActionResult DetailedSearch(DetailedSearchResultsModel model) { if (model.SaveSearch && User.Identity.IsAuthenticated) { _searchService.SaveDetailedSearchCriterias(model, User.Identity.GetUserId()); this.AddToastMessage(Resource.Success, Resource.YourSearchCriteriasSavedSuccessfully, ToastType.Success); model.SaveSearch = false; } else if (model.SaveSearch) { Session["SearchViewModel"] = model; return(RedirectToAction("Register", "Account")); } else { this.AddToastMessage(Resource.Info, Resource.YouCanSaveYourDetailedSearchCriteriasForLaterUse); } model.SummaryViewModels = _listingService.DetailedSearch(model); FillLocInfo(model); return(View(model)); }