/
urmat
/
taskboardproject1
Обзор
Документация
Войти
/
urmat
/
taskboardproject1
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
UserService
src/UserService.Domain/Persistence/Repositories/Auth/UserRepository.cs
71 строка
2 KB
urmatgit
add project repository tests
10 апр 2025, 10:43
10 апр 2025, 10:43
fc56329
Код
Авторство
О чём код?
using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Reflection.Metadata.Ecma335; using System.Text; using System.Threading.Tasks; using UserService.DataAccess.Common; using UserService.DataAccess.Entities; namespace UserService.DataAccess.Persistence.Repositories.Auth { public class UserRepository : BaseRepository<User>, IUserRepository { public UserRepository(TaskboardDbContext dataContext) : base(dataContext) { } public async Task<User?> FindByUserNameAsync(string userName) { return await _dataContext.Users .FirstOrDefaultAsync(u => u.UserName == userName); } public async Task<User?> FindByUserEmailAsync(string email) { return await _dataContext.Users .FirstOrDefaultAsync(u => u.Email == email); } public async Task<bool> ExistsAsync(string email) { return await _dataContext.Users .AnyAsync(u => u.Email == email); } public async Task<User?> FindByUserUserAndEmailAsync(string email, string userName) { return await _dataContext.Users .FirstOrDefaultAsync(u => u.Email == email && u.UserName == userName); } public async Task<User> AddProjectToUser(User user, Guid projectId) { user.UserProjects.Add(new UserProject() { Id=Guid.NewGuid(), ProjectId = projectId, UserId = user.Id }); await UpdateAsync(user); await SaveChangesAsync(); return await GetUserWithProjects(user.Id); } public async Task<User> GetUserWithProjects(Guid userId) { var user = await _dataContext.Users .AsNoTracking() .Include(u => u.UserProjects) .ThenInclude(p => p.Project) .SingleOrDefaultAsync(u => !u.IsDeleted && u.Id == userId && u.UserProjects.Any(p => !p.IsDeleted)); return user; } } }