using System.ComponentModel.DataAnnotations; using Microsoft.AspNetCore.Mvc; using Model; using Services; namespace API.Controllers.Admin; [ApiController] public class TeamsAdminController(ITeamService service) : ControllerBase { public record CountTeamsResponse(int Value); [HttpGet("/admin/teams/count")] public async Task CountTeams() { return new CountTeamsResponse(await service.CountTotalTeams()); } // [HttpGet("/admin/users/count")] // public async Task CountUsers() // { // return new CountUsersResponse(await service.UsersCount()); // } [HttpGet("/admin/teams")] public async Task> ListTeams( [Range(0, int.MaxValue, ErrorMessage = "Only positive number allowed")] int start, [Range(0, int.MaxValue, ErrorMessage = "Only positive number allowed")] int n ) { var result = await service.ListTeams(); return result.Skip(start).Take(n); } public record AddTeamRequest(string Name, string Picture, string FirstColor, string SecondColor); [HttpPost("/admin/teams")] public async Task AddTeam([FromBody] AddTeamRequest req) { var team = await service.AddTeam(req.Name, req.Picture, req.FirstColor, req.SecondColor); return Ok(team); } public record UpdateTeamRequest(int Id, string Name, string Picture, string MainColor, string SecondaryColor); [HttpPut("/admin/teams/{teamId:int}")] public async Task UpdateTeam([FromBody] UpdateTeamRequest req) { await service.UpdateTeam(new Team(req.Id, req.Name, req.Picture, req.MainColor, req.SecondaryColor)); return Ok(); } public record DeleteTeamsRequest(int[] Teams); [HttpPost("/admin/teams/remove-all")] public async Task DeleteTeams([FromBody] DeleteTeamsRequest req) { await service.RemoveTeams(req.Teams); return Ok(); } }