using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Http; using Step.Model.ConfigModels; using Step.Model.DTOModels; using static Step.Config.ServerConfig; using static Step.Utils.LanguageController; using static Step.Utils.Constants; namespace Step.Controllers.WebApi { [RoutePrefix("api/language")] public class LanguageController : ApiController { [Route("languages"), HttpGet] public IHttpActionResult GetLanguageList() { List 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 translations = GetTranslationsFromFile(language); // Get Maintenance translations Dictionary 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 GetLocalizeMaintenanceName(string language, List maitenancesConfig) { Dictionary returnDictionary = new Dictionary(); return MaintenancesConfig .ToDictionary( x => MAINTENANCE_PREFIX_ID + x.Id.ToString(), x => GetValueFromMaintenanceNameList(x.LocalizedNames, language, x.Id) ); } public static string GetValueFromMaintenanceNameList(Dictionary 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; } } }