Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

UsersRepository.cs 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System.Linq.Expressions;
  2. using BlackRock.Reporting.API.Core;
  3. using BlackRock.Reporting.API.Extensions;
  4. using BlackRock.Reporting.API.Mediator;
  5. using BlackRock.Reporting.API.Mediator.Model;
  6. using BlackRock.Reporting.API.Models;
  7. using Microsoft.EntityFrameworkCore;
  8. namespace BlackRock.Reporting.API.Persistence
  9. {
  10. public class UsersRepository : Repository<User>, IUsersRepository
  11. {
  12. private readonly BRDbContext context;
  13. public UsersRepository(BRDbContext context) : base(context)
  14. {
  15. this.context = context;
  16. }
  17. public async Task<PaggingCollection<User>> GetAllByFilter(PaggingAndFiltering queryObj)
  18. {
  19. var result = new PaggingCollection<User>();
  20. var queryResult = await context.Users.ToListAsync();
  21. var query = queryResult.AsQueryable();
  22. // filtering
  23. if (!string.IsNullOrWhiteSpace(queryObj.EmailDomain))
  24. query = query.Where(q => q.Email.EndsWith(queryObj.EmailDomain.ToLower()));
  25. // sorting
  26. var columnsMap = new Dictionary<string, Expression<Func<User, object>>>()
  27. {
  28. ["name"] = u => u.Name,
  29. ["email"] = u => u.Email
  30. };
  31. query = query.ApplyOrdering(queryObj, columnsMap);
  32. query = query.ApplyPagging(queryObj);
  33. foreach (var item in query)
  34. {
  35. result.Add(item);
  36. }
  37. return result;
  38. // pagging
  39. }
  40. public void UpdateEmail(User user, string email)
  41. {
  42. user.Email = email;
  43. this.Update(user);
  44. }
  45. }
  46. }