/// <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())); }
/// <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)); }
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)); }
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)); }
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); }
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); }
/// <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()); }
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())); }
/// <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)); }