PCRB follow up client side logic
This commit is contained in:
@ -13,6 +13,7 @@ public interface IApprovalService {
|
||||
Task<IEnumerable<User>> GetApprovalGroupMembers(int subRoleId);
|
||||
Task CreateApproval(Approval approval);
|
||||
Task UpdateApproval(Approval approval);
|
||||
Task DeleteApproval(int approvalID);
|
||||
Task Approve(Approval approval);
|
||||
Task Deny(Approval approval);
|
||||
Task<IEnumerable<Approval>> GetApprovalsForIssueId(int issueId, bool bypassCache);
|
||||
@ -40,12 +41,11 @@ public class ApprovalService : IApprovalService {
|
||||
|
||||
StringBuilder queryBuilder = new();
|
||||
queryBuilder.Append("insert into Approval (IssueID, RoleName, SubRole, UserID, SubRoleID, ItemStatus, ");
|
||||
queryBuilder.Append("AssignedDate, DocumentTypeID, DisplayDeniedDocument, Step, TaskID) ");
|
||||
queryBuilder.Append($"values ({approval.IssueID}, '{approval.RoleName}', '{approval.SubRole}', {approval.UserID}, ");
|
||||
queryBuilder.Append($"{approval.SubRoleID}, 0, '{approval.AssignedDate.ToString("yyyy-MM-dd HH:mm:ss")}', ");
|
||||
queryBuilder.Append($"3, 0, {approval.Step}, {approval.TaskID});");
|
||||
queryBuilder.Append("AssignedDate, DocumentTypeID, DisplayDeniedDocument, Step, TaskID, CompletedDate) ");
|
||||
queryBuilder.Append("values (@IssueID, @RoleName, @SubRole, @UserID, @SubRoleID, 0, @AssignedDate, 3, 0, @Step, ");
|
||||
queryBuilder.Append("@TaskID, @CompletedDate)");
|
||||
|
||||
int rowsCreated = await _dalService.ExecuteAsync(queryBuilder.ToString());
|
||||
int rowsCreated = await _dalService.ExecuteAsync(queryBuilder.ToString(), approval);
|
||||
|
||||
if (rowsCreated <= 0) throw new Exception("Unable to insert approval in database");
|
||||
|
||||
@ -70,19 +70,16 @@ public class ApprovalService : IApprovalService {
|
||||
if (approvals is null || approvals.Count() == 0) {
|
||||
StringBuilder queryBuilder = new();
|
||||
queryBuilder.Append("select a.*, src.SubRoleCategoryItem from Approval a ");
|
||||
queryBuilder.Append("join SubRole sr on a.SubRoleID=sr.SubRoleID ");
|
||||
queryBuilder.Append("join SubRoleCategory src on sr.SubRoleCategoryID=src.SubRoleCategoryID ");
|
||||
queryBuilder.Append("left outer join SubRole sr on a.SubRoleID=sr.SubRoleID ");
|
||||
queryBuilder.Append("left outer join SubRoleCategory src on sr.SubRoleCategoryID=src.SubRoleCategoryID ");
|
||||
queryBuilder.Append($"where a.IssueID={issueId}");
|
||||
|
||||
approvals = (await _dalService.QueryAsync<Approval>(queryBuilder.ToString())).ToList();
|
||||
|
||||
foreach (Approval approval in approvals) {
|
||||
int successfulUpdates = 0;
|
||||
|
||||
User? user = await _userService.GetUserByUserId(approval.UserID);
|
||||
if (user is not null) {
|
||||
approval.User = user;
|
||||
successfulUpdates++;
|
||||
}
|
||||
|
||||
if (approval.ItemStatus < 0)
|
||||
@ -91,6 +88,9 @@ public class ApprovalService : IApprovalService {
|
||||
approval.StatusMessage = "Assigned";
|
||||
if (approval.ItemStatus > 0)
|
||||
approval.StatusMessage = "Approved";
|
||||
|
||||
if (string.IsNullOrWhiteSpace(approval.SubRoleCategoryItem))
|
||||
approval.SubRoleCategoryItem = approval.RoleName;
|
||||
}
|
||||
|
||||
_cache.Set($"approvals{issueId}", approvals, DateTimeOffset.Now.AddMinutes(5));
|
||||
@ -217,8 +217,8 @@ public class ApprovalService : IApprovalService {
|
||||
if (approvals is null) {
|
||||
StringBuilder queryBuilder = new();
|
||||
queryBuilder.Append($"select a.*, src.SubRoleCategoryItem from Approval a ");
|
||||
queryBuilder.Append("join SubRole sr on a.SubRoleID=sr.SubRoleID ");
|
||||
queryBuilder.Append("join SubRoleCategory src on sr.SubRoleCategoryID=src.SubRoleCategoryID ");
|
||||
queryBuilder.Append("left outer join SubRole sr on a.SubRoleID=sr.SubRoleID ");
|
||||
queryBuilder.Append("left outer join SubRoleCategory src on sr.SubRoleCategoryID=src.SubRoleCategoryID ");
|
||||
queryBuilder.Append($"where UserID={userId} and ItemStatus=0 and ");
|
||||
queryBuilder.Append($"(AssignedDate is not null and ");
|
||||
queryBuilder.Append($"AssignedDate <= '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}' and ");
|
||||
@ -265,6 +265,23 @@ public class ApprovalService : IApprovalService {
|
||||
}
|
||||
}
|
||||
|
||||
public async Task DeleteApproval(int approvalID) {
|
||||
try {
|
||||
_logger.LogInformation($"Attempting to delete approval with ID: {approvalID}");
|
||||
|
||||
if (approvalID <= 0) throw new ArgumentException("Invalid approval ID");
|
||||
|
||||
string sql = "delete from Approval where ApprovalID=@ApprovalID";
|
||||
|
||||
int rowsDeleted = await _dalService.ExecuteAsync(sql, new { ApprovalID = approvalID });
|
||||
|
||||
if (rowsDeleted <= 0) throw new Exception("unable to delete approval from database");
|
||||
} catch (Exception ex) {
|
||||
_logger.LogError($"Unable to delete approval with ID: {approvalID}, because {ex.Message}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task Approve(Approval approval) {
|
||||
try {
|
||||
_logger.LogInformation("Attempting to submit approval");
|
||||
|
Reference in New Issue
Block a user