public static bool ArchiveSelectedItem(bool treatAtSentMail, BrugerInfo currentBruger, Outlook.MailItem mailItem, MailItemInfo mailItemInfo, KundeInfo companyInfo, KontaktInfo contactInfo, TaskInfo taskInfo, Outlook.NameSpace sessionNamespace) { var fromBruger = treatAtSentMail ? currentBruger : null; var toBruger = treatAtSentMail ? currentBruger : null; var documentType = treatAtSentMail ? DocumentType.SentMail : DocumentType.ReceivedMail; var documentGuid = Guid.NewGuid(); var companyFolder = TryGetCompanyOutlookFolder(companyInfo.ID, currentBruger, sessionNamespace); // Vi har muligvis ikke rettigheder til at tilgå eller oprette mappen // Brugeren har fået besked så vi kan returnere if (companyFolder == null) { return false; } SetIOfficeProperties(documentGuid, mailItem); dynamic archivedItemDynamic; var itemCopy = (Outlook.MailItem)mailItem.Copy(); archivedItemDynamic = itemCopy.Move(companyFolder); var archivedItem = (Outlook.MailItem)archivedItemDynamic; // Efter move får item nyt entryID og storeID mailItemInfo = new MailItemInfo(archivedItem); var mailItemDocument = new IOfficeOutlookAddIn.Document() { DOC_Body = mailItemInfo.BodyPlainText, DOC_CompanyGUID = companyInfo.ID, DOC_ContactGUID = contactInfo != null ? contactInfo.ID : new Nullable<Guid>(), DOC_CreatedByGUID = currentBruger.ID, DOC_CreatedDate = DateTime.Now, DOC_DocumentType = (int)documentType, DOC_ExchangeEntryID = mailItemInfo.CurrentMailItemEntryID, DOC_ExchangeFolderEntryID = null, // BRUGES IKKE DOC_ExchangeFolderStoreID = null, // BRUGES IKKE DOC_ExchangeStoreID = mailItemInfo.CurrentMailItemFolderStoreID, DOC_FromUserGUID = fromBruger != null ? fromBruger.ID : new Nullable<Guid>(), DOC_GUID = documentGuid, DOC_IsArchived = 1, DOC_IsInstantiated = 1, DOC_IsPrivate = 0, DOC_MailCreatedDatetime = mailItemInfo.Created, DOC_MailReceivedDatetime = mailItemInfo.Received, DOC_MailSentDatetime = mailItemInfo.Sent, DOC_MailUpdatedDatetime = DateTime.Now, // Hvad er det? DOC_MasterDate = DateTime.Now, // Hvad er det? DOC_OriginalFileName = string.Empty, DOC_ProjectGUID = null, DOC_SMTP_From = mailItemInfo.FromEmailAddress, DOC_SMTP_FromDisplayName = string.IsNullOrEmpty(mailItemInfo.FromDisplayName) == false ? mailItemInfo.FromDisplayName : treatAtSentMail == true ? fromBruger.Navn : "(Unknown)", DOC_SMTP_To = mailItemInfo.RecipientsEmailAddress, DOC_SMTP_ToDisplayName = mailItemInfo.RecipientsDisplayName, DOC_Subject = mailItemInfo.Subject, DOC_TaskGUID = taskInfo != null ? taskInfo.ID : new Nullable<Guid>(), DOC_TemplateGUID = null, DOC_Title = null, // Bruges vist ikke hvis mail DOC_ToUserGUID = toBruger != null ? toBruger.ID : new Nullable<Guid>(), DOC_TypeGUID = new Nullable<Guid>(), // BRUGES IKKE DOC_UpdatedByGUID = currentBruger.ID, DOC_UpdatedDate = DateTime.Now, DOC_WebVisible = 0, IsThrash = 0 }; using (var _dc = new iorunEntities()) { _dc.Document.Add(mailItemDocument); _dc.SaveChanges(); } return true; }
private void companyContactTaskPicker1_TaskSelected(KundeInfo kundeInfo, KontaktInfo kontaktInfo, TaskInfo taskInfo) { HandleTaskSelected(kundeInfo, kontaktInfo, taskInfo); }
private void companyContactTaskPicker2_TaskSelected(KundeInfo kundeInfo, KontaktInfo kontaktInfo, TaskInfo taskInfo) { _currentCompanyInfo = kundeInfo; _currentContactInfo = kontaktInfo; _currentTaskInfo = taskInfo; UpdateComposeMail(); }
private void HandleTaskSelected(KundeInfo kundeInfo, KontaktInfo kontaktInfo, TaskInfo taskInfo) { _currentTaskInfo = taskInfo; }
private void archivePanelCompanyContactTaskPicker1_QueryArchive(KundeInfo kundeInfo, KontaktInfo kontaktInfo, TaskInfo taskInfo) { ArchiveSelectedItem(); }
private void composePanelCompanyContactTaskPicker_CustomerContactSelected(KundeInfo kundeInfo, KontaktInfo kontaktInfo) { _currentCompanyInfo = kundeInfo; _currentContactInfo = kontaktInfo; _currentTaskInfo = null; UpdateComposeMail(); }
// Af en eller anden årsag fyres dette event to gange. Første gang er Item ok, anden gang kastes der COM exceptions void sentItems_ItemAdd(object Item) { log.Info("sentItems_ItemAdd"); if (IOfficeConnectGlobals.AutoPopupMails == false) { log.Info("sentItems_ItemAdd::autopopup slået fra"); return; } try { // Et item blev tilføjet til sent items. Se om det er en mail der ikke er præpareret med arkiveringsinfo. var outlookMailItem = Item as Outlook.MailItem; if (outlookMailItem != null) { // Omgå issue at der fyres to gange var erOk = false; try { var test = outlookMailItem.UserProperties[Constants.MailItemProperty_Archive_CompanyID]; erOk = true; } catch { // Åbentbart anden gang den fyrer } if (erOk) { var companyUserProperty = outlookMailItem.UserProperties[Constants.MailItemProperty_Archive_CompanyID]; if (companyUserProperty != null) { log.InfoFormat("sentItems_ItemAdd::Item sent: {0}", outlookMailItem.Subject); var contactUserProperty = outlookMailItem.UserProperties[Constants.MailItemProperty_Archive_ContactID]; var taskUserProperty = outlookMailItem.UserProperties[Constants.MailItemProperty_Archive_TaskID]; var isArchivedProperty = outlookMailItem.UserProperties[Constants.MailItemProperty_IsArchived]; var isArchived = isArchivedProperty != null ? bool.Parse(isArchivedProperty.Value) : false; if (isArchived == false) { if (companyUserProperty != null) { log.InfoFormat("sentItems_ItemAdd::Item {0} skal arkiveres", outlookMailItem.Subject); var currentBruger = IOfficeConnectGlobals.GetCurrentBruger(); var mailItemInfo = new MailItemInfo(outlookMailItem); var companyInfo = (KundeInfo)IOfficeConnectGlobals.KunderCache[Guid.Parse(companyUserProperty.Value)]; var contactInfo = contactUserProperty != null ? companyInfo.Kontakter.Single(k => k.Kontakt.ID == Guid.Parse(contactUserProperty.Value)).Kontakt : null; TaskInfo taskInfo = null; var sessionNamespace = outlookMailItem.Application.Session; if (taskUserProperty != null) { using (var dc = new iorunEntities()) { var taskID = (Guid)Guid.Parse(taskUserProperty.Value); // Funky??? taskInfo = new TaskInfo(dc.Tasks.Where(t => t.Task_GUID == taskID).ToList().Single()); } } IOfficeConnectGlobals.ArchiveSelectedItem(true, currentBruger, outlookMailItem, mailItemInfo, companyInfo, contactInfo, taskInfo, sessionNamespace); } else { // Bliver fanget af sent items -> item add event og bruger bliver bedt om at arkivere } } else { // Åbentbart har et arkiveret item fyret log.Warn("Et arkiveret item har fyret i sent items"); } } else { // Har sendt mail uden at prækvalificere. Vis mailen. outlookMailItem.Display(); } } else { // Var anden gang der blev fyret } } else { // Må være sendt noget andet end en mail (Måske kalender aftale, contact card etc.) } } catch (Exception sentItemsException) { var m = string.Format("Generel fejl under behandling at sendt post: {0}", sentItemsException.Message); log.Error(m, sentItemsException); MessageBox.Show(m, "Ukendt fejl sendt post", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
private void UpdateTasks(KundeInfo kundeInfo) { using (var dc = new iorunEntities()) { var tasks = dc.Tasks.Where(t => t.Task_CompanyGUID == kundeInfo.ID && t.IsThrash == 0 && t.Task_IsClosed == 0). ToList(). OrderBy(t => t.Task_Caption).ToList(); var lvs = new List<ListViewItem>(); foreach (var thisTask in tasks) { var taskInfo = new TaskInfo(thisTask); var lvi = new ListViewItem(taskInfo.Caption); lvi.SubItems.Add(taskInfo.Description); lvi.Tag = taskInfo; lvs.Add(lvi); } if (tasks.Count > 0) { tasksListView.Enabled = true; } else { tasksListView.Enabled = false; tasksListView.Items.Add(new ListViewItem("(No tasks)")); } tasksListView.Items.AddRange(lvs.ToArray()); } }
private void RaiseTaskSelected(KundeInfo kundeInfo, KontaktInfo kontaktInfo, TaskInfo taskInfo) { if (TaskSelected != null) { TaskSelected(kundeInfo, kontaktInfo, taskInfo); } }
private void RaiseQueryArchive(KundeInfo kundeInfo, KontaktInfo kontaktInfo, TaskInfo taskInfo) { if (QueryArchive != null) { QueryArchive(kundeInfo, kontaktInfo, taskInfo); } }