Пример #1
0
        public async Task <SpendRulesListResponseModel> GetSpendRulesAsync([FromQuery] PaginationRequestModel pagination)
        {
            var spendRules = await _campaignClient.Mobile.GetSpendRulesAsync(Localization.En, _mapper.Map <BasePaginationRequestModel>(pagination));

            var result = _mapper.Map <SpendRulesListResponseModel>(spendRules);

            foreach (var spendRule in result.SpendRules)
            {
                if (spendRule.BusinessVertical != BusinessVertical.Retail)
                {
                    continue;
                }

                var report = await _vouchersClient.Reports.GetSpendRuleVouchersAsync(spendRule.Id);

                spendRule.StockCount = report.InStock;
                spendRule.SoldCount  = report.Total - report.InStock;
                var rate = await _eligibilityEngineClient.ConversionRate.GetAmountBySpendRuleAsync(
                    new ConvertAmountBySpendRuleRequest()
                {
                    Amount       = Money18.Create(Math.Abs(spendRule.Price ?? 0)),
                    CustomerId   = Guid.Parse(_requestContext.UserId),
                    SpendRuleId  = spendRule.Id,
                    FromCurrency = _settingsService.GetBaseCurrencyCode(),
                    ToCurrency   = _settingsService.GetTokenName(),
                }
                    );

                spendRule.PriceInToken = rate.Amount.ToDisplayString();
            }

            return(result);
        }
Пример #2
0
        public async Task <PaginatedAdminUserResponseModel> GetPaginatedAsync(
            [FromBody] PaginationRequestModel pagingInfo)
        {
            var result = await _adminUserService.GetPaginatedAsync(pagingInfo.CurrentPage, pagingInfo.PageSize, pagingInfo.Active);

            return(_mapper.Map <PaginatedAdminUserResponseModel>(result));
        }
Пример #3
0
        public async Task <IActionResult> GetUsers([FromQuery] PaginationRequestModel model)
        {
            var userQuery = _userManager.Users;

            if (model.Sort.HasValue && !string.IsNullOrWhiteSpace(model.Column))
            {
                userQuery = SortUsers(userQuery, model.Column, ascending: model.Sort.Value);
            }

            var items = await model.GetPageAsync(userQuery);

            return(Ok(new
            {
                model.TotalItemCount,
                Items = items.Select(user => new
                {
                    user.Id,
                    user.FirstName,
                    user.LastName,
                    user.Email,
                    user.PhoneNumber,
                    user.AgeRange,
                    user.FavouriteColor,
                    user.FavouriteWorkingDay,
                    user.TwoFactorEnabled,
                })
            }));
        }
Пример #4
0
        public PaginationResponseModel <UserTableRowResponseModel> GetAll(PaginationRequestModel <UserTableColumn> model, bool getAdmins = false)
        {
            if (!_isUserSuperAdmin && !_isUserAdmin)
            {
                throw new MethodAccessException("");
            }

            List <UserTableRowResponseModel> response = new List <UserTableRowResponseModel>();

            var search = !string.IsNullOrEmpty(model.Search) && model.Search.Length > 1;

            //!x.UserRoles.Any(w => (_userIsSuperAdmin && w.Role.Name != Role.Admin) && w.Role.Name != Role.SuperAdmin)

            var users = _unitOfWork.Repository <ApplicationUser>().Get(x => !x.IsDeleted &&
                                                                       !x.UserRoles.Any(w => w.Role.Name == Role.SuperAdmin) &&
                                                                       (!search || (x.Email.Contains(model.Search) || x.Profile.FirstName.Contains(model.Search) || x.Profile.LastName.Contains(model.Search))) &&
                                                                       (getAdmins ? x.UserRoles.Any(w => w.Role.Name == Role.Admin) : x.UserRoles.Any(w => w.Role.Name == Role.User)) &&
                                                                       (_isUserSuperAdmin || !x.UserRoles.Any(w => (w.Role.Name == Role.Admin))))
                        .TagWith(nameof(GetAll) + "_GetUsers")
                        .Include(w => w.UserRoles)
                        .ThenInclude(w => w.Role)
                        .Select(x => new
            {
                Email        = x.Email,
                FirstName    = x.Profile.FirstName,
                LastName     = x.Profile.LastName,
                IsBlocked    = !x.IsActive,
                RegisteredAt = x.RegistratedAt,
                Id           = x.Id
            });


            if (search)
            {
                users = users.Where(x => x.Email.Contains(model.Search) || x.FirstName.Contains(model.Search) || x.LastName.Contains(model.Search));
            }

            int count = users.Count();

            if (model.Order != null)
            {
                users = users.OrderBy(model.Order.Key.ToString(), model.Order.Direction == Models.Enums.SortingDirection.Asc);
            }

            users = users.Skip(model.Offset).Take(model.Limit);

            response = users.Select(x => new UserTableRowResponseModel
            {
                Email        = x.Email,
                FirstName    = x.FirstName,
                LastName     = x.LastName,
                IsBlocked    = x.IsBlocked,
                RegisteredAt = x.RegisteredAt.ToISO(),
                Id           = x.Id
            }).ToList();

            return(new PaginationResponseModel <UserTableRowResponseModel>(response, count));
        }
        public async Task <PaginatedNotificationMessagesResponse> GetCustomerNotificationMessagesAsync(
            [FromQuery] PaginationRequestModel request)
        {
            var customerId = _requestContext.UserId;

            var result = await _notificationMessagesService.GetAsync(customerId, request.CurrentPage, request.PageSize);

            return(_mapper.Map <PaginatedNotificationMessagesResponse>(result));
        }
        public async Task <EarnRulesListResponseModel> GetEarnRulesAsync(
            [FromQuery] Models.EarnRules.CampaignStatus[] statuses,
            [FromQuery] PaginationRequestModel pagination)
        {
            var earnRules = await _campaignClient.Mobile.GetEarnRulesAsync(Localization.En,
                                                                           _mapper.Map <MAVN.Service.Campaign.Client.Models.Enums.CampaignStatus[]>(statuses),
                                                                           _mapper.Map <BasePaginationRequestModel>(pagination));

            return(_mapper.Map <EarnRulesListResponseModel>(earnRules));
        }
Пример #7
0
        public async Task <IHttpActionResult> GetAll(PaginationRequestModel model)
        {
            var mappedModel = Mapper.Map <PaginationRequestDto>(model);
            var result      = await storyManager.GetAll(mappedModel);

            if (result == null)
            {
                return(InternalServerError());
            }

            return(Ok(Mapper.Map <BaseStoryModel>(result)));
        }
        private async Task <List <UserTableRowResponseModel> > GetUsers(OrderingRequestModel <UserTableColumn, SortingDirection> order)
        {
            var usersRequestModel = new PaginationRequestModel <UserTableColumn>()
            {
                Search = null,
                Order  = order,
                Limit  = int.MaxValue,
                Offset = 0
            };

            return(_userService.GetAll(usersRequestModel).Data);
        }
        public async Task <PaginatedOperationsHistoryResponseModel> GetCustomerOperationsHistoryAsync([FromQuery] PaginationRequestModel request)
        {
            var result = await _operationsHistoryService.GetAsync(
                _requestContext.UserId,
                request.CurrentPage,
                request.PageSize);

            return(_mapper.Map <PaginatedOperationsHistoryResponseModel>(result));
        }
Пример #10
0
        public async Task <VoucherListModel> GetVouchersAsync([FromQuery] PaginationRequestModel request)
        {
            var customerId = Guid.Parse(_requestContext.UserId);

            var vouchers = await _vouchersClient.Vouchers.GetByCustomerIdAsync(customerId);

            vouchers = vouchers
                       .Skip((request.CurrentPage - 1) * request.PageSize)
                       .Take(request.PageSize)
                       .ToList();

            var spendRuleIdentifiers = vouchers
                                       .Select(o => o.SpendRuleId)
                                       .Distinct()
                                       .ToList();

            var localizedSpendRules = new List <BurnRuleLocalizedResponse>();

            foreach (var group in spendRuleIdentifiers.Batch(5))
            {
                var tasks = group
                            .Select(o => _campaignClient.Mobile.GetSpendRuleAsync(o, Localization.En, true))
                            .ToList();

                await tasks.WhenAll();

                var responses = tasks
                                .Where(o => o.Result != null)
                                .Select(o => o.Result);

                localizedSpendRules.AddRange(responses);
            }

            var spendRulePartnerMap = localizedSpendRules
                                      .Where(o => o.PartnerIds?.Length > 0)
                                      .ToDictionary(o => o.Id, o => o.PartnerIds.First());

            var partnersIdentifiers = spendRulePartnerMap.Values
                                      .Distinct()
                                      .ToArray();

            var partners = await _partnerManagementClient.Partners.GetByIdsAsync(partnersIdentifiers);

            var model = new List <VoucherListDetailsModel>();

            foreach (var voucher in vouchers)
            {
                var spendRule = localizedSpendRules.First(o => o.Id == voucher.SpendRuleId);

                PartnerListDetailsModel partner = null;

                if (spendRulePartnerMap.TryGetValue(spendRule.Id, out var partnerId))
                {
                    partner = partners.First(o => o.Id == partnerId);
                }

                model.Add(new VoucherListDetailsModel
                {
                    Code              = voucher.Code,
                    SpendRuleName     = spendRule.Title,
                    PartnerName       = partner?.Name,
                    PriceToken        = voucher.AmountInTokens.ToDisplayString(),
                    PriceBaseCurrency = voucher.AmountInBaseCurrency,
                    PurchaseDate      = voucher.PurchaseDate
                });
            }

            return(new VoucherListModel {
                Vouchers = model, TotalCount = vouchers.Count
            });
        }