Ejemplo n.º 1
0
        public async Task <IActionResult> GetAvailableProductsInventories(
            int pageIndex,
            int itemsPerPage)
        {
            var sellerClaim = this.User.Claims.FirstOrDefault(x => x.Type == AccountConstants.Claims.OrganisationIdClaim);

            var serviceModel = new GetInventoriesServiceModel
            {
                Language       = CultureInfo.CurrentCulture.Name,
                PageIndex      = pageIndex,
                ItemsPerPage   = itemsPerPage,
                OrganisationId = GuidHelper.ParseNullable(sellerClaim?.Value)
            };

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

            if (inventories != null)
            {
                var response = new PagedResults <IEnumerable <InventorySumResponseModel> >(inventories.Total, inventories.PageSize)
                {
                    Data = inventories.Data.OrEmptyIfNull().Select(inventoryProduct => new InventorySumResponseModel
                    {
                        ProductId         = inventoryProduct.ProductId,
                        AvailableQuantity = inventoryProduct.AvailableQuantity,
                        Quantity          = inventoryProduct.Quantity,
                        ProductName       = inventoryProduct.ProductName,
                        ProductSku        = inventoryProduct.ProductSku,
                        RestockableInDays = inventoryProduct.RestockableInDays,
                        ExpectedDelivery  = inventoryProduct.ExpectedDelivery
                    })
                };

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

            throw new CustomException("", (int)HttpStatusCode.UnprocessableEntity);
        }
Ejemplo n.º 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 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.º 3
0
        public async Task <PagedResults <IEnumerable <InventoryServiceModel> > > GetAsync(GetInventoriesServiceModel model)
        {
            var inventories = from c in this.context.Inventory
                              join warehouse in this.context.Warehouses on c.WarehouseId equals warehouse.Id
                              where 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,
                Quantity          = c.Quantity,
                AvailableQuantity = c.AvailableQuantity.Value,
                RestockableInDays = c.RestockableInDays,
                ExpectedDelivery  = c.ExpectedDelivery,
                LastModifiedDate  = c.LastModifiedDate,
                CreatedDate       = c.CreatedDate
            };

            if (!string.IsNullOrWhiteSpace(model.SearchTerm))
            {
                inventories = inventories.Where(x => x.ProductName.StartsWith(model.SearchTerm) || x.WarehouseName.StartsWith(model.SearchTerm) || x.ProductSku.StartsWith(model.SearchTerm));
            }

            inventories = inventories.ApplySort(model.OrderBy);

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