Ejemplo n.º 1
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 inventoryIds = ids.ToEnumerableGuidIds();

            if (inventoryIds != null)
            {
                var serviceModel = new GetInventoriesByIdsServiceModel
                {
                    Ids          = inventoryIds,
                    PageIndex    = pageIndex,
                    ItemsPerPage = itemsPerPage,
                    OrderBy      = orderBy,
                    Language     = CultureInfo.CurrentCulture.Name
                };

                var validator        = new GetInventoriesByIdsModelValidator();
                var validationResult = await validator.ValidateAsync(serviceModel);

                if (validationResult.IsValid)
                {
                    var inventories = await this.inventoriesService.GetByIdsAsync(serviceModel);

                    if (inventories != null)
                    {
                        var response = new PagedResults <IEnumerable <InventoryResponseModel> >(inventories.Total, inventories.PageSize)
                        {
                            Data = inventories.Data.OrEmptyIfNull().Select(x => new InventoryResponseModel
                            {
                                Id                = x.Id,
                                ProductId         = x.ProductId,
                                ProductName       = x.ProductName,
                                ProductSku        = x.ProductSku,
                                WarehouseId       = x.WarehouseId,
                                WarehouseName     = x.WarehouseName,
                                AvailableQuantity = x.AvailableQuantity,
                                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 GetInventoriesServiceModel
                {
                    Language       = CultureInfo.CurrentCulture.Name,
                    SearchTerm     = searchTerm,
                    PageIndex      = pageIndex,
                    ItemsPerPage   = itemsPerPage,
                    OrderBy        = orderBy,
                    OrganisationId = GuidHelper.ParseNullable(sellerClaim?.Value)
                };

                var inventories = await this.inventoriesService.GetAsync(serviceModel);

                if (inventories != null)
                {
                    var response = new PagedResults <IEnumerable <InventoryResponseModel> >(inventories.Total, inventories.PageSize)
                    {
                        Data = inventories.Data.OrEmptyIfNull().Select(x => new InventoryResponseModel
                        {
                            Id                = x.Id,
                            WarehouseId       = x.WarehouseId,
                            WarehouseName     = x.WarehouseName,
                            ProductId         = x.ProductId,
                            ProductName       = x.ProductName,
                            ProductSku        = x.ProductSku,
                            Quantity          = x.Quantity,
                            AvailableQuantity = x.AvailableQuantity,
                            LastModifiedDate  = x.LastModifiedDate,
                            CreatedDate       = x.CreatedDate
                        })
                    };

                    return(this.StatusCode((int)HttpStatusCode.OK, response));
                }
                throw new CustomException("", (int)HttpStatusCode.UnprocessableEntity);
            }
        }
Ejemplo n.º 2
0
        public async Task <PagedResults <IEnumerable <InventoryServiceModel> > > GetByIdsAsync(GetInventoriesByIdsServiceModel model)
        {
            var inventoryProducts = from c in this.context.Inventory
                                    join warehouse in this.context.Warehouses on c.WarehouseId equals warehouse.Id
                                    where model.Ids.Contains(c.Id) && c.SellerId == model.OrganisationId.Value && c.IsActive
                                    select new InventoryServiceModel
            {
                Id               = c.Id,
                ProductId        = c.ProductId,
                ProductName      = c.ProductName,
                ProductSku       = c.ProductSku,
                WarehouseId      = c.WarehouseId,
                WarehouseName    = warehouse.Name,
                LastModifiedDate = c.LastModifiedDate,
                CreatedDate      = c.CreatedDate
            };

            return(inventoryProducts.PagedIndex(new Pagination(inventoryProducts.Count(), model.ItemsPerPage), model.PageIndex));
        }