/// <summary> /// Агент синхронизации ящиков. /// </summary> public virtual void SyncBoxes() { var allBoxes = BusinessUnitBoxes.GetAll().ToList(); var boxes = allBoxes.Where(b => Equals(b.ConnectionStatus, ExchangeCore.BusinessUnitBox.ConnectionStatus.Connected) || Equals(b.ConnectionStatus, ExchangeCore.BusinessUnitBox.ConnectionStatus.Error)).ToList(); foreach (var box in boxes) { Transactions.Execute(() => { Functions.BusinessUnitBox.SyncBoxStatus(box); if (box.ConnectionStatus == ExchangeCore.BusinessUnitBox.ConnectionStatus.Connected) { Functions.BusinessUnitBox.UpdateExchangeServiceCertificates(box); Functions.DepartmentBox.CreateDepartmentBoxes(box); } }); } // Проставить статус соединения в абонентских ящиках подразделений. foreach (var box in allBoxes) { Functions.Module.SetDepartmentBoxConnectionStatus(box); } }
public override IQueryable <T> Filtering(IQueryable <T> query, Sungero.Domain.FilteringEventArgs e) { if (_filter == null) { return(query); } if (_filter.Active || _filter.Closed) { query = query.Where(r => _filter.Active && r.Status == Status.Active || _filter.Closed && r.Status == Status.Closed); } if (_filter.BusinessUnit != null) { query = query.Where(b => (BusinessUnitBoxes.Is(b) && Equals(BusinessUnitBoxes.As(b).BusinessUnit, _filter.BusinessUnit)) || (DepartmentBoxes.Is(b) && Equals(DepartmentBoxes.As(b).RootBox.BusinessUnit, _filter.BusinessUnit))); } if (_filter.ExchangeService != null) { query = query.Where(b => (BusinessUnitBoxes.Is(b) && Equals(BusinessUnitBoxes.As(b).ExchangeService, _filter.ExchangeService)) || (DepartmentBoxes.Is(b) && Equals(DepartmentBoxes.As(b).RootBox.ExchangeService, _filter.ExchangeService))); } return(query); }