public MachinesModule(IMachineManager machineManager)
            : base("machines")
        {
            this.RequiresAuthentication();

            Get("/", p =>
            {
                return(machineManager.GetMachines());
            });

            Get("/{id:int}", p =>
            {
                return(machineManager.GetMachine((int)p.id));
            });

            Put("/", async p =>
            {
                this.RequiresAdmin();

                return(await machineManager.CreateMachine(this.Bind <Machine>()));
            });

            Post("/", async p =>
            {
                this.RequiresAdmin();

                return(await machineManager.UpdateMachine(this.Bind <Machine>()));
            });

            Delete("/{id:int}", p =>
            {
                this.RequiresAdmin();

                return(machineManager.DeleteMachine((int)p.id));
            });

            Post("/sort", p =>
            {
                this.RequiresAdmin();

                machineManager.SortMachines(this.Bind <List <int> >());
                return(HttpStatusCode.OK);
            });
        }
示例#2
0
        protected override async Task HandleBody(MachineCommandIntegrationEvent integrationEvent)
        {
            var machine = _machineManager.GetMachine(integrationEvent.MachineName);

            if (machine == null)
            {
                _logger.Warn($"Can't find machine {integrationEvent.MachineName}");
                return;
            }

            if (integrationEvent.OrderNumber != 0)
            {
                await machine.StartNewOrder(integrationEvent.OrderNumber, integrationEvent.Id).ConfigureAwait(false);
            }
            else
            {
                switch (integrationEvent.MachineStatus)
                {
                case MachineStatus.Running:
                    machine.StartMachine(false);

                    _eventBus.Publish(new MachineStatusIntegrationEvent(integrationEvent.Id)
                    {
                        MachineName   = machine.MachineName,
                        MachineStatus = machine.MachineStatus,
                        Description   = $"Machine {integrationEvent.MachineName} status changed to Running"
                    });

                    break;

                case MachineStatus.Stopped:
                    machine.StopMachine(false);

                    _eventBus.Publish(new MachineStatusIntegrationEvent(integrationEvent.Id)
                    {
                        MachineName   = machine.MachineName,
                        MachineStatus = machine.MachineStatus,
                        Description   = $"Machine {integrationEvent.MachineName} status changed to Stopped"
                    });
                    break;
                }
            }
        }
示例#3
0
 public Task Pause(int machineId)
 {
     return(_machineProviderManager.GetProvider(_machineManager.GetMachine(machineId)).PauseJob());
 }
 public IActionResult GetMachine(string machineName)
 {
     return(Ok(_machineManager.GetMachine(machineName)));
 }