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)); }
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); } }