/// <summary> /// Searches userprofiles by applying blob against email, first name, last name and phone fields. Only profiles for current location and in role "client" will be returned /// </summary> /// <param name="blob">text to search by</param> /// <param name="skip">skip result records</param> /// <param name="take">number of records to take</param> /// <returns></returns> public IHttpActionResult Get(string blob, int?skip, int?take) { return(Execute <IHttpActionResult>(delegate { UserProfile2Discriminator mainDiscriminator = new UserProfile2Discriminator(); if (!string.IsNullOrWhiteSpace(blob)) { mainDiscriminator.Filter = base.GetBlobFilter(blob); } if (skip.HasValue) { mainDiscriminator.Skip = skip.Value; } if (take.HasValue) { mainDiscriminator.Take = take.Value; } return base.Ok(Db.FindUserProfile( mainDiscriminator, AuthorizedLocationFilter, new SecurityUnified.Contracts.RoleDiscriminator() { Filter = x => x.RoleName == "client" } ).Select(x => x.UserProfile2 as UserProfile2Implementor)); })); }
public IHttpActionResult Post(string lambda, int?skip, int?take) { return(Execute <IHttpActionResult>(delegate { if (!ValidateLambdaSring(lambda)) { throw new Xxception(Errors.InvalidLambdaParameter); } var filter = ExpressionParser.CompileBolleanFunc <IUserProfile2>(lambda); var discriminator = new UserProfile2Discriminator() { Filter = filter }; if (skip.HasValue) { discriminator.Skip = skip.Value; } if (take.HasValue) { discriminator.Take = take.Value; } return base.Ok(Db.FindLastUsedProducts(discriminator, AuthorizedLocationFilter)); })); }
/// <summary> /// /// </summary> /// <param name="blob">text to search by</param> /// <param name="skip">skip result records</param> /// <param name="take">number of records to take</param> /// <returns></returns> public IHttpActionResult Get(string blob, int?skip, int?take) { return(Execute <IHttpActionResult>(delegate { if (string.IsNullOrWhiteSpace(blob)) { return base.BadRequest("blob is not supplied"); } var discriminator = new UserProfile2Discriminator() { Filter = base.GetBlobFilter(blob) }; if (skip.HasValue) { discriminator.Skip = skip.Value; } if (take.HasValue) { discriminator.Take = take.Value; } return base.Ok(Db.FindLastUsedProducts(discriminator, AuthorizedLocationFilter)); })); }
public IHttpActionResult Query(string lamda) { return(Execute <IHttpActionResult>(delegate { if (!ValidateLambdaSring(lamda)) { throw new Xxception(Errors.InvalidLambdaParameter); } var filter = ExpressionParser.CompileBolleanFunc <IUserProfile2>(lamda); var discriminator = new UserProfile2Discriminator() { Filter = filter }; return base.Ok(Db.FindUserProfile(discriminator, AuthorizedLocationFilter, null).Select(x => x.UserProfile2 as UserProfile2Implementor)); })); }
public UserProfile2Contract[] FindUserProfile(UserProfile2Discriminator d) { try { using (var records = RepositoryFactory.GetUserProfile()) { records.Discriminator2 = d; return(records.OfType <DB.UserProfile>().Select(r => new UserProfile2Contract() { UserProfile2 = r, UserRoles = (r as DB.UserProfile).webpages_UsersInRoles.Select(ur => ur.webpages_Role) }).ToArray()); } } catch (Exception ex) { HandleMyException(ex); return(null); } }
/// <summary> /// Locates users by combining boths filters /// </summary> /// <param name="d"></param> /// <param name="d2"></param> /// <param name="r"></param> /// <returns></returns> public UserProfile2Contract[] FindUserProfile(UserProfile2Discriminator d, UserProfileVsLocationDiscriminator d2, RoleDiscriminator r) { try { using (var records = RepositoryFactory.GetUserProfile()) { records.Discriminator2 = d; records.UserProfileVsLocationFilter = d2; records.RoleFilter = r; //Debug.WriteLine(records.Count()); return(records.Select(x => new UserProfile2Contract() { UserProfile2 = x as DB.UserProfile }).ToArray()); } } catch (Exception ex) { HandleMyException(ex); return(null); } }
public IEnumerable <UserSanpshotModel> Query(string lamda) { try { if (!ValidateLambdaSring(lamda)) { throw new Xxception(Errors.InvalidLambdaParameter); } var filter = ExpressionParser.CompileBolleanFunc <IUserProfile2>(lamda); var discriminator = new UserProfile2Discriminator() { Filter = filter }; var profiles = Db.FindUserProfile(discriminator, AuthorizedLocationFilter, null); var ret = profiles.Select(p => new UserSanpshotModel() { UserProfile2 = p.UserProfile2, ProfileCredits = Db.FindProfileCredit(new ProfileCreditDiscriminator() { Filter = x => x.UserId == p.UserProfile2.UserId }).Select(x => x.ProfileCredit), CreditTransactions = Db.FindCreditTransaction(new CreditTransactionDiscriminator() { Filter = x => x.UserId == p.UserProfile2.UserId, Take = 2 }).Select(x => x.CreditTransaction) //TODO: take the latest one of each product }); return(ret); } catch (Exception ex) { this.HandleError(ex); throw ex; } }
public UserAndProductsContarct[] FindLastUsedProducts(UserProfile2Discriminator u, UserProfileVsLocationDiscriminator pvl) { //TODO: it is not matching how it is implemented in the ProductRepository try { var userRecords = RepositoryFactory.GetUserProfile(); userRecords.Discriminator2 = u; userRecords.UserProfileVsLocationFilter = pvl; var ret = userRecords.OfType <DB.UserProfile>() .Select(p => new UserAndProductsContarct() { UserProfile = p, Products = p.ProfileCredits.OrderByDescending(pc => pc.HasBallance).ThenByDescending(pc => pc.CalculatedTime).ThenByDescending(pc => pc.Product.CreditTransactions.Count).Take(Settings.Default.NumberOfLastProductsToShow) .Select(pc => new ProductCreditContract() { Product = pc.Product, ProfileCredit = pc }).ToArray() }).ToArray(); foreach (var r in ret) { DB.UserProfile profile = (DB.UserProfile)userRecords.Result2.First(z => z.UserId == r.UserProfile.UserId); IQueryable <DB.CreditTransaction> transactions = profile.CreditTransactions.AsQueryable(); if (pvl != null && pvl.Filter != null) { var locations = MDB.UserProfileVsLocations.Where(pvl.Filter); transactions = transactions.Join(locations, location => location.LocationId, transaction => transaction.LocationId, (transaction, location) => transaction ); } var lastTransaction = transactions.LastOrDefault(); if (lastTransaction != null) { var lastPayment = lastTransaction.Payments.LastOrDefault(); if (lastPayment != null) { r.LastPayment = lastPayment; } else { //TODO: replace mocked-up payment with location-settings driven data r.LastPayment = new PaymentImplementor { Amount = lastTransaction.BallanceUnits * lastTransaction.Product.ProductPriceHistories.OrderByDescending(p => p.ChangeDate).First().Price }; } } } return(ret); } catch (Exception ex) { HandleMyException(ex); return(null); } }