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
            };
        }
Exemple #3
0
        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);
        }