Files
cms_thermo_active/Step/Controllers/WebApi/LanguageController.cs
T
Lucio Maranta 76b51ea3c5 Refactor
2018-02-20 17:03:03 +01:00

70 lines
2.5 KiB
C#

using Step.Model.ConfigModels;
using Step.Model.DTOModels;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using static Step.Config.ServerConfig;
using static Step.Utils.Constants;
using static Step.Utils.LanguageController;
namespace Step.Controllers.WebApi
{
[RoutePrefix("api/language")]
public class LanguageController : ApiController
{
[Route("languages"), HttpGet]
public IHttpActionResult GetLanguageList()
{
List<DTOLanguageModel> availableLanguages = GetLanguageListFromDirectory();
if (availableLanguages == null)
return NotFound();
return Ok(availableLanguages);
}
[Route("{language}"), HttpGet()]
public IHttpActionResult GetTranslations(string language)
{
if (!IsValidLanguage(language))
return BadRequest("Language not exists");
if (!LanguageIsAvailable(language))
return NotFound();
Dictionary<string, string> translations = GetTranslationsFromFile(language);
// Get Maintenance translations
Dictionary<string, string> maintenance = GetLocalizeMaintenanceName(language, MaintenancesConfig);
// Concat 2 array
translations = translations.Concat(maintenance).ToDictionary(x => x.Key, x => x.Value);
if (translations == null)
return InternalServerError();
return Ok(translations);
}
public static Dictionary<string, string> GetLocalizeMaintenanceName(string language, List<MaintenanceConfigModel> maitenancesConfig)
{
Dictionary<string, string> returnDictionary = new Dictionary<string, string>();
return MaintenancesConfig
.ToDictionary(
x => MAINTENANCE_PREFIX_ID + x.Id.ToString(),
x => GetValueFromMaintenanceNameList(x.LocalizedNames, language, x.Id)
);
}
public static string GetValueFromMaintenanceNameList(Dictionary<string, string> localizedNames, string language, int maintenanceId)
{
// Find text from names by language id
var value = localizedNames.Where(y => y.Key == language).FirstOrDefault();
// Set default value
if (value.Key == null)
return "Maintenance string not found for id: " + maintenanceId;
else
return value.Value;
}
}
}