Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 初始化一个<see cref="UserLoginLogService"/>类型的实例
 /// </summary>
 /// <param name="unitOfWork">工作单元</param>
 /// <param name="userLoginLogRepository">用户登录日志仓储</param>
 public UserLoginLogService(IAdminUnitOfWork unitOfWork, IUserLoginLogRepository userLoginLogRepository)
 {
     UnitOfWork             = unitOfWork;
     UserLoginLogRepository = userLoginLogRepository;
 }
Ejemplo n.º 3
0
 /// <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;
 }
Ejemplo n.º 6
0
 /// <summary>
 /// 初始化一个<see cref="ResourceRepository"/>类型的实例
 /// </summary>
 /// <param name="unitOfWork">工作单元</param>
 public ResourceRepository(IAdminUnitOfWork unitOfWork) : base(unitOfWork)
 {
 }
Ejemplo n.º 7
0
 /// <summary>
 /// 初始化一个<see cref="ResourceService"/>类型的实例
 /// </summary>
 /// <param name="unitOfWork">工作单元</param>
 /// <param name="resourceRepository">资源仓储</param>
 public ResourceService(IAdminUnitOfWork unitOfWork, IResourceRepository resourceRepository)
 {
     UnitOfWork         = unitOfWork;
     ResourceRepository = resourceRepository;
 }
Ejemplo n.º 8
0
 /// <summary>
 /// 初始化一个<see cref="DictionaryRepository"/>类型的实例
 /// </summary>
 /// <param name="unitOfWork">工作单元</param>
 public DictionaryRepository(IAdminUnitOfWork unitOfWork) : base(unitOfWork)
 {
 }
Ejemplo n.º 9
0
 /// <summary>
 /// 初始化一个<see cref="PermissionRepository"/>类型的实例
 /// </summary>
 /// <param name="unitOfWork">工作单元</param>
 public PermissionRepository(IAdminUnitOfWork unitOfWork) : base(unitOfWork)
 {
 }
Ejemplo n.º 10
0
 public AdminController(IAdminUnitOfWork uow)
 {
     this.uow = uow;
 }
Ejemplo n.º 11
0
        /// <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);
        }
Ejemplo n.º 12
0
 /// <summary>
 /// 初始化一个<see cref="TestService"/>类型的实例
 /// </summary>
 /// <param name="unitOfWork">工作单元</param>
 /// <param name="fileRepository">文件仓储</param>
 public TestService(IAdminUnitOfWork unitOfWork, IFileRepository fileRepository)
 {
     UnitOfWork     = unitOfWork;
     FileRepository = fileRepository;
 }
Ejemplo n.º 13
0
 /// <summary>
 /// 初始化一个<see cref="ModuleService"/>类型的实例
 /// </summary>
 /// <param name="unitOfWork">工作单元</param>
 /// <param name="moduleRepository">模块仓储</param>
 public ModuleService(IAdminUnitOfWork unitOfWork, IModuleRepository moduleRepository)
 {
     UnitOfWork       = unitOfWork;
     ModuleRepository = moduleRepository;
 }
Ejemplo n.º 14
0
 /// <summary>
 /// 初始化一个<see cref="DictionaryService"/>类型的实例
 /// </summary>
 /// <param name="unitOfWork">工作单元</param>
 /// <param name="dictionaryRepository">字典仓储</param>
 public DictionaryService(IAdminUnitOfWork unitOfWork, IDictionaryRepository dictionaryRepository)
 {
     UnitOfWork           = unitOfWork;
     DictionaryRepository = dictionaryRepository;
 }
Ejemplo n.º 15
0
 /// <summary>
 /// 初始化一个<see cref="UserRepository"/>类型的实例
 /// </summary>
 /// <param name="unitOfWork">工作单元</param>
 public UserRepository(IAdminUnitOfWork unitOfWork) : base(unitOfWork)
 {
 }
Ejemplo n.º 16
0
 /// <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);
            }
        }
Ejemplo n.º 18
0
 /// <summary>
 /// 初始化一个<see cref="FileRepository"/>类型的实例
 /// </summary>
 /// <param name="unitOfWork">工作单元</param>
 public FileRepository(IAdminUnitOfWork unitOfWork) : base(unitOfWork)
 {
 }