public async Task <IActionResult> Get([FromQuery] IndexQueryParam queryParam)
        {
            try
            {
                var data = await _service.GetIndex(queryParam);

                return(Ok(data));
            }
            catch (Exception ex)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, ex.Message));
            }
        }
Esempio n. 2
0
        public async Task <ProductSKUIndex> GetIndex(IndexQueryParam queryParam)
        {
            if (string.IsNullOrWhiteSpace(queryParam.order))
            {
                queryParam.order = "{}";
            }

            var searchAttributes = new List <string>()
            {
                "Name", "Code", "UOMUnit", "CategoryName"
            };
            var order = JsonConvert.DeserializeObject <Dictionary <string, string> >(queryParam.order);

            var productQuery  = _productSKURepository.ReadAll();
            var uomQuery      = _uomRepository.ReadAll();
            var categoryQuery = _categoryRepository.ReadAll();

            var query = from product in productQuery
                        join uom in uomQuery on product.UOMId equals uom.Id into uomProducts
                        from uomProduct in uomProducts.DefaultIfEmpty()

                        join category in categoryQuery on product.CategoryId equals category.Id into categoryProducts
                        from categoryProduct in categoryProducts.DefaultIfEmpty()

                        select new ProductSKUIndexInfo()
            {
                LastModifiedUtc = product.LastModifiedUtc,
                Name            = product.Name,
                Code            = product.Code,
                UOMUnit         = uomProduct.Unit,
                UOMId           = uomProduct.Id,
                CategoryName    = categoryProduct.Name,
                Id = product.Id
            };

            query = QueryHelper <ProductSKUIndexInfo> .Search(query, searchAttributes, queryParam.keyword, true);

            query = QueryHelper <ProductSKUIndexInfo> .Order(query, order);

            var total = await query.CountAsync();

            if (queryParam.page <= 0)
            {
                queryParam.page = 1;
            }

            var data = query.Skip(queryParam.size * (queryParam.page - 1)).Take(queryParam.size).ToList();

            return(new ProductSKUIndex(data, total, queryParam.page, queryParam.size));
        }
        public async Task <FabricSKUIndex> GetIndex(IndexQueryParam queryParam)
        {
            if (string.IsNullOrWhiteSpace(queryParam.order))
            {
                queryParam.order = "{}";
            }

            var searchAttributes = new List <string>()
            {
                "Code"
            };
            var order = JsonConvert.DeserializeObject <Dictionary <string, string> >(queryParam.order);

            var fabrics       = _dbContext.FabricProductSKUs;
            var wovenTypes    = _dbContext.IPWovenType;
            var constructions = _dbContext.IPMaterialConstructions;
            var widths        = _dbContext.IPWidthType;
            var warpTypes     = _dbContext.IPWarpTypes;
            var weftTypes     = _dbContext.IPWeftTypes;
            var processTypes  = _dbContext.IPProcessType;
            var yarnTypes     = _dbContext.IPYarnType;
            var grades        = _dbContext.IPGrades;
            var uoms          = _dbContext.IPUnitOfMeasurements;

            var query = from product in fabrics

                        join wovenType in wovenTypes on product.WovenTypeId equals wovenType.Id into wovenTypeProducts
                        from wovenTypeProduct in wovenTypeProducts.DefaultIfEmpty()

                        join construction in constructions on product.ConstructionId equals construction.Id into constructionProducts
                        from constructionProduct in constructionProducts.DefaultIfEmpty()

                        join width in widths on product.WidthId equals width.Id into widthProducts
                        from widthProduct in widthProducts.DefaultIfEmpty()

                        join warpType in warpTypes on product.WarpId equals warpType.Id into warpTypeProducts
                        from warpTypeProduct in warpTypeProducts.DefaultIfEmpty()

                        join weftType in weftTypes on product.WeftId equals weftType.Id into weftTypeProducts
                        from weftTypeProduct in weftTypeProducts.DefaultIfEmpty()

                        join processType in processTypes on product.ProcessTypeId equals processType.Id into processTypeProducts
                        from processTypeProduct in processTypeProducts.DefaultIfEmpty()

                        join yarnType in yarnTypes on product.YarnTypeId equals yarnType.Id into yarnTypeProducts
                        from yarnTypeProduct in yarnTypeProducts.DefaultIfEmpty()

                        join grade in grades on product.GradeId equals grade.Id into gradeProducts
                        from gradeProduct in gradeProducts.DefaultIfEmpty()

                        join uom in uoms on product.UOMId equals uom.Id into uomProducts
                        from uomProduct in uomProducts.DefaultIfEmpty()

                        select new FabricSKUIndexInfo()
            {
                Id = product.Id,
                LastModifiedUtc = product.LastModifiedUtc,
                Code            = product.Code,
                WovenType       = wovenTypeProduct.WovenType,
                Construction    = constructionProduct.Type,
                Width           = widthProduct.WidthType,
                Warp            = warpTypeProduct.Type,
                Weft            = weftTypeProduct.Type,
                ProcessType     = processTypeProduct.ProcessType,
                YarnType        = yarnTypeProduct.YarnType,
                Grade           = gradeProduct.Type,
                UOM             = uomProduct.Unit
            };

            query = QueryHelper <FabricSKUIndexInfo> .Search(query, searchAttributes, queryParam.keyword, true);

            query = QueryHelper <FabricSKUIndexInfo> .Order(query, order);

            var total = await query.CountAsync();

            if (queryParam.page <= 0)
            {
                queryParam.page = 1;
            }

            var data = query.Skip(queryParam.size * (queryParam.page - 1)).Take(queryParam.size).ToList();

            return(new FabricSKUIndex(data, total, queryParam.page, queryParam.size));
        }
        public async Task GetIndex_Return_success()
        {
            var productPackingRepository    = new Mock <IRepository <ProductPackingModel> >();
            var productSKURepository        = new Mock <IRepository <ProductSKUModel> >();
            var unitOfMeasurementRepository = new Mock <IRepository <UnitOfMeasurementModel> >();
            var categoryRepository          = new Mock <IRepository <CategoryModel> >();

            var productPackingModel = new ProductPackingModel(1, 1, 1, "Code", "Name", "description")
            {
                Id     = 1,
                Active = true,
            };

            productPackingRepository.Setup(s => s.ReadAll())
            .Returns(new List <ProductPackingModel>()
            {
                productPackingModel
            }.AsQueryable().BuildMock().Object);

            var productSKUModel = new ProductSKUModel("Code", "Name", 1, 1, "Description")
            {
                Id     = 1,
                Active = true,
            };

            productSKURepository.Setup(s => s.ReadAll())
            .Returns(new List <ProductSKUModel>()
            {
                productSKUModel
            }.AsQueryable().BuildMock().Object);;


            var unitOfMeasurementModel = new UnitOfMeasurementModel("Unit")
            {
                Id     = 1,
                Active = true
            };

            unitOfMeasurementRepository.Setup(s => s.ReadAll())
            .Returns(new List <UnitOfMeasurementModel>()
            {
                unitOfMeasurementModel
            }.AsQueryable().BuildMock().Object);


            var service = GetService(GetServiceProvider(
                                         productPackingRepository.Object,
                                         productSKURepository.Object,
                                         categoryRepository.Object,
                                         unitOfMeasurementRepository.Object
                                         ).Object);

            IndexQueryParam queryParam = new IndexQueryParam()
            {
                order   = "",
                page    = 1,
                size    = 1,
                keyword = "Name"
            };

            var result = await service.GetIndex(queryParam);

            Assert.NotNull(result);
        }