public async Task SaveLanguageToFile(SaveLanguageModel language) { // Save to: // {path-to-project}/data/Language/{language.Name}/{language.YearStart}-{language.YearEnd} // - area.geojson: language.Area // - features.json: language.Features // - additionalDetails.json: language.AdditionalDetails var years = YearsToFolderName(language.YearStart.Value, language.YearEnd.Value); var path = $"{LanguagePathFolder}/{language.Name}/{years}/"; Directory.CreateDirectory(path); if (File.Exists($"{path}/area.geojson")) { throw new InvalidOperationException($"Save cannot be done, because the geojson already exists in the given name / year range '{language.Name}/{years}/'"); } var geojson = EnsureDataIsFeatureCollectiion(language.GeoJson.ToString()); await DirectoryHelper.WriteAllTextIfDataAsync($"{path}/area.geojson", geojson); await DirectoryHelper.WriteAllTextIfDataAsync($"{path}/features.json", language.Features); await DirectoryHelper.WriteAllTextIfDataAsync($"{path}/additionalDetails", language.AdditionalDetails); }
private static SaveLanguageModel MapModel(GetLanguageResponse response) { var model = new SaveLanguageModel { Version = response.Data.Version, Name = response.Data.Name, Code = response.Data.Code }; return(model); }
public async Task <ActionResult> SaveToFile(SaveLanguageModel language) { try { this.logger.LogDebug("POST api/administrator/save/file"); await this.languageHelper.SaveLanguageToFile(language); return(Ok()); } catch (Exception exception) { this.logger.LogError($"PUT api/administrator/save/file - Error - The exception: {exception}"); return(StatusCode(StatusCodes.Status500InternalServerError, exception)); } }
public async Task Test_Post_SaveToFile(string filename, int?yearStart, int?yearEnd, string name) { // Arrange var language = new SaveLanguageModel { GeoJson = System.IO.File.ReadAllText($"{polygonPath}/{filename}"), YearStart = yearStart, YearEnd = yearEnd, Name = name }; var controller = new AdministratorController(this.loggerMock.Object, this.contextFactory, this.helperMock.Object); // Act var result = await controller.SaveToFile(language); // Assert var viewResult = Assert.IsType <OkResult>(result); }
public async Task <ActionResult> SaveToDatabase(SaveLanguageModel language) { try { this.logger.LogDebug("POST api/administrator/save/db"); using var db = this.contextFactory.CreateDbContext(); await db.Languages.AddModelAsync(language); await db.SaveChangesAsync(); return(Ok()); } catch (Exception exception) { this.logger.LogError($"PUT api/administrator/save/database - Error - The exception: {exception}"); return(StatusCode(StatusCodes.Status500InternalServerError, exception)); } }