public IHttpActionResult GetIn(int queueId) { int uid = Auth.CheckToken(Request.Headers); if (uid == 0 || !Auth.CheckAccess(uid, queueId)) { return(StatusCode(HttpStatusCode.Forbidden)); } QueueOrderManager.Insert(uid, queueId); return(Ok(true)); }
public IHttpActionResult Exit(int queueId) { int uid = Auth.CheckToken(Request.Headers); if (uid == 0 || !Auth.CheckAccess(uid, queueId)) { return(StatusCode(HttpStatusCode.Forbidden)); } bool ret = QueueOrderManager.Delete(uid, queueId); return(Ok(ret)); }
public IHttpActionResult Swap(int userB, int id) { int uid = Auth.CheckToken(Request.Headers); if (uid == 0 || !Auth.CheckAccess(uid, id) || !Auth.CheckAccess(userB, id)) { return(StatusCode(HttpStatusCode.Forbidden)); } bool ret = QueueOrderManager.SwapUsers(uid, userB, id); return(Ok(ret)); }
public IHttpActionResult Users(int queueId) { int uid = Auth.CheckToken(Request.Headers); if (uid == 0 || !Auth.CheckAccess(uid, queueId)) { return(StatusCode(HttpStatusCode.Forbidden)); } var users = QueueOrderManager.GetUsers(queueId); return(new ObjectResult(users, users.GetType(), Request)); }
/// <summary> /// Creates a new controller instance. /// </summary> /// <param name="instance">The instance this controller belongs to.</param> public Controller(Instance instance) { Instance = instance; // Init path manager switch (instance.ControllerConfig.PathPlanningConfig.GetMethodType()) { case PathPlanningMethodType.Simple: PathManager = null; break; case PathPlanningMethodType.Dummy: PathManager = new DummyPathManager(instance); break; case PathPlanningMethodType.WHCAvStar: PathManager = new WHCAvStarPathManager(instance); break; case PathPlanningMethodType.FAR: PathManager = new FARPathManager(instance); break; case PathPlanningMethodType.BCP: PathManager = new BCPPathManager(instance); break; case PathPlanningMethodType.CBS: PathManager = new CBSPathManager(instance); break; case PathPlanningMethodType.OD_ID: PathManager = new ODIDPathManager(instance); break; case PathPlanningMethodType.WHCAnStar: PathManager = new WHCAnStarPathManager(instance); break; case PathPlanningMethodType.PAS: PathManager = new PASPathManager(instance); break; default: throw new ArgumentException("Unknown path planning engine: " + instance.ControllerConfig.PathPlanningConfig.GetMethodType()); } // Init bot manager switch (instance.ControllerConfig.TaskAllocationConfig.GetMethodType()) { case TaskAllocationMethodType.Dummy: BotManager = new DummyBotManager(instance); break; case TaskAllocationMethodType.BruteForce: BotManager = new BruteForceBotManager(instance); break; case TaskAllocationMethodType.Random: BotManager = new RandomBotManager(instance); break; case TaskAllocationMethodType.Balanced: BotManager = new BalancedBotManager(instance); break; case TaskAllocationMethodType.Swarm: BotManager = new SwarmBotManager(instance); break; case TaskAllocationMethodType.ConstantRatio: BotManager = new ConstantRatioBotManager(instance); break; case TaskAllocationMethodType.Concept: BotManager = new ConceptBotManager(instance); break; default: throw new ArgumentException("Unknown bot manager: " + instance.ControllerConfig.TaskAllocationConfig.GetMethodType()); } // Init station manager switch (instance.ControllerConfig.StationActivationConfig.GetMethodType()) { case StationActivationMethodType.ActivateAll: StationManager = new ActivateAllStationManager(instance); break; case StationActivationMethodType.BacklogThreshold: StationManager = new BacklogThresholdStationManager(instance); break; case StationActivationMethodType.ConstantRatio: StationManager = new ConstantRatioStationManager(instance); break; case StationActivationMethodType.WorkShift: StationManager = new WorkShiftStationActivationManager(instance); break; default: throw new ArgumentException("Unknown station manager: " + instance.ControllerConfig.StationActivationConfig.GetMethodType()); } // Init item storage manager switch (instance.ControllerConfig.ItemStorageConfig.GetMethodType()) { case ItemStorageMethodType.Dummy: StorageManager = new DummyStorageManager(instance); break; case ItemStorageMethodType.Random: StorageManager = new RandomStorageManager(instance); break; case ItemStorageMethodType.Correlative: StorageManager = new CorrelativeStorageManager(instance); break; case ItemStorageMethodType.Turnover: StorageManager = new TurnoverStorageManager(instance); break; case ItemStorageMethodType.ClosestLocation: StorageManager = new ClosestLocationStorageManager(instance); break; case ItemStorageMethodType.Reactive: StorageManager = new ReactiveStorageManager(instance); break; case ItemStorageMethodType.Emptiest: StorageManager = new EmptiestStorageManager(instance); break; case ItemStorageMethodType.LeastDemand: StorageManager = new LeastDemandStorageManager(instance); break; default: throw new ArgumentException("Unknown storage manager: " + instance.ControllerConfig.ItemStorageConfig.GetMethodType()); } // Init pod storage manager switch (instance.ControllerConfig.PodStorageConfig.GetMethodType()) { case PodStorageMethodType.Dummy: PodStorageManager = new DummyPodStorageManager(instance); break; case PodStorageMethodType.Fixed: PodStorageManager = new FixedPodStorageManager(instance); break; case PodStorageMethodType.Nearest: PodStorageManager = new NearestPodStorageManager(instance); break; case PodStorageMethodType.StationBased: PodStorageManager = new StationBasedPodStorageManager(instance); break; case PodStorageMethodType.Cache: PodStorageManager = new CachePodStorageManager(instance); break; case PodStorageMethodType.Utility: PodStorageManager = new UtilityPodStorageManager(instance); break; case PodStorageMethodType.Random: PodStorageManager = new RandomPodStorageManager(instance); break; case PodStorageMethodType.Turnover: PodStorageManager = new TurnoverPodStorageManager(instance); break; default: throw new ArgumentException("Unknown pod manager: " + instance.ControllerConfig.PodStorageConfig.GetMethodType()); } // Init repositioning manager switch (instance.ControllerConfig.RepositioningConfig.GetMethodType()) { case RepositioningMethodType.Dummy: RepositioningManager = new DummyRepositioningManager(instance); break; case RepositioningMethodType.Cache: RepositioningManager = new CacheRepositioningManager(instance); break; case RepositioningMethodType.CacheDropoff: RepositioningManager = new CacheDropoffRepositioningManager(instance); break; case RepositioningMethodType.Utility: RepositioningManager = new UtilityRepositioningManager(instance); break; case RepositioningMethodType.Concept: RepositioningManager = new ConceptRepositioningManager(instance); break; default: throw new ArgumentException("Unknown repositioning manager: " + instance.ControllerConfig.RepositioningConfig.GetMethodType()); } // Init order batching manager switch (instance.ControllerConfig.OrderBatchingConfig.GetMethodType()) { case OrderBatchingMethodType.Greedy: OrderManager = new GreedyOrderManager(instance); break; case OrderBatchingMethodType.Default: OrderManager = new DefaultOrderManager(instance); break; case OrderBatchingMethodType.Random: OrderManager = new RandomOrderManager(instance); break; case OrderBatchingMethodType.Workload: OrderManager = new WorkloadOrderManager(instance); break; case OrderBatchingMethodType.Related: OrderManager = new RelatedOrderManager(instance); break; case OrderBatchingMethodType.NearBestPod: OrderManager = new NearBestPodOrderManager(instance); break; case OrderBatchingMethodType.Foresight: OrderManager = new ForesightOrderManager(instance); break; case OrderBatchingMethodType.PodMatching: OrderManager = new PodMatchingOrderManager(instance); break; case OrderBatchingMethodType.LinesInCommon: OrderManager = new LinesInCommonOrderManager(instance); break; case OrderBatchingMethodType.Queue: OrderManager = new QueueOrderManager(instance); break; default: throw new ArgumentException("Unknown order manager: " + instance.ControllerConfig.OrderBatchingConfig.GetMethodType()); } // Init replenishment batching manger switch (instance.ControllerConfig.ReplenishmentBatchingConfig.GetMethodType()) { case ReplenishmentBatchingMethodType.Random: BundleManager = new RandomBundleManager(instance); break; case ReplenishmentBatchingMethodType.SamePod: BundleManager = new SamePodBundleManager(instance); break; default: throw new ArgumentException("Unknown replenishment manager: " + instance.ControllerConfig.ReplenishmentBatchingConfig.GetMethodType()); } // Init meta method manager switch (instance.ControllerConfig.MethodManagementConfig.GetMethodType()) { case MethodManagementType.NoChange: MethodManager = new NoChangeMethodManager(instance); break; case MethodManagementType.Random: MethodManager = new RandomMethodManager(instance); break; case MethodManagementType.Scheduled: MethodManager = new ScheduleMethodManager(instance); break; default: throw new ArgumentException("Unknown method manager: " + instance.ControllerConfig.MethodManagementConfig.GetMethodType()); } // Init allocator Allocator = new Allocator(instance); }