Beispiel #1
0
        //
        // GET: /Order/Details/5

        public ActionResult Detail(int id, enumErrorCode error = enumErrorCode.NONE)
        {
            Orders order = null;

            using (var t = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions {
                IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted
            }))
            {
                order = db.Orders.Find(id);
                if (order == null)
                {
                    return(HttpNotFound());
                }
                int userId = Convert.ToInt32(Session["UserID"]);
                if (!roomControl.CheckUserInRoom(userId, order.RoomId))
                {
                    return(RedirectToAction("Login", "Account"));
                }
            }

            ScheduleOrder tempSchedule = new ScheduleOrder();

            tempSchedule.GetOrderMaterial(order.MaterialInfo);
            string[] materialArray = tempSchedule.MaterialList.Values.ToArray();
            ViewData["materials"] = materialArray;
            ViewData["error"]     = Constants.GetErrorString(error);

            return(View(order));
        }
Beispiel #2
0
        //
        // GET: /Order/Edit/5

        public ActionResult Edit(int id)
        {
            using (var t = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions {
                IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted
            }))
            {
                Orders order = db.Orders.Find(id);

                ScheduleOrder tempSchedule = new ScheduleOrder();
                tempSchedule.GetOrderMaterial(order.MaterialInfo);
                string[] materialArray = tempSchedule.MaterialList.Values.ToArray();
                ViewData["materials"] = materialArray;

                List <SelectListItem> materialInfos = new List <SelectListItem>();
                materialInfos.Add(new SelectListItem {
                    Text = "不新增物料", Value = "0"
                });
                foreach (Materials item in db.Materials)
                {
                    materialInfos.Add(new SelectListItem {
                        Text = string.Format(App_Start.Constants.MACHINE_MATERIAL_STRUCTURE, item.Code, item.Unit, item.DetailInfo), Value = item.ID.ToString()
                    });
                }
                ViewData["materialInfos"] = materialInfos;

                return(View(order));
            }
        }
Beispiel #3
0
        private void SeedScheduleOrder(WarehouseSystemDbContext context)
        {
            if (context.Organizations.Any())
            {
                return;
            }

            var suppliers = context.Organizations.Where(x => x.IsSupplier == true).ToList();
            var customers = context.Organizations.Where(x => x.IsSupplier == false).ToList();

            for (int i = 0; i < suppliers.Count; i++)
            {
                for (int j = 0; j < this.random.RandomNumber(0, customers.Count - 1); j++)
                {
                    var newScheduleOrder = new ScheduleOrder()
                    {
                        OrderDay    = (DayOfWeek)this.random.RandomNumber(0, 6),
                        DelivaryDay = (DayOfWeek)this.random.RandomNumber(0, 6),
                        Supplier    = suppliers[this.random.RandomNumber(0, suppliers.Count - 1)],
                        Client      = customers[(i + j) % customers.Count],
                    };

                    context.ScheduleOrders.Add(newScheduleOrder);
                }
            }

            context.SaveChanges();
        }
        public async Task ShouldReturnScheduleInputOrderObjectWhenScheduleTypeIsDay()
        {
            _mockDayComparable.Setup(x => x.Compare(It.IsAny <DayOfWeek>())).Returns(true);
            var scheduleOrder = new ScheduleOrder(
                _mockGasStationScheduleRepo.Object
                , _mockGasStationScheduleByDayRepo.Object
                , _mockGasStationTanksScheduleRepo.Object
                , _mockGasStationScheduleByTimeRepo.Object
                , _mockDayComparable.Object
                , _mockTimeIntervalComparable.Object
                , _mockOrderRepository.Object
                );

            var gasStation = _orderData.GasStations.First();
            var result     = await scheduleOrder.CreateAsync((gasStation, _orderData.OrderStrategies.First().OrderType));

            Assert.True(result.IsSuccess);
            var lineItemsTankIds        = result.Entity !.OrderProducts.Select(x => x.TankId).ToList();
            var gasStationScheduleTanks = _orderData.GasStationTankSchedules.Where(x => x.TankId == 1 || x.TankId == 2).ToList();

            _mockDayComparable.Verify(x => x.Compare(It.IsAny <DayOfWeek>()), Times.Once);
            Assert.Equal(OrderType.Schedule, result.Entity !.OrderType);
            Assert.Equal(2, result.Entity !.OrderProducts.Count());
            Assert.True(lineItemsTankIds.Exists(x => x == gasStationScheduleTanks
                                                .FirstOrDefault().TankId));
            Assert.True(lineItemsTankIds.Exists(x => x == gasStationScheduleTanks
                                                .LastOrDefault().TankId));
            Assert.Equal(result.Entity !.OrderProducts.FirstOrDefault(
                             x => x.TankId == gasStationScheduleTanks.FirstOrDefault().TankId)
                         .Quantity, gasStationScheduleTanks.FirstOrDefault().Quantity);
            Assert.Equal(result.Entity !.OrderProducts.FirstOrDefault(
                             x => x.TankId == gasStationScheduleTanks.LastOrDefault().TankId)
                         .Quantity, gasStationScheduleTanks.LastOrDefault().Quantity);
        }
Beispiel #5
0
 public AutoOrderGenerator(IGasStationRepository gasStationRepository
                           , ScheduleOrder scheduleOrder
                           , EstimateOrder estimateOrder
                           , IManageOrderRepository manageOrderRepository)
 {
     _gasStationRepository  = gasStationRepository;
     _scheduleOrder         = scheduleOrder;
     _estimateOrder         = estimateOrder;
     _manageOrderRepository = manageOrderRepository;
 }
Beispiel #6
0
        public static void SendNoticeBySchedule(ScheduleOrder schedule, ContextString dbContext)
        {
            string remarks = schedule.Status == 2 ? "您的排期已申请通过,快去添加节目吧!" : "您的排期未能通过申请,请查看拒绝理由。";
            var    account = dbContext.ShopAccount.Where(i => i.ShopCode == schedule.ShopCode).FirstOrDefault();

            if (account == null)
            {
                return;
            }
            var openID = account.UnionID;
            var data   = "{\"keyword1\": {\"value\": \"" + schedule.PlacingNum + "\"},\"keyword2\": {\"value\": \"" + schedule.AddTime.ToString("yyyy年MM月dd日 HH:mm") + "\"},\"keyword3\": {\"value\": \"" + (schedule.Status == 2 ? "已通过" : "已拒绝") + "\"" + (schedule.Status == 2 ? "" : ",\"color\": \"#f00\"") + "} ,\"keyword4\": {\"value\": \"" + remarks + "\"}}";

            SendWeChatNotice(openID, schedule.FormID, data);
        }
        private ScheduleOrder ResolveOrder(ScheduleOrder order, ScheduleOrder antiorder, out bool conflict)
        {
            //                                   A:RunBefore       A:AnyOrderConcurrent    A:AnyOrderNotConcurrent   A:RunAfter
            //
            // B:RunBefore                       CONFLICT         RunAfter                RunAfter                   RunAfter
            // B:AnyOrderConcurrent              RunBefore         AnyOrderConcurrent      AnyOrderNotConcurrent     RunAfter
            // B:AnyOrderNotConcurrent           RunBefore         AnyOrderNotConcurrent   AnyOrderNotConcurrent     RunAfter
            // B:RunAfter                        RunBefore         RunBefore               RunBefore                 CONFLICT
            //
            conflict = false;
            switch (order)
            {
            case ScheduleOrder.AnyOrderConcurrent:
                if (antiorder == ScheduleOrder.RunAfter)
                {
                    return(ScheduleOrder.RunBefore);
                }
                if (antiorder == ScheduleOrder.RunBefore)
                {
                    return(ScheduleOrder.RunAfter);
                }
                return(antiorder);

            case ScheduleOrder.AnyOrderNotConcurrent:
                if (antiorder == ScheduleOrder.RunAfter)
                {
                    return(ScheduleOrder.RunBefore);
                }
                if (antiorder == ScheduleOrder.RunBefore)
                {
                    return(ScheduleOrder.RunAfter);
                }
                return(ScheduleOrder.AnyOrderNotConcurrent);

            case ScheduleOrder.RunBefore:
            case ScheduleOrder.RunAfter:
            default:
                if (antiorder == order)
                {
                    conflict = true;
                }
                return(order);
            }
        }
        public void ShouldThrowErrorWhenPassingInvalidGasStation()
        {
            var scheduleOrder = new ScheduleOrder(
                _mockGasStationScheduleRepo.Object
                , _mockGasStationScheduleByDayRepo.Object
                , _mockGasStationTanksScheduleRepo.Object
                , _mockGasStationScheduleByTimeRepo.Object
                , _mockDayComparable.Object
                , _mockTimeIntervalComparable.Object
                , _mockOrderRepository.Object
                );

            Assert.ThrowsAsync <ArgumentException>(
                async() =>
            {
                await scheduleOrder.CreateAsync(
                    (_orderData.GasStations.First(), _orderData.OrderStrategies.First().OrderType));
            }
                );
        }
Beispiel #9
0
        public ActionResult ScheduleOrders_Create([DataSourceRequest] DataSourceRequest request, ScheduleOrder scheduleOrder)
        {
            if (this.ModelState.IsValid)
            {
                var entity = new ScheduleOrder
                {
                    OrderDay    = scheduleOrder.OrderDay,
                    DelivaryDay = scheduleOrder.DelivaryDay,
                    CreatedOn   = scheduleOrder.CreatedOn,
                    ModifiedOn  = scheduleOrder.ModifiedOn,
                    IsDeleted   = scheduleOrder.IsDeleted,
                    DeletedOn   = scheduleOrder.DeletedOn
                };

                this.db.ScheduleOrders.Add(entity);
                this.db.SaveChanges();
                scheduleOrder.Id = entity.Id;
            }

            return(this.Json(new[] { scheduleOrder }.ToDataSourceResult(request, this.ModelState)));
        }
        public ActionResult ScheduleOrders_Create([DataSourceRequest]DataSourceRequest request, ScheduleOrder scheduleOrder)
        {
            if (this.ModelState.IsValid)
            {
                var entity = new ScheduleOrder
                {
                    OrderDay = scheduleOrder.OrderDay,
                    DelivaryDay = scheduleOrder.DelivaryDay,
                    CreatedOn = scheduleOrder.CreatedOn,
                    ModifiedOn = scheduleOrder.ModifiedOn,
                    IsDeleted = scheduleOrder.IsDeleted,
                    DeletedOn = scheduleOrder.DeletedOn
                };

                this.db.ScheduleOrders.Add(entity);
                this.db.SaveChanges();
                scheduleOrder.Id = entity.Id;
            }

            return this.Json(new[] { scheduleOrder }.ToDataSourceResult(request, this.ModelState));
        }
        public async Task ShouldGenerateExceptionWhenTimeIntervalConfigurationNotExist()
        {
            _mockTimeIntervalComparable.Setup(x => x.Compare(It.IsAny <TimeSpan>(), It.IsAny <DateTime>(), It.IsAny <DateTime>())).Returns(true);
            _mockGasStationScheduleByTimeRepo.Setup(x => x.FindByAsync(It.IsAny <Expression <Func <GasStationScheduleByTime, bool> > >())).ReturnsAsync(
                Enumerable.Empty <GasStationScheduleByTime>()
                );

            var scheduleOrder = new ScheduleOrder(
                _mockGasStationScheduleRepo.Object
                , _mockGasStationScheduleByDayRepo.Object
                , _mockGasStationTanksScheduleRepo.Object
                , _mockGasStationScheduleByTimeRepo.Object
                , _mockDayComparable.Object
                , _mockTimeIntervalComparable.Object
                , _mockOrderRepository.Object
                );

            await Assert.ThrowsAsync <ScheduleOrder.TimIntervalConfigurationException>(async() =>
            {
                await scheduleOrder.CreateAsync((_orderData.GasStations.Last(), _orderData.OrderStrategies.Last().OrderType));
            });
        }