using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using System.IO; using System.Text; using System.Threading.Tasks; using zero.Core; using zero.Core.Api; using zero.Core.Entities; using zero.Core.Extensions; using zero.Core.Identity; using zero.TestData; using zero.Web.Mapper; using zero.Web.Models; namespace zero.Web.Controllers { [ZeroAuthorize(Permissions.Sections.Spaces, PermissionsValue.True)] public class SpacesController : BackofficeController { private ISpacesApi Api { get; set; } public SpacesController(IZeroConfiguration config, ISpacesApi api, IMapper mapper, IToken token) : base(config, mapper, token) { Api = api; } /// /// Get space by alias /// public IActionResult GetByAlias([FromQuery] string alias) { return Json(Api.GetByAlias(alias)); } /// /// Get all spaces /// public IActionResult GetAll() { return Json(Api.GetAll()); } /// /// Get list items in a space /// public async Task GetList([FromQuery] string alias, [FromQuery] ListQuery query = null) { return Json(await Api.GetListByQuery(alias, query)); } /// /// Get list items in a space /// public async Task GetContent([FromQuery] string alias, [FromQuery] string contentId = null) { TeamMember model = new TeamMember(); if (!contentId.IsNullOrEmpty()) { model = await Api.GetItem(alias, contentId); } JsonSerializerSettings settings = JsonConvert.DefaultSettings(); settings.TypeNameHandling = TypeNameHandling.Objects; return Json(new SpaceContentEditModel() { Id = model.Id, Alias = alias, Model = model, Config = Api.GetEditorConfig(alias) }, settings); } /// /// Save content item /// public async Task Save([FromBody] SpaceContentEditModel model) { return Json(await Api.Save(model.Alias, model.Model)); } /// /// Deletes a country /// //public async Task Delete([FromQuery] string id) //{ // return await As(await Api.Delete(id)); //} } }