public void FilterUers(ref List <AppUser> users, FilterUserViewModel filter) { if (filter.Location != null && filter.Location != "") { if (Enum.TryParse(filter.Location.Trim(), out ELocation locate)) { users = users.Where(x => x.Location == locate).ToList(); } } if (filter.FullName != null && filter.FullName.Trim() != "") { users = users.Where(x => x.FullName.Contains(filter.FullName.Trim())).ToList(); } if (filter.Gender != null && filter.Gender.Trim() != "") { if (Enum.TryParse(filter.Gender.Trim(), out EGender gender)) { users = users.Where(x => x.Gender == gender).ToList(); } } if (filter.FromAge != 0) { users = users.Where(x => CalculateAge(x.Dob) >= filter.FromAge).ToList(); } if (filter.ToAge > filter.FromAge) { users = users.Where(x => CalculateAge(x.Dob) <= filter.ToAge).ToList(); } }
public async Task <IActionResult> Filter([FromQuery] FilterUserViewModel filters) { if (filters.Names.IsNull() && filters.LastNames.IsNull() && filters.IndentityDocument.IsNull()) { return(BadRequest("Los parametros del filtro estan vacios")); } return(Ok(_mapper.Map <IEnumerable <UserViewModel> >(await _service.UserService.FilterAsync(filters)))); }
public async Task <IActionResult> GetAll([FromQuery] FilterUserViewModel filter) { if (filter.CreatedBy.IsNull() && filter.DentalBranchId == Guid.Empty) { return(BadRequest("Parametros invalidos")); } return(Ok(await _service.UserService.GetAllWithPaginateAsync(filter))); }
public async Task <IActionResult> GetListOfSuggestions(Guid userId, [FromQuery] FilterUserViewModel filter) { var result = await _userApplication.GetSimilarityUsers(userId, filter); return(Ok(new { data = result.Item1, pageTotal = result.Item2 })); }
public async Task <IEnumerable <User> > FilterAsync(FilterUserViewModel filters) { if (!filters.IndentityDocument.IsNull()) { return(await _dbContext.Users.Include(x => x.UserDetail).Where(x => x.UserDetail.IdentityDocument == filters.IndentityDocument).ToListAsync()); } var result = Filter(x => x.Names.Contains(filters.Names)); if (!filters.LastNames.IsNull()) { result = result.Where(x => x.LastNames == filters.LastNames); } return(await result.ToListAsync()); }
public void FilterUers(ref List <AppUser> users, FilterUserViewModel filter) { if (filter.Location != null && filter.Location != "") { if (Enum.TryParse(filter.Location.Trim(), out ELocation locate)) { users = users.Where(x => x.Location == locate).ToList(); } } if (filter.FullName != null && filter.FullName.Trim() != "") { string name = filter.FullName.NonUnicode().ToLower().Trim(); users = users.Where(x => x.FullName.NonUnicode().ToLower().Contains(name)).ToList(); } if (filter.Gender != null && filter.Gender.Trim() != "") { if (Enum.TryParse(filter.Gender.Trim(), out EGender gender)) { users = users.Where(x => x.Gender == gender).ToList(); } } if (filter.AgeGroup != null && filter.AgeGroup != "") { if (Enum.TryParse(filter.AgeGroup.Trim(), out EAgeGroup ageGroup)) { users = users.Where(x => GetAgeGroup(x.Dob) == ageGroup).ToList(); } } //if (filter.FromAge != 0) //{ // users = users.Where(x => CalculateAge(x.Dob) >= filter.FromAge).ToList(); //} //if (filter.ToAge > filter.FromAge) //{ // users = users.Where(x => CalculateAge(x.Dob) <= filter.ToAge).ToList(); //} }
public async Task <Tuple <List <UserDisplay>, int> > GetSimilarityUsers(Guid userId, FilterUserViewModel request) { var updateScore = await _context.SimilariryFeatures.FirstOrDefaultAsync(); var user = await GetById(userId); if (updateScore.UpdatedAt > user.UpdatedAt) { var update = await UpdateSimilarityScores(userId); user.UpdatedAt = DateTime.Now; _context.Users.Update(user); await _context.SaveChangesAsync(); } var result = await GetSimilarityScores(userId, request); return(result); }
public async Task <Tuple <List <UserDisplay>, int> > GetSimilarityScores(Guid userId, FilterUserViewModel request) { List <UserDisplay> userResponses = new List <UserDisplay>(); if (!request.IsFilter) { var tempScore = await _context.SimilarityScores.Where(x => x.FromUserId == userId) .OrderByDescending(x => x.Score) .Skip((request.PageIndex - 1) * request.PageSize) .Take(request.PageSize).ToListAsync(); List <AppUser> users = new List <AppUser>(); foreach (var item in tempScore) { var user = await GetById(item.ToUserId); user.Point = item.Score; users.Add(user); } userResponses = await GetUserDisplay(users); var total = tempScore.Count / request.PageSize; return(Tuple.Create(userResponses, total)); } else { var userInfo = await GetById(userId); var users = await GetActiveUsers(userId, true); FilterUers(ref users, request); var total = users.Count / request.PageSize; users = users.OrderByDescending(x => x.Point) .Skip((request.PageIndex - 1) * request.PageSize) .Take(request.PageSize).ToList(); userResponses = await GetUserDisplay(users); return(Tuple.Create(userResponses, total)); } }
public async Task <PaginationViewModel <UserViewModel> > GetAllWithPaginateAsync(FilterUserViewModel model) { var result = new List <User>().AsQueryable(); if (!model.CreatedBy.IsNull()) { result = GetAll().Include(x => x.UserDetail) .ThenInclude(x => x.UserType).Where(x => x.CreatedBy == model.CreatedBy); } else { result = GetAll().Include(x => x.UserDetail) .ThenInclude(x => x.UserType).Where(x => x.DentalBranchId == model.DentalBranchId); } if (!model.IndentityDocument.IsNull()) { return(new PaginationViewModel <UserViewModel> { ActualPage = model.Page, Entities = _mapper.Map <IEnumerable <UserViewModel> >(result.Where(x => x.UserDetail.IdentityDocument == model.IndentityDocument)), Total = result.Count(), Pages = model.Page }); } if (!model.Names.IsNull()) { result = result.Where(x => x.Names.Contains(model.Names)); } if (!model.LastNames.IsNull()) { result = result.Where(x => x.LastNames.Contains(model.LastNames)); } var total = result.Count(); var pages = total / model.QuantityByPage; return(new PaginationViewModel <UserViewModel> { ActualPage = model.Page, Entities = _mapper.Map <IEnumerable <UserViewModel> >(await result.Skip((model.Page - 1) * model.QuantityByPage).Take(model.QuantityByPage).OrderByDescending(x => x.CreateAt).ToListAsync()), Total = total, Pages = pages }); }