diff --git a/src/Backend/.vscode/launch.json b/src/Backend/.vscode/launch.json index 1d09d08..939e113 100644 --- a/src/Backend/.vscode/launch.json +++ b/src/Backend/.vscode/launch.json @@ -34,10 +34,14 @@ "launchBrowser": { "enabled": true, "args": "${auto-detect-url}", - "osx": "open -a 'Google Chrome' ${auto-detect-url}", - "linux": "google-chrome ${auto-detect-url}", - "windows": "cmd /c start chrome ${auto-detect-url}" + "browser": [ + { + "osx": "Google Chrome", + "linux": "chrome", + "windows": "chrome" + } + ] } } ] -} +} \ No newline at end of file diff --git a/src/Backend/DiunaBI.API/Controllers/LayersController.cs b/src/Backend/DiunaBI.API/Controllers/LayersController.cs index 4284d82..9ecbf88 100644 --- a/src/Backend/DiunaBI.API/Controllers/LayersController.cs +++ b/src/Backend/DiunaBI.API/Controllers/LayersController.cs @@ -4,6 +4,8 @@ using Google.Apis.Sheets.v4; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using DiunaBI.Application.DTOModels; +using DiunaBI.Application.DTOModels.Common; using DiunaBI.Domain.Entities; using DiunaBI.Infrastructure.Data; using DiunaBI.Infrastructure.Services; @@ -39,29 +41,58 @@ public class LayersController : Controller } [HttpGet] - public IActionResult GetAll(int start, int limit, string? name, LayerType? type) + [Route("")] + public IActionResult GetAll([FromQuery] int start, [FromQuery] int limit, [FromQuery] string? name, [FromQuery] Domain.Entities.LayerType? type) { try { - var response = _db.Layers.Where(x => !x.IsDeleted); + var query = _db.Layers.Where(x => !x.IsDeleted); + if (name != null) { - response = response.Where(x => x.Name != null && x.Name.Contains(name)); + query = query.Where(x => x.Name != null && x.Name.Contains(name)); } - if (type != null) + if (type.HasValue) { - response = response.Where(x => x.Type == type); + query = query.Where(x => x.Type == type.Value); } - var result = response + var totalCount = query.Count(); + + var items = query .OrderByDescending(x => x.Number) - .Skip(start).Take(limit).AsNoTracking().ToList(); + .Skip(start) + .Take(limit) + .AsNoTracking() + .Select(x => new LayerDto + { + Id = x.Id, + Number = x.Number, + Name = x.Name, + Type = (Application.DTOModels.LayerType)x.Type, + CreatedAt = x.CreatedAt, + ModifiedAt = x.ModifiedAt, + CreatedById = x.CreatedById, + ModifiedById = x.ModifiedById, + IsDeleted = x.IsDeleted, + IsCancelled = x.IsCancelled, + ParentId = x.ParentId + }) + .ToList(); - _logger.LogDebug("GetAll: Retrieved {Count} layers with filter name={Name}, type={Type}", - result.Count, name, type); + var pagedResult = new PagedResult + { + Items = items, + TotalCount = totalCount, + Page = (start / limit) + 1, + PageSize = limit + }; - return Ok(result); + _logger.LogDebug("GetAll: Retrieved {Count} of {TotalCount} layers (page {Page}) with filter name={Name}, type={Type}", + items.Count, totalCount, pagedResult.Page, name, type); + + return Ok(pagedResult); } catch (Exception e) { diff --git a/src/Backend/DiunaBI.UI.Shared/Services/LayerService.cs b/src/Backend/DiunaBI.UI.Shared/Services/LayerService.cs index 3edf7fa..c78c18a 100644 --- a/src/Backend/DiunaBI.UI.Shared/Services/LayerService.cs +++ b/src/Backend/DiunaBI.UI.Shared/Services/LayerService.cs @@ -21,7 +21,7 @@ public class LayerService public async Task> GetLayersAsync(LayerFilterRequest filterRequest) { - var query = $"/api/Layers?start={filterRequest.Page}&limit={filterRequest.Page}"; + var query = $"/Layers?start={filterRequest.Page}&limit={filterRequest.PageSize}"; if (!string.IsNullOrEmpty(filterRequest.Search)) query += $"&name={Uri.EscapeDataString(filterRequest.Search)}"; diff --git a/src/Backend/RESTRequests/test.rest b/src/Backend/RESTRequests/test.rest new file mode 100644 index 0000000..83b3507 --- /dev/null +++ b/src/Backend/RESTRequests/test.rest @@ -0,0 +1,5 @@ +GET http://localhost:5400/tests/ping + +### + +GET https://morska.diunabi.com/api/tests/ping \ No newline at end of file