/
ilyamikhaylov07
/
integration_solution_course
Обзор
Документация
Войти
/
ilyamikhaylov07
/
integration_solution_course
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
TaskAPI/Services/ProjectsService.cs
133 строки
4 KB
Ilya
Добавлен новый функционал по пользователю, пагинация, опциональные поля и внутреннее api для метрик
01 окт 2025, 09:24
01 окт 2025, 09:24
2d34a6d
Код
Авторство
О чём код?
using Microsoft.EntityFrameworkCore; using TaskAPI.Database; using TaskAPI.DTOs.ProjectsDTOs; using TaskAPI.DTOs.TasksItemDTOs; using TaskAPI.Models; namespace TaskAPI.Services { public class ProjectsService { private readonly TaskDbContext _context; public ProjectsService(TaskDbContext context) { _context = context; } public async Task<List<ProjectResponseDTO>> GetAllProjectAsync() { return await _context.Projects .Include(p => p.Tasks) .ThenInclude(t => t.User) .Select(p => new ProjectResponseDTO { Id = p.Id, Name = p.Name, Description = p.Description, CreatedAt = p.CreatedAt, Tasks = p.Tasks.Select(t => new TaskResponseDTO { Id = t.Id, Title = t.Title, Description = t.Description, Status = t.Status, CreatedAt = t.CreatedAt, UserName = t.User.Username }).ToList() }).ToListAsync(); } public async Task<ProjectResponseDTO?> GetProjectAsync(Guid id) { var project = await _context.Projects .Include(p => p.Tasks) .ThenInclude(t => t.User) .FirstOrDefaultAsync(p => p.Id == id); if (project == null) return null; return new ProjectResponseDTO { Id = project.Id, Name = project.Name, Description = project.Description, CreatedAt = project.CreatedAt, Tasks = project.Tasks.Select(t => new TaskResponseDTO { Id = t.Id, Title = t.Title, Description = t.Description, Status = t.Status, CreatedAt = t.CreatedAt, UserName = t.User.Username }).ToList() }; } public async Task<ProjectResponseDTO> CreateProjectAsync(CreateProjectDTO dto) { var project = new Project { Id = Guid.NewGuid(), Name = dto.Name, Description = dto.Description, CreatedAt = DateTime.UtcNow }; _context.Projects.Add(project); await _context.SaveChangesAsync(); return new ProjectResponseDTO { Id = project.Id, Name = project.Name, Description = project.Description, CreatedAt = project.CreatedAt, Tasks = new List<TaskResponseDTO>() }; } public async Task<ProjectResponseDTO?> UpdateProjectAsync(Guid id, CreateProjectDTO dto) { var project = await _context.Projects.FirstOrDefaultAsync(p => p.Id == id); if (project == null) return null; project.Name = dto.Name; project.Description = dto.Description; await _context.SaveChangesAsync(); return new ProjectResponseDTO { Id = project.Id, Name = project.Name, Description = project.Description, CreatedAt = project.CreatedAt, Tasks = project.Tasks.Select(t => new TaskResponseDTO { Id = t.Id, Title = t.Title, Description = t.Description, Status = t.Status, CreatedAt = t.CreatedAt, UserName = t.User.Username }).ToList() }; } public async Task<bool> DeleteProjectAsync(Guid id) { var project = await _context.Projects.FirstOrDefaultAsync(p => p.Id == id); if (project == null) return false; _context.Projects.Remove(project); await _context.SaveChangesAsync(); return true; } } }