private void
SendEmail(IOrganizationService service, Entity entity, Entity
postImageEntity)
        {
            Email
email = new Email();
            string
optAttendees = "";
            string
reqAttendees = "";
            string
status = "";
            #region Get Server Url
            string
serverUrl = GetServerUrl(service);
            string
recordUrl = serverUrl + "/main.aspx?etn="
+ entity.LogicalName + "&pagetype=entityrecord&id="
+ entity.Id.ToString();
            #endregion
            EntityCollection
requiredAttendees = new EntityCollection();
            DateTime
startDate = new DateTime();
            DateTime
endDate = new DateTime();
            string
subject = "";
            string
descriptoion = "";
            string
minutesofMeeting = "";
            #region Get value from
Appointment/Recurring Appointment
            EntityReference
regardingObjectId = new EntityReference();
            OptionSetValue
activityReference = new OptionSetValue();
            EntityCollection
optionalAttendees = new EntityCollection();
            EntityReference
ownerId = (EntityReference)postImageEntity["ownerid"];
            if
(postImageEntity.Attributes.Contains("scheduledstart"))
            {
                startDate = (DateTime)postImageEntity["scheduledstart"];
                startDate =
startDate.ToLocalTime();
            }
            if
(postImageEntity.Attributes.Contains("scheduledend"))
            {
                endDate = (DateTime)postImageEntity["scheduledend"];
                endDate =
endDate.ToLocalTime();
            }
            if
(postImageEntity.Attributes.Contains("subject"))
            {
                subject = postImageEntity["subject"].ToString();
            }
            if
(postImageEntity.Attributes.Contains("description"))
            {
                descriptoion = postImageEntity["description"].ToString();
            }
            if
(postImageEntity.Attributes.Contains("lbg_activityreference"))
            {
                activityReference = (OptionSetValue)postImageEntity["lbg_activityreference"];
                if
(activityReference.Value == 862870000)
                {
                    status = "Business Meeting";
                }
                if
(activityReference.Value == 862870001)
                {
                    status = "Client Annual Review";
                }
                if
(activityReference.Value == 862870002)
                {
                    status = "Client Query / Request";
                }
                if
(activityReference.Value == 862870003)
                {
                    status = "Client Call";
                }
                if
(activityReference.Value == 862870004)
                {
                    status = "Deal Pitch";
                }
                if
(activityReference.Value == 862870005)
                {
                    status = "Product Introduction";
                }
                if
(activityReference.Value == 862870006)
                {
                    status = "e-Channel Setup";
                }
                if
(activityReference.Value == 862870007)
                {
                    status = "Mifid";
                }
                if
(activityReference.Value == 862870008)
                {
                    status = "Marketing Event";
                }
                if
(activityReference.Value == 862870009)
                {
                    status = "Product Roadshow";
                }
                if
(activityReference.Value == 862870010)
                {
                    status = "Internal Client Meeting";
                }
                if
(activityReference.Value == 862870011)
                {
                    status = "Other";
                }
                if
(activityReference.Value == 862870012)
                {
                    status = "News Information";
                }
                if
(activityReference.Value == 862870013)
                {
                    status = "Research Material";
                }
                if
(activityReference.Value == 862870014)
                {
                    status = "Client Complaint";
                }
                if
(activityReference.Value == 862870016)
                {
                    status = "Client Financial Results";
                }
                if
(activityReference.Value == 862870017)
                {
                    status = "Collaboration Topic";
                }
                if
(activityReference.Value == 862870018)
                {
                    status = "Credit Annual Review";
                }
                if
(activityReference.Value == 862870019)
                {
                    status = "Customer Charter – Full Day";
                }
                if
(activityReference.Value == 862870020)
                {
                    status = "Customer Charter – F2F Pricing";
                }
            }
            EntityCollection
template = GetTemplateDetails(service, "Appointment
Send Minutes");
            EntityReference
userId = (EntityReference)postImageEntity["createdby"];
            if
(postImageEntity.Attributes.Contains("regardingobjectid"))
            {
                regardingObjectId = (EntityReference)postImageEntity["regardingobjectid"];
            }
            if
(postImageEntity.Attributes.Contains("optionalattendees"))
            {
                optionalAttendees =
postImageEntity.GetAttributeValue<EntityCollection>("optionalattendees");
            }
            if
(postImageEntity.Attributes.Contains("requiredattendees"))
            {
                requiredAttendees = postImageEntity.GetAttributeValue<EntityCollection>("requiredattendees");
            }
            #endregion
            ActivityParty
fromParty = new ActivityParty
            {
                PartyId = new EntityReference(SystemUser.EntityLogicalName, userId.Id)
            };
            #region Retreive Participants
            ActivityParty[]
sendTo = new ActivityParty[optionalAttendees.Entities.Count
+ requiredAttendees.Entities.Count];
            for
(int i = 0; i <
optionalAttendees.Entities.Count; i++)
            {
                ActivityParty
toParty = new ActivityParty();
                Guid
partyId = ((EntityReference)((EntityCollection)postImageEntity["optionalattendees"]).Entities[i].Attributes["partyid"]).Id;
                if
(((EntityReference)((EntityCollection)postImageEntity["optionalattendees"]).Entities[i].Attributes["partyid"]).LogicalName == "systemuser")
                {
                    toParty.PartyId = new EntityReference(SystemUser.EntityLogicalName, partyId);
  
                 sendTo[i] =
toParty;
                }
                optAttendees += ((EntityReference)((EntityCollection)postImageEntity["optionalattendees"]).Entities[i].Attributes["partyid"]).Name + ",";
            }
            int
j = 0;
            for (int i = optionalAttendees.Entities.Count; i <
requiredAttendees.Entities.Count + optionalAttendees.Entities.Count; i++)
            {
                ActivityParty
toParty = new ActivityParty();
                Guid
partyId = ((EntityReference)((EntityCollection)postImageEntity["requiredattendees"]).Entities[j].Attributes["partyid"]).Id;
                if
(((EntityReference)((EntityCollection)postImageEntity["requiredattendees"]).Entities[j].Attributes["partyid"]).LogicalName == "systemuser")
                {
                    toParty.PartyId = new EntityReference(SystemUser.EntityLogicalName, partyId);
                    sendTo[i] = toParty;
                }
                reqAttendees += ((EntityReference)((EntityCollection)postImageEntity["requiredattendees"]).Entities[j].Attributes["partyid"]).Name + ",";
                j++;
            }
            #endregion
            #region Create email
            if
(optAttendees.Length > 0)
            {
               optAttendees=
optAttendees.Remove(optAttendees.Length - 1);
            }
            foreach
(Entity emailTemplate in template.Entities)
            {
                email.Subject =
GetDataFromXml(emailTemplate["subject"].ToString(),
"match");
                email.Description =
GetDataFromXml(emailTemplate.Attributes["body"].ToString(),
"match");
                email.Subject =
email.Subject.ToString().Replace("[Subject]",
subject);
                email.Description = email.Description.ToString().Replace("[Description]", descriptoion);
                email.Description =
email.Description.ToString().Replace("[Activity
Reference]", status);
                email.Description =
email.Description.ToString().Replace("[Minutes
of meeting]", minutesofMeeting);
                email.Description =
email.Description.ToString().Replace("[Start
Time]", Convert.ToString(startDate));
                email.Description =
email.Description.ToString().Replace("[End
Time]", Convert.ToString(endDate));
                email.Description =
email.Description.ToString().Replace("[Optional
Attendees]", optAttendees);
                email.Description =
email.Description.ToString().Replace("[Rquired
Attendees]", reqAttendees);
                string
urlToReplace = "<a href='" +
recordUrl + "'>" +recordUrl+"</a>";
                email.Description =
email.Description.ToString().Replace("URL:[URL",
urlToReplace);
            }
            email.To = sendTo;
            //email.OwnerId
= ownerId;
            email.From = new ActivityParty[]
{ fromParty };
            email.DirectionCode = true;
            Guid
_emailId = service.Create(email);
            #endregion
            #region send mail
 
No comments:
Post a Comment