public OutfitUpdater GetRandomOutfitUpdaterFor(PreCombination preCombination) { string query = string.Format("SELECT outfitupdaterid FROM outfitupdaters WHERE status > 0 and outfitupdaterid >= (SELECT FLOOR( MAX(outfitupdaterid) * RAND()) FROM outfitupdaterbyprecombinations where precombinationid = {0} ) ORDER BY outfitupdaterid LIMIT 1;", preCombination.Id); IQuery q = Session.CreateSQLQuery(query); return(new OutfitUpdaterRepository().Get(q.UniqueResult <int>())); }
public virtual void AddPrecombination(PreCombination pc) { ClosetOutfit co = new ClosetOutfit { PreCombination = pc, Closet = this }; outfits.Add(co); }
public ClosetOutfitView(int closetOutfit, float averageFriendRating, float averageUserRating, float averageWearRating, float editorRating, DateTime wornDate, string location, float myRating, int preCombination, int eventTypes) { this.Id = closetOutfit; this.closetOutfit = new ClosetOutfit(closetOutfit); this.averageFriendRating = averageFriendRating; this.averageWearRating = averageWearRating; this.averageUserRating = averageUserRating; this.editorRating = editorRating; this.wornDate = wornDate; this.location = location; this.myRating = myRating; this.preCombination = new PreCombination(preCombination); this.eventTypes = eventTypes; }
public IList <OutfitUpdater> GetFor(PreCombination preCombination, int pageNumber, int pageSize, out int totalCount) { ICriteria crit = Session.CreateCriteria(typeof(OutfitUpdater)).CreateCriteria("PreCombinations"); crit.Add(Expression.Eq("Id", preCombination.Id)); totalCount = crit.SetProjection(Projections.ProjectionList().Add(Projections.Count("Id"))).UniqueResult <int>(); crit = Session.CreateCriteria(typeof(OutfitUpdater)).CreateCriteria("PreCombinations"); crit.Add(Expression.Eq("Id", preCombination.Id)); if (pageNumber != 0 && pageSize != 0) { crit.SetMaxResults(pageSize); crit.SetFirstResult((pageNumber - 1) * pageSize); } return(crit.List <OutfitUpdater>()); }
public OutfitUpdater GetRandomOutfitUpdaterFor(PreCombination preCombination) { string query = "SELECT oubpc.outfitupdaterid, ou.description, ou.name, ou.price, ou.buyurl, ou.imageurl, p.Code, p.Name, ou.silouhetteid FROM outfitupdaterbyprecombinations oubpc "; query += "inner join outfitupdaters ou ON oubpc.OutfitUpdaterId = ou.OutfitUpdaterId "; query += "inner join outfitupdatersbytrend oubt ON oubt.OutfitUpdaterId = ou.OutfitUpdaterId "; query += "inner join partners p on ou.PartnerId = p.PartnerId "; query += "inner join trends t ON oubt.TrendId = t.TrendId "; query += string.Format("where t.IsEnabled = 1 and t.Season = {1} and ou.Status >= {2} and oubpc.precombinationid = {0} ORDER BY RAND() LIMIT 1;", preCombination.Id, (int)SeasonHelper.CurrentSeason, (int)OutfitUpdaterStatus.Processed); IQuery q = Session.CreateSQLQuery(query); q.SetResultTransformer(new NHibernate.Transform.AliasToBeanConstructorResultTransformer(typeof(OutfitUpdater).GetConstructors()[3])); return(q.UniqueResult <OutfitUpdater>()); }
/// <summary> /// Creates a new closet outfit in the system related with the current user. /// </summary> /// <param name="userId">User</param> /// <param name="garments">List of Garments</param> /// <param name="season">Season</param> /// <param name="visibility">Visibility</param> /// <exception cref="NotValidCombinationException">When a combination is not valid.</exception> public void CreateUserOutfit(int userId, IList <Garment> garments, Season season, ClosetOutfitVisibility visibility) { if (!OutfitValidationService.IsValidCombination(garments)) { throw new NotValidCombinationException(); } ClosetOutfit uo = new ClosetOutfit(); // HACK: We need the garments saved with 0 in the non filled fields to make sure we have no duplicates. Garment hack = garmentRepository.Get(0); foreach (Garment g in garments) { uo.AddComponent(g, hack); } uo.Rating.CalculateEditorRating(uo.Components); BasicUser bu = basicUserRepository.Get(userId); FashionFlavor ff = bu.GetPreferredFlavor(); uo.FashionFlavor = ff; uo.Closet = (bu as RegisteredUser).Closet; uo.SetSeason(season); uo.SetEventTypes(bu as RegisteredUser); uo.SetVisibility(visibility); //Agregar PreCombination PreCombination pc = preCombinationRepository.GetByGarments(uo.RetrieveCombinableComponents().ToList <Garment>(), ff); if (pc == null) { pc = new PreCombination(); pc.FashionFlavor = ff; for (int j = 0; j < garments.Count; j++) { Garment g = garments[j]; if (!OutfitValidationService.IsAccessory(g)) { pc.AddPreGarment(garments[j]); } } } uo.PreCombination = pc; uo.User = bu as RegisteredUser; if (!uo.IsValid()) { throw new NotValidCombinationException(); } closetOutfitRepository.DbContext.BeginTransaction(); // REVIEW: This may lead to orphaned records, given we cannot change the autonumeric for now because of the combination process. // TODO: Is better to check first if the Closet Outfit combination already exists and then proceed. preCombinationRepository.SaveOrUpdate(pc); try { closetOutfitRepository.SaveOrUpdate(uo); closetOutfitRepository.DbContext.BeginTransaction(); } catch { closetOutfitRepository.DbContext.RollbackTransaction(); throw new CombinationAlreadyExistsException(); } }
public OutfitUpdaterByPreCombination(OutfitUpdater outfitUpdater, PreCombination preCombination) { this.outfitUpdater = outfitUpdater; this.preCombination = preCombination; }
public void CreatePreCombinations(IList <FashionFlavor> flavors, IList <PreGarment> garments) { //outfitEngineProcessor.EventTypes.Add(et); outfitEngineProcessor.FashionFlavors = flavors; outfitEngineProcessor.Garments = garments; outfitEngineProcessor.CreateCombinations(); int i = 0; StringBuilder sb = new StringBuilder(); foreach (PreOutfit po in outfitEngineProcessor.Outfits) { int used = 2; PreCombination pc = po.Combination; // Add Garments sb.Append(pc.FashionFlavor.Id); sb.Append(","); sb.Append(pc.GarmentA.Id); sb.Append(","); sb.Append(pc.GarmentB.Id); if (pc.GarmentC != null) { sb.Append(","); sb.Append(pc.GarmentC.Id); used++; } if (pc.GarmentD != null) { sb.Append(","); sb.Append(pc.GarmentD.Id); used++; } if (pc.GarmentE != null) { sb.Append(","); sb.Append(pc.GarmentE.Id); used++; } if (po.Accesory1 != null) { sb.Append(","); sb.Append(po.Accesory1.Id); used++; } if (po.Accesory2 != null) { sb.Append(","); sb.Append(po.Accesory2.Id); used++; } if (po.Accesory3 != null) { sb.Append(","); sb.Append(po.Accesory3.Id); used++; } if (po.Accesory4 != null) { sb.Append(","); sb.Append(po.Accesory4.Id); used++; } if (po.Accesory5 != null) { sb.Append(","); sb.Append(po.Accesory5.Id); used++; } for (int j = used; j < 10; j++) { sb.Append(","); sb.Append(@"\N"); } sb.AppendLine(""); i++; if (i == 50000) { System.IO.File.AppendAllText(@"c:\leo.txt", sb.ToString()); sb = new StringBuilder(); i = 0; } } }