public void ApproveFor(Editor editor) { var request = ApprovalRequests.FirstOrDefault(ar => ar.Editor.Equals(editor)); if (request != null) { request.Approve(); CheckCompletion(); } }
public void RejectFor(Editor editor, string reason) { var request = ApprovalRequests.FirstOrDefault(ar => ar.Editor.Equals(editor)); if (request != null) { request.Reject(reason); CheckCompletion(); } }
private void CheckCompletion() { if (Status != ApprovalStatus.Pending) { return; } if (ApprovalRequests.Any(r => r.Status == ApprovalStatus.Rejected)) { Status = ApprovalStatus.Rejected; DomainEventBus.Current.Raise(new PromotionRejected(PromotionId)); return; } if (ApprovalRequests.Count(r => r.Status == ApprovalStatus.Accepted) >= 2) { Status = ApprovalStatus.Accepted; DomainEventBus.Current.Raise(new PromotionApproved(PromotionId)); } }
public ApprovalRequests GetApprovalRequests(byte[] result) { return(ApprovalRequests.ParseFrom(result)); }