ContractRepository.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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 ContractRepository : Repository<Contract>, IContractRepository
  10. {
  11. private readonly DbSet<Contract> dbSet;
  12. private readonly DbSet<TeamUser> dbSet2;
  13. public ContractRepository(HRDataContext context) : base(context)
  14. {
  15. dbSet = context.Set<Contract>();
  16. dbSet2 = context.Set<TeamUser>();
  17. }
  18. public async Task<Contract> GetByIdWithAllChildren(long id)
  19. {
  20. return await dbSet
  21. .Include(x => x.ContractTasks)
  22. .Include(x => x.FixedAllowances)
  23. .Include(x => x.ProjectStages)
  24. .Include(x => x.WorkingDays)
  25. .FirstOrDefaultAsync(x => x.Id == id);
  26. }
  27. public async Task<Tuple<IQueryable<Contract>, int>> GetAllWithChildrenAsync()
  28. {
  29. var query = dbSet//.Join(x => x.TeamUser)
  30. .AsQueryable();
  31. var total = await query.CountAsync();
  32. return new Tuple<IQueryable<Contract>, int>(query, total);
  33. }
  34. public async Task<Tuple<IQueryable<Contract>, int>> GetAllWithTeamsAsync()
  35. {
  36. var query = dbSet//.Join(x => x.TeamUser)
  37. .AsQueryable();
  38. //var teamUsersList = dbSet2.Include(x => x.Team).ToList();
  39. var query2 = dbSet
  40. .Join(
  41. dbSet2.Include(x => x.Team),
  42. c => c.UserId,
  43. teamUser => teamUser.AssignedUserId,
  44. (contract, teamUser) => new
  45. {
  46. Contract = contract,
  47. Team = teamUser.Team.NameEn
  48. }
  49. )
  50. .AsQueryable();
  51. var total = await query2.CountAsync();
  52. return new Tuple<IQueryable<Contract>, int>(query, total);
  53. }
  54. }
  55. }