/
ilyamikhaylov07
/
integration_solution_course
Обзор
Документация
Войти
/
ilyamikhaylov07
/
integration_solution_course
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
TaskAPI/Services/TasksService.cs
149 строк
5 KB
Ilya
Init
24 сен 2025, 16:32
24 сен 2025, 16:32
360074e
Код
Авторство
О чём код?
using Microsoft.EntityFrameworkCore; using TaskAPI.Database; using TaskAPI.DTOs.TasksItemDTOs; using TaskAPI.Models; namespace TaskAPI.Services { public class TasksService { private readonly TaskDbContext _context; public TasksService(TaskDbContext context) { _context = context; } public async Task<List<TaskResponseDTOv2>> GetAllTaskV2Async() { return await _context.Tasks .Include(t => t.User) .Include(t => t.Project) .Select(t => new TaskResponseDTOv2 { Id = t.Id, Title = t.Title, Description = t.Description, Status = t.Status, TimeInfo = new TimeInfo { CreatedAt = t.CreatedAt, DueTime = t.DueTime }, UserName = t.User.Username, ProjectName = t.Project.Name }) .ToListAsync(); } public async Task<List<TaskResponseDTO>> GetAllTaskAsync() { return await _context.Tasks .AsNoTracking() .Include(t => t.User) .Include(t => t.Project) .Select(t => new TaskResponseDTO { Id = t.Id, Title = t.Title, Description = t.Description, Status = t.Status, CreatedAt = t.CreatedAt, UserName = t.User.Username, ProjectName = t.Project.Name }) .ToListAsync(); } public async Task<TaskResponseDTO?> GetTaskAsync(Guid id) { var task = await _context.Tasks .AsNoTracking() .Include(t => t.User) .Include(t => t.Project) .FirstOrDefaultAsync(t => t.Id == id); if (task == null) return null; return new TaskResponseDTO { Id = task.Id, Title = task.Title, Description = task.Description, Status = task.Status, CreatedAt = task.CreatedAt, UserName = task.User.Username, ProjectName = task.Project?.Name }; } public async Task<TaskResponseDTO> CreateTaskAsync(CreateTaskDTO dto) { var task = new TaskItem { Id = Guid.NewGuid(), Title = dto.Title, Description = dto.Description, Status = dto.Status, UserId = dto.UserId, ProjectId = dto.ProjectId, CreatedAt = DateTime.UtcNow }; _context.Tasks.Add(task); await _context.SaveChangesAsync(); var user = await _context.Users.FirstOrDefaultAsync(u => u.Id == task.UserId); var project = await _context.Projects.FirstOrDefaultAsync(p => p.Id == task.ProjectId); return new TaskResponseDTO { Id = task.Id, Title = task.Title, Description = task.Description, Status = task.Status, CreatedAt = task.CreatedAt, UserName = user?.Username ?? "Unknown", ProjectName = project?.Name }; } public async Task<TaskResponseDTO?> UpdateTaskAsync(Guid id, CreateTaskDTO updated) { var task = await _context.Tasks.FirstOrDefaultAsync(p => p.Id == id); if (task == null) return null; task.Title = updated.Title; task.Description = updated.Description; task.Status = updated.Status; task.UserId = updated.UserId; task.ProjectId = updated.ProjectId; await _context.SaveChangesAsync(); var user = await _context.Users.FirstOrDefaultAsync(u => u.Id == task.UserId); var project = await _context.Projects.FirstOrDefaultAsync(p => p.Id == task.ProjectId); return new TaskResponseDTO { Id = task.Id, Title = task.Title, Description = task.Description, Status = task.Status, CreatedAt = task.CreatedAt, UserName = user?.Username ?? "Unknown", ProjectName = project?.Name }; } public async Task<bool> DeleteTaskAsync(Guid id) { var task = await _context.Tasks.FirstOrDefaultAsync(p => p.Id == id); if (task == null) return false; _context.Tasks.Remove(task); await _context.SaveChangesAsync(); return true; } } }