Beispiel #1
0
		public IEnumerable<ClientUserPipelineViewModel> GetClientUsers(ClientUserPipelineFilter filter)
		{
			var clientFilter = BuildFilter(filter);

			return
				_clientUserManager.GetClienUsers(clientFilter.ToFuncWithPagging(filter)).ToArray().Select(e => new ClientUserPipelineViewModel(e));
		}
Beispiel #2
0
		private ElementFilter<ClientCompanyColumnName, ClientUser, ClientUserPipelineFilter> BuildFilter(ClientUserPipelineFilter filter)
		{
			#region filter by statuses prepair

			var clientActiveStatus = ClientUserStatus.Active.ToString();
			var clientInactiveStatus = ClientUserStatus.Inactive.ToString();
			var clientTerminatedStatus = ClientUserStatus.Terminated.ToString();

			IEnumerable<string> filterStatuses = new[] { clientActiveStatus, clientInactiveStatus, clientTerminatedStatus };
			if (filter.IsActive || filter.IsInactive || filter.IsTerminated)
			{
				if (!filter.IsActive)
				{
					filterStatuses = filterStatuses.Where(e => e != clientActiveStatus);
				}

				if (!filter.IsInactive)
				{
					filterStatuses = filterStatuses.Where(e => e != clientInactiveStatus);
				}

				if (!filter.IsTerminated)
				{
					filterStatuses = filterStatuses.Where(e => e != clientTerminatedStatus);
				}
			}

			#endregion filter by statuses prepair

			#region filter role prepair

			IEnumerable<RoleFilterMapper> roleFilterMappers = new List<RoleFilterMapper>
			{
				new RoleFilterMapper{RoleType = RoleType.ClientAdmin, Value = filter.IsClientAdmin},
				new RoleFilterMapper{RoleType = RoleType.SuperUser, Value = filter.IsSuperUser},
				new RoleFilterMapper{RoleType = RoleType.Underwriter, Value = filter.IsUnderwriter},
				new RoleFilterMapper{RoleType = RoleType.Processor, Value = filter.IsProcessor},
				new RoleFilterMapper{RoleType = RoleType.LoanOfficer, Value = filter.IsLoanOfficer},
				new RoleFilterMapper{RoleType = RoleType.CSR, Value = filter.IsCSR},
				new RoleFilterMapper{RoleType = RoleType.JuniorUW, Value = filter.IsJuniorUW},
				new RoleFilterMapper{RoleType = RoleType.CloserFunder, Value = filter.IsCloserFunder},
				new RoleFilterMapper{RoleType = RoleType.OperationsManager, Value = filter.IsOperationsManager},
				new RoleFilterMapper{RoleType = RoleType.OrderAdmin, Value = filter.IsOrderAdmin},
				new RoleFilterMapper{RoleType = RoleType.UserAdministrator, Value = filter.IsUserAdministrator},
			};

			var rolesForCurrentCriteries = new List<RoleType>();

			if (_securityContext.CurrentUser.Roles.Select(r => r.RoleType).All(r => r == RoleType.DvsSuperAdmin || r == RoleType.DvsAdmin))
			{
				rolesForCurrentCriteries.AddRange(roleFilterMappers.Select(m => m.RoleType));
			}
			else if (_securityContext.CurrentUser.Roles.Select(r => r.RoleType).Any(r => r == RoleType.UserAdministrator || r == RoleType.SuperUser || r == RoleType.ClientAdmin))
			{
				var currentCompany = _securityContext.CurrentClientUser.Company;

				if (currentCompany.Profile.IsLender || currentCompany.Profile.IsOtherBusinessType)
				{
					rolesForCurrentCriteries.AddRange(roleFilterMappers.Select(m => m.RoleType));
				}
				else if (currentCompany.Profile.IsBroker)
				{
					var exceptRoles = new[] { RoleType.OperationsManager, RoleType.JuniorUW };
					rolesForCurrentCriteries.AddRange(roleFilterMappers.Select(m => m.RoleType).Where(r => !exceptRoles.Contains(r)));
				}
				else if (currentCompany.Profile.IsAppraiserManagementCompany)
				{
					rolesForCurrentCriteries.Add(RoleType.SuperUser);
					rolesForCurrentCriteries.Add(RoleType.OrderAdmin);
					rolesForCurrentCriteries.Add(RoleType.ClientAdmin);
					rolesForCurrentCriteries.Add(RoleType.UserAdministrator);
				}
			}

			roleFilterMappers = roleFilterMappers.Where(m => rolesForCurrentCriteries.Contains(m.RoleType));

			var rolesTypeContainer = roleFilterMappers.Select(e => (int)e.RoleType);
			if (roleFilterMappers.Any(r => r.Value))
			{
				foreach (var roleFilterMapper in roleFilterMappers)
				{
					RoleFilterMapper mapper = roleFilterMapper;
					if (!mapper.Value)
						rolesTypeContainer = rolesTypeContainer.Where(e => e != (int)mapper.RoleType);
				}
			}

			#endregion filter role prepair

			#region Client company users

			var clientCompaniesUsers = roleFilterMappers.Select(m => m.RoleType);

			#endregion Client company users

			return
				ShorFilter.AddFilter<ClientCompanyColumnName, ClientUser, ClientUserPipelineFilter>(f => !string.IsNullOrWhiteSpace(f.CompanyName), c => c.Company.CompanyName.ToUpper().Contains(filter.CompanyName.ToUpper())).
					AddFilter(f => !string.IsNullOrWhiteSpace(f.BranchNamePart), c => c.Branch.Name.ToUpper().Contains(filter.BranchNamePart.ToUpper())).
					AddFilter(f => !string.IsNullOrWhiteSpace(f.LastName), c => c.User.LastName.ToUpper().Contains(filter.LastName.ToUpper())).
					AddFilter(f => true, c => filterStatuses.Contains(c.StatusId)).
					AddQueryFilter(f => true, q => q.Where(c => c.User.Roles.Any(r => rolesTypeContainer.Contains(r.Id)))).
					AddFilter(f => _securityContext.CurrentUser.Roles.Select(r => r.RoleType).Any(clientCompaniesUsers.Contains), c => c.Company.Id == _securityContext.CurrentClientUser.Company.Id).
					AddOrders(ClientCompanyColumnName.LastNameOrder, c => c.User.LastName).
					AddOrders(ClientCompanyColumnName.FirstNameOrder, c => c.User.FirstName).
					AddOrders(ClientCompanyColumnName.Company, c => c.Company.CompanyName).
					AddOrders(ClientCompanyColumnName.Branch, c => c.Branch.Name).
					AddOrders(ClientCompanyColumnName.RoleOrder, c => c.User.Roles.FirstOrDefault().DisplayName).
					AddOrders(ClientCompanyColumnName.StatusOrder, c => c.StatusId);
		}
Beispiel #3
0
		public int GetUserCount(ClientUserPipelineFilter filter)
		{
			var clientFilter = BuildFilter(filter);

			return _clientUserManager.GetClienUsersCount(clientFilter.ToFunc(filter));
		}