/
AMachine
/
MMDB_Backend
Обзор
Документация
Войти
/
AMachine
/
MMDB_Backend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
MMDB.WebApi/Controllers/UsersController.cs
119 строк
4 KB
AssaultMachine
rename DataParameters to FilterParameters
14 май 2025, 21:07
14 май 2025, 21:07
a2c08f1
Код
Авторство
О чём код?
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using MMDB.Core.Abstract.Services; using MMDB.Core.FilterParameters; using MMDB.WebApi.Contracts; namespace MMDB.WebApi.Controllers; [ApiController] [Route("users")] public class UsersController(IUsersService usersService, IPlayersService playersService) : ControllerBase { [HttpGet] [Route("")] [Authorize] public async Task<IResult> GetUsers([FromQuery] UsersRequest request) { var parameters = new UserParameters { Page = request.Page - 1, PageSize = request.PageSize, SortBy = request.SortBy, UserId = request.UserId, Username = request.Username, IsAdmin = request.IsAdmin, IsActive = request.IsActive }; var users = await usersService.GetAllAsync(parameters); var response = users.Users.Select(u => new UserResponse(u.Id, u.Username, u.IsAdmin, u.IsActive, u.Ckey)).ToList(); return Results.Ok(new { users = response, count = users.Item2 }); } [HttpGet] [Route("{id:guid}")] [Authorize] public async Task<IResult> GetUserById([FromRoute] Guid id) { var user = await usersService.GetByIdAsync(id); if (user == null) return Results.NotFound(); var response = new GetUserResponse(user.Id, user.Username!, (bool) user.IsAdmin!, (bool) user.IsActive!); return Results.Ok(response); } [HttpPost] [Route("")] [Authorize(Roles = "Admin")] public async Task<IResult> CreateUser([FromBody] CreateUserRequest request) { var player = await playersService.GetByCkey(request.Ckey); if (player is null) return Results.NotFound("ckey not found"); var createResult = await usersService.CreateAsync(request.Username, request.Password, request.IsAdmin, request.Ckey); return !string.IsNullOrEmpty(createResult.Item2) ? Results.Conflict(createResult.Item2) : Results.Created($"/users/{createResult.Item1}", createResult.Item1); } [HttpPut] [Route("{id:guid}")] [Authorize(Roles = "Admin")] public async Task<IResult> UpdateUser([FromRoute] Guid id, [FromBody] UpdateUserRequest request) { var updateResult = await usersService.UpdateAsync( id, request.Username, request.Password, request.IsAdmin, request.IsActive, request.Ckey ); return !string.IsNullOrEmpty(updateResult.Item2) ? Results.BadRequest(new { message = updateResult.Item2 }) : Results.Ok(updateResult.Id); } [HttpDelete] [Route("{id:guid}")] [Authorize(Roles = "Admin")] public async Task<IResult> DeleteUser([FromRoute] Guid id) { var deleteResult = await usersService.DeleteAsync(id); return !string.IsNullOrEmpty(deleteResult.Error) ? Results.NotFound() : Results.NoContent(); } [HttpPost] [Route("activate/{id:guid}")] [Authorize(Roles = "Admin")] public async Task<IResult> ActivateUser([FromRoute] Guid id) { var activateResult = await usersService.ActivateAsync(id); if (!string.IsNullOrEmpty(activateResult.Error)) return Results.NotFound(activateResult.Error); return Results.Ok(activateResult.Id); } [HttpPost] [Route("deactivate/{id:guid}")] [Authorize(Roles = "Admin")] public async Task<IResult> DeactivateUser([FromRoute] Guid id) { var activateResult = await usersService.DeactivateAsync(id); if (!string.IsNullOrEmpty(activateResult.Error)) return Results.NotFound(activateResult.Error); return Results.Ok(activateResult.Id); } }