public async Task DeclineByMaster(int projectId, int claimId, Claim.DenialStatus claimDenialStatus, string commentText) { var claim = await LoadClaimForApprovalDecline(projectId, claimId, CurrentUserId); claim.EnsureCanChangeStatus(Claim.Status.DeclinedByMaster); claim.MasterDeclinedDate = Now; claim.ClaimStatus = Claim.Status.DeclinedByMaster; claim.ClaimDenialStatus = claimDenialStatus; var roomEmail = await CommonClaimDecline(claim); await _accommodationInviteService.DeclineAllClaimInvites(claimId).ConfigureAwait(false); var email = await AddCommentWithEmail <DeclineByMasterEmail>(commentText, claim, true, s => s.ClaimStatusChange, null, CommentExtraAction.DeclineByMaster); await UnitOfWork.SaveChangesAsync(); await EmailService.Email(email); if (roomEmail != null) { await EmailService.Email(roomEmail); } }
public async Task DeclineByMaster(int projectId, int claimId, Claim.DenialStatus claimDenialStatus, string commentText, bool deleteCharacter) { var claim = await LoadClaimForApprovalDecline(projectId, claimId, CurrentUserId); claim.EnsureCanChangeStatus(Claim.Status.DeclinedByMaster); claim.MasterDeclinedDate = Now; claim.ClaimStatus = Claim.Status.DeclinedByMaster; claim.ClaimDenialStatus = claimDenialStatus; var roomEmail = await CommonClaimDecline(claim); var statusWasApproved = claim.ClaimStatus == Claim.Status.Approved; if (deleteCharacter) { if (claim.Character is null || !statusWasApproved) { throw new InvalidOperationException("Attempt to delete character, but it not exists"); } DeleteCharacter(claim.Character, CurrentUserId); } await _accommodationInviteService.DeclineAllClaimInvites(claimId).ConfigureAwait(false); var email = await AddCommentWithEmail<DeclineByMasterEmail>(commentText, claim, true, s => s.ClaimStatusChange, null, CommentExtraAction.DeclineByMaster); await UnitOfWork.SaveChangesAsync(); await EmailService.Email(email); if (roomEmail != null) { await EmailService.Email(roomEmail); } }