using Microsoft.AspNetCore.Mvc; using System.Threading.Tasks; using zero.Core.Api; using zero.Core.Entities; using zero.Core.Identity; using zero.Core.Renderer; using zero.Web.Filters; namespace zero.Web.Controllers { [ZeroAuthorize(Permissions.Settings.Languages, PermissionsValue.Read)] public class LanguagesController : BackofficeController where T : ILanguage, new() { ILanguagesApi Api; IRenderer Renderer; public LanguagesController(ILanguagesApi api, IRenderer renderer) { Api = api; Renderer = renderer; } /// /// Get empty language model /// public IActionResult GetEmpty() => Edit(new T(), Renderer); /// /// Get language by id /// public async Task GetById([FromQuery] string id) => Edit(await Api.GetById(id), Renderer); /// /// Get language renderer /// public IActionResult GetRenderer([FromServices] IRenderer renderer) => Json(renderer.Build()); /// /// 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()); /// /// Save language /// [ZeroAuthorize(Permissions.Settings.Languages, PermissionsValue.Write)] public async Task Save([FromBody] T model) => Json(await Api.Save(model)); /// /// Deletes a language /// [ZeroAuthorize(Permissions.Settings.Languages, PermissionsValue.Write)] public async Task Delete([FromQuery] string id) => Json(await Api.Delete(id)); } }