Exemple #1
0
        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()
            });
        }