public static void AbbrechenInternal(this AuftragStatus auftragStatus, Abbruchgrund abbruchgrund, string bemerkungZumDossier, string interneBemerkung) { if (abbruchgrund == Abbruchgrund.NichtGesetzt) { throw new Exception("Die Funktion Abbrechen verlangt, dass ein Abbruchgrund gesetzt wird."); } auftragStatus.Context.OrderItem.Abbruchgrund = abbruchgrund; auftragStatus.Context.OrderItem.InternalComment = auftragStatus.Context.OrderItem.InternalComment.Prepend(interneBemerkung); auftragStatus.Context.OrderItem.Comment = auftragStatus.Context.OrderItem.Comment.Append(bemerkungZumDossier); auftragStatus.Context.OrderItem.Abschlussdatum = auftragStatus.Context.TransactionTimeStamp; auftragStatus.Context.OrderItem.EntscheidGesuch = EntscheidGesuch.NichtGeprueft; auftragStatus.Context.OrderItem.DatumDesEntscheids = null; auftragStatus.Context.SetNewStatus(AuftragStatusRepo.Abgebrochen); var expando = CreateEmailData(auftragStatus); switch (abbruchgrund) { case Abbruchgrund.DigitalisierungNichtMoeglich: auftragStatus.Context.MailPortfolio.AddFinishedMail <DigitalisierungNichtMoeglich>(expando); break; case Abbruchgrund.DossierMomentanNichtVerfuegbar: auftragStatus.Context.MailPortfolio.AddFinishedMail <DossierMomentanNichtVerfuegbar>(expando); break; } UpdateIndivTokensHelper.RegisterActionForIndivTokensRefresh(auftragStatus); }
public static void EntscheidGesuchHinterlegenInternal(this AuftragStatus auftragStatus, EntscheidGesuch entscheid, DateTime datumEntscheid, string interneBemerkung) { auftragStatus.Context.ThrowIfAuftragstypIsNot(new[] { OrderType.Einsichtsgesuch }); if (entscheid == EntscheidGesuch.NichtGeprueft) { throw new Exception("Die Funktion EntscheidGesuchHinterlegen verlangt, dass ein Entscheid getroffen wird."); } auftragStatus.Context.OrderItem.EntscheidGesuch = entscheid; auftragStatus.Context.OrderItem.DatumDesEntscheids = datumEntscheid; auftragStatus.Context.OrderItem.SachbearbeiterId = auftragStatus.Context.CurrentUser.Id; auftragStatus.Context.OrderItem.InternalComment = auftragStatus.Context.OrderItem.InternalComment.Prepend(interneBemerkung); auftragStatus.Context.OrderItem.Abschlussdatum = auftragStatus.Context.TransactionTimeStamp; auftragStatus.Context.SetNewStatus(AuftragStatusRepo.Abgeschlossen); if (!auftragStatus.Context.OrderItem.VeId.HasValue) { throw new Exception( "Die Funktion EntscheidGesuchHinterlegen kann nur aufgerufen werden, wenn der Auftrag den Verweis auf eine Verzeichniseinheit enthält."); } UpdateIndivTokensHelper.RegisterActionForIndivTokensRefresh(auftragStatus); }
public static void AbbrechenInternal(this AuftragStatus auftragStatus, Abbruchgrund abbruchgrund, string bemerkungZumDossier, string interneBemerkung) { if (abbruchgrund == Abbruchgrund.NichtGesetzt) { throw new Exception("Die Funktion Abbrechen verlangt, dass ein Abbruchgrund gesetzt wird."); } auftragStatus.Context.OrderItem.Abbruchgrund = abbruchgrund; auftragStatus.Context.OrderItem.InternalComment = auftragStatus.Context.OrderItem.InternalComment.Prepend(interneBemerkung); auftragStatus.Context.OrderItem.Comment = auftragStatus.Context.OrderItem.Comment.Append(bemerkungZumDossier); auftragStatus.Context.OrderItem.Abschlussdatum = auftragStatus.Context.TransactionTimeStamp; auftragStatus.Context.OrderItem.EntscheidGesuch = EntscheidGesuch.NichtGeprueft; auftragStatus.Context.OrderItem.DatumDesEntscheids = null; auftragStatus.Context.SetNewStatus(AuftragStatusRepo.Abgebrochen); dynamic expando = CreateEmailData(auftragStatus); dynamic emailData = null; switch (abbruchgrund) { case Abbruchgrund.DigitalisierungNichtMoeglich: emailData = auftragStatus.Context.MailPortfolio.GetUnfinishedMailData <DigitalisierungNichtMoeglich>(auftragStatus.Context.Besteller.Id); if (emailData == null) { auftragStatus.Context.MailPortfolio.BeginUnfinishedMail <DigitalisierungNichtMoeglich>(auftragStatus.Context.Besteller.Id, expando); } break; case Abbruchgrund.DossierMomentanNichtVerfuegbar: emailData = auftragStatus.Context.MailPortfolio.GetUnfinishedMailData <DossierMomentanNichtVerfuegbar>(auftragStatus.Context.Besteller.Id); if (emailData == null) { auftragStatus.Context.MailPortfolio.BeginUnfinishedMail <DossierMomentanNichtVerfuegbar>(auftragStatus.Context.Besteller.Id, expando); } break; } if (emailData != null) { var builder = new DataBuilder(auftragStatus.Context.Bus, emailData); builder.AddAuftraege(new List <int> { auftragStatus.Context.OrderItem.Id }); // After a new Auftrag has been set, we get the collection of the orderings and // get their dates. Finally we set a property that is called Auftragsdaten. List <Auftrag> aufträge = emailData.Aufträge; var bestellungen = aufträge.Select(a => a.Bestellung); var daten = bestellungen.Select(o => o.Erfassungsdatum).Distinct(); builder.AddValue("Auftragsdaten", string.Join(" / ", daten)); } UpdateIndivTokensHelper.RegisterActionForIndivTokensRefresh(auftragStatus); }
public static void ZuruecksetzenInternal(this AuftragStatus auftragStatus) { auftragStatus.Context.SetNewStatus(AuftragStatusRepo.NeuEingegangen); auftragStatus.Context.OrderItem.Ausgabedatum = null; auftragStatus.Context.OrderItem.Abschlussdatum = null; auftragStatus.Context.OrderItem.Abbruchgrund = Abbruchgrund.NichtGesetzt; auftragStatus.Context.OrderItem.EntscheidGesuch = EntscheidGesuch.NichtGeprueft; auftragStatus.Context.OrderItem.DatumDesEntscheids = null; auftragStatus.Context.OrderItem.HasAufbereitungsfehler = false; /* Einige Parameter werden im NeuEingegangenStatus gesetzt und hier nicht geleert, weil sie sonst wieder überschrieben werden */ UpdateIndivTokensHelper.RegisterActionForIndivTokensRefresh(auftragStatus); if (auftragStatus.Context.OrderItem.VeId.HasValue) { UpdateIndivTokensHelper.RegisterActionForIndivTokensRefresh(auftragStatus); } }
private void AutomatischOderManuellPruefenSetzen(AuftragStatus zielStatusWennAutomatischeFreigabeMoeglich) { // https://devblogs.microsoft.com/pfxteam/should-i-expose-synchronous-wrappers-for-asynchronous-methods/ // ToDo: await correctly, when state-machine is async var kannAutomatischFreigeben = KannAutomatischFreigeben(Context.OrderItem, Context.Besteller) .ConfigureAwait(false) .GetAwaiter() .GetResult();; if (kannAutomatischFreigeben) { Context.SetNewStatus(zielStatusWennAutomatischeFreigabeMoeglich, Users.System); Context.SetApproveStatus(ApproveStatus.FreigegebenDurchSystem, Users.System); } else { Context.SetNewStatus(AuftragStatusRepo.FreigabePruefen, Users.System); Context.SetApproveStatus(ApproveStatus.NichtGeprueft, Users.System); } }
private static ExpandoObject CreateEmailData(AuftragStatus auftragStatus) { var builder = new DataBuilder(auftragStatus.Context.Bus) .AddUser(auftragStatus.Context.CurrentUser.Id) .AddBesteller(auftragStatus.Context.Ordering.UserId) .AddBestellung(auftragStatus.Context.Ordering) .AddAuftrag(auftragStatus.Context.Ordering, auftragStatus.Context.OrderItem) .AddValue("Id", auftragStatus.Context.OrderItem.Id); var expando = builder.Create(); expando.Sprachen = new[] { new Sprache("de"), new Sprache("fr"), new Sprache("it"), new Sprache("en") }; return(expando); }
private static ExpandoObject CreateEmailData(AuftragStatus auftragStatus) { var builder = new DataBuilder(auftragStatus.Context.Bus) .AddUser(auftragStatus.Context.CurrentUser.Id) .AddBesteller(auftragStatus.Context.Ordering.UserId) .AddAuftraege(new List <int> { auftragStatus.Context.OrderItem.Id }) .AddValue("Auftragsdaten", auftragStatus.Context.Ordering.OrderDate?.ToString("dd.MM.yyyy") ?? ""); var expando = builder.Create(); expando.Sprachen = new[] { new Sprache("de"), new Sprache("fr"), new Sprache("it"), new Sprache("en") }; return(expando); }