Beispiel #1
0
        public IHttpActionResult GetAll([FromUri] string search = null, string role = null, int?ageFrom = null,
                                        int?ageTo = null, string sortOrder          = null, int?offset  = null, int?limit = 20)
        {
            var filter = new UserFilterDTO()
            {
                Search    = search,
                Role      = role,
                AgeFrom   = ageFrom,
                AgeTo     = ageTo,
                SortOrder = sortOrder,
                Skip      = offset,
                Take      = limit
            };

            try
            {
                var users = _userService.GetAllUsers(filter);

                if (users == null || !users.Any())
                {
                    return(NotFound());
                }

                return(Ok(_mapper.Map <IEnumerable <UserDTO>, IEnumerable <UserModel> >(users)));
            }
            catch (Exception)
            {
                return(NotFound());
            }
        }
 public async Task <IPagedList <User> > FilterPage(UserFilterDTO filter, int pageNumber)
 {
     return(_context.Users
            .Where(x => string.IsNullOrEmpty(filter.Search) || x.FullName.Contains(filter.Search) || x.Username.Contains(filter.Search))
            .OrderBy(x => x.Id)
            .ToPagedList(pageNumber, 10));
 }
        private void FilterUserList()
        {
            try
            {
                var filter = new UserFilterDTO();

                filter.CurrentUserTypeId = UserHelper.CurrentUser.UserTypeId;

                if (UserType.SelectedIndex != -1)
                {
                    filter.UserTypeId = Convert.ToInt32(UserType.SelectedValue);
                }

                filter.UserName  = UserName.Text;
                filter.FirstName = FirstName.Text;
                filter.LastName  = LastName.Text;
                filter.Email     = Email.Text;
                filter.Phone     = Phone.Text;
                filter.BirthDate = BirthDate.SelectedDate;

                if (Status.SelectedIndex != -1)
                {
                    filter.Status = Convert.ToInt32(Status.SelectedValue);
                }

                ServiceResult <List <UserDTO> > serviceResult = new ServiceResult <List <UserDTO> >();
                var queryString = new Dictionary <string, string>();
                var response    = ApiHelper.CallSendApiMethod(ApiKeys.UserApiUrl, "GetUserList", queryString, filter);
                if (!response.IsSuccessStatusCode)
                {
                    throw new Exception("Hata oluştu!");
                }
                var data = response.Content.ReadAsStringAsync().Result;
                serviceResult = JsonConvert.DeserializeObject <ServiceResult <List <UserDTO> > >(data);

                if (serviceResult.ServiceResultType != EnumServiceResultType.Success)
                {
                    throw new Exception(serviceResult.ErrorMessage);
                }

                if (serviceResult.Result == null)
                {
                    throw new Exception(serviceResult.ErrorMessage);
                }

                UsersListGrid.DataSource = serviceResult.Result;
                UsersListGrid.DataBind();
            }
            catch (Exception ex)
            {
            }
        }
        public IActionResult GetAll(int page)
        {
            if (!_userService.IsAdmin(User.Identity.Name))
            {
                return(Unauthorized());
            }

            UserFilterDTO filter = new UserFilterDTO();

            filter.page = page;

            return(Ok(_userService.Get(filter)));
        }
Beispiel #5
0
        public SsoAuthorizationDTO ValidateAndGetUserAuthorizations(SsoAuthenticationDTO sso)
        {
            var authorization = new SsoAuthorizationDTO {
                IsValid = false
            };

            try
            {
                if (string.IsNullOrEmpty(sso.EncriptedAppCode) ||
                    string.IsNullOrEmpty(sso.EncriptedLogin))
                {
                    throw new ServiceException(CommonExceptionType.ParameterException, "EncriptedAppCode and EncriptedLogin");
                }

                var appCode    = CryptographHelper.RijndaelDecrypt(sso.EncriptedAppCode, CommonConsts.CommonPassword);
                var login      = CryptographHelper.RijndaelDecrypt(sso.EncriptedLogin, CommonConsts.CommonPassword);
                var userFilter = new UserFilterDTO {
                    Login = login, LoadProfiles = true
                };

                //Get user data
                var worker = GetWorker(userFilter);

                //Validates user password if its a SSO user
                worker.ValidateUserCredential(sso.EncriptedPassword);

                //Get worker related apps filtered by AppCode
                worker.Applications = GetUserApplications(userFilter, new ApplicationFilterDTO
                {
                    ApplicationCode     = appCode,
                    LoadTranslations    = true,
                    LanguageCultureName = sso.LanguageCultureName
                });

                //Transforms user permissions to claims identity
                authorization.Claims  = worker.GetClaims();
                authorization.IsValid = (!worker.Validation.HasErrors && authorization.Claims.Count > 0);
            }
            catch (ServiceException ex)
            {
                //Suppress validations exceptions and returns an empty authorization
            }
            catch (Exception ex)
            {
                LogHelper.ExceptionAndThrow(ex);
            }

            return(authorization);
        }
Beispiel #6
0
        public async Task <ActionResult> Index(UserFilterDTO filter, int page = 1)
        {
            var model = await _userService.FilterPage(filter, page);

            if (Request.IsAjaxRequest())
            {
                return(PartialView("~/Views/User/Partial/UsersList.cshtml", model));
            }

            return(View(new UserViewModel
            {
                Filter = filter,
                List = model,
            }));
        }
        protected void UserType_ItemSelected(object sender, DropDownListEventArgs e)
        {
            UserFirstLastName.Items.Clear();

            try
            {
                var selectedUserTypeId = UserType.SelectedValue;

                var filter = new UserFilterDTO();

                filter.CurrentUserTypeId = UserHelper.CurrentUser.UserTypeId;

                if (UserType.SelectedIndex != -1)
                {
                    filter.UserTypeId = Convert.ToInt32(selectedUserTypeId);
                }

                filter.Status = Convert.ToInt32(EnumUserStatus.Aktif);

                ServiceResult <List <UserDTO> > serviceResult = new ServiceResult <List <UserDTO> >();
                var queryString = new Dictionary <string, string>();
                var response    = ApiHelper.CallSendApiMethod(ApiKeys.UserApiUrl, "GetUserList", queryString, filter);
                if (!response.IsSuccessStatusCode)
                {
                    throw new Exception("Hata oluştu!");
                }
                var data = response.Content.ReadAsStringAsync().Result;
                serviceResult = JsonConvert.DeserializeObject <ServiceResult <List <UserDTO> > >(data);

                if (serviceResult.ServiceResultType == EnumServiceResultType.Success)
                {
                    if (serviceResult.Result.Any())
                    {
                        var filteredUserFirstLastNameList = serviceResult.Result.Where(p => p.UserTypeId == Convert.ToInt32(selectedUserTypeId)).ToList();

                        foreach (var item in filteredUserFirstLastNameList)
                        {
                            UserFirstLastName.Items.Add(new DropDownListItem {
                                Text = $"{item.FirstName} {item.LastName}", Value = item.UserId.ToString()
                            });
                        }
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
Beispiel #8
0
        protected override IQuery <User> ApplyWhereClause(IQuery <User> query, UserFilterDTO filter)
        {
            var predicates = new List <IPredicate>();

            if (!string.IsNullOrEmpty(filter.UserName))
            {
                predicates.Add(new SimplePredicate(nameof(User.UserName), ValueComparingOperator.Equal, filter.UserName));
            }

            if (filter.UserId.HasValue)
            {
                predicates.Add(new SimplePredicate(nameof(User.Id), ValueComparingOperator.Equal, filter.UserId));
            }

            return(query.Where(new CompositePredicate(predicates)));
        }
        public UserFilterDTO Get(UserFilterDTO filterDTO)
        {
            var query = _userRepository.GetAll().Where(u => u.FlagDeleted == false);

            //default
            int items_per_page = 10;
            int skip           = items_per_page * (filterDTO.page - 1);

            filterDTO.items.Clear();
            filterDTO.items_per_page = items_per_page;
            filterDTO.total_items    = query.Count();
            filterDTO.total_pages    = (int)(filterDTO.total_items / items_per_page)
                                       + ((filterDTO.total_items % items_per_page) > 0 ? 1 : 0);

            filterDTO.items = _converter.Parse(query.OrderBy(u => u.Name).OrderBy(u => u.LastName)
                                               .Take(items_per_page).Skip(skip).ToList());

            return(filterDTO);
        }
Beispiel #10
0
        /// <summary>
        /// Returns list of user DTO objects that are valid and match user filter.
        /// </summary>
        /// <param name="filter"></param>
        /// <returns></returns>
        public IEnumerable <UserDTO> LoadFilteredUsers(UserFilterDTO filter)
        {
            Expression <Func <tUser, bool> > restriction = x => x.IsValid;

            if (!String.IsNullOrEmpty(filter.UserName))
            {
                restriction = ExpressionUtils.AndOperation(restriction, x => x.UserName.Contains(filter.UserName));
            }
            if (!String.IsNullOrEmpty(filter.FirstName))
            {
                restriction = ExpressionUtils.AndOperation(restriction, x => x.FirstName.Contains(filter.FirstName));
            }
            if (!String.IsNullOrEmpty(filter.LastName))
            {
                restriction = ExpressionUtils.AndOperation(restriction, x => x.FirstName.Contains(filter.LastName));
            }

            BeginTransaction();
            IEnumerable <UserDTO> result = Mapper.Map <IEnumerable <UserDTO> >(Context.tUsers.Where(restriction));

            EndTransaction();
            return(result);
        }
Beispiel #11
0
        private void btnPerformUserSearch_Click(object sender, EventArgs e)
        {
            UserFilterDTO filter = new UserFilterDTO();

            filter.UserName  = txtBoxSearchUserName.Text;
            filter.FirstName = txtBoxSearchFirstName.Text;
            filter.LastName  = txtBoxSearchLastName.Text;

            btnCancelSearch.Visible = true;

            IList <UserDTO> users = _formsService.UsersService.LoadFilteredUsers(filter).Where(u => u.Id != loggedUser.Id).ToList();

            userDTOBindingSource.Clear();
            if (users == null)
            {
                return;
            }
            foreach (UserDTO user in users)
            {
                userDTOBindingSource.Add(user);
            }

            LoadUsersDataGrid(false);
        }
Beispiel #12
0
        public IHttpActionResult GetUserList(UserFilterDTO filter)
        {
            if (!Request.Headers.Contains("apiKey"))
            {
                return(Unauthorized());
            }

            string apiKey = Request.Headers.GetValues("apiKey").First();

            if (!ApiHelper.CheckKey(apiKey))
            {
                return(Unauthorized());
            }

            try
            {
                var serviceResult = _userService.GetUserList(filter);
                return(Ok(serviceResult));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Beispiel #13
0
 public PagedList <UserDTO> GetAllPagedUsers([FromBody] UserFilterDTO filter)
 {
     return(_dataAPI.GetAllPagedUsers(filter));
 }
        public ServiceResult <List <UserDTO> > GetUserList(UserFilterDTO model)
        {
            string errorMessage = string.Empty;
            EnumServiceResultType serviceResultType = EnumServiceResultType.Unspecified;
            List <UserDTO>        result            = null;

            try
            {
                Expression <Func <Contracts.Entities.EF.User, bool> > expUser = p => true;

                #region availableUserTypeIdList

                List <int> availableUserTypeIdList = new List <int>();

                if (model.CurrentUserTypeId == (int)EnumUserType.NGOHead)
                {
                    availableUserTypeIdList.Add((int)EnumUserType.NGOHead);
                    availableUserTypeIdList.Add((int)EnumUserType.ProjectManager);
                    availableUserTypeIdList.Add((int)EnumUserType.ScholarshipCommittee);
                    availableUserTypeIdList.Add((int)EnumUserType.ScholarshipHolder);
                    availableUserTypeIdList.Add((int)EnumUserType.Donator);
                    availableUserTypeIdList.Add((int)EnumUserType.Schoolmaster);
                    availableUserTypeIdList.Add((int)EnumUserType.HostSchoolTeacher);
                    availableUserTypeIdList.Add((int)EnumUserType.Student);
                    availableUserTypeIdList.Add((int)EnumUserType.Volunteer);
                    availableUserTypeIdList.Add((int)EnumUserType.YonDer);
                }

                if (model.CurrentUserTypeId == (int)EnumUserType.ProjectManager)
                {
                    availableUserTypeIdList.Add((int)EnumUserType.NGOHead);
                    availableUserTypeIdList.Add((int)EnumUserType.ProjectManager);
                    availableUserTypeIdList.Add((int)EnumUserType.Schoolmaster);
                    availableUserTypeIdList.Add((int)EnumUserType.HostSchoolTeacher);
                    availableUserTypeIdList.Add((int)EnumUserType.Student);
                    availableUserTypeIdList.Add((int)EnumUserType.Volunteer);
                }

                if (model.CurrentUserTypeId == (int)EnumUserType.ScholarshipCommittee)
                {
                    availableUserTypeIdList.Add((int)EnumUserType.NGOHead);
                    availableUserTypeIdList.Add((int)EnumUserType.ScholarshipCommittee);
                    availableUserTypeIdList.Add((int)EnumUserType.ScholarshipHolder);
                    availableUserTypeIdList.Add((int)EnumUserType.Donator);
                    availableUserTypeIdList.Add((int)EnumUserType.YonDer);
                }

                if (model.CurrentUserTypeId == (int)EnumUserType.ScholarshipHolder)
                {
                    availableUserTypeIdList.Add((int)EnumUserType.NGOHead);
                    availableUserTypeIdList.Add((int)EnumUserType.ScholarshipCommittee);
                    availableUserTypeIdList.Add((int)EnumUserType.YonDer);
                }

                if (model.CurrentUserTypeId == (int)EnumUserType.Donator)
                {
                }

                if (model.CurrentUserTypeId == (int)EnumUserType.Schoolmaster)
                {
                    availableUserTypeIdList.Add((int)EnumUserType.NGOHead);
                    availableUserTypeIdList.Add((int)EnumUserType.HostSchoolTeacher);
                    availableUserTypeIdList.Add((int)EnumUserType.Student);
                }

                if (model.CurrentUserTypeId == (int)EnumUserType.HostSchoolTeacher)
                {
                    availableUserTypeIdList.Add((int)EnumUserType.NGOHead);
                    availableUserTypeIdList.Add((int)EnumUserType.Schoolmaster);
                    availableUserTypeIdList.Add((int)EnumUserType.HostSchoolTeacher);
                    availableUserTypeIdList.Add((int)EnumUserType.Student);
                }

                if (model.CurrentUserTypeId == (int)EnumUserType.Student)
                {
                }

                if (model.CurrentUserTypeId == (int)EnumUserType.Volunteer)
                {
                    availableUserTypeIdList.Add((int)EnumUserType.NGOHead);
                    availableUserTypeIdList.Add((int)EnumUserType.ProjectManager);
                }

                if (model.CurrentUserTypeId == (int)EnumUserType.YonDer)
                {
                    availableUserTypeIdList.Add((int)EnumUserType.NGOHead);
                    availableUserTypeIdList.Add((int)EnumUserType.ScholarshipCommittee);
                    availableUserTypeIdList.Add((int)EnumUserType.ScholarshipHolder);
                    availableUserTypeIdList.Add((int)EnumUserType.Donator);
                }

                expUser = expUser.And(p => availableUserTypeIdList.Contains(p.UserTypeId));

                #endregion

                if (model.UserTypeId != null)
                {
                    expUser = expUser.And(p => p.UserTypeId == model.UserTypeId.Value);
                }

                if (!string.IsNullOrEmpty(model.UserName))
                {
                    expUser = expUser.And(p => p.Username.Contains(model.UserName));
                }

                if (model.Status != null)
                {
                    if (model.Status == (int)EnumUserStatus.Aktif)
                    {
                        expUser = expUser.And(p => p.IsActive == true);
                    }
                    else if (model.Status == (int)EnumUserStatus.Pasif)
                    {
                        expUser = expUser.And(p => p.IsActive == false);
                    }
                }

                if (!string.IsNullOrEmpty(model.Email))
                {
                    expUser = expUser.And(p => p.Email.Contains(model.Email));
                }

                if (!string.IsNullOrEmpty(model.FirstName))
                {
                    expUser = expUser.And(p =>
                                          p.NgoHead.Any(p2 => p2.FirstName.Contains(model.FirstName)) ||
                                          p.ProjectManager.Any(p2 => p2.FirstName.Contains(model.FirstName)) ||
                                          p.ScholarshipCommittee.Any(p2 => p2.FirstName.Contains(model.FirstName)) ||
                                          p.ScholarshipHolder.Any(p2 => p2.FirstName.Contains(model.FirstName)) ||
                                          p.Donator.Any(p2 => p2.FirstName.Contains(model.FirstName)) ||
                                          p.Schoolmaster.Any(p2 => p2.FirstName.Contains(model.FirstName)) ||
                                          p.HostSchoolTeacher.Any(p2 => p2.FirstName.Contains(model.FirstName)) ||
                                          p.Student.Any(p2 => p2.FirstName.Contains(model.FirstName)) ||
                                          p.Volunteer.Any(p2 => p2.FirstName.Contains(model.FirstName)) ||
                                          p.YonDer.Any(p2 => p2.FirstName.Contains(model.FirstName))
                                          );
                }

                if (!string.IsNullOrEmpty(model.LastName))
                {
                    expUser = expUser.And(p =>
                                          p.NgoHead.Any(p2 => p2.LastName.Contains(model.LastName)) ||
                                          p.ProjectManager.Any(p2 => p2.LastName.Contains(model.LastName)) ||
                                          p.ScholarshipCommittee.Any(p2 => p2.LastName.Contains(model.LastName)) ||
                                          p.ScholarshipHolder.Any(p2 => p2.LastName.Contains(model.LastName)) ||
                                          p.Donator.Any(p2 => p2.LastName.Contains(model.LastName)) ||
                                          p.Schoolmaster.Any(p2 => p2.LastName.Contains(model.LastName)) ||
                                          p.HostSchoolTeacher.Any(p2 => p2.LastName.Contains(model.LastName)) ||
                                          p.Student.Any(p2 => p2.LastName.Contains(model.LastName)) ||
                                          p.Volunteer.Any(p2 => p2.LastName.Contains(model.LastName)) ||
                                          p.YonDer.Any(p2 => p2.LastName.Contains(model.LastName))
                                          );
                }

                if (!string.IsNullOrEmpty(model.Phone))
                {
                    expUser = expUser.And(p =>
                                          p.NgoHead.Any(p2 => p2.PhoneNumber.Contains(model.Phone)) ||
                                          p.ProjectManager.Any(p2 => p2.PhoneNumber.Contains(model.Phone)) ||
                                          p.ScholarshipCommittee.Any(p2 => p2.PhoneNumber.Contains(model.Phone)) ||
                                          p.ScholarshipHolder.Any(p2 => p2.PhoneNumber.Contains(model.Phone)) ||
                                          p.Donator.Any(p2 => p2.PhoneNumber.Contains(model.Phone)) ||
                                          p.Schoolmaster.Any(p2 => p2.PhoneNumber.Contains(model.Phone)) ||
                                          p.HostSchoolTeacher.Any(p2 => p2.PhoneNumber.Contains(model.Phone)) ||
                                          p.Student.Any(p2 => p2.PhoneNumber.Contains(model.Phone)) ||
                                          p.Volunteer.Any(p2 => p2.PhoneNumber.Contains(model.Phone)) ||
                                          p.YonDer.Any(p2 => p2.PhoneNumber.Contains(model.Phone))
                                          );
                }

                if (model.BirthDate != null)
                {
                    expUser = expUser.And(p =>
                                          p.NgoHead.Any(p2 => p2.BirthDate == model.BirthDate) ||
                                          p.ProjectManager.Any(p2 => p2.BirthDate == model.BirthDate) ||
                                          p.ScholarshipCommittee.Any(p2 => p2.BirthDate == model.BirthDate) ||
                                          p.ScholarshipHolder.Any(p2 => p2.BirthDate == model.BirthDate) ||
                                          p.Donator.Any(p2 => p2.BirthDate == model.BirthDate) ||
                                          p.Schoolmaster.Any(p2 => p2.BirthDate == model.BirthDate) ||
                                          p.HostSchoolTeacher.Any(p2 => p2.BirthDate == model.BirthDate) ||
                                          p.Student.Any(p2 => p2.BirthDate == model.BirthDate) ||
                                          p.Volunteer.Any(p2 => p2.BirthDate == model.BirthDate) ||
                                          p.YonDer.Any(p2 => p2.BirthDate == model.BirthDate)
                                          );
                }

                var userList = _userRepository.Entities.Where(expUser).ToList();

                result = new List <UserDTO>();

                foreach (var user in userList)
                {
                    var newUser = new UserDTO();

                    newUser.UserId     = user.Id;
                    newUser.UserTypeId = user.UserTypeId;
                    newUser.UserType   = EnumHelper.GetEnumDescription(typeof(EnumUserType), user.UserTypeId.ToString());
                    newUser.Username   = user.Username;
                    newUser.Email      = user.Email;
                    newUser.IsActive   = user.IsActive;

                    if (user.IsActive)
                    {
                        newUser.UserStatus = EnumHelper.GetEnumDescription(typeof(EnumUserStatus), ((int)EnumUserStatus.Aktif).ToString());
                    }
                    else
                    {
                        newUser.UserStatus = EnumHelper.GetEnumDescription(typeof(EnumUserStatus), ((int)EnumUserStatus.Pasif).ToString());
                    }

                    if (user.UserTypeId == (int)EnumUserType.NGOHead)
                    {
                        if (user.NgoHead.Any())
                        {
                            newUser.Id        = user.NgoHead.Single().Id;
                            newUser.FirstName = user.NgoHead.Single().FirstName;
                            newUser.LastName  = user.NgoHead.Single().LastName;
                            newUser.BirthDate = user.NgoHead.Single().BirthDate;
                            newUser.PhoneNum  = user.NgoHead.Single().PhoneNumber;
                        }
                    }

                    if (user.UserTypeId == (int)EnumUserType.ProjectManager)
                    {
                        if (user.ProjectManager.Any())
                        {
                            newUser.Id        = user.ProjectManager.Single().Id;
                            newUser.FirstName = user.ProjectManager.Single().FirstName;
                            newUser.LastName  = user.ProjectManager.Single().LastName;
                            newUser.BirthDate = user.ProjectManager.Single().BirthDate;
                            newUser.PhoneNum  = user.ProjectManager.Single().PhoneNumber;
                        }
                    }

                    if (user.UserTypeId == (int)EnumUserType.ScholarshipCommittee)
                    {
                        if (user.ScholarshipCommittee.Any())
                        {
                            newUser.Id        = user.ScholarshipCommittee.Single().Id;
                            newUser.FirstName = user.ScholarshipCommittee.Single().FirstName;
                            newUser.LastName  = user.ScholarshipCommittee.Single().LastName;
                            newUser.BirthDate = user.ScholarshipCommittee.Single().BirthDate;
                            newUser.PhoneNum  = user.ScholarshipCommittee.Single().PhoneNumber;
                        }
                    }

                    if (user.UserTypeId == (int)EnumUserType.ScholarshipHolder)
                    {
                        if (user.ScholarshipHolder.Any())
                        {
                            newUser.Id        = user.ScholarshipHolder.Single().Id;
                            newUser.FirstName = user.ScholarshipHolder.Single().FirstName;
                            newUser.LastName  = user.ScholarshipHolder.Single().LastName;
                            newUser.BirthDate = user.ScholarshipHolder.Single().BirthDate;
                            newUser.PhoneNum  = user.ScholarshipHolder.Single().PhoneNumber;
                        }
                    }

                    if (user.UserTypeId == (int)EnumUserType.Donator)
                    {
                        if (user.Donator.Any())
                        {
                            newUser.Id        = user.Donator.Single().Id;
                            newUser.FirstName = user.Donator.Single().FirstName;
                            newUser.LastName  = user.Donator.Single().LastName;
                            newUser.BirthDate = user.Donator.Single().BirthDate;
                            newUser.PhoneNum  = user.Donator.Single().PhoneNumber;
                        }
                    }

                    if (user.UserTypeId == (int)EnumUserType.Schoolmaster)
                    {
                        if (user.Schoolmaster.Any())
                        {
                            newUser.Id        = user.Schoolmaster.Single().Id;
                            newUser.FirstName = user.Schoolmaster.Single().FirstName;
                            newUser.LastName  = user.Schoolmaster.Single().LastName;
                            newUser.BirthDate = user.Schoolmaster.Single().BirthDate;
                            newUser.PhoneNum  = user.Schoolmaster.Single().PhoneNumber;
                        }
                    }

                    if (user.UserTypeId == (int)EnumUserType.HostSchoolTeacher)
                    {
                        if (user.HostSchoolTeacher.Any())
                        {
                            newUser.Id        = user.HostSchoolTeacher.Single().Id;
                            newUser.FirstName = user.HostSchoolTeacher.Single().FirstName;
                            newUser.LastName  = user.HostSchoolTeacher.Single().LastName;
                            newUser.BirthDate = user.HostSchoolTeacher.Single().BirthDate;
                            newUser.PhoneNum  = user.HostSchoolTeacher.Single().PhoneNumber;
                        }
                    }

                    if (user.UserTypeId == (int)EnumUserType.Student)
                    {
                        if (user.Student.Any())
                        {
                            newUser.Id        = user.Student.Single().Id;
                            newUser.FirstName = user.Student.Single().FirstName;
                            newUser.LastName  = user.Student.Single().LastName;
                            newUser.BirthDate = user.Student.Single().BirthDate;
                            newUser.PhoneNum  = user.Student.Single().PhoneNumber;
                        }
                    }

                    if (user.UserTypeId == (int)EnumUserType.Volunteer)
                    {
                        if (user.Volunteer.Any())
                        {
                            newUser.Id        = user.Volunteer.Single().Id;
                            newUser.FirstName = user.Volunteer.Single().FirstName;
                            newUser.LastName  = user.Volunteer.Single().LastName;
                            newUser.BirthDate = user.Volunteer.Single().BirthDate;
                            newUser.PhoneNum  = user.Volunteer.Single().PhoneNumber;
                        }
                    }

                    if (user.UserTypeId == (int)EnumUserType.YonDer)
                    {
                        if (user.YonDer.Any())
                        {
                            newUser.Id        = user.YonDer.Single().Id;
                            newUser.FirstName = user.YonDer.Single().FirstName;
                            newUser.LastName  = user.YonDer.Single().LastName;
                            newUser.BirthDate = user.YonDer.Single().BirthDate;
                            newUser.PhoneNum  = user.YonDer.Single().PhoneNumber;
                        }
                    }

                    result.Add(newUser);
                }

                serviceResultType = EnumServiceResultType.Success;
            }
            catch (Exception ex)
            {
                errorMessage      = ex.Message;
                serviceResultType = EnumServiceResultType.Error;
            }
            return(new ServiceResult <List <UserDTO> > {
                ErrorMessage = errorMessage, Result = result, ServiceResultType = serviceResultType
            });
        }
Beispiel #15
0
        private Worker GetWorker(UserFilterDTO filter)
        {
            var query  = new List <Expression <Func <Worker, bool> > >();
            var worker = default(Worker);

            if (!string.IsNullOrEmpty(filter.Id))
            {
                query.Add(w => w.Id.ToLower() == filter.Id.ToLower());
            }

            if (!string.IsNullOrEmpty(filter.Login))
            {
                query.Add(w => w.Login.ToLower() == filter.Login.ToLower());
            }

            //Try to get workers data at ActiveDirectory
            if (!string.IsNullOrEmpty(filter.Login))
            {
                worker = _adRepo.GetUser(filter.Login, true).Map <BaseActiveDirectoryUser, Worker>();
            }

            //Validates basic infos and throws an error if it fails
            worker.Validate();
            worker.BranchLine = (worker.UserExtraInfo.Phone ?? worker.BranchLine);

            if (worker.Validation.HasErrors)
            {
                throw new ServiceException(worker.Validation.Results);
            }

            //Try to get Corporative Worker data
            try
            {
                var workerCorporate = default(Worker);

                //Initializes unit of work and connections for Corporate Database
                using (var uowCorporate = new UnitOfWork <CorporateContextFmw>())
                {
                    //Get aditional data from Corporate Database
                    using (var workerRepo = uowCorporate.GetRepository <Worker>())
                    {
                        workerCorporate = workerRepo.Get(query.BuildExpression());
                    }
                }

                //Maps corporate data null properties and other datas
                if (workerCorporate != null)
                {
                    //Maps the Corporate Id, if its null uses the same SSO Id
                    worker.Id = (workerCorporate.Id ?? worker.Id);
                    worker    = worker.MapOnlyNulls <Worker>(workerCorporate);
                }
            }
            catch (Exception ex)
            {
                LogHelper.Exception(ex);
            }

            //Try to get SSO Worker data
            try
            {
                //Get worker at SSO database
                var workerSSO = _workerRepo.Get(query.BuildExpression());

                //Maps sso data null properties and other datas
                if (workerSSO != null)
                {
                    //Maps the SSO Id, if its null uses the same SSO Id
                    worker.Id = (workerSSO.Id ?? worker.Id);
                    worker    = worker.MapOnlyNulls <Worker>(workerSSO);
                }
            }
            catch (Exception ex)
            {
                LogHelper.Exception(ex);
            }

            return(worker);
        }
Beispiel #16
0
        private List <SsoApplication> GetUserApplications(UserFilterDTO userFilter, ApplicationFilterDTO appFilter)
        {
            var appList = default(List <SsoApplication>);
            var query   = new List <Expression <Func <SsoProfileAndWorker, bool> > > {
                wp => wp.Login.ToLower() == userFilter.Login.Trim().ToLower()
            };

            //Get distinct App ids
            var appDistinctIds = _ssoProfileWorkerRepo
                                 .SelectWhere(query.BuildExpression())
                                 .Select(paw => paw.ApplicationId.ToLower())
                                 .Distinct()
                                 .ToList();

            //Get all user related Applications
            appList = _ssoApplicationRepo
                      .SelectWhere(app => appDistinctIds.Contains(app.Id.ToLower()))
                      .ToList();

            //If an application code provided use to filter Profile querys.
            if (!string.IsNullOrEmpty(appFilter.ApplicationCode))
            {
                //Get application by Id, if not found try get by Mnemonic
                var ssoApp = appList.FirstOrDefault(app => app.Id.ToLower() == appFilter.ApplicationCode.ToLower());

                if (ssoApp == null)
                {
                    ssoApp = appList
                             .Where(app => app.Mnemonic != null)
                             .FirstOrDefault(app => app.Mnemonic.ToLower() == appFilter.ApplicationCode.ToLower());
                }

                if (ssoApp == null)
                {
                    throw new ServiceException(CommonExceptionType.ValidationException, "Application isn´t related to this user.");
                }

                query.Add(wp => wp.ApplicationId.ToLower() == ssoApp.Id.ToLower());
            }

            var allProfiles = new List <SsoProfile>();

            //Load User Profiles
            if (userFilter.LoadProfiles)
            {
                //Get profiles by workers
                var profilesWorkers = _ssoProfileWorkerRepo
                                      .SelectWhere(query.BuildExpression(),
                                                   "Profile",
                                                   "Profile.ProfilesAndActiveDirectories",
                                                   "Profile.ProfilesAndActiveDirectories.AdGroup",
                                                   "Profile.ProfilesAndServices",
                                                   "Profile.ProfilesAndServices.Service",
                                                   "Profile.ProfilesAndServices.Service.SsoGroup")
                                      .ToList();

                //Adds workers profiles to list
                allProfiles.AddRange(profilesWorkers.Select(paw => paw.Profile));
            }

            //Load Public Services, Groups and Profiles
            if (userFilter.LoadPublicServices)
            {
                //Get public services and nested objects
                var publicProfileServices = _ssoProfileServiceRepo
                                            .SelectWhere(ps => ps.Service.IsPublic == "S",
                                                         "Profile",
                                                         "Service",
                                                         "Service.SsoGroup")
                                            .ToList();

                //Adds public service profiles to list
                allProfiles.AddRange(publicProfileServices.Select(pps => pps.Profile));
            }

            //If profiles are loaded, put then under each app
            if (allProfiles.Any())
            {
                //Load translations for profiles and nested objects
                var translations = default(List <ApplicationTranslation>);
                if (appFilter.LoadTranslations)
                {
                    var translationParameters = new List <string>
                    {
                        CommonTranslationParameter.TRANS_TP_EXC_APPL.ToString(),
                        CommonTranslationParameter.TRANS_TP_EXC_GRUPO.ToString(),
                        CommonTranslationParameter.TRANS_TP_EXC_SERVICO.ToString(),
                        CommonTranslationParameter.TRANS_TP_EXC_GRP_EXB.ToString()
                    };

                    translations = LoadTranslations(appDistinctIds, translationParameters, appFilter.LanguageCultureName);
                }

                //Adds profiles to applications
                appList.AsParallel().ForAll(app =>
                {
                    app.AddProfilesAndDependencies(allProfiles);

                    if (appFilter.LoadTranslations)
                    {
                        app.AddTranslations(translations);
                    }
                });
            }

            return(appList);
        }
Beispiel #17
0
        public UserDTO GetUser(UserFilterDTO filter)
        {
            var dto = default(UserDTO);

            try
            {
                if (string.IsNullOrEmpty(filter.Login) &&
                    string.IsNullOrEmpty(filter.Id))
                {
                    throw new ServiceException(CommonExceptionType.ParameterException, "UserIdentity or Id");
                }

                //Get Worker domain object and set Login in filter
                var worker = GetWorker(filter);
                filter.Login = worker.Login;

                //Get worker related apps
                worker.Applications = GetUserApplications(filter, new ApplicationFilterDTO
                {
                    LoadTranslations    = filter.LoadTranslations,
                    LanguageCultureName = filter.LanguageCultureName
                });

                //Initialize the DTO to return and cast dependent objects
                dto = worker.Map <Worker, UserDTO>();

                if (worker.Applications != null && worker.Applications.Count > 0)
                {
                    //Set profiles, services and groups names
                    foreach (var pro in worker.Applications.SelectMany(app => app.Profiles))
                    {
                        var appId = pro.ApplicationId;
                        var app   = dto.Applications.FirstOrDefault(ap => ap.Id == appId);

                        if (app != default(ApplicationDTO))
                        {
                            var proId   = pro.Id;
                            var profile = app.Profiles.FirstOrDefault(p => p.Id == proId);

                            if (profile != default(ProfileDTO))
                            {
                                //Inverts the hierarchy between SSOGroup and SSOServices, putting SSOGroup as a container
                                profile.SsoGroups = pro.ProfilesAndServices
                                                    .Where(pas => pas.ApplicationId == appId && pas.ProfileId == proId)
                                                    .Select(pad => new SsoGroupDTO
                                {
                                    Id = pad.Service.GroupId,
                                    NameOrDescription = pad.Service.SsoGroup.NameOrDescription,
                                    Services          = pro.ProfilesAndServices
                                                        .Where(ps => ps.ApplicationId == appId && ps.ProfileId == proId && ps.Service.GroupId == pad.Service.GroupId)
                                                        .Select(se => se.Service)
                                                        .ToList()
                                                        .Map <List <SsoServices>, List <SsoServicesDTO> >(),
                                })
                                                    .Distinct(new EqualBy <SsoGroupDTO>((x, y) => x.Id == y.Id))
                                                    .ToList();

                                //Copy AD group list to the specified profile inside Dto
                                profile.ActiveDirectoryGroups = pro.ProfilesAndActiveDirectories
                                                                .Where(pad => pad.ApplicationId == appId && pad.ProfileId == proId)
                                                                .Select(pad => pad.AdGroup)
                                                                .ToList()
                                                                .Map <List <ActiveDirectoryGroup>, List <ActiveDirectoryGroupDTO> >();
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.ExceptionAndThrow(ex);
            }

            return(dto);
        }
Beispiel #18
0
        /// <summary>
        /// Gets all users by filter parameters.
        /// </summary>
        /// <param name="userSearchDTO"></param>
        /// <returns></returns>
        public IEnumerable <UserDTO> GetAllUsers(UserFilterDTO userSearchDTO)
        {
            if (string.IsNullOrEmpty(userSearchDTO.SortOrder))
            {
                userSearchDTO.SortOrder = "username_asc";
            }

            var users = UnitOfWork.UserManager.Users.AsQueryable();

            if (userSearchDTO != null)
            {
                if (!string.IsNullOrEmpty(userSearchDTO.Search))
                {
                    userSearchDTO.Search = userSearchDTO.Search.ToLower();
                    var usersAll = users;
                    users = users.Where(p => p.Email.ToLower().Contains(userSearchDTO.Search));
                    users = users.Union(usersAll.Where(p => p.UserName.ToLower().Contains(userSearchDTO.Search)));
                    users = users.Union(usersAll.Where(p => p.Author.FirstName.ToLower().Contains(userSearchDTO.Search)));
                    users = users.Union(usersAll.Where(p => p.Author.LastName.ToLower().Contains(userSearchDTO.Search)));
                }
                if (userSearchDTO.AgeFrom.HasValue)
                {
                    var dateFrom = ConvertAgeToDate(userSearchDTO.AgeFrom.Value);
                    users = users.Where(p => p.Author.Birthdate <= dateFrom);
                }
                if (userSearchDTO.AgeTo.HasValue)
                {
                    var dateTo = ConvertAgeToDate(userSearchDTO.AgeTo.Value);
                    users = users.Where(p => p.Author.Birthdate >= dateTo);
                }
                if (!string.IsNullOrEmpty(userSearchDTO.Role))
                {
                    var role = UnitOfWork.RoleManager.FindByName(userSearchDTO.Role);
                    users = users.Where(p => p.Roles.FirstOrDefault().RoleId == role.Id);
                }
            }

            if (!string.IsNullOrEmpty(userSearchDTO.SortOrder))
            {
                switch (userSearchDTO.SortOrder.ToLower())
                {
                case "firstname_asc":
                    users = users.OrderBy(p => p.Author.FirstName);
                    break;

                case "firstname_desc":
                    users = users.OrderByDescending(p => p.Author.FirstName);
                    break;

                case "lastname_asc":
                    users = users.OrderBy(p => p.Author.LastName);
                    break;

                case "lastname_desc":
                    users = users.OrderByDescending(p => p.Author.LastName);
                    break;

                case "age_asc":
                    users = users.OrderBy(p => p.Author.Birthdate);
                    break;

                case "age_desc":
                    users = users.OrderByDescending(p => p.Author.Birthdate);
                    break;

                case "username_asc":
                    users = users.OrderBy(p => p.UserName);
                    break;

                case "username_desc":
                    users = users.OrderByDescending(p => p.UserName);
                    break;

                default:
                    users = users.OrderBy(p => p.UserName);
                    break;
                }
            }

            if (userSearchDTO.Skip.HasValue)
            {
                users = users.Skip(userSearchDTO.Skip.Value);
            }

            if (userSearchDTO.Take.HasValue)
            {
                users = users.Take(userSearchDTO.Take.Value);
            }

            var roles  = UnitOfWork.RoleManager.Roles.ToList();
            var result = users.ToList()
                         .Join(roles,
                               user => user.Roles.FirstOrDefault()?.RoleId,
                               role => role.Id,
                               (user, role) => new UserDTO()
            {
                Id       = user.Id,
                Email    = user.Email,
                UserName = user.UserName,
                Role     = role.Name,
                Author   = mapper.Map <Author, AuthorDTO>(user.Author)
            }
                               );

            return(result);
        }