/// <summary> /// Проверка, есть ли у текущего пользователя сертификат сервиса обмена. /// </summary> /// <param name="businessUnitBox">Абонентский ящик нашей организации.</param> /// <returns>True, если есть, иначе False.</returns> public virtual bool HasCurrentUserExchangeServiceCertificate(IBusinessUnitBox businessUnitBox) { // Получить доступные сертификаты. var availableCertificates = Certificates.GetAllCached().Where(x => Equals(x.Owner, Users.Current) && x.Enabled == true); // Проверить наличие сертификатов ответственного, если сервис предоставляет такую возможность. if (businessUnitBox.HasExchangeServiceCertificates == true) { availableCertificates = availableCertificates.Where(x => businessUnitBox.ExchangeServiceCertificates.Any(z => z.Certificate.Equals(x))); } return(availableCertificates.Any()); }
/// <summary> /// Получить сертификат сервиса обмена для текущего сотрудника, используя системный диалог выбора сертификата. /// </summary> /// <param name="box">Абонентский ящик.</param> /// <param name="employee">Сотрудник.</param> /// <returns>Сертификат.</returns> public static ICertificate GetCurrentUserExchangeCertificate(ExchangeCore.IBoxBase box, Company.IEmployee employee) { var businessUnitBox = ExchangeCore.PublicFunctions.BoxBase.GetRootBox(box); var certificates = businessUnitBox.HasExchangeServiceCertificates == true ? businessUnitBox.ExchangeServiceCertificates.Where(x => Equals(x.Certificate.Owner, employee) && x.Certificate.Enabled == true).Select(x => x.Certificate) : Certificates.GetAllCached().Where(x => Equals(x.Owner, employee) && x.Enabled == true).AsEnumerable(); certificates = certificates.GroupBy(x => x.Thumbprint).Select(x => x.First()); if (certificates.Count() > 1) { return(certificates.ShowSelectCertificate()); } return(certificates.FirstOrDefault()); }