Пример #1
0
        /// <summary>
        /// Формирование заявок пляшем от АИС 3
        /// </summary>
        /// <param name="userRule">Данные АИС 3 для создания заявки</param>
        /// <returns></returns>
        public async Task <ModelPathReport> GenerateTemplateRule(UserRules userRule)
        {
            var report = new ModelPathReport();

            try
            {
                return(await Task.Factory.StartNew(() =>
                {
                    var sql = new SelectSql();
                    var templateWord = new TemplateUserRule();
                    var templateRule = new RuleTemplate()
                    {
                        SenderUsers = new SenderUsers()
                    };
                    var modelSelect = sql.SendersUsers(ref templateRule);
                    sql.UserRuleModel(ref templateRule, userRule, modelSelect);
                    templateWord.CreateDocum(_parameterService.ReportMassTemplate, templateRule, null);
                    report.Note = "Заявки запущены и сохраняются в папку";
                    report.Url = _parameterService.ReportMassTemplate;
                    return report;
                }));
            }
            catch (Exception e)
            {
                Loggers.Log4NetLogger.Error(e);
                report.Note = e.Message;
                return(report);
            }
        }
Пример #2
0
 /// <summary>
 /// Запрос на лиц кто согласовывает надо добавлять в xml
 /// </summary>
 /// <param name="template">Шаблон возврата</param>
 public ModelSelect SendersUsers(ref RuleTemplate template)
 {
     try
     {
         ModelSelect model = new ModelSelect {
             LogicaSelect = SqlSelectModel(13)
         };
         template.SenderUsers.Security = Inventory.Database.SqlQuery <Security>(model.LogicaSelect.SelectUser, new SqlParameter(model.LogicaSelect.SelectedParametr.Split(',')[0], 3),
                                                                                new SqlParameter(model.LogicaSelect.SelectedParametr.Split(',')[1], "Отдел информационной безопасности"),
                                                                                new SqlParameter(model.LogicaSelect.SelectedParametr.Split(',')[2], DBNull.Value)).FirstOrDefault();
         template.SenderUsers.ItOtdel = Inventory.Database.SqlQuery <ItOtdel>(model.LogicaSelect.SelectUser, new SqlParameter(model.LogicaSelect.SelectedParametr.Split(',')[0], 4),
                                                                              new SqlParameter(model.LogicaSelect.SelectedParametr.Split(',')[1], "Отдел информатизации"),
                                                                              new SqlParameter(model.LogicaSelect.SelectedParametr.Split(',')[2], DBNull.Value)).FirstOrDefault();
         template.SenderUsers.SenderRukovodstvo = Inventory.Database.SqlQuery <SenderRukovodstvo>(model.LogicaSelect.SelectUser, new SqlParameter(model.LogicaSelect.SelectedParametr.Split(',')[0], 5),
                                                                                                  new SqlParameter(model.LogicaSelect.SelectedParametr.Split(',')[1], "Руководство"),
                                                                                                  new SqlParameter(model.LogicaSelect.SelectedParametr.Split(',')[2], DBNull.Value)).FirstOrDefault();
         return(model);
     }
     catch (Exception e)
     {
         Loggers.Log4NetLogger.Error(e);
     }
     return(null);
 }
Пример #3
0
        /// <summary>
        /// Вытягивание данных на отдел и пользователей
        /// </summary>
        /// <param name="template">Шаблон раскладки</param>
        /// <param name="userRule">Данные ролей из АИС 3</param>
        /// <param name="sqlSelect">Запрос к БД для выборки данных</param>
        public void UserRuleModel(ref RuleTemplate template, UserRules userRule, ModelSelect sqlSelect)
        {
            //Группируем по номеру, отделу, дате и назначению
            var groupElement = userRule.User.Where(x => x.Number != "Скрипт").SelectMany(x => x.Rule, (u, r) => new
            {
                u, r
            }).GroupBy(x => new { x.r.Pushed, x.u.Dates, x.u.Number, x.u.Otdel })
                               .Select(x => new
            {
                x.Key.Number,
                x.Key.Dates,
                x.Key.Otdel,
                x.Key.Pushed
            }).ToList();
            int i = 0;

            foreach (var gr in groupElement)
            {
                if (template.Otdel == null)
                {
                    template.Otdel = new Otdel[groupElement.Count];
                }
                template.Otdel[i] = Inventory.Database.SqlQuery <Otdel>(
                    sqlSelect.LogicaSelect.SelectUser,
                    new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[0], 1),
                    new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[1],
                                     gr.Otdel.Replace("№ ", "№")),
                    new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[2],
                                     gr.Number)).FirstOrDefault() ??
                                    new Otdel()
                {
                    Number     = gr.Number, NameOtdel = "Ошибка в наименование отдела Кадры,AD,АИС3",
                    RnameOtdel = "Ошибка в наименование отдела Кадры,AD,АИС3",
                    SmallName  = "Отсутствует", NamePosition = "Отсутствует"
                };
                template.Otdel[i].Dates         = Convert.ToDateTime(gr.Dates);
                template.Otdel[i].DateStatement = Convert.ToDateTime(gr.Dates).AddWorkdays(-1);
                var user = userRule.User.SelectMany(x => x.Rule, (u, r) => new
                                                    { u, r }).Where(userRole =>
                                                                    (userRole.u.Dates == gr.Dates) &&
                                                                    (userRole.u.Number == gr.Number) &&
                                                                    (userRole.r.Pushed == gr.Pushed) &&
                                                                    (userRole.u.Otdel.Replace("№ ", "№") == gr.Otdel.Replace("№ ", "№"))
                                                                    ).Select(mussel => new
                {
                    mussel.u.Dates,
                    mussel.u.Fio,
                    mussel.u.SysName,
                    mussel.u.Dolj,
                    Otdel = mussel.u.Otdel.Replace("№ ", "№"),
                    mussel.u.Number
                }).Distinct().ToList();
                int j = 0;
                foreach (var userRole in user)
                {
                    var roleAll = userRule.User.Where(u =>
                                                      u.Dates == userRole.Dates && u.Dolj == userRole.Dolj && u.Otdel.Replace("№ ", "№") == userRole.Otdel &&
                                                      u.Fio == userRole.Fio && u.SysName == userRole.SysName && u.Number == userRole.Number).
                                  Select(x => x.Rule.Where(r => r.Pushed == gr.Pushed)).Aggregate((element, next) => element.Concat(next).ToArray()).ToArray();

                    if (template.Otdel[i].Users == null)
                    {
                        template.Otdel[i].Users = new LibaryXMLAutoModelXmlAuto.OtdelRuleUsers.Users[user.Count];
                    }
                    template.Otdel[i].Users[j] = Inventory.Database.SqlQuery <LibaryXMLAutoModelXmlAuto.OtdelRuleUsers.Users>(sqlSelect.LogicaSelect.SelectUser, new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[0], 2),
                                                                                                                              new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[1], userRole.SysName.Split('@')[0]),
                                                                                                                              new SqlParameter(sqlSelect.LogicaSelect.SelectedParametr.Split(',')[2], DBNull.Value)).FirstOrDefault() ??
                                                 new LibaryXMLAutoModelXmlAuto.OtdelRuleUsers.Users()
                    {
                        NameUser     = userRole.Fio, NamePosition = userRole.Dolj, IpAdress = null,
                        Tabel        = $"regions\\{userRole.SysName.Split('@')[0]}", NumberKabinet = null,
                        RuleTemplate = null
                    };
                    template.Otdel[i].Users[j].RuleTemplate = roleAll.Select(elem => $"{elem.Types}: {elem.Name} {((string.IsNullOrWhiteSpace(elem.DateFinish) || elem.Pushed == "Отзыв") ? null :" - " + elem.DateFinish)}").Aggregate(
                        (element, next) => element + (string.IsNullOrWhiteSpace(element) ? string.Empty : ", ") + next);
                    template.Otdel[i].Users[j].Pushed = roleAll[0].Pushed;
                    j++;
                }
                i++;
            }
        }