public PartakerReqViewModel ReviewPartakerReq(Guid partakerReqId, ReviewStatuses reviewStatus) { var req = PartakerReqExistsResult.Check(m_PartakerReqManager, partakerReqId).ThrowIfFailed().PartakerReq; if (req.ReviewStatus != ReviewStatuses.Unspecified) { throw new FineWorkException($"Invalid ReviewStatus {reviewStatus}."); } //申请必须尚未审批 if (req.ReviewStatus != ReviewStatuses.Unspecified) { throw new FineWorkException($"申请已经由他人审批."); } //审批人必须是任务的参与者 var reviewerPartaker = AccountIsPartakerResult.Check(req.Task, this.AccountId).ThrowIfFailed().Partaker; //本方法只能用于审批协同者或指导者 bool isPartakerKindIsReviewable = (req.PartakerKind == PartakerKinds.Collaborator) || (req.PartakerKind == PartakerKinds.Mentor); if (!isPartakerKindIsReviewable) { throw new FineWorkException("本方法只能用于审批协同者或指导者."); } //审批人必须有权审批(审批人必须是任务负责人,或者任务允许成员邀请相应的参与者) bool hasReviewAuthority = (reviewerPartaker.Kind == PartakerKinds.Leader) || (req.PartakerKind == PartakerKinds.Collaborator && req.Task.IsCollabratorInvEnabled) || (req.PartakerKind == PartakerKinds.Mentor && req.Task.IsMentorInvEnabled); if (!hasReviewAuthority) { throw new FineWorkException("用户无权审批申请."); } m_PartakerReqManager.ReviewPartakerReq(req, reviewStatus); return req.ToViewModel(); }
public IActionResult ReviewPartakerInv(Guid partakerInvId, ReviewStatuses newRevStatus) { var partakerInv = PartakerInvExistsResult.CheckPending(this.m_PartakerInvManager, partakerInvId) .ThrowIfFailed() .PartakerInv; var partakerInvEntity= this.m_PartakerInvManager.ReviewPartakerInv(partakerInv, newRevStatus); //发送群通知 if (newRevStatus == ReviewStatuses.Approved) { var message = string.Format(m_Configuration["LeanCloud:Messages:Task:Join"], partakerInvEntity.Staff.Name); m_IIMService.SendTextMessageByConversationAsync(partakerInvEntity.Task.Id, this.AccountId, partakerInvEntity.Task.ConversationId, partakerInvEntity.Task.Name, message); } return new HttpStatusCodeResult(200); }