using Microsoft.AspNetCore.Mvc; using System.Collections; namespace zero.Api.Endpoints.Spaces; public class SpacesController : ZeroApiEntityStoreController { ISpaceTypeService SpaceTypes; public SpacesController(ISpaceStore store, ISpaceTypeService spaceTypes) : base(store) { SpaceTypes = spaceTypes; } [HttpGet("types")] [ZeroAuthorize(SpacePermissions.Read)] public virtual ActionResult GetTypes() => Ok(SpaceTypes.GetAll()); [HttpGet("types/{alias}")] [ZeroAuthorize(SpacePermissions.Read)] public virtual ActionResult GetType(string alias) => Ok(SpaceTypes.GetByAlias(alias)); [HttpGet("{alias}")] [ZeroAuthorize(SpacePermissions.Read)] public virtual async Task> Get(string alias, [FromQuery] ListQuery query = null) { SpaceType space = SpaceTypes.GetByAlias(alias); if (space == null) { return NotFound(); } if (space.View != SpaceView.Editor) { query.OrderQuery ??= q => q.OrderByDescending(x => x.CreatedDate); query.SearchSelector ??= x => x.Name; Paged result = await Store.Load(query.Page, query.PageSize, q => q.Where(x => x.Flavor == alias).Filter(query)); return result; } var stream = Store.Stream(q => q.Where(x => x.Flavor == alias)); Space item = await stream.FirstOrDefaultAsync(); return item; } [HttpGet("{alias}/empty")] [ZeroAuthorize(SpacePermissions.Create)] public virtual async Task> Empty(string alias) => await Store.Empty(alias); //[HttpGet("{alias}/{id}")] //[ZeroAuthorize(SpacePermissions.Read)] //public virtual Task> Get(string alias, string id, string changeVector = null) => GetModel(id, changeVector); //[HttpGet("")] //[ZeroAuthorize(SpacePermissions.Read)] //public virtual Task> Get([FromQuery] ListQuery query) => GetModels(query); //[HttpPost("")] //[ZeroAuthorize(SpacePermissions.Create)] //public virtual Task> Create(LanguageSave saveModel) => CreateModel(saveModel); //[HttpPut("{id}")] //[ZeroAuthorize(SpacePermissions.Update)] //public virtual Task> Update(string id, LanguageSave updateModel, [FromQuery] string changeToken = null) => UpdateModel(id, updateModel, changeToken); //[HttpDelete("{id}")] //[ZeroAuthorize(SpacePermissions.Delete)] //public virtual Task> Delete(string id) => DeleteModel(id); }