Merge pull request #671 from hargata/Hargata/translation.getter

Add functionality to download all translations.
This commit is contained in:
Hargata Softworks
2024-10-27 19:04:26 -06:00
committed by GitHub
4 changed files with 143 additions and 6 deletions

View File

@@ -62,7 +62,8 @@ namespace CarCareTracker.Controllers
{
vehiclesStored = _userLogic.FilterUserVehicles(vehiclesStored, GetUserID());
}
var vehicleViewModels = vehiclesStored.Select(x => {
var vehicleViewModels = vehiclesStored.Select(x =>
{
var vehicleVM = new VehicleViewModel
{
Id = x.Id,
@@ -224,7 +225,8 @@ namespace CarCareTracker.Controllers
return Json(result);
}
return Json(false);
} catch (Exception ex)
}
catch (Exception ex)
{
_logger.LogError(ex.Message);
return Json(false);
@@ -241,7 +243,7 @@ namespace CarCareTracker.Controllers
var result = _loginLogic.UpdateUserDetails(userId, userAccount);
return Json(result);
}
return Json(new OperationResponse { Success = false, Message = StaticHelper.GenericErrorMessage});
return Json(new OperationResponse { Success = false, Message = StaticHelper.GenericErrorMessage });
}
catch (Exception ex)
{
@@ -307,11 +309,12 @@ namespace CarCareTracker.Controllers
try
{
var httpClient = new HttpClient();
var translationData = await httpClient.GetFromJsonAsync<Dictionary<string,string>>(StaticHelper.GetTranslationDownloadPath(continent, name)) ?? new Dictionary<string, string>();
var translationData = await httpClient.GetFromJsonAsync<Dictionary<string, string>>(StaticHelper.GetTranslationDownloadPath(continent, name)) ?? new Dictionary<string, string>();
if (translationData.Any())
{
_translationHelper.SaveTranslation(name, translationData);
} else
}
else
{
_logger.LogError($"Unable to download translation: {name}");
return Json(false);
@@ -324,6 +327,125 @@ namespace CarCareTracker.Controllers
return Json(false);
}
}
[Authorize(Roles = nameof(UserData.IsRootUser))]
[HttpGet]
public async Task<IActionResult> DownloadAllTranslations()
{
try
{
var httpClient = new HttpClient();
var translations = await httpClient.GetFromJsonAsync<Translations>(StaticHelper.TranslationDirectoryPath) ?? new Translations();
int translationsDownloaded = 0;
foreach (string translation in translations.Asia)
{
try
{
var translationData = await httpClient.GetFromJsonAsync<Dictionary<string, string>>(StaticHelper.GetTranslationDownloadPath("Asia", translation)) ?? new Dictionary<string, string>();
if (translationData.Any())
{
_translationHelper.SaveTranslation(translation, translationData);
translationsDownloaded++;
}
}
catch (Exception ex)
{
_logger.LogError($"Error Downloading Translation {translation}: {ex.Message} ");
}
}
foreach (string translation in translations.Africa)
{
try
{
var translationData = await httpClient.GetFromJsonAsync<Dictionary<string, string>>(StaticHelper.GetTranslationDownloadPath("Africa", translation)) ?? new Dictionary<string, string>();
if (translationData.Any())
{
_translationHelper.SaveTranslation(translation, translationData);
translationsDownloaded++;
}
}
catch (Exception ex)
{
_logger.LogError($"Error Downloading Translation {translation}: {ex.Message} ");
}
}
foreach (string translation in translations.Europe)
{
try
{
var translationData = await httpClient.GetFromJsonAsync<Dictionary<string, string>>(StaticHelper.GetTranslationDownloadPath("Europe", translation)) ?? new Dictionary<string, string>();
if (translationData.Any())
{
_translationHelper.SaveTranslation(translation, translationData);
translationsDownloaded++;
}
}
catch (Exception ex)
{
_logger.LogError($"Error Downloading Translation {translation}: {ex.Message} ");
}
}
foreach (string translation in translations.NorthAmerica)
{
try
{
var translationData = await httpClient.GetFromJsonAsync<Dictionary<string, string>>(StaticHelper.GetTranslationDownloadPath("NorthAmerica", translation)) ?? new Dictionary<string, string>();
if (translationData.Any())
{
_translationHelper.SaveTranslation(translation, translationData);
translationsDownloaded++;
}
}
catch (Exception ex)
{
_logger.LogError($"Error Downloading Translation {translation}: {ex.Message} ");
}
}
foreach (string translation in translations.SouthAmerica)
{
try
{
var translationData = await httpClient.GetFromJsonAsync<Dictionary<string, string>>(StaticHelper.GetTranslationDownloadPath("SouthAmerica", translation)) ?? new Dictionary<string, string>();
if (translationData.Any())
{
_translationHelper.SaveTranslation(translation, translationData);
translationsDownloaded++;
}
}
catch (Exception ex)
{
_logger.LogError($"Error Downloading Translation {translation}: {ex.Message} ");
}
}
foreach (string translation in translations.Oceania)
{
try
{
var translationData = await httpClient.GetFromJsonAsync<Dictionary<string, string>>(StaticHelper.GetTranslationDownloadPath("Oceania", translation)) ?? new Dictionary<string, string>();
if (translationData.Any())
{
_translationHelper.SaveTranslation(translation, translationData);
translationsDownloaded++;
}
}
catch (Exception ex)
{
_logger.LogError($"Error Downloading Translation {translation}: {ex.Message} ");
}
}
if (translationsDownloaded > 0)
{
return Json(new OperationResponse() { Success = true, Message = $"{translationsDownloaded} Translations Downloaded" });
} else
{
return Json(new OperationResponse() { Success = false, Message = "No Translations Downloaded" });
}
}
catch (Exception ex)
{
_logger.LogError($"Unable to retrieve translations: {ex.Message}");
return Json(new OperationResponse() { Success = false, Message = StaticHelper.GenericErrorMessage });
}
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{

View File

@@ -72,4 +72,5 @@
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" onclick="hideTranslationDownloader()">@translator.Translate(userLanguage, "Cancel")</button>
<button type="button" class="btn btn-primary" onclick="downloadAllTranslations()">@translator.Translate(userLanguage, "Download All Translations")</button>
</div>

File diff suppressed because one or more lines are too long

View File

@@ -244,7 +244,9 @@ function hideTranslationDownloader() {
$('#translationDownloadModal').modal('hide');
}
function downloadTranslation(continent, name) {
sloader.show();
$.get(`/Home/DownloadTranslation?continent=${continent}&name=${name}`, function (data) {
sloader.hide();
if (data) {
successToast("Translation Downloaded");
updateSettings();
@@ -252,4 +254,16 @@ function downloadTranslation(continent, name) {
errorToast(genericErrorMessage());
}
})
}
function downloadAllTranslations() {
sloader.show();
$.get('/Home/DownloadAllTranslations', function (data) {
sloader.hide();
if (data.success) {
successToast(data.message);
updateSettings();
} else {
errorToast(data.message);
}
})
}