Exemple #1
0
        public ActionResult PublicCloset(string userName)
        {
            if (!IsPublicCloset(userName))
            {
                throw new NotPublicClosetException();
            }

            int?userId = GetUserId(userName);

            if (IsUserCloset(userId))
            {
                return(RedirectToAction("Index"));
            }

            OutfitSearch search = new OutfitSearch();

            search.SortBy     = "1";
            search.Search     = SEARCH_TEXT;
            search.Page       = "1";
            search.Season     = SeasonHelper.CurrentSeasonId;
            search.SeasonName = SeasonHelper.CurrentSeason.ToString();
            search.PageSize   = "25";
            OutfitView ov = BuildOutfitView(search, userId);

            ov.Search.Public = true;
            return(View("Index", ov));
        }
Exemple #2
0
        public JsonResult GetResults(OutfitSearch outfitSearch)
        {
            OutfitView ov = BuildOutfitView(outfitSearch, this.UserId);

            if (ov.Outfits.Count == 0)
            {
                outfitSearch.Page = "1";
                ov = BuildOutfitView(outfitSearch, this.UserId);
            }

            return(Json(new OutfitViewLight(ov)));
        }
Exemple #3
0
        public ActionResult Index()
        {
            OutfitSearch search = new OutfitSearch();

            search.SortBy     = "1";
            search.Search     = SEARCH_TEXT;
            search.Page       = "1";
            search.Season     = SeasonHelper.CurrentSeasonId;
            search.PageSize   = "25";
            search.SeasonName = SeasonHelper.CurrentSeason.ToString();
            return(View("Index", BuildOutfitView(search, this.UserId)));
        }
Exemple #4
0
        public JsonResult GetResultPublicCloset(OutfitSearch outfitSearch)
        {
            if (!IsPublicCloset(outfitSearch.Username))
            {
                throw new NotPublicClosetException();
            }

            int?       userId = GetUserId(outfitSearch.Username);
            OutfitView ov     = BuildOutfitView(outfitSearch, userId.Value);

            ov.Search.Public = true;
            return(Json(new OutfitViewLight(ov)));
        }
Exemple #5
0
        public JsonResult SaveFilters(OutfitSearch outfitSearch)
        {
            SavedFilter savedFilter = savedFilterRepository.GetByName(outfitSearch.Name, UserId);

            if (savedFilter == null)
            {
                savedFilter = new SavedFilter();
            }
            savedFilter.Color            = outfitSearch.Color;
            savedFilter.CreatedByMe      = outfitSearch.CreatedByMe;
            savedFilter.Garment          = outfitSearch.Garment;
            savedFilter.IsRatedByFriends = outfitSearch.IsRatedByFriends;
            savedFilter.IsRatedByMe      = outfitSearch.IsRatedByMe;
            savedFilter.Name             = outfitSearch.Name;
            savedFilter.Pattern          = outfitSearch.Pattern;
            savedFilter.Search           = outfitSearch.Search;
            savedFilter.SeasonName       = outfitSearch.SeasonName;
            savedFilter.SelectedEvents   = outfitSearch.SelectedEvents;
            savedFilter.SelectedFlavors  = outfitSearch.SelectedFlavors;
            savedFilter.Trend            = outfitSearch.Trend;
            savedFilter.UserId           = UserId;
            savedFilter.MyFavorites      = outfitSearch.MyFavorites;
            savedFilter.IsUpToDate       = outfitSearch.IsUpToDate;

            savedFilterRepository.SaveOrUpdate(savedFilter);
            IList <SavedFilter>   lst    = savedFilterRepository.GetAllFor(UserId);
            List <MVCSavedFilter> result = new List <MVCSavedFilter>();

            foreach (SavedFilter filter in lst)
            {
                if (filter.Name == outfitSearch.Name)
                {
                    result.Add(new MVCSavedFilter(filter, true));
                }
                else
                {
                    result.Add(new MVCSavedFilter(filter));
                }
            }
            return(Json(result));
        }
Exemple #6
0
        private IList <ClosetOutfitView> Search(out int totalCount, OutfitSearch outfitSearch, RegisteredUser user)
        {
            IList <ClosetOutfitView> result = new List <ClosetOutfitView>();

            using (SearchEngineService ses = SearchEngineService.GetByCloset(user.Closet.Id))
            {
                string sortBy = string.Empty;
                switch (outfitSearch.SortBy)
                {
                case "1":
                    sortBy = "EditorRating";
                    break;

                case "2":
                    sortBy = "MyRating";
                    break;

                case "3":
                    sortBy = "FriendRating";
                    break;

                case "4":
                    sortBy = "WornDate";
                    break;
                }

                SearchParameters sp = new SearchParameters();
                if (outfitSearch.MyFavorites)
                {
                    sp.MyRating = 5;
                }
                if (!string.IsNullOrEmpty(outfitSearch.Search))
                {
                    outfitSearch.Search = outfitSearch.Search.Replace(',', ' ');
                }
                if (!string.IsNullOrEmpty(outfitSearch.Color))
                {
                    outfitSearch.Color = outfitSearch.Color.Replace(',', ' ');
                }
                if (!string.IsNullOrEmpty(outfitSearch.Pattern))
                {
                    outfitSearch.Pattern = outfitSearch.Pattern.Replace(',', ' ');
                }
                sp.FreeText = string.Format("{0} {1} {2}", outfitSearch.Color, outfitSearch.Pattern, outfitSearch.Search);
                char[] separator = new char[1];
                separator[0] = ' ';
                if (!string.IsNullOrEmpty(outfitSearch.SeasonName))
                {
                    sp.Seasons = outfitSearch.SeasonName.Split(separator, StringSplitOptions.RemoveEmptyEntries);
                }
                if (!string.IsNullOrEmpty(outfitSearch.Garment) && outfitSearch.Garment != NOCATEGORY)
                {
                    sp.FreeText += " " + outfitSearch.Garment;
                }
                separator[0] = ',';
                if (!string.IsNullOrEmpty(outfitSearch.SelectedEvents))
                {
                    sp.EventTypes = outfitSearch.SelectedEvents.Split(separator, StringSplitOptions.RemoveEmptyEntries);
                }

                if (!string.IsNullOrEmpty(outfitSearch.Trend) && outfitSearch.Trend != NOTREND)
                {
                    Trend trend = trendRepository.GetByName(outfitSearch.Trend);
                    sp.TrendKeywords = new List <string>(trend.Keywords).ToArray();
                }

                if (outfitSearch.CreatedByMe)
                {
                    sp.CreatedByMe = true;
                }
                if (outfitSearch.IsRatedByMe)
                {
                    sp.IsRatedByMe = true;
                }
                if (outfitSearch.IsRatedByFriends)
                {
                    sp.IsRatedByFriends = true;
                }
                if (outfitSearch.IsUpToDate)
                {
                    sp.IsUpToDate = true;
                }

                if (outfitSearch.SelectedFlavors != null && outfitSearch.SelectedFlavors.Split(separator, StringSplitOptions.RemoveEmptyEntries).Length == 1)
                {
                    sp.FlavorId = Convert.ToInt32(outfitSearch.SelectedFlavors.Split(separator, StringSplitOptions.RemoveEmptyEntries)[0]);
                }

                SearchEngineResponse response = ses.Search(
                    sp,
                    (Convert.ToInt32(outfitSearch.Page) * Convert.ToInt32(outfitSearch.PageSize)) - Convert.ToInt32(outfitSearch.PageSize), Convert.ToInt32(outfitSearch.PageSize), sortBy, true);

                totalCount = response.TotalCount;
                List <int> lstIds = new List <int>();
                foreach (SearchEngineResult engineResult in response.Results)
                {
                    lstIds.Add(engineResult.EntryId);
                }
                if (lstIds.Count > 0)
                {
                    result = closetOutfitRepository.Search(lstIds, user.Closet.Id);
                }
            }
            return(result);
        }
Exemple #7
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);
        }