private void ApprovalPostCreate(LocalPluginContext context) { var svc = context.OrganizationService; var approval = context.PluginExecutionContext.InputParameters["Target"] as Entity; var approvalDetails = new Approval(svc, approval); if (approvalDetails.CheckApprovalAssigned(svc)) { var agreement = approvalDetails.Agreement; var opportunity = approvalDetails.Opportunity; if ((ApprovalEntity)approvalDetails.ApprovalEntity.Value == ApprovalEntity.Agreement /*Agreement*/ && (ApprovalAction)approvalDetails.ApprovalAction.Value == ApprovalAction.Approved) { approvalDetails.CheckApproval(svc, approvalDetails, context.PluginExecutionContext.UserId, approvalDetails.AgreementRef.LogicalName); } else if ((ApprovalEntity)approvalDetails.ApprovalEntity.Value == ApprovalEntity.Opportunity /*Opportunity*/ && (ApprovalAction)approvalDetails.ApprovalAction.Value == ApprovalAction.Approved) { approvalDetails.CheckApproval(svc, approvalDetails, context.PluginExecutionContext.UserId, approvalDetails.AgreementRef.LogicalName); } else if ((ApprovalEntity)approvalDetails.ApprovalEntity.Value == ApprovalEntity.Agreement /*Agreement*/ && (ApprovalAction)approvalDetails.ApprovalAction.Value == ApprovalAction.Rejected) { approvalDetails.RejectAgreement(svc, approvalDetails, context.PluginExecutionContext.UserId); } else if ((ApprovalEntity)approvalDetails.ApprovalEntity.Value == ApprovalEntity.Opportunity /*Opportunity*/ && (ApprovalAction)approvalDetails.ApprovalAction.Value == ApprovalAction.Rejected) { approvalDetails.RejectOpportunity(svc, approvalDetails, context.PluginExecutionContext.UserId); } } }
private void ApprovalUpdate(LocalPluginContext context) { var svc = context.OrganizationService; var approval = new Approval(svc, context.PluginExecutionContext.InputParameters["Target"] as Entity); var preApproval = new Approval(svc, context.PreImage); OptionSetValue approvalEntity = null; OptionSetValue approvalAction = null; var agreement = approval.Agreement; var opportunity = approval.Opportunity; if (approval.ApprovalEntity != null) { approvalEntity = approval.ApprovalEntity; } else { approvalEntity = preApproval.ApprovalEntity; } if (approval.ApprovalAction != null) { approvalAction = approval.ApprovalAction; } else { approvalAction = preApproval.ApprovalAction; } if ((ApprovalEntity)approvalEntity.Value == ApprovalEntity.Agreement && (ApprovalAction)approvalAction.Value == ApprovalAction.Approved) { approval.CheckApproval(svc, approval, context.PluginExecutionContext.UserId, approval.AgreementRef.LogicalName); } else if ((ApprovalEntity)approvalEntity.Value == ApprovalEntity.Agreement && (ApprovalAction)approvalAction.Value == ApprovalAction.Rejected) { approval.RejectAgreement(svc, approval, context.PluginExecutionContext.UserId); } else if ((ApprovalEntity)approvalEntity.Value == ApprovalEntity.Opportunity && (ApprovalAction)approvalAction.Value == ApprovalAction.Approved) { approval.CheckApproval(svc, approval, context.PluginExecutionContext.UserId, approval.OpportunityRef.LogicalName); } else if ((ApprovalEntity)approvalEntity.Value == ApprovalEntity.Opportunity && (ApprovalAction)approvalAction.Value == ApprovalAction.Rejected) { approval.RejectOpportunity(svc, approval, context.PluginExecutionContext.UserId); } if ((ApprovalAction)approvalAction.Value == ApprovalAction.Approved || (ApprovalAction)approvalAction.Value == ApprovalAction.Rejected) { approval.SetApprovalStatus(svc, approval._Approval); } }