public IList <UserRoleDTO> GetUserRoles()
        {
            using (var session = Hibernate.SessionFactory.OpenSession())
            {
                UserRole r = null;

                var userRoles = session.QueryOver(() => r)
                                .SelectList(l => l
                                            .Select(() => r.Id)
                                            .Select(() => r.Name)
                                            .Select(() => r.IsSystemRole))
                                .TransformUsing(Transformers.AliasToBeanConstructor(typeof(UserRoleDTO).GetConstructors()[1]))
                                .List <UserRoleDTO>();

                foreach (var role in userRoles)
                {
                    Permission p  = null;
                    UserRole   ur = null;

                    var permissions = session.QueryOver(() => p)
                                      .JoinAlias(() => p.Roles, () => ur)
                                      .Where(() => ur.Id == role.Id)
                                      .SelectList(l => l
                                                  .Select(() => p.Id)
                                                  .Select(() => p.Name))
                                      .TransformUsing(Transformers.AliasToBeanConstructor(typeof(PermissionDTO).GetConstructors()[1]))
                                      .List <PermissionDTO>();

                    role.Permissions = permissions;
                }

                return(userRoles);
            }
        }
    public static IList <TRes> ListAs <TRes>(
        this IQueryOver qry, TRes resultByExample)
    {
        var ctor = typeof(TRes).GetConstructors().First();

        return(qry.UnderlyingCriteria
               .SetResultTransformer(
                   Transformers.AliasToBeanConstructor(
                       (ConstructorInfo)ctor)
                   ).List <TRes>());
    }
 public IList <PermissionDTO> GetPermissions()
 {
     if (permissions == null)
     {
         using (var session = Hibernate.SessionFactory.OpenSession())
         {
             permissions = session.QueryOver <Permission>()
                           .SelectList(l => l
                                       .Select(p => p.Id)
                                       .Select(p => p.Name))
                           .OrderBy(p => p.Id).Asc
                           .TransformUsing(Transformers.AliasToBeanConstructor(typeof(PermissionDTO).GetConstructors()[1]))
                           .List <PermissionDTO>();
         }
     }
     return(permissions);
 }
        public IList <UserDTO> GetUsers()
        {
            using (var session = Hibernate.SessionFactory.OpenSession())
            {
                User       u = null;
                UserStatus s = null;

                var users = session.QueryOver(() => u)
                            .JoinAlias(() => u.Status, () => s)
                            .SelectList(l => l
                                        .Select(() => u.Id)
                                        .Select(() => u.Username)
                                        .Select(() => u.HashedPassword)
                                        .Select(() => u.Salt)
                                        .Select(() => u.Name)
                                        .Select(() => u.Surname)
                                        .Select(() => u.Phone)
                                        .Select(() => u.EMail)
                                        .Select(() => s.Id)
                                        .Select(() => s.Name)
                                        .Select(() => u.IsSystemUser))
                            .TransformUsing(Transformers.AliasToBeanConstructor(typeof(UserDTO).GetConstructors()[1]))
                            .List <UserDTO>();

                foreach (var user in users)
                {
                    User     us = null;
                    UserRole r  = null;

                    var roles = session.QueryOver(() => r)
                                .JoinAlias(() => r.Users, () => us)
                                .Where(() => us.Id == user.Id)
                                .SelectList(l => l
                                            .Select(() => r.Id)
                                            .Select(() => r.Name)
                                            .Select(() => r.IsSystemRole))
                                .TransformUsing(Transformers.AliasToBeanConstructor(typeof(UserRoleDTO).GetConstructors()[1]))
                                .List <UserRoleDTO>();

                    user.Roles = roles;
                }

                return(users);
            }
        }
Exemplo n.º 5
0
        public void Authenticate(string username, string password)
        {
            using (var session = Hibernate.SessionFactory.OpenSession())
            {
                User u = null;
                UserStatus s = null;

                var user = session.QueryOver(() => u)
                    .JoinAlias(() => u.Status, () => s)
                    .Where(() => u.Username == username)
                    .SelectList(l => l
                        .Select(() => u.Id)
                        .Select(() => u.Username)
                        .Select(() => u.HashedPassword)
                        .Select(() => u.Salt)
                        .Select(() => u.Name)
                        .Select(() => u.Surname)
                        .Select(() => u.Phone)
                        .Select(() => u.EMail)
                        .Select(() => s.Id)
                        .Select(() => s.Name)
                        .Select(() => u.IsSystemUser))
                    .TransformUsing(Transformers.AliasToBeanConstructor(typeof(UserDTO).GetConstructors()[1]))
                    .SingleOrDefault<UserDTO>();

                if (user != null && user.HashedPassword == Crypto.GenerateSHA256(password + user.Salt))
                {
                    UserRole r = null;

                    var userRoles = session.QueryOver(() => r)
                        .JoinAlias(() => r.Users, () => u)
                        .Where(() => u.Id == user.Id)
                        .SelectList(l => l
                            .Select(() => r.Id)
                            .Select(() => r.Name)
                            .Select(() => r.IsSystemRole))
                        .TransformUsing(Transformers.AliasToBeanConstructor(typeof(UserRoleDTO).GetConstructors()[1]))
                        .List<UserRoleDTO>();

                    user.Roles = userRoles;
                    AuthenticatedUser = user;
                }
                else AuthenticatedUser = new UserDTO();
            }
        }
Exemplo n.º 6
0
        public IList <TaskGenreDTO> GetTaskGenres()
        {
            if (taskGenres == null)
            {
                using (var session = Hibernate.SessionFactory.OpenSession())
                {
                    TaskGenre p = null;

                    taskGenres = session.QueryOver(() => p)
                                 .SelectList(l => l
                                             .Select(() => p.Id)
                                             .Select(() => p.Name))
                                 .TransformUsing(Transformers.AliasToBeanConstructor(typeof(TaskGenreDTO).GetConstructors()[1]))
                                 .List <TaskGenreDTO>();
                }
            }
            return(taskGenres);
        }
        public IList <UserStatusDTO> GetUserStatuses()
        {
            if (userStatuses == null)
            {
                using (var session = Hibernate.SessionFactory.OpenSession())
                {
                    UserStatus s = null;

                    userStatuses = session.QueryOver(() => s)
                                   .SelectList(l => l
                                               .Select(() => s.Id)
                                               .Select(() => s.Name))
                                   .TransformUsing(Transformers.AliasToBeanConstructor(typeof(UserStatusDTO).GetConstructors()[1]))
                                   .List <UserStatusDTO>();
                }
            }
            return(userStatuses);
        }
        public IList <UserSimpleDTO> GetUsersSimpleData(bool all = true)
        {
            using (var session = Hibernate.SessionFactory.OpenSession())
            {
                User u = null;

                var users = session.QueryOver(() => u)
                            .Where(Res.EqProperty(Pro.Property("u.IsSystemUser"),
                                                  Pro.Conditional(Res.Eq(Pro.Constant(all), true), Pro.Property("u.IsSystemUser"), Pro.Constant(false, SqlType.Boolean))))
                            .SelectList(l => l
                                        .Select(() => u.Id)
                                        .Select(() => u.Username)
                                        .Select(() => u.Name)
                                        .Select(() => u.Surname))
                            .OrderBy(() => u.Username).Asc
                            .TransformUsing(Transformers.AliasToBeanConstructor(typeof(UserSimpleDTO).GetConstructors()[1]))
                            .List <UserSimpleDTO>();

                return(users);
            }
        }
Exemplo n.º 9
0
        private IList<PermissionDTO> GetPermissions()
        {
            using (var session = Hibernate.SessionFactory.OpenSession())
            {
                Permission p = null;
                UserRole r = null;
                User u = null;

                var permissions = session.QueryOver(() => p)
                    .JoinAlias(() => p.Roles, () => r)
                    .JoinAlias(() => r.Users, () => u)
                    .Where(Res.Eq(Pro.Property("u.Id"), AuthenticatedUser.Id.Value))
                    .SelectList(l => l
                        .Select(Pro.Group(() => p.Id))
                        .Select(Pro.Group(() => p.Name)))
                    .TransformUsing(Transformers.AliasToBeanConstructor(typeof(PermissionDTO).GetConstructors()[1]))
                    .List<PermissionDTO>();

                return permissions;
            }
        }
Exemplo n.º 10
0
        public void LoadPreferences(int userId)
        {
            using (var session = Hibernate.SessionFactory.OpenSession())
            {
                User           u  = null;
                UserPreference up = null;

                Preferences = session.QueryOver(() => up)
                              .JoinAlias(() => up.User, () => u)
                              .Where(() => u.Id == userId)
                              .SelectList(l => l
                                          .Select(() => u.Id)
                                          .Select(() => up.AutoRefreshingFrequency)
                                          .Select(() => up.TasksPerPage)
                                          .Select(() => up.DisplayOnlyTasksWithMyParticipation)
                                          .Select(() => up.EnableTasksListAutoRefreshing)
                                          .Select(() => up.DisplayTasksRefreshingProgressBar)
                                          .Select(() => up.HideCanceledTasks))
                              .TransformUsing(Transformers.AliasToBeanConstructor(typeof(UserPreferencesDTO).GetConstructors()[1]))
                              .SingleOrDefault <UserPreferencesDTO>();
            }
        }
Exemplo n.º 11
0
        public IList <TaskPrimaryDataDTO> GetTasks(int pageNo, int pageSize, TaskSearchCriteria criteria)
        {
            using (var session = Hibernate.SessionFactory.OpenSession())
            {
                Task         t     = null;
                TaskStatus   s     = null;
                TaskPriority p     = null;
                TaskGenre    g     = null;
                TaskComment  c     = null;
                TaskComment  c_sub = null;
                User         uc    = null;

                var query = session.QueryOver(() => t)
                            .JoinAlias(() => t.Status, () => s)
                            .JoinAlias(() => t.Priority, () => p)
                            .JoinAlias(() => t.Genre, () => g)
                            .Left.JoinAlias(() => t.Comments, () => c)
                            .Left.JoinAlias(() => c.User, () => uc)
                            .Where(
                    Res.EqProperty(
                        Pro.Conditional(Res.IsNull("c.Id"), Pro.Constant(0), Pro.Property("c.Id")),
                        Pro.SubQuery(QueryOver.Of(() => c_sub)
                                     .Where(() => c_sub.Task.Id == c.Task.Id)
                                     .Select(Pro.Conditional(Res.IsNull("c_sub.Id"), Pro.Constant(0), Pro.Max("c_sub.Id"))))
                        ));

                if (criteria.TaskAuthorUsername.IsNotNull())
                {
                    query.Where(() => t.Author == criteria.TaskAuthorUsername);
                }
                if (criteria.ShowTasksOnly)
                {
                    query.Where(() => g.Id == 4);
                }
                if (criteria.ShowInstallationsOnly)
                {
                    query.Where(() => g.Id == 2);
                }
                if (criteria.ShowTonersOnly)
                {
                    query.Where(() => g.Id == 3);
                }
                if (criteria.ShowUpdatesOnly)
                {
                    query.Where(() => g.Id == 1);
                }
                if (criteria.ShowWithoutCanceledTasks)
                {
                    query.Where(Res.Not(Res.Eq(Pro.Property("s.Id"), 1)));
                }
                if (criteria.TaskId.IsNotNull())
                {
                    query.Where(() => t.Id == criteria.TaskId.Value);
                }
                if (criteria.Topic.IsNotNull())
                {
                    query.Where(Res.InsensitiveLike(Pro.Property("t.Topic"), criteria.Topic, MatchMode.Anywhere));
                }
                if (criteria.Content.IsNotNull())
                {
                    query.Where(Res.InsensitiveLike(Pro.Property("t.Content"), criteria.Content, MatchMode.Anywhere));
                }
                if (criteria.StartDate.IsNotNull())
                {
                    query.Where(Res.Eq(Pro.Cast(SqlType.Date, Pro.Property("t.StartPeriod")), criteria.StartDate.Value));
                }
                if (criteria.StartHour.IsNotNull())
                {
                    query.Where(Res.Eq(Pro.Cast(SqlType.Time, Pro.Property("t.StartPeriod")), criteria.StartHour.Value.ToString()));
                }
                if (criteria.EndDate.IsNotNull())
                {
                    query.Where(Res.Eq(Pro.Cast(SqlType.Date, Pro.Property("t.EndPeriod")), criteria.EndDate.Value));
                }
                if (criteria.EndDate.IsNotNull())
                {
                    query.Where(Res.Eq(Pro.Cast(SqlType.Time, Pro.Property("t.EndPeriod")), criteria.EndHour.Value.ToString()));
                }
                if (criteria.TaskPriorityId.IsNotNull())
                {
                    query.Where(() => p.Id == criteria.TaskPriorityId);
                }
                if (criteria.TaskStatusId.IsNotNull())
                {
                    query.Where(() => s.Id == criteria.TaskStatusId);
                }

                if (criteria.TaskParticipantId.IsNotNull())
                {
                    Task subT = null;
                    User subU = null;

                    var subquery = QueryOver.Of(() => subT)
                                   .JoinAlias(() => subT.Users, () => subU)
                                   .Where(Res.And(
                                              Res.EqProperty(Pro.Property("t.Id"), Pro.Property("subT.Id")),
                                              Res.Eq(Pro.Property("subU.Id"), criteria.TaskParticipantId)))
                                   .SelectList(l => l
                                               .Select(() => subU.Id));

                    query.WithSubquery.WhereExists(subquery);
                }

                if (criteria.Comment.IsNotNull())
                {
                    TaskComment subC = null;
                    Task        subT = null;

                    var subquery = QueryOver.Of(() => subC)
                                   .JoinAlias(() => subC.Task, () => subT)
                                   .Where(Res.And(
                                              Res.EqProperty(Pro.Property("subT.Id"), Pro.Property("t.Id")),
                                              Res.InsensitiveLike(Pro.Property("subC.Content"), criteria.Comment, MatchMode.Anywhere)))
                                   .SelectList(l => l
                                               .Select(() => subT.Id));

                    query.WithSubquery.WhereExists(subquery);
                }

                if (criteria.CommentAuthorId.IsNotNull())
                {
                    TaskComment subC = null;
                    Task        subT = null;
                    User        subU = null;

                    var subquery = QueryOver.Of(() => subC)
                                   .JoinAlias(() => subC.Task, () => subT)
                                   .JoinAlias(() => subC.User, () => subU)
                                   .Where(Res.And(
                                              Res.EqProperty(Pro.Property("subT.Id"), Pro.Property("t.Id")),
                                              Res.Eq(Pro.Property("subU.Id"), criteria.CommentAuthorId)))
                                   .SelectList(l => l
                                               .Select(() => subT.Id));

                    query.WithSubquery.WhereExists(subquery);
                }

                query.SelectList(l => l
                                 .Select(() => t.Id)
                                 .Select(() => t.Topic)
                                 .Select(() => t.Content)
                                 .Select(() => t.StartPeriod)
                                 .Select(() => t.EndPeriod)
                                 .Select(() => c.Id)
                                 .Select(() => c.Content)
                                 .Select(() => c.Date)
                                 .Select(() => uc.Username)
                                 .Select(() => s.Name)
                                 .Select(() => p.Name)
                                 .Select(() => g.Name)
                                 .Select(() => t.Author))
                .OrderBy(() => t.Id).Desc
                .TransformUsing(Transformers.AliasToBeanConstructor(typeof(TaskPrimaryDataDTO).GetConstructors()[1]))
                .Skip(pageSize * (pageNo - 1)).Take(pageSize);

                return(query.List <TaskPrimaryDataDTO>());

                #region Above generates sql like...

                /*
                 *  SELECT this_.Id AS y0_,
                 *         this_.Topic AS y1_,
                 *         this_.StartPeriod AS y2_,
                 *         this_.EndPeriod AS y3_,
                 *         c4_.Id AS y4_,
                 *         c4_.Content AS y5_,
                 *         c4_.Date AS y6_,
                 *         u5_.Username AS y7_,
                 *         s1_.Name AS y8_,
                 *         p2_.Name AS y9_,
                 *         g3_.Name AS y10_
                 *  FROM `Task` this_
                 *      LEFT OUTER JOIN `TaskComment` c4_ ON this_.Id=c4_.Task_id
                 *      LEFT OUTER JOIN `User` u5_ ON c4_.User_id=u5_.Id
                 *      INNER JOIN `TaskGenre` g3_ ON this_.Genre_id=g3_.Id
                 *      INNER JOIN `TaskStatus` s1_ ON this_.Status_id=s1_.Id
                 *      INNER JOIN `TaskPriority` p2_ ON this_.Priority_id=p2_.Id
                 *  WHERE (CASE WHEN c4_.Id IS NULL THEN ?p0 ELSE c4_.Id END) =
                 *        (SELECT (CASE WHEN this_0_.Id IS NULL THEN ?p1 ELSE max(this_0_.Id) END) AS y0_ FROM `TaskComment` this_0_)
                 *  ORDER BY this_.Id DESC
                 *  LIMIT ?p2;
                 *
                 *  ?p0 = 0 [Type: Int32 (0)],
                 *  ?p1 = 0 [Type: Int32 (0)],
                 *  ?p2 = 50 [Type: Int32 (0)]
                 */
                #endregion
            }
        }