/
ilyamikhaylov07
/
integration_solution_course
Обзор
Документация
Войти
/
ilyamikhaylov07
/
integration_solution_course
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
TaskAPI/Controllers/V1/TasksController.cs
101 строка
5 KB
Ilya
Добавлен новый функционал по пользователю, пагинация, опциональные поля и внутреннее api для метрик
01 окт 2025, 09:24
01 окт 2025, 09:24
2d34a6d
Код
Авторство
О чём код?
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.RateLimiting; using TaskAPI.DTOs.TasksItemDTOs; using TaskAPI.Services; namespace TaskAPI.Controllers.V1 { [ApiController] [ApiVersion("1.0")] [Route("api/[controller]/[action]")] public class TasksController : ControllerBase { private readonly TasksService _tasksService; public TasksController(TasksService tasksService) { _tasksService = tasksService; } /// <summary> /// Возвращает список всех задач. /// </summary> /// <response code="200">Список задач успешно получен.</response> [HttpGet] [Authorize(AuthenticationSchemes = "Access")] [ProducesResponseType(typeof(List<TaskResponseDTO>), StatusCodes.Status200OK)] public async Task<IActionResult> Tasks() { var tasks = await _tasksService.GetAllTaskAsync(); return Ok(tasks); } /// <summary> /// Возвращает задачу по идентификатору. /// </summary> /// <param name="id">Идентификатор задачи.</param> /// <response code="200">Задача найдена и возвращена.</response> /// <response code="404">Задача с указанным идентификатором не найдена.</response> [HttpGet("{id}")] [Authorize(AuthenticationSchemes = "Access")] [ProducesResponseType(typeof(TaskResponseDTO), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task<IActionResult> Task(Guid id) { var task = await _tasksService.GetTaskAsync(id); return task == null ? NotFound() : Ok(task); } /// <summary> /// Создаёт новую задачу. /// </summary> /// <param name="task">Данные задачи для создания.</param> /// <response code="201">Задача успешно создана.</response> /// <response code="400">Ошибка валидации данных.</response> [HttpPost] [Authorize(AuthenticationSchemes = "Access")] [Produces("application/json")] [Consumes("application/json")] [ProducesResponseType(typeof(TaskResponseDTO), StatusCodes.Status201Created)] [ProducesResponseType(StatusCodes.Status400BadRequest)] public async Task<IActionResult> Create([FromBody] CreateTaskDTO task) { var result = await _tasksService.CreateTaskAsync(task); return CreatedAtAction(nameof(Task), new { id = result.Id }, result); } /// <summary> /// Обновляет задачу по идентификатору. /// </summary> /// <param name="id">Идентификатор задачи.</param> /// <param name="updatedTask">Новые данные задачи.</param> /// <response code="200">Задача успешно обновлена.</response> /// <response code="404">Задача с указанным идентификатором не найдена.</response> [HttpPut("{id}")] [Authorize(AuthenticationSchemes = "Access")] [ProducesResponseType(typeof(TaskResponseDTO), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task<IActionResult> Update(Guid id, [FromBody] CreateTaskDTO updatedTask) { var task = await _tasksService.UpdateTaskAsync(id, updatedTask); return task == null ? NotFound() : Ok(task); } /// <summary> /// Удаляет задачу по идентификатору. /// </summary> /// <param name="id">Идентификатор задачи.</param> /// <response code="200">Задача успешно удалена.</response> /// <response code="404">Задача с указанным идентификатором не найдена.</response> [HttpDelete("{id}")] [Authorize(AuthenticationSchemes = "Access")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task<IActionResult> Delete(Guid id) { var result = await _tasksService.DeleteTaskAsync(id); return result == null ? NotFound() : Ok(result); } } }