예제 #1
0
        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
            });