using System.Collections.Generic; using System.Linq; using System.Net; using Application.Domain.Entities; using Infrastructure.API; using Infrastructure.Data; using Infrastructure.Extensions; using Microsoft.AspNetCore.Mvc; namespace IoTCenter.API { [Route("api/v1/[controller]")] [ApiController] public class IoTController : ControllerBase { private readonly IRepository _nodeRepo; private readonly IRepository _deviceRepo; public IoTController(IRepository nodeRepo, IRepository deviceRepo) { this._nodeRepo = nodeRepo; this._deviceRepo = deviceRepo; } // GET api/v1/[controller]/nodes[?pageSize=10&pageIndex=1] [HttpGet] [Route("nodes")] [ProducesResponseType(typeof(PaginatedItemsViewModel), (int)HttpStatusCode.OK)] [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] [ProducesResponseType((int)HttpStatusCode.BadRequest)] public IActionResult Nodes([FromQuery]int pageSize = 10, [FromQuery]int pageIndex = 0) { var query = this._nodeRepo.ReadOnlyTable(); var totalItems = query.Count(); var itemsOnPage = query.OrderBy(o => o.Name).ThenBy(o => o.CreateOn).Paged(pageIndex, pageSize); var model = new PaginatedItemsViewModel(pageIndex, pageSize, totalItems, itemsOnPage); return Ok(model); } } }