/
NikitaMalyshko
/
TaskManager
Обзор
Документация
Войти
/
NikitaMalyshko
/
TaskManager
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Controllers/API/TasksController.cs
140 строк
4 KB
Nikita Malyshko
Initial commit - TaskFlow - менеджер задач с Web API и MVC интерфейсом
25 апр 2026, 02:30
25 апр 2026, 02:30
4ff0625
Код
Авторство
О чём код?
using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using TaskManager.Data; using TaskManager.Models; namespace TaskManager.Controllers.API; [Route("api/[controller]")] [ApiController] public class TasksController : ControllerBase { private readonly AppDbContext _context; public TasksController(AppDbContext context) { _context = context; } // GET: api/tasks [HttpGet] public async Task<ActionResult<IEnumerable<TaskItem>>> GetTasks() { return await _context.Tasks .Include(t => t.Category) .ToListAsync(); } // GET: api/tasks/5 [HttpGet("{id}")] public async Task<ActionResult<TaskItem>> GetTask(int id) { var task = await _context.Tasks .Include(t => t.Category) .FirstOrDefaultAsync(t => t.Id == id); if (task == null) { return NotFound(); } return task; } // POST: api/tasks [HttpPost] public async Task<ActionResult<TaskItem>> CreateTask(TaskItem task) { // Проверяем, существует ли указанная категория if (task.CategoryId.HasValue) { var categoryExists = await _context.Categories.AnyAsync(c => c.Id == task.CategoryId); if (!categoryExists) { return BadRequest("Указанная категория не существует"); } } _context.Tasks.Add(task); await _context.SaveChangesAsync(); // Загружаем категорию для ответа await _context.Entry(task).Reference(t => t.Category).LoadAsync(); return CreatedAtAction(nameof(GetTask), new { id = task.Id }, task); } // PUT: api/tasks/5 [HttpPut("{id}")] public async Task<IActionResult> UpdateTask(int id, TaskItem task) { if (id != task.Id) { return BadRequest("ID в URL не совпадает с ID в теле запроса"); } // Проверяем, существует ли указанная категория if (task.CategoryId.HasValue) { var categoryExists = await _context.Categories.AnyAsync(c => c.Id == task.CategoryId); if (!categoryExists) { return BadRequest("Указанная категория не существует"); } } _context.Entry(task).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!await TaskExists(id)) { return NotFound(); } throw; } return NoContent(); } // DELETE: api/tasks/5 [HttpDelete("{id}")] public async Task<IActionResult> DeleteTask(int id) { var task = await _context.Tasks.FindAsync(id); if (task == null) { return NotFound(); } _context.Tasks.Remove(task); await _context.SaveChangesAsync(); return NoContent(); } // PATCH: api/tasks/5/toggle [HttpPatch("{id}/toggle")] public async Task<IActionResult> ToggleTask(int id) { var task = await _context.Tasks.FindAsync(id); if (task == null) { return NotFound(); } task.IsCompleted = !task.IsCompleted; await _context.SaveChangesAsync(); return Ok(task); } private async Task<bool> TaskExists(int id) { return await _context.Tasks.AnyAsync(e => e.Id == id); } }