public IQueryable <ExternalPurchaseDeliveryOrderDurationReportViewModel> GetEPODODurationReportQuery(string unit, string duration, DateTime?dateFrom, DateTime?dateTo, int offset)
        {
            DateTime DateFrom = dateFrom == null ? new DateTime(1970, 1, 1) : (DateTime)dateFrom;
            DateTime DateTo   = dateTo == null ? DateTime.Now : (DateTime)dateTo;
            int      start    = 0;
            int      end      = 0;

            if (duration == "31-60 hari")
            {
                start = 31;
                end   = 60;
            }
            else if (duration == "61-90 hari")
            {
                start = 61;
                end   = 90;
            }
            else
            {
                start = 91;
                end   = 1000;
            }
            List <ExternalPurchaseDeliveryOrderDurationReportViewModel> listEPODUration = new List <ExternalPurchaseDeliveryOrderDurationReportViewModel>();
            var Query = (from a in dbContext.ExternalPurchaseOrders
                         join b in dbContext.ExternalPurchaseOrderItems on a.Id equals b.EPOId
                         join c in dbContext.ExternalPurchaseOrderDetails on b.Id equals c.EPOItemId
                         join d in dbContext.PurchaseRequests on b.PRId equals d.Id
                         join e in dbContext.InternalPurchaseOrders on b.POId equals e.Id
                         join f in dbContext.InternalPurchaseOrderItems on e.Id equals f.POId
                         join g in dbContext.DeliveryOrderItems on a.Id equals g.EPOId
                         join h in dbContext.DeliveryOrders on g.DOId equals h.Id
                         //Conditions
                         where a.IsDeleted == false
                         //&& b.Id == e.PRItemId
                         && b.IsDeleted == false &&
                         c.IsDeleted == false &&
                         d.IsDeleted == false &&
                         e.IsDeleted == false &&
                         f.IsDeleted == false &&
                         g.IsDeleted == false &&
                         h.IsDeleted == false &&
                         a.UnitId == (string.IsNullOrWhiteSpace(unit) ? a.UnitId : unit) &&
                         a.CreatedUtc.AddHours(offset).Date >= DateFrom.Date &&
                         a.CreatedUtc.AddHours(offset).Date <= DateTo.Date
                         select new ExternalPurchaseDeliveryOrderDurationReportViewModel
            {
                prNo = d.No,
                prDate = d.Date,
                prCreatedDate = d.CreatedUtc,
                unit = d.UnitName,
                category = d.CategoryName,
                division = d.DivisionName,
                budget = d.BudgetName,
                productCode = c.ProductCode,
                productName = c.ProductName,
                dealQuantity = c.DealQuantity,
                dealUomUnit = c.DealUomUnit,
                pricePerDealUnit = c.PricePerDealUnit,
                supplierCode = a.SupplierCode,
                supplierName = a.SupplierName,
                poDate = e.CreatedUtc,
                orderDate = a.OrderDate,
                ePOCreatedDate = a.CreatedUtc,
                deliveryDate = a.DeliveryDate,
                ePONo = a.EPONo,
                dODate = h.DODate,
                arrivalDate = h.ArrivalDate,
                dONo = h.DONo,
                staff = a.CreatedBy,
            }).Distinct();

            foreach (var item in Query)
            {
                var ePODate = new DateTimeOffset(item.ePOCreatedDate.Date, TimeSpan.Zero);
                var doDate  = new DateTimeOffset(item.dODate.Date, TimeSpan.Zero);

                var datediff = (((TimeSpan)(doDate - ePODate)).Days) + 1;
                ExternalPurchaseDeliveryOrderDurationReportViewModel _new = new ExternalPurchaseDeliveryOrderDurationReportViewModel
                {
                    prNo             = item.prNo,
                    prDate           = item.prDate,
                    prCreatedDate    = item.prCreatedDate,
                    unit             = item.unit,
                    category         = item.category,
                    division         = item.division,
                    budget           = item.budget,
                    productCode      = item.productCode,
                    productName      = item.productName,
                    dealQuantity     = item.dealQuantity,
                    dealUomUnit      = item.dealUomUnit,
                    pricePerDealUnit = item.pricePerDealUnit,
                    supplierCode     = item.supplierCode,
                    supplierName     = item.supplierName,
                    poDate           = item.poDate,
                    orderDate        = item.orderDate,
                    ePOCreatedDate   = item.ePOCreatedDate,
                    deliveryDate     = item.deliveryDate,
                    ePONo            = item.ePONo,
                    dODate           = item.dODate,
                    arrivalDate      = item.arrivalDate,
                    dONo             = item.dONo,
                    dateDiff         = datediff,
                    staff            = item.staff,
                };
                listEPODUration.Add(_new);
            }
            return(listEPODUration.Where(s => s.dateDiff >= start && s.dateDiff <= end).AsQueryable());
        }
        public void Should_Success_Build_ExternalPurchaseDeliveryOrderDurationReportViewModel()
        {
            var viewModel = new ExternalPurchaseDeliveryOrderDurationReportViewModel();

            Assert.NotNull(viewModel);
        }