public PlayerController(IPlayerRepository playerRepository, IRegistrationPlayerRepository registrationPlayerRepository, IAdminUnitOfWork adminUnitOfWork, AddPlayerCommandHandler addPlayerCommandHandler, UpdatePlayerCommandHandler updatePlayerCommandHandler) { this._playerRepository = playerRepository; this._registrationPlayerRepository = registrationPlayerRepository; this._adminUnitOfWork = adminUnitOfWork; this._addPlayerCommandHandler = addPlayerCommandHandler; this._updatePlayerCommandHandler = updatePlayerCommandHandler; }
/// <summary> /// 初始化一个<see cref="UserLoginLogService"/>类型的实例 /// </summary> /// <param name="unitOfWork">工作单元</param> /// <param name="userLoginLogRepository">用户登录日志仓储</param> public UserLoginLogService(IAdminUnitOfWork unitOfWork, IUserLoginLogRepository userLoginLogRepository) { UnitOfWork = unitOfWork; UserLoginLogRepository = userLoginLogRepository; }
/// <summary> /// 初始化一个<see cref="ApplicationService"/>类型的实例 /// </summary> /// <param name="unitOfWork">工作单元</param> /// <param name="applicationRepository">应用程序仓储</param> public ApplicationService(IAdminUnitOfWork unitOfWork, IApplicationRepository applicationRepository) { UnitOfWork = unitOfWork; ApplicationRepository = applicationRepository; }
/// <summary> /// 初始化一个<see cref="AdministratorRepository"/>类型的实例 /// </summary> /// <param name="unitOfWork">工作单元</param> public AdministratorRepository(IAdminUnitOfWork unitOfWork) : base(unitOfWork) { }
/// <summary> /// 初始化一个<see cref="TestMessageEventHandler"/>类型的实例 /// </summary> public TestMessageEventHandler(IAdminUnitOfWork unitOfWork, IMessageEventBus messageEventBus) { UnitOfWork = unitOfWork; MessageEventBus = messageEventBus; }
/// <summary> /// 初始化一个<see cref="ResourceRepository"/>类型的实例 /// </summary> /// <param name="unitOfWork">工作单元</param> public ResourceRepository(IAdminUnitOfWork unitOfWork) : base(unitOfWork) { }
/// <summary> /// 初始化一个<see cref="ResourceService"/>类型的实例 /// </summary> /// <param name="unitOfWork">工作单元</param> /// <param name="resourceRepository">资源仓储</param> public ResourceService(IAdminUnitOfWork unitOfWork, IResourceRepository resourceRepository) { UnitOfWork = unitOfWork; ResourceRepository = resourceRepository; }
/// <summary> /// 初始化一个<see cref="DictionaryRepository"/>类型的实例 /// </summary> /// <param name="unitOfWork">工作单元</param> public DictionaryRepository(IAdminUnitOfWork unitOfWork) : base(unitOfWork) { }
/// <summary> /// 初始化一个<see cref="PermissionRepository"/>类型的实例 /// </summary> /// <param name="unitOfWork">工作单元</param> public PermissionRepository(IAdminUnitOfWork unitOfWork) : base(unitOfWork) { }
public AdminController(IAdminUnitOfWork uow) { this.uow = uow; }
/// <summary> /// The create appointment. /// </summary> /// <param name="model"> /// The model. /// </param> /// <param name="adminUow"></param> /// <returns> /// The <see cref="AppointmentViewModel"/>. /// </returns> /// <exception cref="Exception"> /// </exception> private AppointmentViewModel CreateAppointment(AppointmentViewModel model, IAdminUnitOfWork adminUow) { if (model.StartDate.Kind == DateTimeKind.Utc || model.EndDate.Kind == DateTimeKind.Utc) { throw new Exception("Date time is in UTC Format. Use only LOCACL time for this call"); } var apptStartDateTimeUTC = model.StartDate.Add(model.StartTime.Value).ToUniversalTime(); var apptEndDateTimeUTC = model.EndDate.Add(model.EndTime.Value).ToUniversalTime(); var appt = model.ToEntity(); appt.StartDate = apptStartDateTimeUTC; appt.EndDate = apptEndDateTimeUTC; appt.StartTime = new TimeSpan(apptStartDateTimeUTC.Hour, apptStartDateTimeUTC.Minute, 0); appt.EndTime = new TimeSpan(apptEndDateTimeUTC.Hour, apptEndDateTimeUTC.Minute, 0); appt.VisitStepId = model.StepSequenceId; appt.CreatedBy = Thread.CurrentPrincipal.Identity.Name; appt.IsActive = true; appt.Status = (int)AppointmentStatusType.Scheduled; if (CanCreateAppointment(model)) { // TODO: Move to Monday should be in Settings as Days to adjust for weekends. if (appt.StartDate.DayOfWeek == DayOfWeek.Saturday) { appt.StartDate = appt.StartDate.AddDays(2); // move to Monday. appt.EndDate = appt.EndDate.AddDays(2); } else if (appt.StartDate.DayOfWeek == DayOfWeek.Sunday) { appt.StartDate = model.StartDate.AddDays(1); // move to Monday. appt.EndDate = model.EndDate.AddDays(1); } _logger.Debug( "CAN Create Visit:{0} start:{1}:{3} end:{2}:{4}", appt.VisitId, appt.StartDate, appt.EndDate, appt.StartTime, appt.EndTime); adminUow.AppointmentRepository.Insert(appt); if (model.IsTermination) { TerminateAllFutureVisits(model); } } var viewModel = new AppointmentViewModel { Id = appt.Id, SubjectId = appt.SubjectId, AppUserId = appt.AppUserId, CalendarStart = apptStartDateTimeUTC.ToLocalTime().ToString(CultureInfo.InvariantCulture), CalendarEnd = apptEndDateTimeUTC.ToLocalTime().ToString(CultureInfo.InvariantCulture), Title = appt.Title, Description = appt.Description }; return(viewModel); }
/// <summary> /// 初始化一个<see cref="TestService"/>类型的实例 /// </summary> /// <param name="unitOfWork">工作单元</param> /// <param name="fileRepository">文件仓储</param> public TestService(IAdminUnitOfWork unitOfWork, IFileRepository fileRepository) { UnitOfWork = unitOfWork; FileRepository = fileRepository; }
/// <summary> /// 初始化一个<see cref="ModuleService"/>类型的实例 /// </summary> /// <param name="unitOfWork">工作单元</param> /// <param name="moduleRepository">模块仓储</param> public ModuleService(IAdminUnitOfWork unitOfWork, IModuleRepository moduleRepository) { UnitOfWork = unitOfWork; ModuleRepository = moduleRepository; }
/// <summary> /// 初始化一个<see cref="DictionaryService"/>类型的实例 /// </summary> /// <param name="unitOfWork">工作单元</param> /// <param name="dictionaryRepository">字典仓储</param> public DictionaryService(IAdminUnitOfWork unitOfWork, IDictionaryRepository dictionaryRepository) { UnitOfWork = unitOfWork; DictionaryRepository = dictionaryRepository; }
/// <summary> /// 初始化一个<see cref="UserRepository"/>类型的实例 /// </summary> /// <param name="unitOfWork">工作单元</param> public UserRepository(IAdminUnitOfWork unitOfWork) : base(unitOfWork) { }
/// <summary> /// 初始化一个<see cref="AreaService"/>类型的实例 /// </summary> /// <param name="unitOfWork">工作单元</param> /// <param name="areaRepository">地区仓储</param> public AreaService(IAdminUnitOfWork unitOfWork, IAreaRepository areaRepository) { UnitOfWork = unitOfWork; AreaRepository = areaRepository; }
/// <summary> /// Выполнить мигрционные скрипты. /// </summary> /// <param name="scriptsPrefix">Префикс скрипта.</param> /// <param name="unitOfWork">Единица работы.</param> private void RunMigrationScripts(string scriptsPrefix, IAdminUnitOfWork unitOfWork) { List <_Version> versions = unitOfWork._VersionRepository.Query(pageSize: int.MaxValue); List <_Version> migrations = FindMigrations(scriptsPrefix); bool isWarningExists = false; List <_Version> versionsToDelete = new List <_Version>(); List <_Version> versionsToUpdate = new List <_Version>(); foreach (var version in versions) { var migration = migrations.FirstOrDefault(e => this.versionNumberComparer.Compare(e, version) == 0); if (migration == null) { logger.LogError($"Выполненная миграция #{version.Name} не найдена в коде."); var migrationRenamed = migrations.FirstOrDefault(e => this.versionNumberComparer.Compare(e, version) != 0 && e.ScriptHash == version.ScriptHash); if (migrationRenamed != null) { //выполненная миграция с таким же хэшем, но другим именем. Типа выполенную миграцию переименовали. Обновить хэш версии. logger.LogError($"Выполненная миграция #{migrationRenamed.Name} была переименована. Ее хэш выполнен под номером {version.Name}."); version.Name = migrationRenamed.Name; versionsToUpdate.Add(version); } else { //просто не найденная миграция в коде. Удалить миграцию. versionsToDelete.Add(version); } isWarningExists = true; continue; } migration.Id = version.Id; if (migration.ScriptHash != version.ScriptHash) { //версия найдена в коде, но текст ее изменен. Обновить хэш версии. logger.LogError($"Выполненная миграция #{version.Name} изменена в коде. Изменен ее хэш."); version.ScriptHash = migration.ScriptHash; versionsToUpdate.Add(version); isWarningExists = true; } } var currentversion = versions.OrderBy(e => e, this.versionNumberComparer).LastOrDefault(); var lastMigration = migrations.OrderBy(e => e, this.versionNumberComparer).LastOrDefault(); if (this.versionNumberComparer.Compare(currentversion, lastMigration) != 0) { logger.LogInformation($"Текущая версия базы данных {currentversion?.Name ?? "--"}. Будет изменена до {lastMigration?.Name ?? "--"}."); } else { logger.LogInformation($"Текущая версия базы данных {currentversion?.Name ?? "--"}. Изменений не найдено."); } if (isWarningExists) { logger.LogCritical($"Обнаружены предупреждения. Нажмите Y для продолжения или любую клавишу для отмены."); if ((Console.ReadLine() ?? "").Trim().ToLower() != "y") { throw new OperationCanceledException("Миграция отменена."); } } //мигрировать на новую версию. foreach (var migration in migrations.OrderBy(e => e, this.versionNumberComparer)) { var version = versions.FirstOrDefault(e => e.Name == migration.Name); if (version != null || this.versionNumberComparer.Compare(migration, currentversion) <= 0) { continue; } logger.LogDebug($"{migration.Description} выполняется..."); unitOfWork._DynamicRepository.Sql(migration.ScriptBody); unitOfWork._VersionRepository.Save(migration); } //обновить записи с ошибками. foreach (var version in versionsToDelete) { unitOfWork._VersionRepository.Delete(version.Id); } foreach (var version in versionsToUpdate) { unitOfWork._VersionRepository.Save(version); } }
/// <summary> /// 初始化一个<see cref="FileRepository"/>类型的实例 /// </summary> /// <param name="unitOfWork">工作单元</param> public FileRepository(IAdminUnitOfWork unitOfWork) : base(unitOfWork) { }