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