Benutzer-Werkzeuge

Webseiten-Werkzeuge


extensibility:assessments:confirmation:example

Dies ist eine alte Version des Dokuments!


Beispielcode für ein Plugin vom Typ "Erweiterung" um einen Bestätigungsdialog anzuzeigen

using Grpc.Core; using System; using System.Threading.Tasks; using Caats.Infrastructure.Authorization; using Caats.Infrastructure.Helper; using Caats.Infrastructure.Extensions; using Caats.Proto;

namespace Caats.Service.Infrastructure.Extensibility;

[PluginServiceDto(typeof(ChecklistInstanceDto))] public class ChkValidationPoC : PluginBase {

  public override PluginDto Ident() => new() { };
  public async override Task<(RequestMsg, ResponseMsg?)> OnBeforeUpdate(RequestMsg request, Lazy<IdentityBase> identity, ServerCallContext context)
  {
      var candidate = RequestMsgHelper.GetSingleOrDefault<ChecklistInstanceDto>(request);
      ResponseMsg? response = null;
      if (candidate == null)
      {
          return (request, null);
      }
      // evaluate conditions to decide whether confirmation is needed
      // set to "true" for brevity (because this is not the subject of the tutorial)
      var confirmationNeeded = true;
      if (request.IsConfirmationPromptAnswered())
      {
          // user has already answered the confirmation prompt
      }
      else if (confirmationNeeded)
      {
          // this will result in the user being asked for confirmation
          // (and the update call will not immediately go ahead in the backend)
          // the prompt supports html (no script) for formatting:
          var prompt = @"Die eingegebene Leistungszeit liegt mehr als 7 Tage in der Vergangenheit

<ul>

<li>Leistungen eines Einsatzes sollten <strong>aufeinanderfolgen</strong></li>
<li>Anfahrt und Abfahrt sollten an die Leistungszeit <strong>angrenzen</strong></li>

</ul> Bitte bestätgen: Trotzdem buchen? „;

          response = ResponseMsg.PromptForConfirmation(
              dialogTitle: "Bestätigung erforderlich",
              dialogPrompt: prompt,
              [
                  (choiceDialogResult: ResponseMsg.DialogResult.Save, choiceKey: "indeed", choiceLabel: "COMMON.YES"),
                  (choiceDialogResult: ResponseMsg.DialogResult.Cancel, choiceKey: "nope", choiceLabel: "COMMON.DIALOG_ACTION_CANCEL")
              ]
          );
      }
      return await Task.FromResult((request, response));
  }

}

extensibility/assessments/confirmation/example.1752757111.txt.gz · Zuletzt geändert: 2025/07/17 12:58 von agoldman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki