public async Task <int> Count([FromBody] ProductMaster_ProductFilterDTO ProductMaster_ProductFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new MessageException(ModelState);
            }

            ProductFilter ProductFilter = ConvertFilterDTOToFilterEntity(ProductMaster_ProductFilterDTO);

            return(await ProductService.Count(ProductFilter));
        }
        public async Task <List <ProductMaster_ProductDTO> > List([FromBody] ProductMaster_ProductFilterDTO ProductMaster_ProductFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new MessageException(ModelState);
            }

            ProductFilter ProductFilter = ConvertFilterDTOToFilterEntity(ProductMaster_ProductFilterDTO);

            List <Product> Products = await ProductService.List(ProductFilter);

            return(Products.Select(c => new ProductMaster_ProductDTO(c)).ToList());
        }
        public ProductFilter ConvertFilterDTOToFilterEntity(ProductMaster_ProductFilterDTO ProductMaster_ProductFilterDTO)
        {
            ProductFilter ProductFilter = new ProductFilter();

            ProductFilter.Selects = ProductSelect.ALL;

            ProductFilter.Id = new LongFilter {
                Equal = ProductMaster_ProductFilterDTO.Id
            };
            ProductFilter.Code = new StringFilter {
                StartsWith = ProductMaster_ProductFilterDTO.Code
            };
            ProductFilter.Name = new StringFilter {
                StartsWith = ProductMaster_ProductFilterDTO.Name
            };
            ProductFilter.Description = new StringFilter {
                StartsWith = ProductMaster_ProductFilterDTO.Description
            };
            ProductFilter.TypeId = new LongFilter {
                Equal = ProductMaster_ProductFilterDTO.TypeId
            };
            ProductFilter.StatusId = new LongFilter {
                Equal = ProductMaster_ProductFilterDTO.StatusId
            };
            ProductFilter.MerchantId = new LongFilter {
                Equal = ProductMaster_ProductFilterDTO.MerchantId
            };
            ProductFilter.CategoryId = new LongFilter {
                Equal = ProductMaster_ProductFilterDTO.CategoryId
            };
            ProductFilter.BrandId = new LongFilter {
                Equal = ProductMaster_ProductFilterDTO.BrandId
            };
            ProductFilter.WarrantyPolicy = new StringFilter {
                StartsWith = ProductMaster_ProductFilterDTO.WarrantyPolicy
            };
            ProductFilter.ReturnPolicy = new StringFilter {
                StartsWith = ProductMaster_ProductFilterDTO.ReturnPolicy
            };
            ProductFilter.ExpiredDate = new StringFilter {
                StartsWith = ProductMaster_ProductFilterDTO.ExpiredDate
            };
            ProductFilter.ConditionOfUse = new StringFilter {
                StartsWith = ProductMaster_ProductFilterDTO.ConditionOfUse
            };
            ProductFilter.MaximumPurchaseQuantity = new LongFilter {
                Equal = ProductMaster_ProductFilterDTO.MaximumPurchaseQuantity
            };
            return(ProductFilter);
        }