Пример #1
0
        public IEnumerable <int> GetCompanyIdsByUsersProperties(string firstName, string lastName, string email)
        {
            if (string.IsNullOrEmpty(firstName) && string.IsNullOrEmpty(lastName) && string.IsNullOrEmpty(email))
            {
                return(new List <int>());
            }

            QueryOver <User, User> queryOver = new QueryOverUser().GetQueryOver();

            if (!string.IsNullOrEmpty(firstName))
            {
                queryOver.And(Restrictions.On <User>(u => u.FirstName).IsInsensitiveLike(firstName, MatchMode.Anywhere));
            }

            if (!string.IsNullOrEmpty(lastName))
            {
                queryOver.And(Restrictions.On <User>(u => u.LastName).IsInsensitiveLike(lastName, MatchMode.Anywhere));
            }

            if (!string.IsNullOrEmpty(email))
            {
                queryOver.And(Restrictions.On <User>(u => u.Email).IsInsensitiveLike(email, MatchMode.Anywhere));
            }

            queryOver.Select(u => u.Company.Id).TransformUsing(Transformers.DistinctRootEntity);

            return(this.Repository.FindAll <int>(queryOver));
        }
Пример #2
0
        //public IEnumerable<User> GetAllForUsersPaged(
        //    IEnumerable<int> userIds,
        //    int pageIndex,
        //    int pageSize,
        //    out int totalCount)
        //{
        //    QueryOver<User, User> queryOver =
        //        new DefaultQueryOver<User, int>().GetQueryOver()
        //            .WhereRestrictionOn(x => x.Id)
        //            .IsInG(userIds)
        //            .OrderBy(x => x.FirstName)
        //            .Asc;
        //    QueryOver<User, User> rowCountQuery = queryOver.ToRowCountQuery();
        //    totalCount = this.Repository.FindOne<int>(rowCountQuery).Value;
        //    QueryOver<User> pagedQuery = queryOver.Take(pageSize).Skip((pageIndex - 1) * pageSize);
        //    return this.Repository.FindAll(pagedQuery);
        //}

        //public virtual IEnumerable<User> GetAllPaged(int pageIndex, int pageSize, out int totalCount)
        //{
        //    QueryOver<User, User> queryOver =
        //        new DefaultQueryOver<User, int>().GetQueryOver().OrderBy(x => x.FirstName).Asc;
        //    QueryOver<User, User> rowCountQuery = queryOver.ToRowCountQuery();
        //    totalCount = this.Repository.FindOne<int>(rowCountQuery).Value;
        //    QueryOver<User> pagedQuery = queryOver.Take(pageSize).Skip((pageIndex - 1) * pageSize);
        //    return this.Repository.FindAll(pagedQuery);
        //}

        //public IEnumerable<int> GetAllUsersThatCanApproveThisPin(int pinId)
        //{
        //    return
        //        this.Repository.StoreProcedureForMany<int>(
        //            "GetAllUsersThatCanApproveThisPin",
        //            new StoreProcedureParam<int>("PinId", pinId)).ToList();
        //}

        /// <summary>
        /// The get count for company.
        /// </summary>
        /// <param name="companyId">
        /// The company id.
        /// </param>
        /// <returns>
        /// The <see cref="IFutureValue{Int32}"/>.
        /// </returns>
        public IFutureValue <int> GetCountForCompany(int companyId)
        {
            QueryOver <User, User> queryOver =
                new QueryOverUser().GetQueryOver().And(x => x.Company.Id == companyId).ToRowCountQuery();

            return(this.Repository.FindOne <int>(queryOver));
        }
Пример #3
0
        /// <summary>
        /// The get one by token.
        /// </summary>
        /// <param name="sessionToken">
        /// The session token.
        /// </param>
        /// <returns>
        /// The <see cref="IFutureValue{User}"/>.
        /// </returns>
        public IFutureValue <User> GetOneByToken(string sessionToken)
        {
            var queryOver = new QueryOverUser().GetQueryOver()
                            .Fetch(x => x.UserRole).Eager
                            .WhereRestrictionOn(x => x.SessionToken).IsLike(sessionToken).Take(1);

            return(this.Repository.FindOne(queryOver));
        }
Пример #4
0
        /// <summary>
        /// The get one by email.
        /// </summary>
        /// <param name="email">
        /// The email.
        /// </param>
        /// <returns>
        /// The <see cref="IFutureValue{User}"/>.
        /// </returns>
        public virtual IFutureValue <User> GetOneByEmail(string email)
        {
            string emailToLower = email.ToLower();
            QueryOver <User, User> queryOver =
                new QueryOverUser().GetQueryOver().WhereRestrictionOn(x => x.Email).IsInsensitiveLike(emailToLower);

            return(this.Repository.FindOne(queryOver));
        }
Пример #5
0
        public virtual User GetByEmailWithRole(string email)
        {
            string emailToLower = email.ToLower();
            QueryOver <User, User> queryOver =
                new QueryOverUser().GetQueryOver()
                .Fetch(x => x.UserRole).Eager
                .WhereRestrictionOn(x => x.Email).IsInsensitiveLike(emailToLower);

            return(this.Repository.FindOne(queryOver).Value);
        }
Пример #6
0
        /// <summary>
        /// The get all by emails.
        /// </summary>
        /// <param name="emails">
        /// The emails.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{Contact}"/>.
        /// </returns>
        public virtual IEnumerable <User> GetAllByEmails(List <string> emails)
        {
            var queryOver   = new QueryOverUser().GetQueryOver();
            var disjunction = new Disjunction();

            foreach (var email in emails)
            {
                disjunction.Add(Restrictions.On <User>(x => x.Email).IsInsensitiveLike(email));
            }

            queryOver.Where(disjunction);

            return(this.Repository.FindAll(queryOver));
        }
Пример #7
0
        //public IEnumerable<int> GetAllDependantUserIdsIncludingCurrent(User user)
        //{
        //    List<int> result =
        //        this.Repository.StoreProcedureForMany<int>(
        //            "GetChildUserIds",
        //            new StoreProcedureParam<int>("UserId", user.Id)).ToList();
        //    result.Add(user.Id);
        //    return result;
        //}

        /// <summary>
        /// The get all for company.
        /// </summary>
        /// <param name="companyId">
        /// The company id.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{User}"/>.
        /// </returns>
        public IEnumerable <UserWithLoginHistoryDTO> GetAllForCompany(int companyId)
        {
            var              queryOver = new QueryOverUser().GetQueryOver().Where(x => x.Company.Id == companyId).Fetch(x => x.UserRole).Eager;
            var              users     = this.Repository.FindAll(queryOver).ToList();
            var              usersIds  = users.Select(x => x.Id).ToList();
            User             u         = null;
            UserLoginHistory h         = null;
            UserLastLoginFromStoredProcedureDTO dto = null;
            var queryOver2 = new QueryOverUser().GetQueryOver(() => u).WhereRestrictionOn(() => u.Id).IsIn(usersIds)
                             .JoinQueryOver(() => u.LoginHistory, () => h).OrderBy(() => h.DateCreated).Desc
                             .SelectList(l => l.Select(() => u.Id).WithAlias(() => dto.userId).Select(() => h.DateCreated).WithAlias(() => dto.loginDate))
                             .TransformUsing(Transformers.AliasToBean <UserLastLoginFromStoredProcedureDTO>()).Take(1);
            var logindatesForUsers = this.Repository.FindAll <UserLastLoginFromStoredProcedureDTO>(queryOver2).ToList();

            return(users.Select(x => new UserWithLoginHistoryDTO(x, logindatesForUsers.FirstOrDefault(hl => hl.userId == x.Id).Return(hl => hl.loginDate, (DateTime?)null))));
        }
Пример #8
0
        //public IEnumerable<string> GetAdministratorEmails()
        //{
        //    const int AdminRole = (int)UserRoleEnum.Admin;
        //    QueryOver<User, User> queryOver =
        //        new QueryOverUser().GetQueryOver().And(x => x.UserRole.Id == AdminRole).Select(x => x.Email);
        //    return this.Repository.FindAll<string>(queryOver);
        //}

        /// <summary>
        ///     The get all for company.
        /// </summary>
        /// <returns>
        ///     The <see cref="IEnumerable{User}" />.
        /// </returns>
        public override IEnumerable <User> GetAll()
        {
            QueryOver <User, User> defaultQuery = new QueryOverUser().GetQueryOver().Fetch(x => x.UserRole).Eager;

            return(this.Repository.FindAll(defaultQuery));
        }
Пример #9
0
        /// <summary>
        /// The get all by ids.
        /// </summary>
        /// <param name="ids">
        /// The ids.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{User}"/>.
        /// </returns>
        public override IEnumerable <User> GetAllByIds(List <int> ids)
        {
            QueryOver <User, User> queryOver = new QueryOverUser().GetQueryOver().AndRestrictionOn(x => x.Id).IsIn(ids);

            return(this.Repository.FindAll(queryOver));
        }