private ContractFilter ConvertContractFilterEntity(Customer_ContractFilterDTO Customer_ContractFilterDTO)
        {
            ContractFilter ContractFilter = new ContractFilter();

            ContractFilter.Selects   = ContractSelect.ALL;
            ContractFilter.Skip      = Customer_ContractFilterDTO.Skip;
            ContractFilter.Take      = Customer_ContractFilterDTO.Take;
            ContractFilter.OrderBy   = Customer_ContractFilterDTO.OrderBy;
            ContractFilter.OrderType = Customer_ContractFilterDTO.OrderType;

            ContractFilter.Id                        = Customer_ContractFilterDTO.Id;
            ContractFilter.Code                      = Customer_ContractFilterDTO.Code;
            ContractFilter.Name                      = Customer_ContractFilterDTO.Name;
            ContractFilter.CompanyId                 = Customer_ContractFilterDTO.CompanyId;
            ContractFilter.OpportunityId             = Customer_ContractFilterDTO.OpportunityId;
            ContractFilter.CustomerId                = Customer_ContractFilterDTO.CustomerId;
            ContractFilter.ContractTypeId            = Customer_ContractFilterDTO.ContractTypeId;
            ContractFilter.TotalValue                = Customer_ContractFilterDTO.TotalValue;
            ContractFilter.CurrencyId                = Customer_ContractFilterDTO.CurrencyId;
            ContractFilter.ValidityDate              = Customer_ContractFilterDTO.ValidityDate;
            ContractFilter.ExpirationDate            = Customer_ContractFilterDTO.ExpirationDate;
            ContractFilter.AppUserId                 = Customer_ContractFilterDTO.AppUserId;
            ContractFilter.DeliveryUnit              = Customer_ContractFilterDTO.DeliveryUnit;
            ContractFilter.ContractStatusId          = Customer_ContractFilterDTO.ContractStatusId;
            ContractFilter.PaymentStatusId           = Customer_ContractFilterDTO.PaymentStatusId;
            ContractFilter.InvoiceAddress            = Customer_ContractFilterDTO.InvoiceAddress;
            ContractFilter.InvoiceNationId           = Customer_ContractFilterDTO.InvoiceNationId;
            ContractFilter.InvoiceProvinceId         = Customer_ContractFilterDTO.InvoiceProvinceId;
            ContractFilter.InvoiceDistrictId         = Customer_ContractFilterDTO.InvoiceDistrictId;
            ContractFilter.InvoiceZipCode            = Customer_ContractFilterDTO.InvoiceZipCode;
            ContractFilter.ReceiveAddress            = Customer_ContractFilterDTO.ReceiveAddress;
            ContractFilter.ReceiveNationId           = Customer_ContractFilterDTO.ReceiveNationId;
            ContractFilter.ReceiveProvinceId         = Customer_ContractFilterDTO.ReceiveProvinceId;
            ContractFilter.ReceiveDistrictId         = Customer_ContractFilterDTO.ReceiveDistrictId;
            ContractFilter.ReceiveZipCode            = Customer_ContractFilterDTO.ReceiveZipCode;
            ContractFilter.SubTotal                  = Customer_ContractFilterDTO.SubTotal;
            ContractFilter.GeneralDiscountPercentage = Customer_ContractFilterDTO.GeneralDiscountPercentage;
            ContractFilter.GeneralDiscountAmount     = Customer_ContractFilterDTO.GeneralDiscountAmount;
            ContractFilter.TotalTaxAmountOther       = Customer_ContractFilterDTO.TotalTaxAmountOther;
            ContractFilter.TotalTaxAmount            = Customer_ContractFilterDTO.TotalTaxAmount;
            ContractFilter.Total                     = Customer_ContractFilterDTO.Total;
            ContractFilter.TermAndCondition          = Customer_ContractFilterDTO.TermAndCondition;
            ContractFilter.CreatorId                 = Customer_ContractFilterDTO.CreatorId;
            ContractFilter.OrganizationId            = Customer_ContractFilterDTO.OrganizationId;
            ContractFilter.CreatedAt                 = Customer_ContractFilterDTO.CreatedAt;
            ContractFilter.UpdatedAt                 = Customer_ContractFilterDTO.UpdatedAt;
            return(ContractFilter);
        }
        public async Task <ActionResult <int> > CountContract([FromBody] Customer_ContractFilterDTO Customer_ContractFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            ContractFilter ContractFilter = ConvertContractFilterEntity(Customer_ContractFilterDTO);

            ContractFilter = await ContractService.ToFilter(ContractFilter);

            int count = await ContractService.Count(ContractFilter);

            return(count);
        }
        public async Task <ActionResult <List <Customer_ContractDTO> > > ListContract([FromBody] Customer_ContractFilterDTO Customer_ContractFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            ContractFilter ContractFilter = ConvertContractFilterEntity(Customer_ContractFilterDTO);

            ContractFilter = await ContractService.ToFilter(ContractFilter);

            List <Contract> Contracts = await ContractService.List(ContractFilter);

            List <Customer_ContractDTO> Customer_ContractDTOs = Contracts
                                                                .Select(c => new Customer_ContractDTO(c)).ToList();

            return(Customer_ContractDTOs);
        }