public async Task <BasketServiceModel> GetBasketById(GetBasketByIdServiceModel serviceModel) { var basket = await this.basketRepository.GetBasketAsync(serviceModel.Id.Value); if (basket == null) { var emptyBasket = new BasketServiceModel { Id = serviceModel.Id.Value, Items = Array.Empty <BasketItemServiceModel>() }; return(emptyBasket); } var response = new BasketServiceModel { Id = basket.Id.Value, Items = basket.Items.OrEmptyIfNull().Select(x => new BasketItemServiceModel { ProductId = x.ProductId, ProductSku = x.ProductSku, ProductName = x.ProductName, PictureUrl = x.PictureUrl, Quantity = x.Quantity, ExternalReference = x.ExternalReference, DeliveryFrom = x.DeliveryFrom, DeliveryTo = x.DeliveryTo, MoreInfo = x.MoreInfo }) }; return(response); }
public async Task <IActionResult> Get(Guid id) { var sellerClaim = this.User.Claims.FirstOrDefault(x => x.Type == AccountConstants.Claims.OrganisationIdClaim); var serviceModel = new GetBasketByIdServiceModel { Id = id, Language = CultureInfo.CurrentCulture.Name, Username = this.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Email)?.Value, OrganisationId = GuidHelper.ParseNullable(sellerClaim?.Value) }; var validator = new GetBasketByIdModelValidator(); var validationResult = await validator.ValidateAsync(serviceModel); if (validationResult.IsValid) { var basket = await this.basketService.GetBasketById(serviceModel); if (basket != null) { var response = new BasketResponseModel { Id = basket.Id, Items = basket.Items.OrEmptyIfNull().Select(x => new BasketItemResponseModel { ProductId = x.ProductId, ProductSku = x.ProductSku, ProductName = x.ProductName, PictureUrl = x.PictureUrl, Quantity = x.Quantity, ExternalReference = x.ExternalReference, DeliveryFrom = x.DeliveryFrom, DeliveryTo = x.DeliveryTo, MoreInfo = x.MoreInfo }) }; return(this.StatusCode((int)HttpStatusCode.OK, response)); } } throw new CustomException(string.Join(ErrorConstants.ErrorMessagesSeparator, validationResult.Errors.Select(x => x.ErrorMessage)), (int)HttpStatusCode.UnprocessableEntity); }