예제 #1
0
 public GetSearchResultQuery(IUserStore _UserStore, IFriendsListStore _FriendListStore,
                             IRequestStore _RequestStore, IdentityUser CurrentUser, UserAccount ResultUser, SearchUserDTO SearchUserDTO)
 {
     this._RequestStore    = _RequestStore;
     this._FriendListStore = _FriendListStore;
     this.CurrentUser      = CurrentUser;
     this._UserStore       = _UserStore;
     this.ResultUser       = ResultUser;
     this.SearchUserDTO    = SearchUserDTO;
 }
예제 #2
0
        public IHttpActionResult SearchUser([FromBody] SearchUserDTO dto)
        {
            var service = new SearchUserStrategy
            {
                SearchUserCriteria = dto.SearchUserCriteria
            };
            var response = (SearchResponseDTO)(service.Execute().Result);

            if (response.IsSuccessful)
            {
                return(Ok(new { response.SearchResults, response.Messages }));
            }
            else
            {
                return(Content(HttpStatusCode.BadRequest, new { response.Messages }));
            }
        }
예제 #3
0
        public List <SearchUserDTO> GetAllSearchUsers(string searchHash)
        {
            List <SearchUserDTO> retVal = new List <SearchUserDTO>();

            try
            {
                using (GlitterDBEntities dbContext = new GlitterDBEntities())
                {
                    var users = dbContext.Users.Where(c => c.FirstName.Contains(searchHash) || c.LastName.Contains(searchHash) || c.EmailId.Contains(searchHash)).ToList();
                    //retVal = users != null && users.Count > 0 ? new List<UserDTO>() : null;

                    int           curUserId           = 1;
                    SearchUserDTO searchHashPeopleDTO = null;
                    foreach (var user in users)
                    {
                        var alreadyFollowing = dbContext.Follows.Where(f => f.FollowerId == curUserId && f.UserId == user.UserId && f.Active == true).FirstOrDefault();
                        if (alreadyFollowing != null)
                        {
                            searchHashPeopleDTO = new SearchUserDTO
                            {
                                UserDTO          = this.Mapper.Map <UserDTO>(user),
                                AlreadyFollowing = true
                            };
                        }
                        else
                        {
                            searchHashPeopleDTO = new SearchUserDTO
                            {
                                UserDTO          = this.Mapper.Map <UserDTO>(user),
                                AlreadyFollowing = false
                            };
                        }
                        retVal.Add(searchHashPeopleDTO);
                    }

                    //retVal = this.Mapper.Map<List<UserDTO>>(users);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(retVal);
        }
예제 #4
0
        public PagedResponse <UserDTO> Execute(SearchUserDTO dto)
        {
            var usersQuery = _context.Users
                             .AsQueryable();

            if (!string.IsNullOrEmpty(dto.FullName) || !string.IsNullOrWhiteSpace(dto.FullName))
            {
                usersQuery = usersQuery.Where(u => u.FullName.ToLower().Contains(dto.FullName.ToLower()));
            }

            if (!string.IsNullOrEmpty(dto.Username) || !string.IsNullOrWhiteSpace(dto.Username))
            {
                usersQuery = usersQuery.Where(u => u.Username.ToLower().Contains(dto.Username.ToLower()));
            }

            /**
             *  Returns Users with searched Role name
             */
            if (dto.Role != null)
            {
                usersQuery = usersQuery.Where(u => u.Role.Name.ToLower().Contains(dto.Role.ToLower()));
            }

            /**
             *  Returns Users on specific Project name
             */
            if (dto.Project != null)
            {
                usersQuery = usersQuery.Where(u => u.UserProjects.Select(up => up.Project.Name.ToLower()).Contains(dto.Project.ToLower()));
            }

            var skipCount = dto.PerPage * (dto.Page - 1);

            var users = _mapper.Map <List <UserDTO> >(usersQuery.Skip(skipCount).Take(dto.PerPage).ToList());

            return(new PagedResponse <UserDTO>
            {
                CurrentPage = dto.Page,
                ItemsPerPage = dto.PerPage,
                TotalCount = usersQuery.Count(),
                Items = users
            });
        }
예제 #5
0
        public IActionResult Search(SearchUserDTO searchUserDTO)
        {
            try
            {
                if (String.IsNullOrEmpty(searchUserDTO.Username))
                {
                    throw new DomainException(ErrorMessages.RequiredValuesNotProvided);
                }

                if (ModelState.IsValid)
                {
                    var ResultUser  = _userStore.GetByUsername(searchUserDTO.Username);
                    var currentUser = _context.Users.Find(userManager.GetUserId(User));

                    if (ResultUser is null || ResultUser.AccountStatus.Equals(Status.Suspended) ||
                        ResultUser.AccountStatus.Equals(Status.Inactive))
                    {
                        throw new DomainException(ErrorMessages.UserDoesNotExist);
                    }

                    var GetSearchResultQuery = new GetSearchResultQuery(_userStore, _FriendListStore,
                                                                        _RequestStore, currentUser, ResultUser, searchUserDTO);
                    return(View(GetSearchResultQuery.Handle()));
                }
                return(View(searchUserDTO));
            }
            catch (DomainException ex)
            {
                _logger.LogError(ex.Message);
                ModelState.AddModelError("Error", ex.Message);
                return(View(searchUserDTO));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
                return(RedirectToAction(ActionName.ServerError));
            }
        }
예제 #6
0
 public IActionResult Get([FromQuery] SearchUserDTO dto, [FromServices] IGetUserQuery query)
 {
     return(Ok(_executor.ExecuteQuery(query, dto)));
 }