Workflow düzeltmeleri

This commit is contained in:
Sedat Öztürk 2026-06-07 10:52:28 +03:00
parent c204eef755
commit bade0bab98
2 changed files with 24 additions and 22 deletions

View file

@ -303,7 +303,13 @@ public class ListFormWorkflowAppService : PlatformAppService, IListFormWorkflowA
var start = context.Criteria.FirstOrDefault(x => x.Kind == "Start") var start = context.Criteria.FirstOrDefault(x => x.Kind == "Start")
?? throw new UserFriendlyException("Workflow başlangıç adımı bulunamadı."); ?? throw new UserFriendlyException("Workflow başlangıç adımı bulunamadı.");
return await RunUntilWaitAsync(context, start); var result = await RunUntilWaitAsync(context, start);
await InsertWorkflowNoteAsync(
context,
$"Workflow Started: {start.Title}",
BuildWorkflowNoteContent(context.WorkflowNoteRows));
return result;
} }
[HttpPost("decision")] [HttpPost("decision")]
@ -368,8 +374,14 @@ public class ListFormWorkflowAppService : PlatformAppService, IListFormWorkflowA
} }
var next = FindNextCriteria(context.Criteria, input.Approved ? current.NextOnApprove : current.NextOnReject); var next = FindNextCriteria(context.Criteria, input.Approved ? current.NextOnApprove : current.NextOnReject);
await LogWorkflowDecisionAsync(context, current, next, input.Approved, input.Note); AddWorkflowDecisionRows(context, current, next, input.Approved, input.Note ?? string.Empty);
return await RunUntilWaitAsync(context, next); var result = await RunUntilWaitAsync(context, next);
await InsertWorkflowNoteAsync(
context,
$"Workflow {(input.Approved ? "Approved" : "Rejected")}: {current.Title}",
BuildWorkflowNoteContent(context.WorkflowNoteRows));
return result;
} }
private async Task<WorkflowRunResultDto> RunForEachKeyAsync( private async Task<WorkflowRunResultDto> RunForEachKeyAsync(
@ -522,7 +534,7 @@ public class ListFormWorkflowAppService : PlatformAppService, IListFormWorkflowA
informedRecipient = await SendInformEmailAsync(context, node); informedRecipient = await SendInformEmailAsync(context, node);
} }
await LogWorkflowNodeAsync(context, node, informedRecipient); AddWorkflowNodeRows(context, node, informedRecipient ?? string.Empty);
} }
private async Task<string> SendInformEmailAsync(WorkflowRunContext context, ListFormWorkflow node) private async Task<string> SendInformEmailAsync(WorkflowRunContext context, ListFormWorkflow node)
@ -590,7 +602,7 @@ public class ListFormWorkflowAppService : PlatformAppService, IListFormWorkflowA
"""; """;
} }
private async Task LogWorkflowDecisionAsync( private static void AddWorkflowDecisionRows(
WorkflowRunContext context, WorkflowRunContext context,
ListFormWorkflow current, ListFormWorkflow current,
ListFormWorkflow next, ListFormWorkflow next,
@ -598,16 +610,11 @@ public class ListFormWorkflowAppService : PlatformAppService, IListFormWorkflowA
string description) string description)
{ {
var action = approved ? "Approved" : "Rejected"; var action = approved ? "Approved" : "Rejected";
var subject = $"Workflow {action}: {current.Title}"; context.WorkflowNoteRows.Add(("Decision: ", $"{action}: {FormatNode(current)}"));
var rows = new List<(string Label, string Value)>(); context.WorkflowNoteRows.Add(("Description: ", description ?? string.Empty));
rows.Add(("Description", description ?? string.Empty));
rows.Add(("Next Step", FormatNode(next)));
await InsertWorkflowNoteAsync(context, subject, BuildWorkflowNoteContent(rows));
} }
private async Task LogWorkflowNodeAsync( private static void AddWorkflowNodeRows(
WorkflowRunContext context, WorkflowRunContext context,
ListFormWorkflow node, ListFormWorkflow node,
string informedRecipient) string informedRecipient)
@ -622,19 +629,12 @@ public class ListFormWorkflowAppService : PlatformAppService, IListFormWorkflowA
_ => "Processed" _ => "Processed"
}; };
var subject = $"Workflow {action}: {node.Title}"; context.WorkflowNoteRows.Add(($"{action}: ", $"{FormatNode(node)}"));
var rows = new List<(string Label, string Value)>();
if (!node.Approver.IsNullOrWhiteSpace()) if (!node.Approver.IsNullOrWhiteSpace())
{ {
rows.Add((node.Kind == "Inform" ? "Inform Target" : "Approver", node.Approver)); context.WorkflowNoteRows.Add((node.Kind == "Inform" ? "Inform: " : "Approver: ", node.Approver));
} }
if (!informedRecipient.IsNullOrWhiteSpace())
{
rows.Add(("Informed Email", informedRecipient));
}
await InsertWorkflowNoteAsync(context, subject, BuildWorkflowNoteContent(rows));
} }
private async Task InsertWorkflowNoteAsync( private async Task InsertWorkflowNoteAsync(
@ -1136,5 +1136,6 @@ public class ListFormWorkflowAppService : PlatformAppService, IListFormWorkflowA
IDictionary<string, object> Row) IDictionary<string, object> Row)
{ {
public HashSet<string> UserUpdatedFields { get; } = []; public HashSet<string> UserUpdatedFields { get; } = [];
public List<(string Label, string Value)> WorkflowNoteRows { get; } = [];
} }
} }

View file

@ -654,6 +654,7 @@ function WorkflowApprovalDecisionDialog({
className="input input-textarea mb-4 min-h-[96px] w-full resize-y" className="input input-textarea mb-4 min-h-[96px] w-full resize-y"
rows={4} rows={4}
value={note} value={note}
autoFocus
placeholder="Onay veya red aciklamasi" placeholder="Onay veya red aciklamasi"
onChange={(event) => setNote(event.target.value)} onChange={(event) => setNote(event.target.value)}
/> />