public void Logon(Guid?licenseGuid, LogonHistory history) { IUnitOfWorkScope scope = null; Account account = null; try { scope = _scopeFactory.Create(); IsValid = true; _logger.Info($"Начало запроса авторизации для {licenseGuid}"); if (!licenseGuid.HasValue) { SetError("Не определен гуид лицензии"); } else { account = _accountRepository.GetByLicenseId(licenseGuid.Value); if (account == null) { SetError($"Не найдена УЗ для {licenseGuid}"); } else { var license = account.Licenses.FirstOrDefault(l => l.Guid == licenseGuid); if (license == null) { SetError($"Не найдена лицензия по гуиду {licenseGuid}"); } else if (!license.Access) { SetError($"Для УЗ {account.Id} заблокирован доступ для лицензии {licenseGuid}"); } } } history.Account = account; _logonHistoryRepository.Save(history); scope.Commit(); _logger.Info($"Завершение запроса авторизации для {licenseGuid} и УЗ {account.Return(a=>a.Id)} и логона {history.Return(h=>h.Id)}"); } catch (Exception e) { SetError(e.ToString(), true); } finally { scope.Do(s => s.Dispose()); } }