Exemplo n.º 1
0
        public void Should_Success_Instantiate()
        {
            PackingQCGudangViewModel vm = new PackingQCGudangViewModel()
            {
                Date            = DateTimeOffset.Now,
                Dyeing          = 1,
                Jumlah          = 1,
                Printing        = 1,
                UlanganPrinting = 1,
                UlanganSolid    = 1,
                White           = 1
            };

            Assert.True(DateTimeOffset.MinValue < vm.Date);
            Assert.Equal(1, vm.Dyeing);
            Assert.Equal(1, vm.Jumlah);
            Assert.Equal(1, vm.Printing);
            Assert.Equal(1, vm.UlanganPrinting);
            Assert.Equal(1, vm.UlanganSolid);
            Assert.Equal(1, vm.White);
        }
        public List <PackingQCGudangViewModel> GetQCGudang(DateTime?dateFrom, DateTime?dateTo, int offSet)
        {
            IQueryable <PackingModel> query = dbContext.Packings.Include(x => x.PackingDetails);

            if (dateFrom == null && dateTo == null)
            {
                query = query
                        .Where(x => DateTimeOffset.UtcNow.AddDays(-30).Date <= x.Date.AddHours(offSet).Date &&
                               x.Date.AddHours(offSet).Date <= DateTime.UtcNow.Date);
            }
            else if (dateFrom == null && dateTo != null)
            {
                query = query
                        .Where(x => dateTo.Value.AddDays(-30).Date <= x.Date.AddHours(offSet).Date &&
                               x.Date.AddHours(offSet).Date <= dateTo.Value.Date);
            }
            else if (dateTo == null && dateFrom != null)
            {
                query = query
                        .Where(x => dateFrom.Value.Date <= x.Date.AddHours(offSet).Date &&
                               x.Date.AddHours(offSet).Date <= dateFrom.Value.AddDays(30).Date);
            }
            else
            {
                query = query
                        .Where(x => dateFrom.Value.Date <= x.Date.AddHours(offSet).Date &&
                               x.Date.AddHours(offSet).Date <= dateTo.Value.Date);
            }

            List <PackingQCGudangViewModel> result = new List <PackingQCGudangViewModel>();

            foreach (var item in query.ToList())
            {
                var vm = new PackingQCGudangViewModel()
                {
                    Date = item.Date.Date
                };

                if (item.DeliveryType.Equals("ULANGAN", StringComparison.OrdinalIgnoreCase) &&
                    (item.FinishedProductType.Equals("WHITE", StringComparison.OrdinalIgnoreCase) || item.FinishedProductType.Equals("DYEING", StringComparison.OrdinalIgnoreCase)))
                {
                    vm.UlanganSolid = item.PackingDetails.Sum(x => x.Length * x.Quantity);
                }

                if (item.DeliveryType.Equals("ULANGAN", StringComparison.OrdinalIgnoreCase) &&
                    (item.FinishedProductType.Equals("BATIK", StringComparison.OrdinalIgnoreCase) || item.FinishedProductType.Equals("TEKSTIL", StringComparison.OrdinalIgnoreCase)))
                {
                    vm.UlanganPrinting = item.PackingDetails.Sum(x => x.Length * x.Quantity);
                }

                if (item.DeliveryType.Equals("BARU", StringComparison.OrdinalIgnoreCase) && item.FinishedProductType.Equals("WHITE", StringComparison.OrdinalIgnoreCase))
                {
                    vm.White = item.PackingDetails.Sum(x => x.Length * x.Quantity);
                }

                if (item.DeliveryType.Equals("BARU", StringComparison.OrdinalIgnoreCase) && item.FinishedProductType.Equals("DYEING", StringComparison.OrdinalIgnoreCase))
                {
                    vm.Dyeing = item.PackingDetails.Sum(x => x.Length * x.Quantity);
                }

                if (item.DeliveryType.Equals("BARU", StringComparison.OrdinalIgnoreCase) &&
                    (item.FinishedProductType.Equals("BATIK", StringComparison.OrdinalIgnoreCase) || item.FinishedProductType.Equals("TEKSTIL", StringComparison.OrdinalIgnoreCase)))
                {
                    vm.Printing = item.PackingDetails.Sum(x => x.Length * x.Quantity);
                }

                vm.Jumlah = vm.UlanganSolid + vm.Dyeing + vm.White + vm.UlanganPrinting + vm.Printing;

                result.Add(vm);
            }


            return(result.GroupBy(x => x.Date).Select(x => new PackingQCGudangViewModel()
            {
                Date = x.Key,
                Dyeing = x.Sum(y => y.Dyeing),
                Jumlah = x.Sum(y => y.Jumlah),
                Printing = x.Sum(y => y.Printing),
                UlanganPrinting = x.Sum(y => y.UlanganPrinting),
                UlanganSolid = x.Sum(y => y.UlanganSolid),
                White = x.Sum(y => y.White)
            }).OrderBy(x => x.Date).ToList());
        }