TeamUserRepository.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Microsoft.EntityFrameworkCore;
  2. using MTWorkHR.Core.Entities;
  3. using MTWorkHR.Core.IDto;
  4. using MTWorkHR.Core.IRepositories;
  5. using MTWorkHR.Infrastructure.Entities;
  6. using MTWorkHR.Infrastructure.DBContext;
  7. namespace MTWorkHR.Infrastructure.Repositories
  8. {
  9. public class TeamUserRepository : Repository<TeamUser>, ITeamUserRepository
  10. {
  11. private readonly DbSet<TeamUser> dbSet;
  12. public TeamUserRepository(HRDataContext context) : base(context)
  13. {
  14. dbSet = context.Set<TeamUser>();
  15. }
  16. public virtual async Task<TeamUser> AddAsync(TeamUser entity)
  17. {
  18. await dbSet.AddAsync(entity);
  19. return entity;
  20. }
  21. public virtual async Task<IList<TeamUser>> AddRangeAsync(IList<TeamUser> entity)
  22. {
  23. await dbSet.AddRangeAsync(entity);
  24. return entity;
  25. }
  26. public virtual async Task DeleteAsync(TeamUser entity)
  27. {
  28. dbSet.Remove(entity);
  29. }
  30. public virtual async Task DeleteAsync(IEnumerable<TeamUser> entities)
  31. {
  32. dbSet.RemoveRange(entities);
  33. }
  34. public async Task<Tuple<IQueryable<Team>, int>> GetUserTeams(string userId)
  35. {
  36. var query = dbSet.Where(u=> u.AssignedUserId == userId).Select(t=> t.Team).AsQueryable();
  37. var total = await query.CountAsync();
  38. return new Tuple<IQueryable<Team>, int>(query, total);
  39. }
  40. public async Task<Tuple<IQueryable<TeamUser>, int>> GetAllWithChildrenAsync()
  41. {
  42. var query = dbSet.Include(x => x.Team)
  43. .AsQueryable();
  44. var total = await query.CountAsync();
  45. return new Tuple<IQueryable<TeamUser>, int>(query, total);
  46. }
  47. }
  48. }