public ScheduleSettingsDependingFactory(
     IRuleHandlerSettingsFactory decoratee
     , TypiconDBContext dbContext)
 {
     _decoratee = decoratee ?? throw new ArgumentNullException(nameof(decoratee));
     _dbContext = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
 }
 public ApproveTypiconClaimJobHandler(
     TypiconDBContext dbContext
     , IJobRepository jobs
     ) : base(jobs)
 {
     _dbContext = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
 }
 public CalculateModifiedYearJobHandler(TypiconDBContext dbContext
     , [NotNull] IRuleHandlerSettingsFactory settingsFactory, IJobRepository jobs)
 {
     _dbContext = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
     _settingsFactory = settingsFactory ?? throw new ArgumentNullException(nameof(settingsFactory));
     _jobs = jobs ?? throw new ArgumentNullException(nameof(jobs));
 }
 public OutputDayQueryHandler(TypiconDBContext dbContext
                              , IQueryProcessor queryProcessor
                              , IJobRepository jobs)
     : base(dbContext, queryProcessor)
 {
     _jobs = jobs ?? throw new ArgumentNullException(nameof(jobs));
 }
        //[Test]
        //public void OutputForms_Get()
        //{
        //    var dbContext = TypiconDbContextFactory.Create();
        //    var outputForms = OutputFormsFactory.Create(dbContext);

        //    DeleteAllOutputDays(dbContext, TYPICON_ID);

        //    Result<LocalizedOutputDay> task = outputForms.GetDay(TYPICON_ID, new DateTime(2020, 1, 1), "cs-ru");

        //    Assert.IsTrue(task.Failure);
        //}

        private void DeleteAllOutputDays(TypiconDBContext dbContext, int typiconId)
        {
            var forms = dbContext.Set <OutputDay>().Where(c => c.TypiconId == typiconId);

            dbContext.Set <OutputDay>().RemoveRange(forms);

            dbContext.SaveChanges();
        }
 public ValidateJobHandlerBase(TypiconDBContext dbContext
                               , IJobRepository jobs
                               , IRuleSerializerRoot serializer)
 {
     DbContext  = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
     Jobs       = jobs ?? throw new ArgumentNullException(nameof(jobs));
     Serializer = serializer ?? throw new ArgumentNullException(nameof(serializer));
 }
Example #7
0
 /// <summary>
 /// Возвращает все непереходящие праздники
 /// </summary>
 /// <param name="dbContext"></param>
 /// <param name="typiconVersionId"></param>
 /// <returns></returns>
 public static IEnumerable <MenologyRule> GetAllModMenologyRules(this TypiconDBContext dbContext, int typiconVersionId)
 {
     return(dbContext.Set <MenologyRule>()
            .Where(c => c.TypiconVersionId == typiconVersionId &&
                   c.ModRuleDefinition != string.Empty)
            .ToList()
            .Where(c => !c.LeapDate.IsEmpty));
 }
        /// <summary>
        /// Возвращает указанную версию Устава (опубликованную или черновик).
        /// </summary>
        /// <param name="typiconVersionId"></param>
        /// <returns></returns>
        public static Result <TypiconVersion> GetTypiconVersion(this TypiconDBContext dbContext, int typiconId)
        {
            var version = dbContext.Set <TypiconVersion>().FirstOrDefault(c => c.TypiconId == typiconId);

            return((version != null)
                ? Result.Ok(version)
                : Result.Fail <TypiconVersion>("Указанный Устав либо не существует, либо не существует его опубликованная версия."));
        }
 public NonexistedOutputDayFactory(TypiconDBContext dbContext
                                   , IScheduleDataCalculator dataCalculator
                                   , IScheduleDayNameComposer nameComposer
                                   , ITypiconSerializer typiconSerializer
                                   , ScheduleHandler handler) : base(dataCalculator, nameComposer, typiconSerializer, handler)
 {
     _dbContext = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
 }
Example #10
0
 public TypiconXmlImportManager(IProjector <TypiconVersionProjection, TypiconEntity> projector
                                , TypiconDBContext dbContext
                                , ITypiconSerializer serializer)
 {
     _projector  = projector ?? throw new ArgumentNullException(nameof(projector));
     _dbContext  = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
     _serializer = serializer ?? throw new ArgumentNullException(nameof(serializer));
 }
Example #11
0
 public static bool IsModifiedYearExists(this TypiconDBContext dbContext, int typiconVersionId, int year)
 {
     lock (dbContext)
     {
         return(dbContext.Set <ModifiedYear>().Any(c => c.TypiconVersionId == typiconVersionId &&
                                                   c.Year == year));
     }
 }
Example #12
0
        public Repository(TypiconDBContext dbContext)
        {
            if (dbContext == null)
            {
                throw new ArgumentNullException("TypiconDBContext in Repository");
            }

            objectSet = dbContext.Set <DomainType>();
        }
Example #13
0
        public static TriodionRule GetTriodionRule(this TypiconDBContext dbContext, int typiconVersionId, DateTime date)
        {
            var currentEaster = dbContext.GetCurrentEaster(date.Year);

            int daysFromEaster = date.Date.Subtract(currentEaster.Date).Days;

            return(dbContext.Set <TriodionRule>()
                   .FirstOrDefault(c => c.TypiconVersionId == typiconVersionId && c.DaysFromEaster == daysFromEaster));
        }
        public void HostingService_MySql()
        {
            var date = new DateTime(2019, 2, 1);

            var optionsBuilder = new DbContextOptionsBuilder <TypiconDBContext>();

            optionsBuilder.UseMySql("server=localhost;UserId=root;Password=z2LDCiiEQFDBlkl3eZyb;database=typicondb;",
                                    //optionsBuilder.UseMySql("server=31.31.196.160;UserId=u0351_mysqluser;Password=gl7fdQ45GZyqydXrr2BZ;database=u0351320_typicondb;",
                                    mySqlOptions =>
            {
                mySqlOptions.ServerVersion(new Version(8, 0, 15), ServerType.MySql);
            });
            optionsBuilder.EnableSensitiveDataLogging();

            var dbContext = new TypiconDBContext(optionsBuilder.Options);

            var jobRepo = new JobRepository();

            //var yearHandler = CalculateModifiedYearJobHandlerTest.Build(dbContext, jobRepo);
            var yearJob = new CalculateModifiedYearJob(1, 2019);

            jobRepo.Create(yearJob);

            //Task task = yearHandler.ExecuteAsync(yearJob);
            //task.Wait();

            //var weekHandler = CalculateOutputFormWeekJobTest.Build(dbContext, jobRepo);
            var weekJob = new CalculateOutputFormWeekJob(1, 1, date);

            jobRepo.Create(weekJob);

            //task = weekHandler.ExecuteAsync(weekJob);
            //task.Wait();

            var service = new JobAsyncHostedService(jobRepo, CommandProcessorFactory.CreateJobProcessor(dbContext, jobRepo));

            var token = new CancellationTokenSource();

            Task.Factory.StartNew(() => service.StartAsync(token.Token));

            while (jobRepo.Create(weekJob).Failure)
            {
                Thread.Sleep(50);
            }

            token.Cancel();

            var queryProcessor = QueryProcessorFactory.Create();

            var week = queryProcessor.Process(new OutputWeekQuery(1, date, new OutputFilter()
            {
                Language = "cs-ru"
            }));

            Assert.AreEqual(true, week.Success);
        }
Example #15
0
        private static void Migrate(IUnitOfWork unitOfWork, TypiconDBContext dbContext, Action <DbContextOptionsBuilder> optionsBuilder, string folderPath)
        {
            ScheduleHandler sh = new ScheduleHandler("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\Programming\\Documentation\\TypiconOnline.Documentation\\Db\\ScheduleDB.mdb;");

            var service = GetUserCreationService(optionsBuilder);

            TypiconMigration migration = new TypiconMigration(unitOfWork, dbContext, sh, service, folderPath);

            migration.Execute();
        }
Example #16
0
        public (IUnitOfWork, TypiconDBContext, Action <DbContextOptionsBuilder>) GetPostgreSQLUnitOfWork()
        {
            var optionsBuilder = new DbContextOptionsBuilder <TypiconDBContext>();

            DbOptions.CofigurePostgre(optionsBuilder);

            var dbContext = new TypiconDBContext(optionsBuilder.Options);

            return(new UnitOfWork(dbContext, new RepositoryFactory()), dbContext, DbOptions.CofigurePostgre);
        }
        //private readonly ICommandProcessor _commandProcessor;

        public CalculateOutputFormWeekJobHandler(TypiconDBContext dbContext
                                                 , IOutputDayFactory outputFormFactory
                                                 , IJobRepository jobs
                                                 /*, ICommandProcessor commandProcessor*/)
        {
            _dbContext         = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
            _outputFormFactory = outputFormFactory ?? throw new ArgumentNullException(nameof(outputFormFactory));
            _jobs = jobs ?? throw new ArgumentNullException(nameof(jobs));
            //_commandProcessor = commandProcessor ?? throw new ArgumentNullException(nameof(commandProcessor));
        }
Example #18
0
 public OutputForms(TypiconDBContext dbContext
                    , IScheduleDayNameComposer nameComposer
                    , ITypiconSerializer serializer
                    , IJobRepository jobs)
 {
     _dbContext    = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
     _nameComposer = nameComposer ?? throw new ArgumentNullException(nameof(nameComposer));
     _serializer   = serializer ?? throw new ArgumentNullException(nameof(serializer));
     _jobs         = jobs ?? throw new ArgumentNullException(nameof(jobs));
 }
Example #19
0
 public static MenologyRule GetMenologyRule(this TypiconDBContext dbContext, int typiconVersionId, DateTime date)
 {
     return((DateTime.IsLeapYear(date.Year))
         ? dbContext.Set <MenologyRule>().FirstOrDefault(c => c.TypiconVersionId == typiconVersionId &&
                                                         c.LeapDate.Day == date.Day &&
                                                         c.LeapDate.Month == date.Month)
         : dbContext.Set <MenologyRule>().FirstOrDefault(c => c.TypiconVersionId == typiconVersionId &&
                                                         c.Date.Day == date.Day &&
                                                         c.Date.Month == date.Month));
 }
Example #20
0
        public (IUnitOfWork, TypiconDBContext, Action <DbContextOptionsBuilder, IConfiguration>) GetMySQLUnitOfWork(IConfiguration config)
        {
            var optionsBuilder = new DbContextOptionsBuilder <TypiconDBContext>();

            DbOptions.ConfigureMySql(optionsBuilder, config);

            var dbContext = new TypiconDBContext(optionsBuilder.Options);

            return(new UnitOfWork(dbContext, new RepositoryFactory()), dbContext, DbOptions.ConfigureMySql);
        }
Example #21
0
        private static void Migrate(IUnitOfWork uof, TypiconDBContext dbContext, Action <DbContextOptionsBuilder, IConfiguration> optionsBuilder
                                    , string folderPath, IConfiguration config)
        {
            ScheduleHandler sh = new ScheduleHandler(config.GetConnectionString("Ole"));

            var service = GetUserCreationService(optionsBuilder, config);

            TypiconMigration migration = new TypiconMigration(uof, dbContext, sh, service, folderPath);

            migration.Execute();
        }
Example #22
0
        public (IUnitOfWork, DbContextOptionsBuilder <TypiconDBContext>) GetPostgreSQLUnitOfWork()
        {
            var optionsBuilder = new DbContextOptionsBuilder <TypiconDBContext>();

            optionsBuilder.UseNpgsql(_configuration.GetConnectionString("Postgre"));
            optionsBuilder.EnableSensitiveDataLogging();

            var dbContext = new TypiconDBContext(optionsBuilder.Options);

            return(new UnitOfWork(dbContext, new RepositoryFactory()), optionsBuilder);
        }
        /// <summary>
        /// Возвращает указанную версию Устава (опубликованную или черновик).
        /// </summary>
        /// <param name="typiconVersionId"></param>
        /// <returns></returns>
        public static Result <TypiconVersion> GetTypiconVersion(this TypiconDBContext dbContext, int typiconId, TypiconVersionStatus status)
        {
            var version = dbContext.Set <TypiconVersion>()
                          .FirstOrDefault(c => (status == TypiconVersionStatus.Draft)
                                        ? c.TypiconId == typiconId && c.BDate == null && c.EDate == null
                                        : c.TypiconId == typiconId && c.BDate != null && c.EDate == null);

            return((version != null)
                ? Result.Ok(version)
                : Result.Fail <TypiconVersion>("Указанный Устав либо не существует, либо не существует его версия."));
        }
Example #24
0
        public ModificationsRuleHandler(TypiconDBContext dbContext, int typiconVersionId, ModifiedYear modifiedYear)
        {
            _dbContext        = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
            _typiconVersionId = typiconVersionId;
            _modifiedYear     = modifiedYear ?? throw new ArgumentNullException(nameof(modifiedYear));

            AuthorizedTypes = new List <Type>()
            {
                typeof(ModifyDay)
            };
        }
Example #25
0
        public static DateTime GetCurrentEaster(this TypiconDBContext dbContext, int year)
        {
            EasterItem easter = dbContext.Set <EasterItem>().FirstOrDefault(c => c.Date.Year == year);

            if (easter == null)
            {
                throw new NullReferenceException($"День празднования Пасхи не определен для года {year}.");
            }

            return(easter.Date);
        }
        public static CalculateModifiedYearJobHandler Build(TypiconDBContext dbContext, JobRepository jobRepo)
        {
            var query   = DataQueryProcessorFactory.Create(dbContext);
            var command = CommandProcessorFactory.Create(dbContext);

            var serializerRoot = TestRuleSerializer.Create(dbContext);

            var settingsFactory = new RuleHandlerSettingsFactory(serializerRoot);

            return(new CalculateModifiedYearJobHandler(dbContext, settingsFactory, jobRepo));
        }
Example #27
0
        public static Result <TypiconClaim> GetTypiconClaim(this TypiconDBContext dbContext, int id)
        {
            var found = dbContext.Set <TypiconClaim>().FirstOrDefault(c => c.Id == id);

            if (found != null)
            {
                return(Result.Ok(found));
            }

            return(Result.Fail <TypiconClaim>($"Заявка на создание Устава с заданным Id={id} не была найдена."));
        }
        public static ScheduleService Create(TypiconDBContext dbContext)
        {
            IRuleSerializerRoot serializerRoot = TestRuleSerializer.Create(dbContext);

            var settingsFactory = new RuleHandlerSettingsFactory(serializerRoot);

            var commandProcessor = CommandProcessorFactory.Create(dbContext);
            var queryProcessor   = DataQueryProcessorFactory.Create(dbContext);

            return(new ScheduleService(new ScheduleDataCalculator(queryProcessor, settingsFactory)
                                       , new ScheduleDayNameComposer(serializerRoot.QueryProcessor)));
        }
Example #29
0
        public Migration(IUnitOfWork unitOfWork
                         , TypiconDBContext dbContext
                         , ScheduleHandler sh
                         , UserCreationService userCreationService
                         , string folderPath)
        {
            _unitOfWork          = unitOfWork;
            _dbContext           = dbContext;
            _sh                  = sh;
            _userCreationService = userCreationService;

            FOLDER_PATH = folderPath;
        }
        public static void UpdateOutputDay(this TypiconDBContext dbContext, OutputDay outputDay)
        {
            var outputDays = dbContext.Set <OutputDay>()
                             .Where(c => c.TypiconId == outputDay.TypiconId && c.Date.Date == outputDay.Date.Date);

            if (outputDays.Any())
            {
                dbContext.Set <OutputDay>().RemoveRange(outputDays);
            }

            dbContext.Set <OutputDay>().Add(outputDay);

            dbContext.SaveChanges();
        }