public static bool ArchiveRootFolderExists(Outlook.NameSpace sessionNamespace, BrugerInfo brugerInfo) { using (var _dc = new iorunEntities()) { var userSettings = _dc.UserSettings.Where(us => us.US_UserGUID == brugerInfo.ID).ToList().Single(); var rootArchiveFolderStoreID = userSettings.US_ExchangeStore; var rootArchiveFolderEntryID = userSettings.US_ExchangeEntry; try { var rootArchiveFolder = sessionNamespace.GetFolderFromID(rootArchiveFolderEntryID, rootArchiveFolderStoreID); if (rootArchiveFolder == null) { return false; } return true; } catch (COMException ce) { log.Info(string.Format("ArchiveRootFolderExists: Findes ikke. COM fejl: {0}", ce.Message), ce); return false; } } }
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; }
public static Outlook.MAPIFolder TryGetCompanyOutlookFolder(Guid companyID, BrugerInfo brugerInfo, Outlook.NameSpace sessionNamespace) { using (var _dc = new iorunEntities()) { var kunde = _dc.Kunder.Where(k => k.Kunde_GUID == companyID).ToList().Single(); var userSettings = _dc.UserSettings.Where(us => us.US_UserGUID == brugerInfo.ID).ToList().Single(); var companyArchiveFolderEntryID = kunde.Kunde_EntryID; var companyArchiveFolderStoreID = kunde.Kunde_StoreID; var rootArchiveFolderStoreID = userSettings.US_ExchangeStore; var rootArchiveFolderEntryID = userSettings.US_ExchangeEntry; var companyFolderName = kunde.Kunde_Navn_1.Trim(); var folderLetter = companyFolderName[0]; var rootArchiveFolder = sessionNamespace.GetFolderFromID(rootArchiveFolderEntryID, rootArchiveFolderStoreID); if (rootArchiveFolder == null) { throw new ApplicationException("Failed to get root folder for archive"); } var letterFolder = GetSubFolderByName(rootArchiveFolder, folderLetter.ToString()); if (letterFolder == null) { letterFolder = rootArchiveFolder.Folders.Add(folderLetter.ToString()); } var companyFolder = GetSubFolderByName(letterFolder, companyFolderName); if (companyFolder == null) { try { companyFolder = letterFolder.Folders.Add(companyFolderName); } catch (COMException comException) { log.Error(comException); MessageBox.Show(string.Format("Du har ikke rettighed til at tilgå eller oprette mappen\n\nFejlen var: {0}", comException.Message), "Adgang nægtet", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } return companyFolder; } }
public static BrugerInfo GetCurrentBruger() { if (_brugerInfo == null) { using (var dc = new iorunEntities()) { log.InfoFormat("GetCurrentBruger(): Finder bruger med username = {0}. Connection string = {1}", Environment.UserName, dc.Database.Connection.ConnectionString); // Grunden til der bruges WHere og ikke SingleOrDefault() er pga. SQL server compatibility var brugere = dc.Bruger.Where(br => br.User_LoginID == Environment.UserName).ToList(); if (brugere.Count == 1) { _brugerInfo = new BrugerInfo(brugere.Single()); } else { log.InfoFormat("GetCurrentBruger(): {0} brugere matchede", brugere.Count); // NOP } } } return _brugerInfo; }