Add CloseAsync method to WorkflowRepository
Introduced a new asynchronous method `CloseAsync` in the `WorkflowRepository` class to handle workflow process closing. This method executes the `PRCUST_F19_CLOSING` stored procedure with parameters for user ID, source, process ID, closing method ID, comment, and rejection reason ID. It uses `FromSqlInterpolated` for safe SQL parameterization and retrieves results with `AsNoTracking()` and `ToListAsync(cancellationToken)`. The method returns the first result as a `WorkflowClosing` object or `null`.
This commit is contained in:
@@ -19,4 +19,35 @@ public sealed class WorkflowRepository(TaskFlowDbContext context) : IWorkflowRep
|
|||||||
|
|
||||||
return rows.FirstOrDefault();
|
return rows.FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<WorkflowClosing?> CloseAsync(
|
||||||
|
int userId,
|
||||||
|
string source,
|
||||||
|
long processId,
|
||||||
|
int closingMethodId,
|
||||||
|
string? comment,
|
||||||
|
byte? rejectionReasonId,
|
||||||
|
CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var rows = await context.WorkflowClosings
|
||||||
|
.FromSqlInterpolated($@"
|
||||||
|
DECLARE @ResultCode INT;
|
||||||
|
DECLARE @ResultMessage NVARCHAR(400);
|
||||||
|
|
||||||
|
EXEC dbo.PRCUST_F19_CLOSING
|
||||||
|
@UserID = {userId},
|
||||||
|
@Source = {source},
|
||||||
|
@ProcessID = {processId},
|
||||||
|
@ClosingMethodID = {closingMethodId},
|
||||||
|
@Comment = {comment},
|
||||||
|
@RejectionReasonID = {rejectionReasonId},
|
||||||
|
@ResultCode = @ResultCode OUTPUT,
|
||||||
|
@ResultMessage = @ResultMessage OUTPUT;
|
||||||
|
|
||||||
|
SELECT @ResultCode AS CODE, @ResultMessage AS RESULT;")
|
||||||
|
.AsNoTracking()
|
||||||
|
.ToListAsync(cancellationToken);
|
||||||
|
|
||||||
|
return rows.FirstOrDefault();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user