예제 #1
0
        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);
        }
예제 #2
0
        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));
        }