Ejemplo n.º 1
0
        /// <summary>
        /// Team Site All reports
        /// </summary>
        /// <param name="userAlias"></param>
        /// <param name="teamSiteGuid"></param>
        /// <param name="isAdmin"></param>
        /// <param name="sortField"></param>
        /// <param name="sortOrder"></param>
        /// <returns></returns>
        public IEnumerable <AppReport> GetAllReportsOfTeamSite(string userAlias, string teamSiteGuid, bool isAdmin,
                                                               SortField sortField, SortOrder sortOrder)
        {
            TileServices tService = new TileServices(_tileRepository, _teamRepository, _reportRepository, null, null, null, null);
            int          teamId   = _teamRepository.GetFiltered(_ => _.TeamGuid == new Guid(teamSiteGuid)).FirstOrDefault().Id;



            ParameterProvider pp = new ParameterProvider();

            pp.AddParameter(ContextVariable.CurrentTeamSiteGuid.ToString(), new Guid(teamSiteGuid));

            //if (userAlias != "")
            //{
            //pp.AddParameter(ContextVariable.CurrentUser.ToString(), userAlias);
            //}

            pp.AddParameter(ContextVariable.TeamSiteGuidUnderControl.ToString(), new List <Guid> {
                new Guid(teamSiteGuid)
            });


            int allreportsTileId = _tileRepository.GetAllReportsTileId(teamId);

            return(_reportRepository.
                   GetReportsByExpression(
                       tService.GetTeamSite_AllReportsTile()
                       .GetCombinedLogic(isAdmin, allreportsTileId)
                       .GetExpression(pp)).ToArray()
                   .Select(_ => _.ToAppReport()));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Выполнение задачи
        /// </summary>
        /// <param name="parameters">Провайдер параметров</param>
        public void Run(ParameterProvider parameters)
        {
            if (!string.IsNullOrEmpty(_value))
            {
                parameters.AddParameter(_key, parameters.Parse(_value).First());
            }
            if (!string.IsNullOrEmpty(_filePath))
            {
                var filePath = parameters.Parse(_filePath).First();

                if (File.Exists(filePath))
                {
                    if (_takeLines == 0)
                    {
                        _value = string.Join("\n", File.ReadAllLines(filePath).Skip(_skipLines));
                    }
                    else
                    {
                        _value = string.Join("\n", File.ReadAllLines(filePath).Skip(_skipLines).Take(_takeLines));
                    }

                    parameters.AddParameter(_key, _value);
                }
                else
                {
                    Application.Log(LogLevel.Error, string.Format("File {0} not found.", filePath));
                }
            }
        }
        /// <summary>
        /// Временная конфигурация по шаблону.
        /// </summary>
        /// <param name="template">Шаблон</param>
        /// <returns></returns>
        internal static Configuration CreateInstant(Template template)
        {
            Core.Application.Log(LogLevel.Informational, "Загрузка параметров для \"{0}\"", template.Name);

            var xml        = XDocument.Load(template.ConfigurationPath);
            var p          = xml.XPathSelectElements(@"Configuration/Parameters/Parameter");
            var parameters = new ParameterProvider(p.ToDictionary(k => k.Attribute("name").Value, v => v.Attribute("value").Value));

            parameters.AddParameter("ConfigurationPath", Path.Combine("Templates", template.Name));
            parameters.AddParameter("ReportsPath", Path.Combine(Core.Application.WorkingFolder, "Reports"));
            parameters.AddParameter("Title", template.Name);
            var taskNodes = xml.XPathSelectElements(@"Configuration/Tasks/Task");
            var tasks     = taskNodes.Select(t => Tasks.TaskFactory.Create(t)).ToList();

            return(new Configuration(template.Name, tasks, parameters, null));
        }
Ejemplo n.º 4
0
        public ICollection <Statistics> GetTeamSiteReportsStatistics(Int32 tileId, String userAlias, String teamSiteGuid, Boolean isCurrentSiteAdmin)
        {
            bool         hasAdminSite = isCurrentSiteAdmin;
            TileServices tService     = new TileServices(_tileRepository, _teamRepository, _reportRepository, _userRepository, _tagRepository, _categoryRepository, _tileQueryRepository);

            AppTile at = tService.GetTileById(tileId);

            ParameterProvider pp = new ParameterProvider();

            //if (userAlias != "")
            //{
            //pp.AddParameter(ContextVariable.CurrentUser.ToString(), userAlias);
            //}
            pp.AddParameter(ContextVariable.CurrentTeamSiteGuid.ToString(), new Guid(teamSiteGuid));
            //pp.AddParameter(ContextVariable.CurrentUserGroup.ToString(), appUserGroupList);

            //if (hasAdminSite)
            //{
            pp.AddParameter(ContextVariable.TeamSiteGuidUnderControl.ToString(), new List <Guid>()
            {
                new Guid(teamSiteGuid)
            });
            //}


            Logic logic = at.GetCombinedLogic(hasAdminSite, tileId).And((new TeamSiteGUID()).Equal(Guid.Parse(teamSiteGuid)));


            var reports = _reportRepository.GetReportByLogic(logic, pp).ToArray().Select(_ => _.ToAppReport()).ToList();

            foreach (var report in reports)
            {
                foreach (var cat in report.Categories)
                {
                    if (cat.ParentId != null)
                    {
                        cat.ParentCategory = _categoryRepository.Get(cat.ParentId.GetValueOrDefault()).ToAppCategory();
                        //cat.Reports.Add(report);
                    }
                }
            }


            return(GetStatistics(reports));
        }
Ejemplo n.º 5
0
        private List <AppReport> GetReportsByTeam(Guid teamSiteGuid, Int32 tileId,
                                                  ReportFilter filter, Boolean isCurrentUserTeamSiteAdmin,
                                                  String userAlias, Int32 pageNum, Int32 pageSize, SortField sortField, SortOrder sortOrder)
        {
            #region Get the logic
            TileServices tService = new TileServices(_tileRepository, _teamRepository, _reportRepository, null, null, null, _tileQueryRepository);

            AppTile ap = null;
            bool    hasAdminTeamSite = isCurrentUserTeamSiteAdmin;
            ap = tService.GetTileById(tileId);
            #endregion

            #region Combine the logic

            var topLevelLogic = (new TeamSiteGUID()).Equal(teamSiteGuid).And(ap.GetCombinedLogic(hasAdminTeamSite, tileId));

            var logic = GenerateLogicByFilter(filter);
            if (logic != null)
            {
                topLevelLogic.AddElement(logic);
            }
            #endregion

            #region Compose the logic parameter
            ParameterProvider pp = new ParameterProvider();
            //if (userAlias != "")
            //{
            //pp.AddParameter(ContextVariable.CurrentUser.ToString(), userAlias);
            //}
            pp.AddParameter(ContextVariable.CurrentTeamSiteGuid.ToString(), teamSiteGuid);
            //if (isCurrentUserTeamSiteAdmin)
            //{
            pp.AddParameter(ContextVariable.TeamSiteGuidUnderControl.ToString(), (new List <Guid>()
            {
                teamSiteGuid
            }));
            //}
            #endregion

            #region generate the result

            return(GetReportsByLogic(topLevelLogic, sortField, sortOrder, pp, pageNum, pageSize).ToArray().Select(_ => _.ToAppReport()).ToList());

            #endregion
        }
        /// <summary>
        /// Создание конфигурации
        /// </summary>
        /// <param name="name">Имя</param>
        /// <returns></returns>
        static public Configuration Get(string name)
        {
            string        description = string.Empty;
            Configuration configuration;

            var path = Path.Combine(ConfigurationPath, name, "application.config");

            if (!File.Exists(path))
            {
                return(null);
            }

            var xml = XDocument.Load(path);

            var configurationNode = xml.XPathSelectElement("Configuration");

            description = configurationNode?.Attribute("description")?.Value;

            var template = configurationNode.Attribute("template");

            if (template != null && !string.IsNullOrEmpty(template.Value))
            {
                configuration = CreateInstant(TemplateManager.Get(template.Value));

                foreach (var p in xml.XPathSelectElements(@"Configuration/Parameters/Parameter"))
                {
                    configuration.Parameters.AddParameter(p.Attribute("name").Value, p.Attribute("value").Value);
                }
            }
            else
            {
                var p          = xml.XPathSelectElements(@"Configuration/Parameters/Parameter");
                var parameters = new ParameterProvider(p.ToDictionary(k => k.Attribute("name").Value, v => v.Attribute("value").Value));
                parameters.AddParameter("ConfigurationPath", Path.Combine("Configurations", name));
                parameters.AddParameter("ReportsPath", Path.Combine(Core.Application.WorkingFolder, "Reports"));

                var taskNodes = xml.XPathSelectElements(@"Configuration/Tasks/Task");
                var tasks     = taskNodes.Select(t => Tasks.TaskFactory.Create(t)).ToList();

                configuration = new Configuration(name, tasks, parameters, description);
            }

            return(configuration);
        }
        /// <summary>
        /// Создание временной конфигурации для быстрого анализа.
        /// </summary>
        /// <param name="template">шаблон</param>
        /// <param name="product">приложение</param>
        /// <returns></returns>
        internal static Configuration CreateInstant(IISApplication product)
        {
            Template template    = null;
            string   productCode = null;

            foreach (var config in Directory.GetFiles(product.Path, "*.config"))
            {
                var appConfig = XDocument.Load(config);
                productCode = appConfig.Root.Element("NpoComputer.Product")?.Element("Code")?.Value;
                if (string.IsNullOrEmpty(productCode))
                {
                    continue;
                }
                template = TemplateManager.GetByProductCode(productCode, FilterMode.InstantOnly);
                if (template != null)
                {
                    break;
                }
            }

            if (template == null)
            {
                throw new FileNotFoundException("Не найдено подходящих шаблонов для данного приложения.");
            }

            Core.Application.Log(LogLevel.Informational, "Загрузка параметров для сайта \"{0}\"", product);

            var xml        = XDocument.Load(template.ConfigurationPath);
            var p          = xml.XPathSelectElements(@"Configuration/Parameters/Parameter");
            var parameters = new ParameterProvider(p.ToDictionary(k => k.Attribute("name").Value, v => v.Attribute("value").Value));

            parameters.AddParameter("ConfigurationPath", Path.Combine("Templates", template.Name));
            parameters.AddParameter("ReportsPath", Path.Combine(Core.Application.WorkingFolder, "Reports"));
            parameters.AddParameter("Title", product.ToString());
            parameters.AddParameter("SiteLogFile", product.IISLogPath);
            parameters.AddParameter("ApplicationPath", product.Path);

            if (productCode.Contains("NOMAD")) //TODO: Убрать костыль
            {
                var appPath     = product.Path;
                var logSettings = XDocument.Load(Path.Combine(appPath, "LogSettings.config"));
                var path        = ((IEnumerable)logSettings.XPathEvaluate("/*[name()='nlog']/*[name()='variable' and @name='logs-path']/@value")).Cast <XAttribute>().FirstOrDefault()?.Value;
                if (path != null && path.Contains("basedir"))
                {
                    path = Path.Combine(appPath, @"App_Data\Logs\");
                }
                parameters.AddParameter("ApplicationLogsPath", path);
                //TODO: Получать путь
                parameters.AddParameter("ClientsLogPath", Path.Combine(appPath, @"\App_Data\ClientLogs\"));
            }

            var taskNodes = xml.XPathSelectElements(@"Configuration/Tasks/Task");
            var tasks     = taskNodes.Select(t => Tasks.TaskFactory.Create(t)).ToList();

            return(new Configuration(template.Name, tasks, parameters, null));
        }
Ejemplo n.º 8
0
        public List <AppTile> GetCustomerizeTilesWithCountByTeamId(int id, string userAlias, bool isAdmin, string guid)
        {
            ParameterProvider pp = new ParameterProvider();

            //if (userAlias != "")
            //{
            //pp.AddParameter(ContextVariable.CurrentUser.ToString(), userAlias);
            //}

            pp.AddParameter(ContextVariable.CurrentTeamSiteGuid.ToString(), new Guid(guid));
            if (isAdmin)
            {
                pp.AddParameter(ContextVariable.TeamSiteGuidUnderControl.ToString(), new List <Guid>()
                {
                    new Guid(guid)
                });
            }

            List <AppTile> aTiles = new List <AppTile>();

            foreach (var t in _tileRepository.GetTilesByTeamId(id))
            {
                aTiles.Add(t.ToAppTile());
            }
            Guid teamGuid = Guid.Parse(guid);

            foreach (var item in aTiles)
            {
                item.BasicLogic = this.GetAppTileLogic(item);

                if (item.IsCustomized)
                {
                    item.ReportCount = _reportRepository.GetReportsByExpression(item.GetCombinedLogic(isAdmin, item.Id).And((new TeamSiteGUID()).Equal(teamGuid)).GetExpression(pp)).Count();
                }
                else
                {
                    item.ReportCount = _reportRepository.GetReportsByExpression(item.GetCombinedLogic(isAdmin, item.Id).GetExpression(pp)).Count();
                }
            }
            return(aTiles);
        }
Ejemplo n.º 9
0
        public Int32 GetTempTilesWithReportCount(String teamSiteGuid, string userAlias, AppTile appTile)
        {
            Guid guid = new Guid(teamSiteGuid);

            ParameterProvider pp = new ParameterProvider();

            //if (userAlias != "")
            //{
            // pp.AddParameter(ContextVariable.CurrentUser.ToString(), userAlias);
            //}
            pp.AddParameter(ContextVariable.CurrentTeamSiteGuid.ToString(), new Guid(teamSiteGuid));
            pp.AddParameter(ContextVariable.TeamSiteGuidUnderControl.ToString(), new List <Guid>()
            {
                new Guid(teamSiteGuid)
            });

            appTile.BasicLogic  = appTile.BasicLogic.And((new TeamSiteGUID()).Equal(guid));
            appTile.ReportCount = _reportRepository.GetReportsByExpression(appTile.GetCombinedLogic(true, appTile.Id).GetExpression(pp)).Count();

            return(appTile.ReportCount);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Выполнение задачи
        /// </summary>
        /// <param name="parameters">Провайдер параметров</param>
        public void Run(ParameterProvider parameters)
        {
            var types = new TypeRegistry();

            types.RegisterDefaultTypes();
            types.RegisterType("CultureInfo", typeof(CultureInfo));
            types.RegisterSymbol("fromDate", parameters._fromDate);
            types.RegisterSymbol("toDate", parameters._toDate);
            var expression = new CompiledExpression(parameters.Parse(_expression).First());

            expression.TypeRegistry = types;
            parameters.AddParameter(parameters.Parse(_outputParam).First(), expression.Eval().ToString());
        }
Ejemplo n.º 11
0
        public IEnumerable <AppReport> GetReportsByTileId(AppTile appTile, string userAlias, bool isAdmin,
                                                          string teamSiteGuid,
                                                          SortField sortField, SortOrder sortOrder)
        {
            Guid guid = new Guid(teamSiteGuid);

            ParameterProvider pp = new ParameterProvider();

            //if (userAlias != "")
            //{
            //pp.AddParameter(ContextVariable.CurrentUser.ToString(), userAlias);
            //}
            pp.AddParameter(ContextVariable.CurrentTeamSiteGuid.ToString(), new Guid(teamSiteGuid));

            //if (isAdmin)
            //{
            pp.AddParameter(ContextVariable.TeamSiteGuidUnderControl.ToString(), new List <Guid>()
            {
                new Guid(teamSiteGuid)
            });
            //}
            appTile.BasicLogic = appTile.BasicLogic.And((new TeamSiteGUID()).Equal(guid));
            return(_reportRepository.GetReportsByExpression(appTile.GetCombinedLogic(true, appTile.Id).GetExpression(pp)).ToArray().Select(_ => _.ToAppReport()));
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Запуск задачи
        /// </summary>
        /// <param name="parameters">Провайдер параметров</param>
        public void Run(ParameterProvider parameters)
        {
            System.Threading.Thread.Sleep(5000);
            FormatCompiler compiler = new FormatCompiler();

            if (string.IsNullOrWhiteSpace(_template) && !string.IsNullOrWhiteSpace(_templateFile))
            {
                _template = File.ReadAllText(parameters.Parse(_templateFile).First());
            }

            //Компилция шаблона
            Generator generator = compiler.Compile(_template);

            //В шаблоне можно использовать все параметры, заданные в конфигурации.
            var _templateParams = new Dictionary <string, object>();

            foreach (var param in parameters.GetParameters())
            {
                _templateParams.Add(param.Key, param.Value);
            }


            foreach (var param in _paramsDescription)
            {
                object value    = null;
                var    filePath = parameters.Parse(param.FilePath).First();
                var    enc      = String.IsNullOrEmpty(param.Encoding) ? System.Text.Encoding.UTF8 : System.Text.Encoding.GetEncoding(param.Encoding);

                if (File.Exists(filePath))
                {
                    switch (param.Mode)
                    {
                    case "text":
                        if (param.HasHeaders)
                        {
                            value = string.Join("\n", File.ReadAllLines(filePath).Skip(1));
                        }
                        else
                        {
                            value = File.ReadAllText(filePath, enc);
                        }
                        break;

                    case "csv":
                        value = File.ReadAllLines(filePath, enc).Skip(param.HasHeaders ? 1 : 0).Select(x => x.Split(';')).ToList();
                        break;

                    case "tsv":
                        value = File.ReadAllLines(filePath, enc).Skip(param.HasHeaders ? 1 : 0).Select(x => x.Split('\t')).ToList();
                        break;

                    default:
                        value = File.ReadAllText(filePath, enc);
                        break;
                    }
                }



                _templateParams.Add(param.Name, value);
            }

            parameters.AddParameter(_outputParam, generator.Render(_templateParams));
        }