Пример #1
0
 public void Any(CopyUserPermissions request)
 {
     Repository.CopyUserPermissions(request);
 }
        public void CopyUserPermissions(CopyUserPermissions request)
        {
            if (request.Roles)
            {
                // vymazanie existujucich roli
                Db.Delete <UserRole>(e => e.D_User_Id == request.destUserId);

                // pridelenie novych roli podla sourceUsera
                //var sourceUserRoles = GetList<UserRole>(ur => ur.D_User_Id == request.sourceUserId);
                var sourceUserRoles = GetList(Db.From <UserRole>().Select(x => new { x.C_Role_Id, x.PlatnostOd }).Where(ur => ur.D_User_Id == request.sourceUserId));
                foreach (var userRole in sourceUserRoles)
                {
                    var newUserRole = new UserRole()
                    {
                        D_User_Id       = request.destUserId,
                        D_Tenant_Id     = Session.TenantIdGuid.Value,
                        C_Role_Id       = userRole.C_Role_Id,
                        Vytvoril        = Session.UserIdGuid,
                        PlatnostOd      = userRole.PlatnostOd,
                        DatumVytvorenia = DateTime.Now,
                        Zmenil          = Session.UserIdGuid,
                        DatumZmeny      = DateTime.Now,
                    };

                    Db.Insert(newUserRole);
                }
            }

            if (request.Rights)
            {
                // vymazanie existujucich prav
                Db.Delete <RightPermission>(e => e.D_User_Id == request.destUserId);

                // pridelenie novych prav podla sourceUsera
                var sourceUserRights = GetList(Db.From <RightUserView>().Select(x => new { x.C_Right_Id }).Where(ur => ur.D_User_Id == request.sourceUserId && ur.HasRight));
                foreach (var userRight in sourceUserRights)
                {
                    if (userRight.C_Right_Id != 1) // SysAdmin sa nekopiruje
                    {
                        var newUserRight = new RightPermission()
                        {
                            D_User_Id       = request.destUserId,
                            D_Tenant_Id     = Session.TenantIdGuid.Value,
                            C_Right_Id      = userRight.C_Right_Id,
                            Vytvoril        = Session.UserIdGuid,
                            DatumVytvorenia = DateTime.Now,
                            Zmenil          = Session.UserIdGuid,
                            DatumZmeny      = DateTime.Now,
                        };

                        Db.Insert(newUserRight);
                    }
                }
            }

            if (request.TreePermissions)
            {
                // vymazanie existujucich prav
                Db.Delete <TreePermission>(e => e.D_User_Id == request.destUserId);

                // pridelenie novych prav podla sourceUsera
                var sourceUserTree = GetList(Db.From <TreePermissionView>().Select(x => new { x.Pravo, x.Kod, x.C_Modul_Id }).Where(ur => ur.D_User_Id == request.sourceUserId));
                foreach (var userTree in sourceUserTree)
                {
                    var newUserTree = new TreePermission()
                    {
                        D_User_Id       = request.destUserId,
                        D_Tenant_Id     = Session.TenantIdGuid.Value,
                        Pravo           = userTree.Pravo,
                        Kod             = userTree.Kod,
                        C_Modul_Id      = userTree.C_Modul_Id,
                        DatumVytvorenia = DateTime.Now,
                        DatumZmeny      = DateTime.Now,
                        Vytvoril        = Session.UserIdGuid,
                        Zmenil          = Session.UserIdGuid
                    };

                    Db.Insert(newUserTree);
                }
            }

            if (request.ORSPermissions)
            {
                // vymazanie existujucich prav
                Db.Delete <OrsElementPermission>(e => e.D_User_Id == request.destUserId);
                Db.Delete <OrsElementTypePermission>(e => e.D_User_Id == request.destUserId);

                // pridelenie novych prav podla sourceUsera
                var sourceUserOrsEl = GetList(Db.From <OrsElementPermissionView>().Select(x => new { x.Pravo, x.C_OrsElement_Id }).Where(ur => ur.D_User_Id == request.sourceUserId));
                foreach (var userOrsEl in sourceUserOrsEl)
                {
                    var newUserOrsEl = new OrsElementPermission()
                    {
                        D_User_Id       = request.destUserId,
                        D_Tenant_Id     = Session.TenantIdGuid.Value,
                        Pravo           = userOrsEl.Pravo,
                        C_OrsElement_Id = userOrsEl.C_OrsElement_Id,
                        DatumVytvorenia = DateTime.Now,
                        DatumZmeny      = DateTime.Now,
                        Zmenil          = Session.UserIdGuid,
                        Vytvoril        = Session.UserIdGuid
                    };

                    Db.Insert(newUserOrsEl);
                }

                var sourceUserOrsType = GetList(Db.From <OrsElementTypePermissionView>().Select(x => new { x.Pravo, x.C_OrsElementType_Id }).Where(ur => ur.D_User_Id == request.sourceUserId));
                foreach (var userOrsType in sourceUserOrsType)
                {
                    var newUserOrsType = new OrsElementTypePermission()
                    {
                        D_User_Id           = request.destUserId,
                        D_Tenant_Id         = Session.TenantIdGuid.Value,
                        Pravo               = userOrsType.Pravo,
                        C_OrsElementType_Id = userOrsType.C_OrsElementType_Id,
                        DatumVytvorenia     = DateTime.Now,
                        DatumZmeny          = DateTime.Now,
                        Zmenil              = Session.UserIdGuid,
                        Vytvoril            = Session.UserIdGuid
                    };

                    Db.Insert(newUserOrsType);
                }
            }
        }