public PotentialOffersModel(TennisUserModel tennisUserP, SportsLinkDB dbP) : base(tennisUserP) { // BUGBUG: get rid of the hard-coded values if (null == CachedQuery) { var offers = ModelUtils.GetOffersFunc(); Expression <Func <SportsLinkDB, TennisUserModel, IQueryable <OfferModel> > > results = (SportsLinkDB db, TennisUserModel tennisUser) => offers.Invoke(db, tennisUser) .Where (o => o.ConfirmedUser == null && (o.SpecificOpponent == null || o.SpecificOpponent.FacebookId == tennisUser.FacebookId) && o.RequestUser.FacebookId != tennisUser.FacebookId && o.MatchDateUtc >= DateTime.UtcNow && Math.Abs(tennisUser.Rating - o.RequestUser.Rating) <= 0.25 && db.CoordinateDistanceMiles(o.City.Latitude, o.City.Longitude, tennisUser.City.Latitude, tennisUser.City.Longitude) < 15 ).OrderBy(o => Math.Abs(tennisUser.Rating - o.RequestUser.Rating)).Take(20); CachedQuery = CompiledQuery.Compile <SportsLinkDB, TennisUserModel, IQueryable <OfferModel> > ( results.Expand() ); } this.PotentialOffers = CachedQuery(dbP, tennisUserP); }
public CalendarModel(DateTime startDateP, TennisUserModel tennisUserP, SportsLinkDB dbP) : base(tennisUserP) { this.UserStartDate = IndexModel.GetLocalDate(startDateP.ToUniversalTime(), tennisUserP.TimeZoneOffset); this.UserStartDate = this.UserStartDate.AddDays(-(int)this.UserStartDate.DayOfWeek); this.StartDate = IndexModel.GetUtcDate(this.UserStartDate, tennisUserP.TimeZoneOffset); this.EndDate = this.StartDate.AddDays(7); if (null == CachedQuery) { var offers = ModelUtils.GetOffersFunc(); Expression <Func <SportsLinkDB, TennisUserModel, DateTime, DateTime, IQueryable <OfferModel> > > results = (SportsLinkDB db, TennisUserModel tennisUser, DateTime startDate, DateTime endDate) => offers.Invoke(db, tennisUser) .Where(o => o.RequestUser.FacebookId != tennisUser.FacebookId) .Where(o => o.SpecificOpponent == null || o.SpecificOpponent.FacebookId == tennisUser.FacebookId || o.RequestUser.FacebookId == tennisUser.FacebookId) .Where(o => o.ConfirmedUser == null || o.ConfirmedUser.FacebookId == tennisUser.FacebookId || o.RequestUser.FacebookId == tennisUser.FacebookId) .Where(o => o.MatchDateUtc >= startDate) .Where(o => o.MatchDateUtc < endDate) .Where(o => o.MatchDateUtc >= DateTime.UtcNow || null != o.ConfirmedUser) .OrderBy(o => o.MatchDateUtc); CachedQuery = CompiledQuery.Compile <SportsLinkDB, TennisUserModel, DateTime, DateTime, IQueryable <OfferModel> > ( results.Expand() ); } this.Offers = CachedQuery(dbP, tennisUserP, this.StartDate, this.EndDate); }
public ConfirmedMatchesModel(TennisUserModel tennisUserP, SportsLinkDB dbP) : base(tennisUserP) { // Select confirmed matchs which do not have a score yet where the current user is either a requestor or an acceptor // BUGBUG: we might want to eliminate confirmed matches that way older than current time (user might have forgotten to enter a score) if (null == CachedQuery) { var offers = ModelUtils.GetOffersFunc(); Expression <Func <SportsLinkDB, TennisUserModel, IQueryable <OfferModel> > > results = (SportsLinkDB db, TennisUserModel tennisUser) => offers.Invoke(db, tennisUser) .Where(o => o.ConfirmedUser != null) .Where(o => (o.ConfirmedUser.FacebookId == tennisUser.FacebookId || o.RequestUser.FacebookId == tennisUser.FacebookId)) .Where(o => (o.Score == null || o.Score == "")) .OrderByDescending(o => o.MatchDateUtc); CachedQuery = CompiledQuery.Compile <SportsLinkDB, TennisUserModel, IQueryable <OfferModel> > ( results.Expand() ); } this.ConfirmedMatches = CachedQuery(dbP, tennisUserP); }
public UserOffersModel(TennisUserModel tennisUserP, SportsLinkDB dbP) : base(tennisUserP) { // BUGBUG: what about offers which were not confirmed and where the offer time is past - we need to eliminate those from the db if (null == CachedQuery) { var offers = ModelUtils.GetOffersFunc(); Expression <Func <SportsLinkDB, TennisUserModel, IQueryable <OfferModel> > > results = (SportsLinkDB db, TennisUserModel tennisUser) => offers.Invoke(db, tennisUser) .Where(o => o.ConfirmedUser == null) .Where(o => o.RequestUser.FacebookId == tennisUser.FacebookId && o.MatchDateUtc > DateTime.UtcNow) .OrderBy(o => o.MatchDateUtc); CachedQuery = CompiledQuery.Compile <SportsLinkDB, TennisUserModel, IQueryable <OfferModel> > ( results.Expand() ); } this.UserOffers = CachedQuery(dbP, tennisUserP); }
public ResultsModel(TennisUserModel tennisUserP, SportsLinkDB dbP) : base(tennisUserP) { if (null == CachedQuery) { var offers = ModelUtils.GetOffersFunc(); Expression <Func <SportsLinkDB, TennisUserModel, IQueryable <OfferModel> > > results = (SportsLinkDB db, TennisUserModel tennisUser) => offers.Invoke(db, tennisUser) .Where(o => o.ConfirmedUser != null) .Where(o => (o.ConfirmedUser.FacebookId == tennisUser.FacebookId || o.RequestUser.FacebookId == tennisUser.FacebookId)) .Where(o => (o.Score != null && o.Score != "")) .OrderByDescending(o => o.MatchDateUtc); CachedQuery = CompiledQuery.Compile <SportsLinkDB, TennisUserModel, IQueryable <OfferModel> > ( results.Expand() ); } this.UserResults = CachedQuery(dbP, tennisUserP); }