コード例 #1
0
        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();
            }
        }
コード例 #2
0
 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))));
 }
コード例 #3
0
 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)));
 }
コード例 #4
0
        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
            }));
        }
コード例 #5
0
ファイル: UserService.cs プロジェクト: Hi-Software/Hi-Dental
        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());
        }
コード例 #6
0
        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();
            //}
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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));
            }
        }
コード例 #9
0
ファイル: UserService.cs プロジェクト: Hi-Software/Hi-Dental
        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
            });
        }