示例#1
0
        public async Task <PagedResults <IEnumerable <ClientServiceModel> > > GetAsync(GetClientsServiceModel model)
        {
            var clients = from c in this.context.Clients
                          where c.SellerId == model.OrganisationId.Value && c.IsActive
                          select new ClientServiceModel
            {
                Id    = c.Id,
                Name  = c.Name,
                Email = c.Email,
                CommunicationLanguage = c.Language,
                LastModifiedDate      = c.LastModifiedDate,
                CreatedDate           = c.CreatedDate
            };

            if (!string.IsNullOrWhiteSpace(model.SearchTerm))
            {
                clients = clients.Where(x => x.Name.StartsWith(model.SearchTerm));
            }

            clients = clients.ApplySort(model.OrderBy);

            return(clients.PagedIndex(new Pagination(clients.Count(), model.ItemsPerPage), model.PageIndex));
        }
示例#2
0
        public async Task <IActionResult> Get(string ids, string searchTerm, int pageIndex, int itemsPerPage, string orderBy)
        {
            var sellerClaim = this.User.Claims.FirstOrDefault(x => x.Type == AccountConstants.Claims.OrganisationIdClaim);

            var clientIds = ids.ToEnumerableGuidIds();

            if (clientIds != null)
            {
                var serviceModel = new GetClientsByIdsServiceModel
                {
                    Ids            = clientIds,
                    PageIndex      = pageIndex,
                    ItemsPerPage   = itemsPerPage,
                    OrderBy        = orderBy,
                    Language       = CultureInfo.CurrentCulture.Name,
                    Username       = this.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Email)?.Value,
                    OrganisationId = GuidHelper.ParseNullable(sellerClaim?.Value)
                };

                var validator = new GeClientsByIdsModelValidator();

                var validationResult = await validator.ValidateAsync(serviceModel);

                if (validationResult.IsValid)
                {
                    var clients = await this.clientsService.GetByIdsAsync(serviceModel);

                    if (clients != null)
                    {
                        var response = new PagedResults <IEnumerable <ClientResponseModel> >(clients.Total, clients.PageSize)
                        {
                            Data = clients.Data.OrEmptyIfNull().Select(x => new ClientResponseModel
                            {
                                Id    = x.Id,
                                Name  = x.Name,
                                Email = x.Email,
                                CommunicationLanguage = x.CommunicationLanguage,
                                LastModifiedDate      = x.LastModifiedDate,
                                CreatedDate           = x.CreatedDate
                            })
                        };

                        return(this.StatusCode((int)HttpStatusCode.OK, response));
                    }
                }

                throw new CustomException(string.Join(ErrorConstants.ErrorMessagesSeparator, validationResult.Errors.Select(x => x.ErrorMessage)), (int)HttpStatusCode.UnprocessableEntity);
            }
            else
            {
                var serviceModel = new GetClientsServiceModel
                {
                    Language       = CultureInfo.CurrentCulture.Name,
                    SearchTerm     = searchTerm,
                    PageIndex      = pageIndex,
                    ItemsPerPage   = itemsPerPage,
                    OrderBy        = orderBy,
                    Username       = this.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Email)?.Value,
                    OrganisationId = GuidHelper.ParseNullable(sellerClaim?.Value)
                };

                var validator = new GetClientsModelValidator();

                var validationResult = await validator.ValidateAsync(serviceModel);

                if (validationResult.IsValid)
                {
                    var clients = await this.clientsService.GetAsync(serviceModel);

                    if (clients != null)
                    {
                        var response = new PagedResults <IEnumerable <ClientResponseModel> >(clients.Total, clients.PageSize)
                        {
                            Data = clients.Data.OrEmptyIfNull().Select(x => new ClientResponseModel
                            {
                                Id    = x.Id,
                                Name  = x.Name,
                                Email = x.Email,
                                CommunicationLanguage = x.CommunicationLanguage,
                                LastModifiedDate      = x.LastModifiedDate,
                                CreatedDate           = x.CreatedDate
                            })
                        };

                        return(this.StatusCode((int)HttpStatusCode.OK, response));
                    }
                }

                throw new CustomException(string.Join(ErrorConstants.ErrorMessagesSeparator, validationResult.Errors.Select(x => x.ErrorMessage)), (int)HttpStatusCode.UnprocessableEntity);
            }
        }