using AppContext.Entities; using Converters; using Microsoft.EntityFrameworkCore; using Model; using Services; namespace DbServices; public class DbTeamService(AppContext.AppContext context) : ITeamService { public Task> ListTeamsOf(int userId) { return Task.FromResult( context.Teams .Include(t => t.Members) .Where(t => t.Members.Any(m => m.UserId == userId)) .AsEnumerable() .Select(t => t.ToModel()) ); } public Task> ListTeams(string nameNeedle) { return Task.FromResult( context.Teams.Where(t => t.Name.ToLower().Contains(nameNeedle.ToLower())) .AsEnumerable() .Select(e => e.ToModel()) ); } public Task> ListTeams() { return Task.FromResult( context.Teams .AsEnumerable() .Select(e => e.ToModel()) ); } public async Task CountTeams(string nameNeedle) { return await context.Teams.CountAsync(t => t.Name.ToLower().Contains(nameNeedle.ToLower())); } public async Task CountTeams() { return await context.Teams.CountAsync(); } public async Task AddTeam(string name, string picture, string firstColor, string secondColor) { var entity = new TeamEntity { Name = name, Picture = picture, MainColor = firstColor, SecondColor = secondColor }; await context.Teams.AddAsync(entity); await context.SaveChangesAsync(); return entity.ToModel(); } public async Task RemoveTeams(params int[] teams) { await context.Teams .Where(t => teams.Contains(t.Id)) .ExecuteDeleteAsync(); } public async Task UpdateTeam(Team team) { var entity = await context.Teams.FirstOrDefaultAsync(t => t.Id == team.Id); if (entity == null) return false; entity.Name = team.Name; entity.MainColor = team.MainColor; entity.SecondColor = team.SecondColor; entity.Picture = team.Picture; return await context.SaveChangesAsync() > 0; } }