public async Task <IActionResult> GetFilterList(int SourceStateId, int DestinationStateId, string LoadDate, string ExpireDate, int Weight)
        {
            try
            {
                FilterFreightDTO filter = new FilterFreightDTO();
                filter.SourceCityId      = SourceStateId;
                filter.DestinationCityId = DestinationStateId;
                filter.LoadDate          = LoadDate;
                filter.ExpireDate        = ExpireDate;
                filter.Weight            = Weight;
                var data = await _service.GetFreightListAsync(filter);

                return(Ok(data));
            }
            catch (Exception e)
            {
                ModelState.AddModelError("PopUpError", e.Message);
                return(new ValidationFailedResult(ModelState));
            }
        }
        public async Task <List <FreightDTO> > GetFreightListAsync(FilterFreightDTO filter)
        {
            try
            {
                var query = _repFreight.GetAllAsQueryable();
                if (filter.DestinationCityId > 0)
                {
                    int IntegerDestination = (filter.DestinationCityId) / 1000000;
                    query = query.Where(c => (c.DestinationCityId) / 1000000 == IntegerDestination);
                }

                if (filter.SourceCityId > 0)
                {
                    int IntegerSource = (filter.SourceCityId) / 1000000;
                    query = query.Where(c => (c.SourceCityId) / 1000000 == IntegerSource);
                }

                if (filter.Weight >= 3)
                {
                    query = query.Where(c => c.Weight >= 3);
                }
                else if (filter.Weight < 3 && filter.Weight > 1)
                {
                    query = query.Where(c => c.Weight < 3);
                }

                if (filter.LoadDate != null)
                {
                    query = query.Where(c => string.Compare(c.LoadDate, filter.LoadDate) >= 0);
                }

                if (filter.ExpireDate != null)
                {
                    query = query.Where(c => string.Compare(c.ExpireDate, filter.ExpireDate) <= 0);
                }

                List <Freight> data = await query.ToListAsync();

                List <FreightDTO> datas = new List <FreightDTO>();

                foreach (var item in data)
                {
                    FreightDTO freightDTO = new FreightDTO();
                    freightDTO.ID            = item.ID;
                    freightDTO.BaseTruckRent = item.BaseTruckRent;
                    freightDTO.SourceCityId  = item.SourceCityId;

                    City city = _repCity.GetAllAsQueryable().Where(c => c.Code == item.SourceCityId).FirstOrDefault();

                    freightDTO.SourceCityName    = city.CityName;
                    freightDTO.DestinationCityId = item.DestinationCityId;

                    City cityDes = _repCity.GetAllAsQueryable().Where(c => c.Code == item.DestinationCityId).FirstOrDefault();

                    freightDTO.DestinationCityName = cityDes.CityName;
                    freightDTO.CreateDate          = item.CreateDate;
                    freightDTO.LoadDate            = item.LoadDate;
                    freightDTO.LoadTime            = item.LoadTime;
                    freightDTO.ExpireDate          = item.ExpireDate;
                    freightDTO.ExpireTime          = item.ExpireTime;
                    freightDTO.PackageType         = item.PackageType;
                    freightDTO.GoodName            = item.GoodName;

                    PackageType packageType = _repPackageType.GetAllAsQueryable().Where(c => c.ID == item.PackageType).FirstOrDefault();

                    freightDTO.PackageName = packageType.Name;
                    freightDTO.TruckType   = item.TruckType;

                    TruckType truckType = _repTruckType.GetAllAsQueryable().Where(c => c.ID == item.TruckType).FirstOrDefault();

                    freightDTO.TruckName  = truckType.Name;
                    freightDTO.LoaderType = item.LoaderType;

                    Loader loader = _repLoader.GetAllAsQueryable().Where(c => c.ID == item.LoaderType).FirstOrDefault();

                    freightDTO.loaderName    = loader.Name;
                    freightDTO.Weight        = item.Weight;
                    freightDTO.Description   = item.Description;
                    freightDTO.Tell          = item.Tell;
                    freightDTO.BaseTruckRent = item.BaseTruckRent;
                    freightDTO.BaseTruckRent = item.BaseTruckRent;
                    datas.Add(freightDTO);
                }

                return(datas);
            }
            catch (Exception e)
            {
                throw new ServiceExeption(e.Message, e);
            }
        }