public async Task AddConfigurationAsync(int companyId, FileMetadata fileMetadata) { StreamWriter fileWriter = null; try { JToken rootToken = await GetRootTokenAsync(); if (rootToken == null) { throw new FileNotFoundException("Configuration file is not found"); } JToken companiesToken = rootToken.SelectToken($"$.companies[?(@.companyId == {companyId})]"); //if company node exists, add new file to files array if (companiesToken != null) { JArray filesArrayToken = (JArray)companiesToken.SelectToken($"$..files"); filesArrayToken.Add(JToken.FromObject(fileMetadata)); } else { //if company node does not exist, add company first, then files array to that company var compArray = (JArray)rootToken.SelectToken($"$.companies"); CompanyMetadata company = new CompanyMetadata() { CompanyId = companyId, files = new List <FileMetadata>() { fileMetadata } }; compArray.Add(JToken.FromObject(company)); } using (fileWriter = File.CreateText(_configPath)) { using (JsonTextWriter writer = new JsonTextWriter(fileWriter) { Formatting = Formatting.Indented }) { await rootToken.WriteToAsync(writer); } } } finally { fileWriter?.Close(); } }
protected void InitializeMasterLists(LiteUser currentUser) { ListHelper.InitializeAreas(currentUser); ListHelper.InitializeGoals(currentUser); ListHelper.InitializeMetrics(currentUser); MasterAreas = ListHelper.GetAreas().ToList(); MasterGoals = ListHelper.GetGoals().ToList(); MasterMetrics = ListHelper.GetMetrics().ToList(); CompanyMetadata = new CompanyMetadata { AreaCount = MasterAreas.Count, GoalCount = MasterGoals.Count, MetricCount = MasterMetrics.Count }; }
public bool IsReportNewlyCompleted(Report report, CompanyMetadata companyMetadata) { // We don't change the report status if it's already set manually or already complete if (report.IsStatusManual || report.Status == ReportStatus.Completed) { return(false); } if (!string.IsNullOrWhiteSpace(report.Summary) && companyMetadata.AreaCount == report.AreaCount && companyMetadata.MetricCount == report.MetricCount) { report.Status = ReportStatus.Completed; Update(report); return(true); } return(false); }