Example #1
0
        public async Task AttachWorkerToOrderAsync(int clientId, int orderId, AttachWorkerInfo workerInfo)
        {
            if (clientId == workerInfo.Id)
            {
                throw new BadInputException("can not attach yourself to order");
            }

            var order = await ordersRepository.FirstOrDefaultAsync(o => o.Id == orderId);

            if (order == null)
            {
                throw new BadInputException("order was not found");
            }

            if (order.ClientId != clientId)
            {
                throw new AccessRefusedException("client has no rights on this order");
            }

            var respondedWorker = await respondedWorkersRepository.FirstOrDefaultAsync(rw => rw.OrderId == orderId && rw.WorkerId == workerInfo.Id);

            if (respondedWorker == null)
            {
                throw new BadInputException("worker was not responding to this order");
            }

            order.WorkerId = workerInfo.Id;
            await ordersRepository.UpdateAsync(order);
        }
Example #2
0
        public async Task <IActionResult> AttachWorkerToOrder([FromRoute(Name = "id")] int orderId, [FromBody] AttachWorkerInfo workerData)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            int clientId = User.GetUserId();
            await ordersService.AttachWorkerToOrderAsync(clientId, orderId, workerData);

            return(Ok());
        }