/
AMachine
/
MMDB_Backend
Обзор
Документация
Войти
/
AMachine
/
MMDB_Backend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
MMDB.WebApi/Controllers/BansController.cs
85 строк
3 KB
AssaultMachine
добавил маппинг для BansController.CreateBan()
28 июн 2025, 19:30
28 июн 2025, 19:30
b6e3fd4
Код
Авторство
О чём код?
using AutoMapper; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using MMDB.Core.Abstract.Services; using MMDB.Core.FilterParameters; using MMDB.Core.Models; using MMDB.Data.Extensions; using MMDB.WebApi.Contracts; namespace MMDB.WebApi.Controllers; [ApiController] [Route("bans")] public class BansController( IBansService bansService, IPlayersService playersService, IUsersService usersService, ITokensService tokensService, IMapper mapper): ControllerBase { [HttpGet] [Authorize] public async Task<IResult> GetAll([FromQuery] BansRequest request) { var filterParameters = mapper.Map<BanParameters>(request); var bans = await bansService.GetAllAsync(filterParameters); return Results.Ok(new { bans.Bans, bans.Count }); } [HttpGet("{ckey}")] [Authorize] public async Task<IResult> GetByCkey(string ckey) { var bans = await bansService.GetByCkeyAsync(ckey); return bans.Count > 0 ? Results.Ok(new { Bans = bans.Bans, Count = bans.Count }) : Results.NotFound(new { Bans = bans, Count = bans.Count }); } [HttpPost] [Authorize] public async Task<IResult> CreateBan([FromBody] CreateBanRequest request) { var player = await playersService.GetByCkey(request.Ckey); if (player is null) return Results.NotFound("player not found"); HttpContext.Request.Cookies.TryGetValue("token", out var userToken); var userId = await tokensService.GetUserIdByRefreshTokenAsync(userToken!); var user = await usersService.GetByIdAsync(userId!.Value); if (user is null) return Results.Unauthorized(); var ban = mapper.Map<Ban>(request); ban.ACkey = user!.Ckey!; await bansService.AddAsync(ban); return Results.Ok(); } [HttpDelete] [Authorize] public async Task<IResult> Unban([FromQuery] int id) { HttpContext.Request.Cookies.TryGetValue("token", out var userToken); var userId = await tokensService.GetUserIdByRefreshTokenAsync(userToken); var user = await usersService.GetByIdAsync(userId.Value); var result = await bansService.UnbanAsync(id, user.Ckey); return result ? Results.Ok() : Results.NotFound("ban not found"); } [HttpGet("sort_fields")] [Authorize] public IResult GetSortFields() { var fields = BansSorting.GetAvailableSortFields(); return Results.Ok(new { SortFields = fields }); } }