public string AddLevel2Calendar(string strOppID, SLXapi.Opportunity slxOpp, SLXapi.OpportunitySolutions2 slxOppS2,string outlookid, int sessionIndex) { Microsoft.Office.Interop.Outlook.AppointmentItem appt = null; string strEntryID = string.Empty; if(sessionIndex == 1) strEntryID = slxOppS2.SESSION1OUTLOOKID; else if (sessionIndex == 2) strEntryID = slxOppS2.SESSION2OUTLOOKID; else if (sessionIndex == 3) strEntryID = slxOppS2.SESSION3OUTLOOKID; else if (sessionIndex == 4) strEntryID = slxOppS2.SESSION4OUTLOOKID; else if (sessionIndex == 5) strEntryID = slxOppS2.SESSION5OUTLOOKID; else if (sessionIndex == 6) strEntryID = slxOppS2.SESSION6OUTLOOKID; else if (sessionIndex == 7) strEntryID = slxOppS2.SESSION7OUTLOOKID; else if (sessionIndex == 8) strEntryID = slxOppS2.SESSION8OUTLOOKID; Microsoft.Office.Interop.Outlook._Application olApp = new Microsoft.Office.Interop.Outlook.Application(); if (olApp == null) { return "Failed to create Outlook Application"; } Microsoft.Office.Interop.Outlook._NameSpace olNS = olApp.GetNamespace("MAPI"); Microsoft.Office.Interop.Outlook.MAPIFolder calendarFolder = olNS.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olPublicFoldersAllPublicFolders); Microsoft.Office.Interop.Outlook.MAPIFolder oPRICalendar = (Microsoft.Office.Interop.Outlook.MAPIFolder)calendarFolder.Folders["PRI Calendar"]; bool apptExists = false; if (strEntryID.Length > 10) { try { appt = olNS.GetItemFromID(strEntryID); //if (appt.EntryID == strEntryID) // apptExists = true; //appt.Delete(); //appt = (Microsoft.Office.Interop.Outlook.AppointmentItem)oPRICalendar.Items.Add(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem); } catch (System.Exception) { appt = (Microsoft.Office.Interop.Outlook.AppointmentItem)oPRICalendar.Items.Add(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem); } } else { appt = (Microsoft.Office.Interop.Outlook.AppointmentItem)oPRICalendar.Items.Add(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem); } string trainerInitials = string.Empty; try { List<SLXapi.Opportunity_Trainers> oppT = SLXapi.Opportunity_Trainers.GetByOpportunityID(slxOpp.OpportunityID); //create the opp trainer initial string if (oppT.Count > 0) trainerInitials += "("; for (int i = 0; i < oppT.Count; ++i) { SLXapi.Contact contact = SLXapi.Contact.GetByID(oppT[i].contactid); string initials = contact.firstname[0].ToString().ToUpper() + contact.lastname[0].ToString().ToUpper(); trainerInitials += initials; if (i + 1 < oppT.Count) trainerInitials += ","; } if (oppT.Count > 0) trainerInitials += ")"; } catch (System.Exception e) { return "There was an exception adding the trainer initials " + e.Message; } string description = string.Empty; if (sessionIndex == 1) { description = slxOppS2.SESSION1DESC; appt.Start = slxOppS2.SESSION1DATE; appt.End = slxOppS2.SESSION1DATE; } if (sessionIndex == 2) { description = slxOppS2.SESSION2DESC; appt.Start = slxOppS2.SESSION2DATE; appt.End = slxOppS2.SESSION2DATE; } if (sessionIndex == 3) { description = slxOppS2.SESSION3DESC; appt.Start = slxOppS2.SESSION3DATE; appt.End = slxOppS2.SESSION3DATE; } if (sessionIndex == 4) { description = slxOppS2.SESSION4DESC; appt.Start = slxOppS2.SESSION4DATE; appt.End = slxOppS2.SESSION4DATE; } if (sessionIndex == 5) { description = slxOppS2.SESSION5DESC; appt.Start = slxOppS2.SESSION5DATE; appt.End = slxOppS2.SESSION5DATE; } if (sessionIndex == 6) { description = slxOppS2.SESSION6DESC; appt.Start = slxOppS2.SESSION6DATE; appt.End = slxOppS2.SESSION6DATE; } if (sessionIndex == 7) { description = slxOppS2.SESSION7DESC; appt.Start = slxOppS2.SESSION7DATE; appt.End = slxOppS2.SESSION7DATE; } if (sessionIndex == 8) { description = slxOppS2.SESSION8DESC; appt.Start = slxOppS2.SESSION8DATE; appt.End = slxOppS2.SESSION8DATE; } appt.Subject = slxOpp.Type + " - " + description + " " + trainerInitials ; if (!apptExists) slxOpp.OutlookBodyText = "http://fogbugz.askpri.org/default.asp?" + slxOpp.FogBugzMainTicket; appt.Body = slxOpp.OutlookBodyText; appt.Location = slxOpp.Location; appt.AllDayEvent = true; appt.ReminderSet = false; appt.ReminderMinutesBeforeStart = 0; appt.Importance = Microsoft.Office.Interop.Outlook.OlImportance.olImportanceNormal; appt.BusyStatus = Microsoft.Office.Interop.Outlook.OlBusyStatus.olFree; try { //oPRICalendar.Items.Add(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem appt.Save(); } catch (COMException ex) { Console.WriteLine(ex.ToString()); return "There was an exception when saving appointment " + ex.Message; } strEntryID = appt.EntryID; //slxOpp.OutlookID = appt.EntryID; //SLXapi.Opportunity.Save(slxOpp); if(sessionIndex == 1) { slxOppS2.SESSION1OUTLOOKID = appt.EntryID; } if(sessionIndex == 2) { slxOppS2.SESSION2OUTLOOKID = appt.EntryID; } if(sessionIndex == 3) { slxOppS2.SESSION3OUTLOOKID = appt.EntryID; } if(sessionIndex == 4) { slxOppS2.SESSION4OUTLOOKID = appt.EntryID; } if(sessionIndex == 5) { slxOppS2.SESSION5OUTLOOKID = appt.EntryID; } if(sessionIndex == 6) { slxOppS2.SESSION6OUTLOOKID = appt.EntryID; } if(sessionIndex == 7) { slxOppS2.SESSION7OUTLOOKID = appt.EntryID; } if(sessionIndex == 8) { slxOppS2.SESSION8OUTLOOKID = appt.EntryID; } SLXapi.OpportunitySolutions2.Save(slxOppS2); return "Successfully Added to Outlook Calendar"; }
public string AddLevel2Calendar(ExchangeService service, string strOppID, SLXapi.Opportunity slxOpp, SLXapi.OpportunitySolutions2 slxOppS2, string outlookid, int sessionIndex) { string strEntryID = string.Empty; if (sessionIndex == 1) strEntryID = slxOppS2.SESSION1OUTLOOKID; else if (sessionIndex == 2) strEntryID = slxOppS2.SESSION2OUTLOOKID; else if (sessionIndex == 3) strEntryID = slxOppS2.SESSION3OUTLOOKID; else if (sessionIndex == 4) strEntryID = slxOppS2.SESSION4OUTLOOKID; else if (sessionIndex == 5) strEntryID = slxOppS2.SESSION5OUTLOOKID; else if (sessionIndex == 6) strEntryID = slxOppS2.SESSION6OUTLOOKID; else if (sessionIndex == 7) strEntryID = slxOppS2.SESSION7OUTLOOKID; else if (sessionIndex == 8) strEntryID = slxOppS2.SESSION8OUTLOOKID; //service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "*****@*****.**"); var userMailbox = new Mailbox(CALENDAR_EMAIL); FolderId folderId = new FolderId(WellKnownFolderName.Calendar, userMailbox); //Folder calendarFolder = Folder.Bind(service, folderId); //var itemView = new ItemView(20); // page size //var userItems = service.FindItems(folderId, itemView); bool apptExists = false; // Verify that the appointment was created by using the appointment's item ID. Appointment appt = null; try { ItemId idObj = new ItemId(strEntryID); appt = Appointment.Bind(service, idObj, new PropertySet(AppointmentSchema.Id, AppointmentSchema.Subject, AppointmentSchema.Start, AppointmentSchema.End)); if (appt.Id.UniqueId == strEntryID) apptExists = true; } catch (Exception) { } string trainerInitials = string.Empty; try { List<SLXapi.Opportunity_Trainers> oppT = SLXapi.Opportunity_Trainers.GetByOpportunityID(slxOpp.OpportunityID); //create the opp trainer initial string if (oppT.Count > 0) trainerInitials += "("; for (int i = 0; i < oppT.Count; ++i) { SLXapi.Contact contact = SLXapi.Contact.GetByID(oppT[i].contactid); string initials = contact.firstname[0].ToString().ToUpper() + contact.lastname[0].ToString().ToUpper(); trainerInitials += initials; if (i + 1 < oppT.Count) trainerInitials += ","; } if (oppT.Count > 0) trainerInitials += ")"; } catch (System.Exception e) { return "There was an exception adding the trainer initials " + e.Message; } if (appt == null) appt = new Appointment(service); string description = string.Empty; if (sessionIndex == 1) { description = slxOppS2.SESSION1DESC; appt.Start = slxOppS2.SESSION1DATE; appt.End = slxOppS2.SESSION1DATE; } if (sessionIndex == 2) { description = slxOppS2.SESSION2DESC; appt.Start = slxOppS2.SESSION2DATE; appt.End = slxOppS2.SESSION2DATE; } if (sessionIndex == 3) { description = slxOppS2.SESSION3DESC; appt.Start = slxOppS2.SESSION3DATE; appt.End = slxOppS2.SESSION3DATE; } if (sessionIndex == 4) { description = slxOppS2.SESSION4DESC; appt.Start = slxOppS2.SESSION4DATE; appt.End = slxOppS2.SESSION4DATE; } if (sessionIndex == 5) { description = slxOppS2.SESSION5DESC; appt.Start = slxOppS2.SESSION5DATE; appt.End = slxOppS2.SESSION5DATE; } if (sessionIndex == 6) { description = slxOppS2.SESSION6DESC; appt.Start = slxOppS2.SESSION6DATE; appt.End = slxOppS2.SESSION6DATE; } if (sessionIndex == 7) { description = slxOppS2.SESSION7DESC; appt.Start = slxOppS2.SESSION7DATE; appt.End = slxOppS2.SESSION7DATE; } if (sessionIndex == 8) { description = slxOppS2.SESSION8DESC; appt.Start = slxOppS2.SESSION8DATE; appt.End = slxOppS2.SESSION8DATE; } appt.Subject = slxOpp.Type + " - " + description + " " + trainerInitials + "; Webinar"; if (!apptExists) slxOpp.OutlookBodyText = "http://fogbugz.askpri.org/default.asp?" + slxOpp.FogBugzMainTicket; appt.Body = slxOpp.OutlookBodyText; appt.Location = slxOpp.Location; //appt.Start = slxOpp.StartDate; //appt.End = slxOpp.EndDate; appt.IsAllDayEvent = true; appt.IsReminderSet = false; appt.ReminderMinutesBeforeStart = 0; appt.Importance = Importance.Normal; appt.LegacyFreeBusyStatus = LegacyFreeBusyStatus.Free; try { if (apptExists) appt.Update(ConflictResolutionMode.AutoResolve); else appt.Save(folderId); } catch (COMException ex) { Console.WriteLine(ex.ToString()); return "There was an exception when saving appointment " + ex.Message; } Item item = Item.Bind(service, appt.Id, new PropertySet(ItemSchema.Subject)); Console.WriteLine("Retrieved Appointment: " + item.Subject + "\n"); //save the outlook appointment id to SLX Opportunity //slxOpp.OutlookID = appt.Id.UniqueId; strEntryID = appt.Id.UniqueId; //slxOpp.OutlookID = appt.EntryID; //SLXapi.Opportunity.Save(slxOpp); if (sessionIndex == 1) { slxOppS2.SESSION1OUTLOOKID = strEntryID; } if (sessionIndex == 2) { slxOppS2.SESSION2OUTLOOKID = strEntryID; } if (sessionIndex == 3) { slxOppS2.SESSION3OUTLOOKID = strEntryID; } if (sessionIndex == 4) { slxOppS2.SESSION4OUTLOOKID = strEntryID; } if (sessionIndex == 5) { slxOppS2.SESSION5OUTLOOKID = strEntryID; } if (sessionIndex == 6) { slxOppS2.SESSION6OUTLOOKID = strEntryID; } if (sessionIndex == 7) { slxOppS2.SESSION7OUTLOOKID = strEntryID; } if (sessionIndex == 8) { slxOppS2.SESSION8OUTLOOKID = strEntryID; } SLXapi.OpportunitySolutions2.Save(slxOppS2); return "Successfully Added to Outlook Calendar"; }