Example #1
0
        protected override void ExecuteCrmWorkFlowActivity(CodeActivityContext context, LocalWorkflowContext localContext)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }
            if (localContext == null)
            {
                throw new ArgumentNullException(nameof(localContext));
            }

            EntityReference emailToSend = EmailToSend.Get(context);
            Guid            roleId      = IsGuid(RecipientRole.Get(context));
            bool            sendEmail   = SendEmail.Get(context);

            if (roleId == Guid.Empty)
            {
                throw new InvalidWorkflowException("Invalid Role GUID");
            }

            List <Entity> toList = new List <Entity>();

            Entity email = RetrieveEmail(localContext.OrganizationService, emailToSend.Id);

            if (email == null)
            {
                UsersAdded.Set(context, 0);
                return;
            }

            //Add any pre-defined recipients specified to the array
            foreach (Entity activityParty in email.GetAttributeValue <EntityCollection>("to").Entities)
            {
                toList.Add(activityParty);
            }

            EntityCollection users = GetRoleUsers(localContext.OrganizationService, roleId);

            toList = ProcessUsers(users, toList);

            //Update the email
            email["to"] = toList.ToArray();
            localContext.OrganizationService.Update(email);

            //Send
            if (sendEmail)
            {
                SendEmailRequest request = new SendEmailRequest
                {
                    EmailId       = emailToSend.Id,
                    TrackingToken = string.Empty,
                    IssueSend     = true
                };

                localContext.OrganizationService.Execute(request);
            }

            UsersAdded.Set(context, toList.Count);
        }
Example #2
0
 private void LoadRecipientRole()
 {
     foreach (string name in Enum.GetNames(typeof(RecipientRoles)))
     {
         using (var uow = new UnitOfWork(this.Session.DataLayer))
         {
             if (uow.FindObject <RecipientRole>(CriteriaOperator.Parse("Recipient == ?", name)) == null)
             {
                 RecipientRole recipient = new RecipientRole(uow)
                 {
                     Recipient = name
                 };
                 uow.CommitChanges();
             }
         }
     }
 }
Example #3
0
        protected override void Execute(CodeActivityContext executionContext)
        {
            ITracingService             tracer         = executionContext.GetExtension <ITracingService>();
            IWorkflowContext            context        = executionContext.GetExtension <IWorkflowContext>();
            IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>();
            IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.UserId);

            try
            {
                EntityReference emailToSend = EmailToSend.Get(executionContext);
                Guid            roleId      = IsGuid(RecipientRole.Get(executionContext));
                bool            sendEmail   = SendEmail.Get(executionContext);

                if (roleId == Guid.Empty)
                {
                    tracer.Trace("Invalid Role GUID");
                    throw new InvalidWorkflowException("Invalid Role GUID");
                }

                List <Entity> toList = new List <Entity>();

                Entity email = RetrieveEmail(service, emailToSend.Id);

                if (email == null)
                {
                    UsersAdded.Set(executionContext, 0);
                    return;
                }

                //Add any pre-defined recipients specified to the array
                foreach (Entity activityParty in email.GetAttributeValue <EntityCollection>("to").Entities)
                {
                    toList.Add(activityParty);
                }

                EntityCollection users = GetRoleUsers(service, roleId);

                toList = ProcessUsers(users, toList);

                //Update the email
                email["to"] = toList.ToArray();
                service.Update(email);

                //Send
                if (sendEmail)
                {
                    SendEmailRequest request = new SendEmailRequest
                    {
                        EmailId       = emailToSend.Id,
                        TrackingToken = string.Empty,
                        IssueSend     = true
                    };

                    service.Execute(request);
                }

                UsersAdded.Set(executionContext, toList.Count);
            }
            catch (Exception ex)
            {
                tracer.Trace("Exception: {0}", ex.ToString());
            }
        }