public async Task <IHttpActionResult> Post(FuelConsumptionDetailSearchParams searchParams) { var fuelConsumptionDetailDatatable = await Task.Run(() => _fuelConsumptionDetailService.GetFuelConsumptionDetail(searchParams)); if (fuelConsumptionDetailDatatable == null) { return(NotFound()); } return(Ok(fuelConsumptionDetailDatatable)); }
public FuelConsumptionDetailDatatable GetFuelConsumptionDetail(FuelConsumptionDetailSearchParams searchParams) { var searchInfo = searchParams.SearchInfo; var newTruckCList = "," + searchInfo.TruckCList + ","; var newDriverCList = "," + searchInfo.DriverCList + ","; var dispatches = from a in _dispatchRepository.GetAllQueryable() join b in _orderHRepository.GetAllQueryable() on new { a.OrderD, a.OrderNo } equals new { b.OrderD, b.OrderNo } into ab from b in ab.DefaultIfEmpty() where ((searchInfo.TransportDFrom == null || a.TransportD >= searchInfo.TransportDFrom) && (searchInfo.TransportDTo == null || a.TransportD <= searchInfo.TransportDTo)) & (string.IsNullOrEmpty(searchInfo.TruckCList) || newTruckCList.Contains("," + a.TruckC + ",")) & (string.IsNullOrEmpty(searchInfo.DriverCList) || newDriverCList.Contains("," + a.DriverC + ",")) & (string.IsNullOrEmpty(searchInfo.DepC) || searchInfo.DepC == "0" || b.OrderDepC == searchInfo.DepC) & ((searchInfo.DispatchStatus && a.DispatchStatus == Constants.DISPATCH) || (searchInfo.TransportedStatus && (a.DispatchStatus == Constants.TRANSPORTED || a.DispatchStatus == Constants.CONFIRMED))) & (a.DispatchI == "0") select new { a.OrderD, a.OrderNo, a.DispatchNo, a.DetailNo, a.TransportD, a.DriverC, a.TruckC, a.ContainerStatus, a.Location1C, a.Location1N, a.Location2C, a.Location2N, a.Location3C, a.Location3N }; var dispatchOrdered = dispatches.OrderBy("TransportD desc"); var dispatchPaged = dispatchOrdered.Skip((searchParams.page - 1) * searchParams.itemsPerPage).Take(searchParams.itemsPerPage).ToList(); var fuelConsumptionDetail = from a in dispatchPaged join b in _orderDRepository.GetAllQueryable() on new { a.OrderD, a.OrderNo, a.DetailNo } equals new { b.OrderD, b.OrderNo, b.DetailNo } into ab from b in ab.DefaultIfEmpty() join c in _driverRepository.GetAllQueryable() on a.DriverC equals c.DriverC into abc from c in abc.DefaultIfEmpty() join d in _containerTypeRepository.GetAllQueryable() on b.ContainerTypeC equals d.ContainerTypeC into abcd from d in abcd.DefaultIfEmpty() join e in _truckRepository.GetAllQueryable() on a.TruckC equals e.TruckC into abcde from e in abcde.DefaultIfEmpty() join f in _fuelConsumptionDetailRepository.GetAllQueryable() on new { a.OrderD, a.OrderNo, a.DetailNo, a.DispatchNo } equals new { f.OrderD, f.OrderNo, f.DetailNo, f.DispatchNo } into abcdef from f in abcdef.DefaultIfEmpty() select new FuelConsumptionDetailViewModel() { OrderD = a.OrderD, OrderNo = a.OrderNo, DispatchNo = a.DispatchNo, DetailNo = a.DetailNo, TransportD = a.TransportD, ContainerStatus = a.ContainerStatus, DriverN = c != null ? c.LastN + " " + c.FirstN : "", TruckC = a.TruckC, RegisteredNo = e != null ? e.RegisteredNo : "", ContainerSizeI = b.ContainerSizeI, ContainerTypeN = d != null ? d.ContainerTypeN : "", GrossWeight = b != null ? b.GrossWeight : 0, Location1C = a.Location1C, Location1N = a.Location1N, Location2C = a.Location2C, Location2N = a.Location2N, Location3C = a.Location3C, Location3N = a.Location3N, ApproximateDistance = f != null ? f.Distance : 0, IsEmpty = f != null ? f.IsEmpty : "", IsHeavy = f != null ? f.IsHeavy : "", IsSingle = f != null ? f.IsSingle : "", FuelConsumption = f != null ? f.FuelConsumption : 0, UnitPrice = f != null ? f.UnitPrice : 0, Amount = f != null ? f.Amount : 0, }; return(new FuelConsumptionDetailDatatable() { Data = fuelConsumptionDetail.ToList(), Total = dispatches.Count() }); }