private OutfitView BuildOutfitView(OutfitSearch outfitSearch, int?userId) { int totalCount; string originalSearch = outfitSearch.Search; bool showAsPublicCloset = ShowAsPublicCloset(userId); RegisteredUser user = (showAsPublicCloset) ? registeredUserRepository.Get(userId.Value) : registeredUserRepository.Get(this.ProxyLoggedUser.Id); BasicUser currentUser = null; if (User.Identity.IsAuthenticated) { currentUser = registeredUserRepository.Get(this.UserId); } if (!AccessClosetService.CanViewCloset(currentUser, user.Closet)) { throw new NotPublicClosetException(); } if (originalSearch == SEARCH_TEXT) { outfitSearch.Search = string.Empty; } GetOutfitsInfo(showAsPublicCloset); IList <ClosetOutfitView> lstResults = new List <ClosetOutfitView>(); lstResults = this.Search(out totalCount, outfitSearch, user); string userName = Membership.GetUser(user.MembershipUserId).UserName; OutfitView ov = new OutfitView(); ov.Search = new OutfitSearch(); if (showAsPublicCloset) { ov.StyleAlerts = contentService.GetRandomStyleAlerts(); foreach (ClosetOutfitView cov in lstResults) { cov.Disabled = true; cov.ShowAddToMyCloset = true; cov.SendToFriends = false; } userName += "'s Outfits"; } else { ov.StyleAlerts = contentService.GetRandomStyleAlerts((IList <FashionFlavor>)ViewData["fashionFlavors"]); } ov.FilterText = originalSearch; ov.Closet = user.Closet; ov.UserName = userName; ov.Outfits = lstResults; ov.TotalOutfits = totalCount; ov.Season = outfitSearch.Season; ov.PrivacyLevel = user.Closet.PrivacyLevel.ToString(); ov.CurrentPage = outfitSearch.Page; ov.ShowAsPublicCloset = showAsPublicCloset; ov.Search.ShowAsPublicCloset = showAsPublicCloset; ov.Search.Patterns = patterRepository.GetAll() as List <Pattern>; ov.Search.Categories = new List <SelectListItem>(); SelectListItem noCategory = new SelectListItem(); noCategory.Text = NOCATEGORY; noCategory.Value = "0"; ov.Search.Categories.Add(noCategory); ov.Search.Categories.AddRange(GetCategorySelectListItemList(categoryRepository.GetAll())); ov.Search.Trends = new List <SelectListItem>(); SelectListItem noTrend = new SelectListItem(); noTrend.Text = NOTREND; noTrend.Value = "0"; ov.Search.Trends.Add(noTrend); ov.Search.Trends.AddRange(GetTrendSelectListItemList(trendRepository.GetCurrentTrends())); ov.Search.Colors = colorRepository.GetAll() as List <Color>; ov.Search.Page = outfitSearch.Page; ov.Search.Season = outfitSearch.Season; ov.Search.SeasonName = outfitSearch.SeasonName; ov.Search.EventTypes = new List <SelectListItem>(); foreach (EventType eventType in user.EventTypes) { SelectListItem item = new SelectListItem(); item.Text = eventType.Description; item.Value = eventType.Id.ToString(); ov.Search.EventTypes.Add(item); } ov.Search.Flavors = new List <SelectListItem>(); foreach (UserFlavor userFlavor in user.UserFlavors) { SelectListItem item = new SelectListItem(); item.Text = userFlavor.Flavor.Name; item.Value = userFlavor.Flavor.Id.ToString(); ov.Search.Flavors.Add(item); } ov.Search.SavedFilters = savedFilterRepository.GetAllFor(UserId) as List <SavedFilter>; if (user.Closet.FavoriteOutfit != null) { ClosetOutfitView couv = closetOutfitRepository.GetByClosetOutfitId(ov.FavoriteOutfitId); if (couv != null) { ov.FavoriteOutfitId = user.Closet.FavoriteOutfit.Id; ov.FavoriteOutfit = couv.ShortEventTypes + ov.FavoriteOutfitId; } } else { ov.FavoriteOutfit = "None Selected"; } ViewData["procesingCloset"] = user.Closet.CreationStatus == ClosetGarmentStatus.Pending && IsSameUser(user.Id); ViewData["userId"] = user.Id; ViewData["closetUserId"] = user.MembershipUserId; ov.Pager = PagingHelper.Paging(totalCount, Convert.ToInt32(outfitSearch.Page), Convert.ToInt32(outfitSearch.PageSize), 4); ViewData["Pages"] = ov.Pager; //TODO: Hacer modificable este seteo ViewData["StyleAlertsStep"] = 5; foreach (ClosetOutfitView cov in lstResults) { if (cov.OutfitUpdater == null) { cov.OutfitUpdater = outfitUpdaterRepository.Get(ConfigurationManager.AppSettings["DefaultOU"]); } //We also need to be able to obtain the number of impressiones (views) of an outfit updaters. TrackingHelper.SaveOutfitUpdaterInfo(cov.OutfitUpdater.Id.ToString(), cov.ClosetOutfitId.ToString()); } ov.Search.Public = false; return(ov); }
public ActionResult OutfitResume(int outfitId) { ClosetOutfitView closetOutfitView = closetOutfitRepository.GetByClosetOutfitId(outfitId); OutfitResume or = new OutfitResume(); or.OutfitView = closetOutfitView; if (UserId == closetOutfitView.ClosetOutfit.Closet.User.Id) { or.GetRatings(); } if (or.OutfitView == null) { return(RedirectToAction("Index", "Home")); } BasicUser user = null; if (User.Identity.IsAuthenticated) { user = registeredUserRepository.Get(this.UserId); } if (!AccessClosetService.CanViewClosetOutfit(user, or.OutfitView.ClosetOutfit)) { throw new NotPublicClosetException(); } or.OutfitView.Disabled = (this.ProxyCloset == null || or.OutfitView.ClosetOutfit.Closet.Id != this.ProxyCloset.Id); or.OutfitView.SendToFriends = !or.OutfitView.Disabled; or.UserClosetUrl = (or.OutfitView.Disabled) ? Url.Action("PublicCloset", "MyOutfits", new { username = or.OutfitView.ClosetOutfit.Closet.User.UserName }) : Url.Action("Index", "MyOutfits"); bool isFavoriteOutfit = (closetOutfitView.ClosetOutfit.Closet.FavoriteOutfit != null && closetOutfitView.ClosetOutfit.Closet.FavoriteOutfit.Id == outfitId) ? true : false; or.OutfitView.ClosetOutfit.IsFavouriteOutfit = isFavoriteOutfit; if (user != null && !IsSameUser(closetOutfitView.ClosetOutfit.Closet.User.Id)) { or.OutfitView.Disabled = true; or.OutfitView.ShowAddToMyCloset = !IsSameUser(closetOutfitView.ClosetOutfit.Closet.User.Id); or.OutfitView.SendToFriends = IsSameUser(closetOutfitView.ClosetOutfit.Closet.User.Id); } if (or.OutfitView.OutfitUpdater == null) { or.OutfitView.OutfitUpdater = outfitUpdaterRepository.Get(ConfigurationManager.AppSettings["DefaultOU"]); } //We need to be able to track the number of impressiones (views) of an outfit updaters. if (or.OutfitView.OutfitUpdater != null) { TrackingHelper.SaveOutfitUpdaterInfo(or.OutfitView.OutfitUpdater.Id.ToString(), or.OutfitView.ClosetOutfitId.ToString()); } return(View(or)); }