Exemple #1
0
        /// <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));
            }));
        }
Exemple #2
0
        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));
            }));
        }
Exemple #3
0
        /// <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);
     }
 }
Exemple #7
0
        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);
            }
        }