internal static T GetPayload <T>(this UserTask task) { var payload = task.Tokens[0].Payload.RawPayload; var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true }; return(task.HasErrorPayload() switch { true => (T)JsonSerializer.Deserialize <TaskError>(payload, options)?.AdditionalInformation?.Payload, false => JsonSerializer.Deserialize <T>(payload, options) });
private async Task <object> CreatePayload(UserTask task, ClientTaskType type) { var payloadCreator = _processHandlersFactory.GetPayloadHandler(task.ProcessModelId); if (task.HasErrorPayload()) { task = await _processClient.GetPrevFinishedTaskOfSameKind(task) ?? throw new Exception( $"Cannot create payload because no previous finished task found ({task.Id})"); } return(type switch { Selection => payloadCreator?.CreateSelectionOptionsPayload(task), Scan => payloadCreator?.CreateScanPayload(task), Info => payloadCreator?.CreateInfoPayload(task), _ => null });