Esempio n. 1
0
        public async Task <IHttpActionResult> DigitalisierungAusloesen([FromBody] DigitalisierungAusloesenParams p)
        {
            var access = ManagementControllerHelper.GetUserAccess();

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

            var items = GetItemsToCheck(p.OrderItemIds.ToArray());

            if (!HasEinsichtsgesuche(items))
            {
                return(BadRequest("Funktion ist nur für Einsichtsgesuche gestattet"));
            }

            var snapshots = new List <OrderingIndexSnapshot>();

            foreach (var item in items)
            {
                if (!item.VeId.HasValue)
                {
                    return(BadRequest("Formularbestellungen sind in dieser Funktion nicht zulässig"));
                }

                var elasticItem = await GetElasticArchiveRecord(item.VeId.Value.ToString());

                if (elasticItem == null)
                {
                    throw new Exception($"Ve with ID {item.VeId.Value} not found");
                }

                var snapshot = OrderHelper.GetOrderingIndexSnapshot(elasticItem);
                snapshots.Add(snapshot);
            }

            var statusUebergangSettings = parameterHelper.GetSetting <StatusUebergangSettings>();
            await orderManagerClient.DigitalisierungAusloesen(access.UserId, snapshots.ToArray(),
                                                              statusUebergangSettings.ArtDerArbeitIdFuerDigitalisierungAusloesen);

            return(StatusCode(HttpStatusCode.NoContent));
        }