using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using zero.Core.Api; using zero.Core.Entities; using zero.Core.Extensions; using zero.Core.Identity; namespace zero.Web.Controllers { [ZeroAuthorize(Permissions.Settings.Languages, PermissionsValue.Read)] public class LanguagesController : BackofficeController { ILanguagesApi Api; ILanguage Blueprint; public LanguagesController(ILanguagesApi api, ILanguage blueprint) { Api = api; Blueprint = blueprint; } /// /// Get empty language model /// public IActionResult GetEmpty() => Edit(Blueprint.Clone()); /// /// Get language by id /// public async Task GetById([FromQuery] string id) => Edit(await Api.GetById(id)); /// /// Get all languages /// public async Task GetAll([FromQuery] ListQuery query) => Json(await Api.GetByQuery(query)); /// /// Returns all cultures available for creating languages. /// public IActionResult GetAllCultures() => Json(Api.GetAllCultures()); /// /// Returns all available backoffice cultures. /// public IActionResult GetSupportedCultures() => Json(Api.GetAllCultures(Options.SupportedLanguages)); public async Task GetForPicker() => Json((await Api.GetAll()).Select(x => new SelectModel() { Id = x.Id, Name = x.Name, IsActive = x.IsActive })); public async Task GetPreviews(List ids) { return JsonPreviews(await Api.GetByIds(ids.ToArray()), item => new PreviewModel() { Id = item.Id, Icon = "fth-globe", Name = item.Name }); } /// /// Save language /// [ZeroAuthorize(Permissions.Settings.Languages, PermissionsValue.Update)] public async Task Save([FromBody] ILanguage model) => Json(await Api.Save(model)); /// /// Deletes a language /// [ZeroAuthorize(Permissions.Settings.Languages, PermissionsValue.Update)] public async Task Delete([FromQuery] string id) => Json(await Api.Delete(id)); } }