Exemplo n.º 1
0
        /// <summary>
        /// Generate PartyList when it is only intended to be create Email
        /// </summary>
        /// <param name="relatedEntities">Related entities collection</param>
        /// <param name="partylist">party list collection</param>
        /// <param name="globalConfiguration">Dictionary of notification global configuration</param>
        /// <param name="templateId">Email Template Id unique identifier</param>
        /// <param name="emailTemplateOption">Email Template option</param>
        /// <param name="service">organization service</param>
        /// <returns>Collection of email objects</returns>
        internal static EntityCollection GenerateEmail(List <Entity> relatedEntities, List <PartyList> partylist, Dictionary <string, dynamic> globalConfiguration, Guid?templateId, int?emailTemplateOption, IOrganizationService service)
        {
            // To partyList only for user entity
            var toUserPartyList     = GetToUserPartyList(partylist, relatedEntities[0].LogicalName).ToList <PartyList>();
            var carbonCopyPartyList = GetCCPartyList(partylist, relatedEntities[0].LogicalName).ToList <PartyList>();
            var bccPartyList        = GetBCCPartyList(partylist, relatedEntities[0].LogicalName).ToList <PartyList>();

            // Create Entity Collection to send email in bulk through action calling
            EntityCollection sendEmailList = new EntityCollection();

            sendEmailList.EntityName = "email";

            var toOtherPartyList = GetToOtherPartyList(partylist, relatedEntities[0].LogicalName).ToList <PartyList>();

            foreach (Entity ent in relatedEntities)
            {
                // Get Email object using Email Template
                Entity emailObject = GetEmailUsingTemplate(ent, templateId, emailTemplateOption, service);

                var toUserRelatedPartyList  = GetToUserRelatedPartyList(partylist, ent.LogicalName, ent.Id).ToList <PartyList>();
                var toOtherRelatedPartyList = GetToOtherRelatedPartyList(partylist, ent.LogicalName, ent.Id).ToList <PartyList>();

                toOtherRelatedPartyList.AddRange(toUserPartyList);
                toOtherRelatedPartyList.AddRange(toUserRelatedPartyList);
                toOtherRelatedPartyList.AddRange(toOtherPartyList);
                toOtherRelatedPartyList = toOtherRelatedPartyList.GroupBy(x => x.PartyId).Select(p => p.First()).ToList <PartyList>();

                var carbonCopyRelatedPartyList = GetCCRelatedPartyList(partylist, ent.LogicalName, ent.Id).ToList <PartyList>();
                carbonCopyRelatedPartyList.AddRange(carbonCopyPartyList);
                carbonCopyRelatedPartyList = carbonCopyRelatedPartyList.GroupBy(x => x.PartyId).Select(p => p.First()).ToList <PartyList>();

                var bccRelatedPartyList = GetBCCRelatedPartyList(partylist, ent.LogicalName, ent.Id).ToList <PartyList>();
                bccRelatedPartyList.AddRange(bccPartyList);
                bccRelatedPartyList = bccRelatedPartyList.GroupBy(x => x.PartyId).Select(p => p.First()).ToList <PartyList>();

                Entity emailEnt = NotificationActivityHandler.CreateEmailInstance(ent, toOtherRelatedPartyList, carbonCopyRelatedPartyList, bccRelatedPartyList, null, globalConfiguration, emailObject);
                sendEmailList.Entities.Add(emailEnt);
                //// sendEmailList.Entities.Add(new Entity("email") { Id = emailId });
            }

            return(sendEmailList);
            //// Call Glocal action SendEmailActivity to send bulk email

            /*if (isSendEmail)
             * {
             *  OrganizationRequest req = new OrganizationRequest("didd_SendEmailActivity");
             *  req["EmailActivities"] = sendEmailList;
             *  service.Execute(req);
             * }*/
        }
Exemplo n.º 2
0
        /// <summary>
        /// Generate PartyList for Task
        /// </summary>
        /// <param name="relatedEntities">Related entities details</param>
        /// <param name="partylist">party list</param>
        /// <param name="service">Organization service</param>
        internal static void GenerateTask(List <Entity> relatedEntities, List <PartyList> partylist, IOrganizationService service)
        {
            // Create task for each related query
            var toUserPartyList = GetToUserPartyList(partylist, relatedEntities[0].LogicalName).ToList <PartyList>();

            foreach (Entity ent in relatedEntities)
            {
                var toUserRelatedPartyList = GetToUserRelatedPartyList(partylist, ent.LogicalName, ent.Id).ToList <PartyList>();
                toUserRelatedPartyList.AddRange(toUserPartyList);
                toUserRelatedPartyList = toUserRelatedPartyList.GroupBy(x => x.PartyId).Select(p => p.First()).ToList <PartyList>();

                foreach (PartyList lst in toUserRelatedPartyList)
                {
                    // create task for each party
                    NotificationActivityHandler.CreateTask(ent, lst, service);
                }
            }
        }