/
idalynnn
/
api
Обзор
Документация
Войти
/
idalynnn
/
api
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Controllers/V1/ProjectsController.cs
73 строки
2 KB
idalynnn
init
13 дек 2025, 05:34
13 дек 2025, 05:34
44c310a
Код
Авторство
О чём код?
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using TaskTrackerApi.Data; using TaskTrackerApi.Dtos; using TaskTrackerApi.Models; namespace TaskTrackerApi.Controllers.V1; [ApiController] [ApiVersion("1.0")] [Route("api/v{version:apiVersion}/projects")] public class ProjectsController : ControllerBase { private readonly AppDbContext _db; public ProjectsController(AppDbContext db) => _db = db; [HttpGet] public async Task<ActionResult<IEnumerable<ProjectReadDto>>> GetAll() { var projects = await _db.Projects.AsNoTracking() .Select(p => new ProjectReadDto(p.Id, p.Name)) .ToListAsync(); return Ok(projects); } [HttpGet("{id:int}")] public async Task<ActionResult<ProjectReadDto>> GetById(int id) { var p = await _db.Projects.AsNoTracking().FirstOrDefaultAsync(x => x.Id == id); if (p is null) return NotFound(); return Ok(new ProjectReadDto(p.Id, p.Name)); } [Authorize] [HttpPost] public async Task<ActionResult<ProjectReadDto>> Create([FromBody] ProjectCreateDto dto) { var entity = new Project { Name = dto.Name }; _db.Projects.Add(entity); await _db.SaveChangesAsync(); var read = new ProjectReadDto(entity.Id, entity.Name); return CreatedAtAction(nameof(GetById), new { id = entity.Id, version = "1.0" }, read); } [Authorize] [HttpPut("{id:int}")] public async Task<IActionResult> Update(int id, [FromBody] ProjectUpdateDto dto) { var p = await _db.Projects.FirstOrDefaultAsync(x => x.Id == id); if (p is null) return NotFound(); p.Name = dto.Name; await _db.SaveChangesAsync(); return NoContent(); } [Authorize] [HttpDelete("{id:int}")] public async Task<IActionResult> Delete(int id) { var p = await _db.Projects.FirstOrDefaultAsync(x => x.Id == id); if (p is null) return NotFound(); _db.Projects.Remove(p); await _db.SaveChangesAsync(); return NoContent(); } }