/// <summary> /// Helper method for calculating precentage of organisations stats /// </summary> /// <param name="organisationStats">Object of type organsiations stats</param> /// <returns>Updated organisation stats</returns> public OrganisationStats CalculateProcentage(OrganisationStats organisationStats) { organisationStats.Total = organisationStats.AS_ZeroToFour + organisationStats.AS_FiveToTen + organisationStats.AS_OverTen + organisationStats.ENK + organisationStats.ANDRE; organisationStats.ProsANDRE = (int)Math.Round((double)(100 * organisationStats.ANDRE) / organisationStats.Total); organisationStats.ProsENK = (int)Math.Round((double)(100 * organisationStats.ENK) / organisationStats.Total); organisationStats.Pros_AS_ZeroToFour = (int)Math.Round((double)(100 * organisationStats.AS_ZeroToFour) / organisationStats.Total); organisationStats.Pros_AS_FiveToTen = (int)Math.Round((double)(100 * organisationStats.AS_FiveToTen) / organisationStats.Total); organisationStats.Pros_AS_OverTen = (int)Math.Round((double)(100 * organisationStats.AS_OverTen) / organisationStats.Total); return(organisationStats); }
public async System.Threading.Tasks.Task ReadUpdatedFileForStatsReadsFileAndReturnsCorrectStatsAsync() { //Arrange var filePath = "C:\\Users\\marja\\source\\repos\\PowerCustomerReader\\PowerCustomerReaderUnitTest\\TestFiles\\MockFile.csv"; FileService fileService = new FileService(); //Act OrganisationStats result = await fileService.ReadUpdatedFileForStats(filePath); //Assert Assert.IsInstanceOfType(result, typeof(OrganisationStats)); Assert.AreEqual(result.ENK, 0); Assert.AreEqual(result.AS_OverTen, 37); }
public void CalculateProcentageReturnsCorrectTotal() { //Arrange var organisationStats = new OrganisationStats() { ENK = 100, ANDRE = 100, AS_ZeroToFour = 100, AS_FiveToTen = 100, AS_OverTen = 100 }; FileService fileService = new FileService(); //Act var result = fileService.CalculateProcentage(organisationStats); //Assert Assert.AreEqual(500, result.Total); }
/// <summary> /// Reads updated files and returns organisations stats /// </summary> /// <param name="filePath">where to read file</param> /// <returns>List of organsiations stats</returns> public async Task <OrganisationStats> ReadUpdatedFileForStats(string filePath) { var organisationStats = new OrganisationStats(); using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, FileOptions.Asynchronous)) using (var reader = new StreamReader(stream, Encoding.UTF8)) { string line; while ((line = await reader.ReadLineAsync()) != null) { string[] lineSplit = line.Split(";"); int numberOfEmp = Int32.Parse(lineSplit[0]); if (lineSplit[1].Equals("AS")) { if (numberOfEmp <= 5) { organisationStats.AS_ZeroToFour += numberOfEmp; } else if (numberOfEmp <= 10 && numberOfEmp > 5) { organisationStats.AS_FiveToTen += numberOfEmp; } else if (numberOfEmp > 10) { organisationStats.AS_OverTen += numberOfEmp; } } else if (lineSplit[1] == "ENK") { organisationStats.ENK += numberOfEmp; } else { organisationStats.ANDRE += numberOfEmp; } } } return(CalculateProcentage(organisationStats)); }
/// <summary> /// Checks if file exists /// uses fileservice to read updated file /// Updates ViewModel with updated stats /// </summary> /// <param name="hostingEnviroment">Enviroment</param> /// <returns>StatsViewModel</returns> public async Task <IActionResult> Index([FromServices] IHostingEnvironment hostingEnviroment) { string filePath = $"{hostingEnviroment.WebRootPath}\\files\\oppdatert-po-kunder.csv"; OrganisationStats organisationStats = new OrganisationStats(); FileService fileService = new FileService(); if (System.IO.File.Exists(filePath)) { organisationStats = await fileService.ReadUpdatedFileForStats(filePath); } else { organisationStats = null; } StatsViewModel model = new StatsViewModel() { organisationStats = organisationStats }; return(View(model)); }