public async Task <IHttpActionResult> EinsichtsgesucheInVorlageExportieren([FromBody] InVorlageExportierenParams p)
        {
            var access = ManagementControllerHelper.GetUserAccess();

            if (!access.HasFeature(ApplicationFeature.AuftragsuebersichtEinsichtsgesucheInVorlageExportieren))
            {
                return(StatusCode(HttpStatusCode.Forbidden));
            }

            await orderManagerClient.InVorlageExportieren(ControllerHelper.GetCurrentUserId(), p.OrderItemIds, p.Vorlage, p.Sprache);

            return(Content <object>(HttpStatusCode.NoContent, null));
        }
Exemplo n.º 2
0
        public async Task Consume(ConsumeContext <InVorlageExportierenRequest> context)
        {
            using (LogContext.PushProperty(nameof(context.ConversationId), context.ConversationId))
            {
                Log.Information("Received {CommandName} command with conversationId {ConversationId} from the bus",
                                context.Message.GetType().Name, context.ConversationId);

                string userId = null;
                foreach (var id in context.Message.OrderItemIds)
                {
                    var item = await orderDataAccess.GetOrderItem(id);

                    if (item == null)
                    {
                        throw new Exception("Invalid OrderItem: " + id);
                    }

                    var order = await orderDataAccess.GetOrdering(item.OrderId, false);

                    if (string.IsNullOrEmpty(userId))
                    {
                        userId = order?.UserId;
                    }
                    else
                    {
                        if (userId != order?.UserId)
                        // Der Gesuchsteller wird im Mail angezeigt und mehrere werden nicht unterstützt
                        {
                            throw new BadRequestException("Es dürfen nur Gesuche vom gleichen Gesuchsteller verarbeitet werden");
                        }
                    }
                }

                var m = context.Message;
                await manager.InVorlageExportieren(m.CurrentUserId, m.OrderItemIds, m.Vorlage, m.Sprache);

                await context.RespondAsync(new InVorlageExportierenResponse());
            }
        }