Exemple #1
0
        public override bool Execute(ICustomInterpreted element)
        {
            bool result = false;

            var dayRule = GetDayRule(element);

            if (dayRule != null)
            {
                //приоритет
                int?priority = (element as ModifyDay).Priority;

                if (priority == null)
                {
                    priority = dayRule.Template.Priority;
                }

                PrintDayTemplate printTemplate = null;

                //ссылка на печатный шаблон
                if ((element as ModifyDay).SignNumber != null)
                {
                    printTemplate = _dbContext.GetPrintDayTemplate(_typiconVersionId, (int)(element as ModifyDay).SignNumber);
                }

                var request = CreateRequest(dayRule, element as ModifyDay, (int)priority, printTemplate);

                _modifiedYear.AddModifiedRule(request);

                result = true;
            }

            return(result);
        }
        public Result Execute(RuleModDefinitionChangedEvent ev)
        {
            //1. получаем все шаблоны
            var printTemplates = ev.Entity.TypiconVersion.PrintDayTemplates;

            //2. Очищаем все ссылки на PrintDayTemplate для данной сущности
            printTemplates.ForEach(c => c.ClearLinks(ev.Entity));

            //3. Находим ModifyDay, где определен Number
            var localTemplates = GetLocalPrintTemplates(SerializerRoot, ev.NewDefinition);

            foreach (var number in localTemplates)
            {
                //4. Ищем PrintDayTemplate с таким номером.
                var found = printTemplates.FirstOrDefault(c => c.Number == number);

                if (found == null)
                {
                    //a. Если не находим, создаем новый PrintDayTemplate с пустым файлом
                    found = new PrintDayTemplate()
                    {
                        TypiconVersion = ev.Entity.TypiconVersion,
                        Number         = number
                    };

                    //b. Добавляем его к TypiconVersion, которая указана у сущности
                    ev.Entity.TypiconVersion.PrintDayTemplates.Add(found);
                }

                found.AddLink(ev.Entity);
            }

            //удаляем Печатные шаблоны Устава, у которых нет ссылок и которые не содержат загруженного файла
            ev.Entity.TypiconVersion.PrintDayTemplates
            .RemoveAll(c => c.IsAutoDeletable());

            return(Result.Ok());
        }
        private static void ClonePrintTemplates(TypiconVersion version, TypiconVersion source)
        {
            //week
            version.PrintWeekTemplate = (source.PrintWeekTemplate is PrintWeekTemplate w)
                ? new PrintWeekTemplate()
            {
                DaysPerPage    = w.DaysPerPage,
                PrintFile      = w.PrintFile,
                PrintFileName  = w.PrintFileName,
                TypiconVersion = version
            }
                : null;

            //days
            version.PrintDayTemplates
            .AddRange(source.PrintDayTemplates
                      .Select(c =>
            {
                var r = new PrintDayTemplate()
                {
                    Name           = c.Name,
                    Number         = c.Number,
                    PrintFile      = c.PrintFile,
                    PrintFileName  = c.PrintFileName,
                    Icon           = c.Icon,
                    IsRed          = c.IsRed,
                    TypiconVersion = version
                };
                //default
                if (source.PrintDayDefaultTemplate == c)
                {
                    version.PrintDayDefaultTemplate = r;
                }

                return(r);
            }));
        }
Exemple #4
0
 private ModificationsRuleRequest CreateRequest(DayRule dayRule, ModifyDay md, int priority, PrintDayTemplate printTemplate)
 {
     return(new ModificationsRuleRequest()
     {
         DayRuleId = dayRule.Id,
         Date = md.MoveDateCalculated,
         Priority = priority,
         ShortName = md.ShortName,
         AsAddition = md.AsAddition,
         IsLastName = md.IsLastName,
         UseFullName = md.UseFullName,
         PrintDayTemplateId = printTemplate?.Id,
         Filter = md.Filter
     });
 }