Spaces:
Running
Running
User commited on
Commit ·
b574355
1
Parent(s): bec15e2
fix: remove hardcoding role authorization for more flexibility
Browse files
TaskTrackingSystem.WebApi/Features/Report/ReportController.cs
CHANGED
|
@@ -11,7 +11,7 @@ namespace TaskTrackingSystem.WebApi.Features.Report
|
|
| 11 |
{
|
| 12 |
[Route("api/[controller]")]
|
| 13 |
[ApiController]
|
| 14 |
-
[Authorize
|
| 15 |
public class ReportController : ControllerBase
|
| 16 |
{
|
| 17 |
private readonly ReportService _reportService;
|
|
|
|
| 11 |
{
|
| 12 |
[Route("api/[controller]")]
|
| 13 |
[ApiController]
|
| 14 |
+
[Authorize]
|
| 15 |
public class ReportController : ControllerBase
|
| 16 |
{
|
| 17 |
private readonly ReportService _reportService;
|
cleanup-legacy-access-schema.sql
DELETED
|
@@ -1,41 +0,0 @@
|
|
| 1 |
-
/*
|
| 2 |
-
Legacy access-schema cleanup script for SQL Server Management Studio.
|
| 3 |
-
|
| 4 |
-
Run this only after:
|
| 5 |
-
1. You have a backup of the database.
|
| 6 |
-
2. The new schema is already in place.
|
| 7 |
-
3. You have confirmed that dbo.Menus, dbo.Permissions, dbo.RoleMenus, and dbo.RolePermissions are working.
|
| 8 |
-
|
| 9 |
-
This script removes the old scaffolded tables:
|
| 10 |
-
- dbo.MenuAdmins
|
| 11 |
-
- dbo.MenuAdminDetails
|
| 12 |
-
- dbo.RoleMenus_Legacy
|
| 13 |
-
*/
|
| 14 |
-
|
| 15 |
-
SET XACT_ABORT ON;
|
| 16 |
-
BEGIN TRY
|
| 17 |
-
BEGIN TRANSACTION;
|
| 18 |
-
|
| 19 |
-
IF OBJECT_ID('dbo.RoleMenus_Legacy', 'U') IS NOT NULL
|
| 20 |
-
BEGIN
|
| 21 |
-
DROP TABLE dbo.RoleMenus_Legacy;
|
| 22 |
-
END
|
| 23 |
-
|
| 24 |
-
IF OBJECT_ID('dbo.MenuAdminDetails', 'U') IS NOT NULL
|
| 25 |
-
BEGIN
|
| 26 |
-
DROP TABLE dbo.MenuAdminDetails;
|
| 27 |
-
END
|
| 28 |
-
|
| 29 |
-
IF OBJECT_ID('dbo.MenuAdmins', 'U') IS NOT NULL
|
| 30 |
-
BEGIN
|
| 31 |
-
DROP TABLE dbo.MenuAdmins;
|
| 32 |
-
END
|
| 33 |
-
|
| 34 |
-
COMMIT TRANSACTION;
|
| 35 |
-
END TRY
|
| 36 |
-
BEGIN CATCH
|
| 37 |
-
IF @@TRANCOUNT > 0
|
| 38 |
-
ROLLBACK TRANSACTION;
|
| 39 |
-
|
| 40 |
-
THROW;
|
| 41 |
-
END CATCH;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
permission-schema-upgrade.sql
DELETED
|
@@ -1,329 +0,0 @@
|
|
| 1 |
-
/*
|
| 2 |
-
Safe upgrade path for permission tables.
|
| 3 |
-
|
| 4 |
-
What this script does:
|
| 5 |
-
1. Renames the old dbo.RoleMenus table to dbo.RoleMenus_Legacy if it still uses MenuCode.
|
| 6 |
-
2. Creates the new normalized tables:
|
| 7 |
-
- dbo.Menus
|
| 8 |
-
- dbo.Permissions
|
| 9 |
-
- dbo.RoleMenus
|
| 10 |
-
- dbo.RolePermissions
|
| 11 |
-
3. Copies data from the old schema into the new schema.
|
| 12 |
-
|
| 13 |
-
Run this once in SQL Server Management Studio after backing up the database.
|
| 14 |
-
*/
|
| 15 |
-
|
| 16 |
-
SET XACT_ABORT ON;
|
| 17 |
-
BEGIN TRY
|
| 18 |
-
BEGIN TRANSACTION;
|
| 19 |
-
|
| 20 |
-
-------------------------------------------------------------------------
|
| 21 |
-
-- Step 1: rename the legacy RoleMenus table if needed
|
| 22 |
-
-------------------------------------------------------------------------
|
| 23 |
-
IF OBJECT_ID('dbo.RoleMenus', 'U') IS NOT NULL
|
| 24 |
-
AND COL_LENGTH('dbo.RoleMenus', 'MenuId') IS NULL
|
| 25 |
-
AND COL_LENGTH('dbo.RoleMenus', 'MenuCode') IS NOT NULL
|
| 26 |
-
AND OBJECT_ID('dbo.RoleMenus_Legacy', 'U') IS NULL
|
| 27 |
-
BEGIN
|
| 28 |
-
EXEC sp_rename 'dbo.RoleMenus', 'RoleMenus_Legacy';
|
| 29 |
-
END
|
| 30 |
-
|
| 31 |
-
-------------------------------------------------------------------------
|
| 32 |
-
-- Step 2: create the new tables if they do not already exist
|
| 33 |
-
-------------------------------------------------------------------------
|
| 34 |
-
IF OBJECT_ID('dbo.Menus', 'U') IS NULL
|
| 35 |
-
BEGIN
|
| 36 |
-
CREATE TABLE dbo.Menus (
|
| 37 |
-
MenuId bigint IDENTITY(1,1) NOT NULL CONSTRAINT PK_Menus PRIMARY KEY,
|
| 38 |
-
MenuCode nvarchar(50) NOT NULL,
|
| 39 |
-
ParentMenuId bigint NULL,
|
| 40 |
-
MenuName nvarchar(100) NOT NULL,
|
| 41 |
-
MenuUrl nvarchar(200) NULL,
|
| 42 |
-
Icon nvarchar(50) NULL,
|
| 43 |
-
Visible bit NOT NULL CONSTRAINT DF_Menus_Visible DEFAULT (1),
|
| 44 |
-
OrderNo int NOT NULL CONSTRAINT DF_Menus_OrderNo DEFAULT (0),
|
| 45 |
-
IsDeleted bit NOT NULL CONSTRAINT DF_Menus_IsDeleted DEFAULT (0),
|
| 46 |
-
CreatedById bigint NULL,
|
| 47 |
-
CreatedAt datetime2(0) NOT NULL CONSTRAINT DF_Menus_CreatedAt DEFAULT (SYSUTCDATETIME()),
|
| 48 |
-
UpdatedById bigint NULL,
|
| 49 |
-
UpdatedAt datetime2(0) NULL,
|
| 50 |
-
CONSTRAINT UQ_Menus_MenuCode UNIQUE (MenuCode)
|
| 51 |
-
);
|
| 52 |
-
|
| 53 |
-
ALTER TABLE dbo.Menus
|
| 54 |
-
ADD CONSTRAINT FK_Menus_ParentMenu
|
| 55 |
-
FOREIGN KEY (ParentMenuId) REFERENCES dbo.Menus(MenuId);
|
| 56 |
-
|
| 57 |
-
CREATE INDEX IX_Menus_ParentMenuId ON dbo.Menus(ParentMenuId);
|
| 58 |
-
END
|
| 59 |
-
|
| 60 |
-
IF OBJECT_ID('dbo.Permissions', 'U') IS NULL
|
| 61 |
-
BEGIN
|
| 62 |
-
CREATE TABLE dbo.Permissions (
|
| 63 |
-
PermissionId bigint IDENTITY(1,1) NOT NULL CONSTRAINT PK_Permissions PRIMARY KEY,
|
| 64 |
-
PermissionCode nvarchar(50) NOT NULL,
|
| 65 |
-
MenuId bigint NOT NULL,
|
| 66 |
-
ActionName nvarchar(100) NOT NULL,
|
| 67 |
-
ApiName nvarchar(100) NOT NULL,
|
| 68 |
-
HttpMethod nvarchar(20) NULL,
|
| 69 |
-
Visible bit NOT NULL CONSTRAINT DF_Permissions_Visible DEFAULT (1),
|
| 70 |
-
OrderNo int NOT NULL CONSTRAINT DF_Permissions_OrderNo DEFAULT (0),
|
| 71 |
-
IsDeleted bit NOT NULL CONSTRAINT DF_Permissions_IsDeleted DEFAULT (0),
|
| 72 |
-
CreatedById bigint NULL,
|
| 73 |
-
CreatedAt datetime2(0) NOT NULL CONSTRAINT DF_Permissions_CreatedAt DEFAULT (SYSUTCDATETIME()),
|
| 74 |
-
UpdatedById bigint NULL,
|
| 75 |
-
UpdatedAt datetime2(0) NULL,
|
| 76 |
-
CONSTRAINT UQ_Permissions_PermissionCode UNIQUE (PermissionCode)
|
| 77 |
-
);
|
| 78 |
-
|
| 79 |
-
ALTER TABLE dbo.Permissions
|
| 80 |
-
ADD CONSTRAINT FK_Permissions_Menu
|
| 81 |
-
FOREIGN KEY (MenuId) REFERENCES dbo.Menus(MenuId);
|
| 82 |
-
|
| 83 |
-
CREATE INDEX IX_Permissions_MenuId ON dbo.Permissions(MenuId);
|
| 84 |
-
END
|
| 85 |
-
|
| 86 |
-
IF OBJECT_ID('dbo.RoleMenus', 'U') IS NULL
|
| 87 |
-
BEGIN
|
| 88 |
-
CREATE TABLE dbo.RoleMenus (
|
| 89 |
-
RoleMenuId bigint IDENTITY(1,1) NOT NULL CONSTRAINT PK_RoleMenus PRIMARY KEY,
|
| 90 |
-
RoleId bigint NOT NULL,
|
| 91 |
-
MenuId bigint NOT NULL,
|
| 92 |
-
IsDeleted bit NOT NULL CONSTRAINT DF_RoleMenus_IsDeleted DEFAULT (0),
|
| 93 |
-
CreatedById bigint NULL,
|
| 94 |
-
CreatedAt datetime2(0) NOT NULL CONSTRAINT DF_RoleMenus_CreatedAt DEFAULT (SYSUTCDATETIME()),
|
| 95 |
-
UpdatedById bigint NULL,
|
| 96 |
-
UpdatedAt datetime2(0) NULL,
|
| 97 |
-
CONSTRAINT UQ_RoleMenus_Role_Menu UNIQUE (RoleId, MenuId)
|
| 98 |
-
);
|
| 99 |
-
|
| 100 |
-
ALTER TABLE dbo.RoleMenus
|
| 101 |
-
ADD CONSTRAINT FK_RoleMenus_Roles
|
| 102 |
-
FOREIGN KEY (RoleId) REFERENCES dbo.Roles(Id);
|
| 103 |
-
|
| 104 |
-
ALTER TABLE dbo.RoleMenus
|
| 105 |
-
ADD CONSTRAINT FK_RoleMenus_Menus
|
| 106 |
-
FOREIGN KEY (MenuId) REFERENCES dbo.Menus(MenuId);
|
| 107 |
-
|
| 108 |
-
CREATE INDEX IX_RoleMenus_RoleId ON dbo.RoleMenus(RoleId);
|
| 109 |
-
CREATE INDEX IX_RoleMenus_MenuId ON dbo.RoleMenus(MenuId);
|
| 110 |
-
END
|
| 111 |
-
|
| 112 |
-
IF OBJECT_ID('dbo.RolePermissions', 'U') IS NULL
|
| 113 |
-
BEGIN
|
| 114 |
-
CREATE TABLE dbo.RolePermissions (
|
| 115 |
-
RolePermissionId bigint IDENTITY(1,1) NOT NULL CONSTRAINT PK_RolePermissions PRIMARY KEY,
|
| 116 |
-
RoleId bigint NOT NULL,
|
| 117 |
-
PermissionId bigint NOT NULL,
|
| 118 |
-
IsDeleted bit NOT NULL CONSTRAINT DF_RolePermissions_IsDeleted DEFAULT (0),
|
| 119 |
-
CreatedById bigint NULL,
|
| 120 |
-
CreatedAt datetime2(0) NOT NULL CONSTRAINT DF_RolePermissions_CreatedAt DEFAULT (SYSUTCDATETIME()),
|
| 121 |
-
UpdatedById bigint NULL,
|
| 122 |
-
UpdatedAt datetime2(0) NULL,
|
| 123 |
-
CONSTRAINT UQ_RolePermissions_Role_Permission UNIQUE (RoleId, PermissionId)
|
| 124 |
-
);
|
| 125 |
-
|
| 126 |
-
ALTER TABLE dbo.RolePermissions
|
| 127 |
-
ADD CONSTRAINT FK_RolePermissions_Roles
|
| 128 |
-
FOREIGN KEY (RoleId) REFERENCES dbo.Roles(Id);
|
| 129 |
-
|
| 130 |
-
ALTER TABLE dbo.RolePermissions
|
| 131 |
-
ADD CONSTRAINT FK_RolePermissions_Permissions
|
| 132 |
-
FOREIGN KEY (PermissionId) REFERENCES dbo.Permissions(PermissionId);
|
| 133 |
-
|
| 134 |
-
CREATE INDEX IX_RolePermissions_RoleId ON dbo.RolePermissions(RoleId);
|
| 135 |
-
CREATE INDEX IX_RolePermissions_PermissionId ON dbo.RolePermissions(PermissionId);
|
| 136 |
-
END
|
| 137 |
-
|
| 138 |
-
-------------------------------------------------------------------------
|
| 139 |
-
-- Step 3: build mapping tables from the old source tables
|
| 140 |
-
-------------------------------------------------------------------------
|
| 141 |
-
IF OBJECT_ID('tempdb..#MenuStage') IS NOT NULL DROP TABLE #MenuStage;
|
| 142 |
-
IF OBJECT_ID('tempdb..#PermissionStage') IS NOT NULL DROP TABLE #PermissionStage;
|
| 143 |
-
|
| 144 |
-
CREATE TABLE #MenuStage (
|
| 145 |
-
OldMenuCode nvarchar(50) NOT NULL PRIMARY KEY,
|
| 146 |
-
OldParentCode nvarchar(50) NULL,
|
| 147 |
-
NewMenuId bigint NOT NULL
|
| 148 |
-
);
|
| 149 |
-
|
| 150 |
-
CREATE TABLE #PermissionStage (
|
| 151 |
-
OldPermissionCode nvarchar(50) NOT NULL PRIMARY KEY,
|
| 152 |
-
OldParentCode nvarchar(50) NOT NULL,
|
| 153 |
-
NewPermissionId bigint NOT NULL
|
| 154 |
-
);
|
| 155 |
-
|
| 156 |
-
-------------------------------------------------------------------------
|
| 157 |
-
-- Step 4: copy menus
|
| 158 |
-
-------------------------------------------------------------------------
|
| 159 |
-
IF OBJECT_ID('dbo.Menus', 'U') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM dbo.Menus)
|
| 160 |
-
BEGIN
|
| 161 |
-
INSERT INTO dbo.Menus (
|
| 162 |
-
MenuCode, ParentMenuId, MenuName, MenuUrl, Icon,
|
| 163 |
-
Visible, OrderNo, IsDeleted,
|
| 164 |
-
CreatedById, CreatedAt, UpdatedById, UpdatedAt
|
| 165 |
-
)
|
| 166 |
-
OUTPUT
|
| 167 |
-
inserted.MenuCode,
|
| 168 |
-
inserted.MenuId
|
| 169 |
-
INTO #MenuStage (OldMenuCode, NewMenuId)
|
| 170 |
-
SELECT
|
| 171 |
-
src.MenuCode,
|
| 172 |
-
NULL,
|
| 173 |
-
src.MenuName,
|
| 174 |
-
src.MenuUrl,
|
| 175 |
-
src.Icon,
|
| 176 |
-
src.Visible,
|
| 177 |
-
src.OrderNo,
|
| 178 |
-
CASE WHEN src.DelFlag = 0 THEN 0 ELSE 1 END,
|
| 179 |
-
TRY_CONVERT(bigint, src.CreatedUserId),
|
| 180 |
-
src.CreatedDateTime,
|
| 181 |
-
TRY_CONVERT(bigint, src.ModifiedUserId),
|
| 182 |
-
src.ModifiedDateTime
|
| 183 |
-
FROM dbo.MenuAdmins src
|
| 184 |
-
WHERE src.DelFlag = 0;
|
| 185 |
-
|
| 186 |
-
UPDATE stage
|
| 187 |
-
SET stage.OldParentCode = src.ParentCode
|
| 188 |
-
FROM #MenuStage stage
|
| 189 |
-
INNER JOIN dbo.MenuAdmins src
|
| 190 |
-
ON src.MenuCode = stage.OldMenuCode;
|
| 191 |
-
|
| 192 |
-
UPDATE m
|
| 193 |
-
SET ParentMenuId = parent.NewMenuId
|
| 194 |
-
FROM dbo.Menus m
|
| 195 |
-
INNER JOIN #MenuStage child
|
| 196 |
-
ON child.NewMenuId = m.MenuId
|
| 197 |
-
LEFT JOIN #MenuStage parent
|
| 198 |
-
ON parent.OldMenuCode = NULLIF(LTRIM(RTRIM(child.OldParentCode)), '')
|
| 199 |
-
WHERE NULLIF(LTRIM(RTRIM(child.OldParentCode)), '') IS NOT NULL
|
| 200 |
-
AND LTRIM(RTRIM(child.OldParentCode)) <> '0';
|
| 201 |
-
END
|
| 202 |
-
|
| 203 |
-
-------------------------------------------------------------------------
|
| 204 |
-
-- Step 5: copy permissions
|
| 205 |
-
-------------------------------------------------------------------------
|
| 206 |
-
IF OBJECT_ID('dbo.Permissions', 'U') IS NOT NULL AND NOT EXISTS (SELECT 1 FROM dbo.Permissions)
|
| 207 |
-
BEGIN
|
| 208 |
-
INSERT INTO dbo.Permissions (
|
| 209 |
-
PermissionCode, MenuId, ActionName, ApiName, HttpMethod,
|
| 210 |
-
Visible, OrderNo, IsDeleted,
|
| 211 |
-
CreatedById, CreatedAt, UpdatedById, UpdatedAt
|
| 212 |
-
)
|
| 213 |
-
OUTPUT
|
| 214 |
-
inserted.PermissionCode,
|
| 215 |
-
inserted.PermissionId
|
| 216 |
-
INTO #PermissionStage (OldPermissionCode, NewPermissionId)
|
| 217 |
-
SELECT
|
| 218 |
-
src.MenuDetailCode,
|
| 219 |
-
m.NewMenuId,
|
| 220 |
-
src.ActionName,
|
| 221 |
-
src.ApiName,
|
| 222 |
-
NULL,
|
| 223 |
-
src.Visible,
|
| 224 |
-
src.OrderNo,
|
| 225 |
-
CASE WHEN src.DelFlag = 0 THEN 0 ELSE 1 END,
|
| 226 |
-
TRY_CONVERT(bigint, src.CreatedUserId),
|
| 227 |
-
src.CreatedDateTime,
|
| 228 |
-
TRY_CONVERT(bigint, src.ModifiedUserId),
|
| 229 |
-
src.ModifiedDateTime
|
| 230 |
-
FROM dbo.MenuAdminDetails src
|
| 231 |
-
INNER JOIN #MenuStage m
|
| 232 |
-
ON m.OldMenuCode = src.ParentMenuCode
|
| 233 |
-
WHERE src.DelFlag = 0;
|
| 234 |
-
|
| 235 |
-
UPDATE stage
|
| 236 |
-
SET stage.OldParentCode = src.ParentMenuCode
|
| 237 |
-
FROM #PermissionStage stage
|
| 238 |
-
INNER JOIN dbo.MenuAdminDetails src
|
| 239 |
-
ON src.MenuDetailCode = stage.OldPermissionCode;
|
| 240 |
-
END
|
| 241 |
-
|
| 242 |
-
-------------------------------------------------------------------------
|
| 243 |
-
-- Step 6: copy role assignments from the legacy table if it exists
|
| 244 |
-
-------------------------------------------------------------------------
|
| 245 |
-
IF OBJECT_ID('dbo.RoleMenus_Legacy', 'U') IS NOT NULL
|
| 246 |
-
BEGIN
|
| 247 |
-
INSERT INTO dbo.RoleMenus (
|
| 248 |
-
RoleId, MenuId, IsDeleted,
|
| 249 |
-
CreatedById, CreatedAt, UpdatedById, UpdatedAt
|
| 250 |
-
)
|
| 251 |
-
SELECT DISTINCT
|
| 252 |
-
COALESCE(roleById.Id, roleByCode.Id) AS RoleId,
|
| 253 |
-
menuStage.NewMenuId,
|
| 254 |
-
0,
|
| 255 |
-
TRY_CONVERT(bigint, src.CreatedUserId),
|
| 256 |
-
src.CreatedDateTime,
|
| 257 |
-
TRY_CONVERT(bigint, src.ModifiedUserId),
|
| 258 |
-
src.ModifiedDateTime
|
| 259 |
-
FROM dbo.RoleMenus_Legacy src
|
| 260 |
-
LEFT JOIN dbo.Roles roleById
|
| 261 |
-
ON roleById.Id = src.RoleId
|
| 262 |
-
AND roleById.IsDeleted <> 1
|
| 263 |
-
LEFT JOIN dbo.Roles roleByCode
|
| 264 |
-
ON roleByCode.Name = src.RoleCode
|
| 265 |
-
AND roleByCode.IsDeleted <> 1
|
| 266 |
-
INNER JOIN #MenuStage menuStage
|
| 267 |
-
ON menuStage.OldMenuCode = src.MenuCode
|
| 268 |
-
WHERE src.DelFlag = 0
|
| 269 |
-
AND COALESCE(roleById.Id, roleByCode.Id) IS NOT NULL;
|
| 270 |
-
|
| 271 |
-
INSERT INTO dbo.RolePermissions (
|
| 272 |
-
RoleId, PermissionId, IsDeleted,
|
| 273 |
-
CreatedById, CreatedAt, UpdatedById, UpdatedAt
|
| 274 |
-
)
|
| 275 |
-
SELECT DISTINCT
|
| 276 |
-
COALESCE(roleById.Id, roleByCode.Id) AS RoleId,
|
| 277 |
-
permStage.NewPermissionId,
|
| 278 |
-
0,
|
| 279 |
-
TRY_CONVERT(bigint, src.CreatedUserId),
|
| 280 |
-
src.CreatedDateTime,
|
| 281 |
-
TRY_CONVERT(bigint, src.ModifiedUserId),
|
| 282 |
-
src.ModifiedDateTime
|
| 283 |
-
FROM dbo.RoleMenus_Legacy src
|
| 284 |
-
LEFT JOIN dbo.Roles roleById
|
| 285 |
-
ON roleById.Id = src.RoleId
|
| 286 |
-
AND roleById.IsDeleted <> 1
|
| 287 |
-
LEFT JOIN dbo.Roles roleByCode
|
| 288 |
-
ON roleByCode.Name = src.RoleCode
|
| 289 |
-
AND roleByCode.IsDeleted <> 1
|
| 290 |
-
INNER JOIN #PermissionStage permStage
|
| 291 |
-
ON permStage.OldPermissionCode = src.MenuCode
|
| 292 |
-
WHERE src.DelFlag = 0
|
| 293 |
-
AND COALESCE(roleById.Id, roleByCode.Id) IS NOT NULL;
|
| 294 |
-
|
| 295 |
-
INSERT INTO dbo.RoleMenus (
|
| 296 |
-
RoleId, MenuId, IsDeleted,
|
| 297 |
-
CreatedById, CreatedAt, UpdatedById, UpdatedAt
|
| 298 |
-
)
|
| 299 |
-
SELECT DISTINCT
|
| 300 |
-
COALESCE(roleById.Id, roleByCode.Id) AS RoleId,
|
| 301 |
-
parentMenu.NewMenuId,
|
| 302 |
-
0,
|
| 303 |
-
TRY_CONVERT(bigint, src.CreatedUserId),
|
| 304 |
-
src.CreatedDateTime,
|
| 305 |
-
TRY_CONVERT(bigint, src.ModifiedUserId),
|
| 306 |
-
src.ModifiedDateTime
|
| 307 |
-
FROM dbo.RoleMenus_Legacy src
|
| 308 |
-
LEFT JOIN dbo.Roles roleById
|
| 309 |
-
ON roleById.Id = src.RoleId
|
| 310 |
-
AND roleById.IsDeleted <> 1
|
| 311 |
-
LEFT JOIN dbo.Roles roleByCode
|
| 312 |
-
ON roleByCode.Name = src.RoleCode
|
| 313 |
-
AND roleByCode.IsDeleted <> 1
|
| 314 |
-
INNER JOIN #PermissionStage permStage
|
| 315 |
-
ON permStage.OldPermissionCode = src.MenuCode
|
| 316 |
-
INNER JOIN #MenuStage parentMenu
|
| 317 |
-
ON parentMenu.OldMenuCode = permStage.OldParentCode
|
| 318 |
-
WHERE src.DelFlag = 0
|
| 319 |
-
AND COALESCE(roleById.Id, roleByCode.Id) IS NOT NULL;
|
| 320 |
-
END
|
| 321 |
-
|
| 322 |
-
COMMIT TRANSACTION;
|
| 323 |
-
END TRY
|
| 324 |
-
BEGIN CATCH
|
| 325 |
-
IF @@TRANCOUNT > 0
|
| 326 |
-
ROLLBACK TRANSACTION;
|
| 327 |
-
|
| 328 |
-
THROW;
|
| 329 |
-
END CATCH;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
repair-manager-project-scope.sql
DELETED
|
@@ -1,287 +0,0 @@
|
|
| 1 |
-
/*
|
| 2 |
-
Repair script for the current sample data set.
|
| 3 |
-
|
| 4 |
-
Use this when:
|
| 5 |
-
1. The menu is visible, but Manager/Employee pages do not return data.
|
| 6 |
-
2. Task assignment is empty because the manager is not attached to any project rows.
|
| 7 |
-
3. "Can see page but cannot do anything" happens because the role lost update/list permissions.
|
| 8 |
-
|
| 9 |
-
What this script does:
|
| 10 |
-
- Rebuilds the Manager and Employee role menu + permission mappings.
|
| 11 |
-
- Adds sample project memberships so TaskAssign and ProjectAssign have real project members.
|
| 12 |
-
|
| 13 |
-
Assumptions:
|
| 14 |
-
- You already have dbo.Roles, dbo.Users, dbo.Projects, dbo.Menus, dbo.Permissions,
|
| 15 |
-
dbo.RoleMenus, dbo.RolePermissions, and dbo.ProjectMembers.
|
| 16 |
-
- Your sample usernames follow the patterns mgr01..mgr10 and emp01..emp30.
|
| 17 |
-
- Your projects already exist in dbo.Projects.
|
| 18 |
-
|
| 19 |
-
This script is safe to run multiple times.
|
| 20 |
-
*/
|
| 21 |
-
|
| 22 |
-
SET XACT_ABORT ON;
|
| 23 |
-
BEGIN TRY
|
| 24 |
-
BEGIN TRANSACTION;
|
| 25 |
-
|
| 26 |
-
DECLARE @AdminRoleId bigint = (SELECT TOP (1) Id FROM dbo.Roles WHERE Name = N'Admin' AND IsDeleted = 0);
|
| 27 |
-
DECLARE @ManagerRoleId bigint = (SELECT TOP (1) Id FROM dbo.Roles WHERE Name = N'Manager' AND IsDeleted = 0);
|
| 28 |
-
DECLARE @EmployeeRoleId bigint = (SELECT TOP (1) Id FROM dbo.Roles WHERE Name = N'Employee' AND IsDeleted = 0);
|
| 29 |
-
|
| 30 |
-
IF @ManagerRoleId IS NULL
|
| 31 |
-
THROW 50001, 'Manager role not found.', 1;
|
| 32 |
-
|
| 33 |
-
IF @EmployeeRoleId IS NULL
|
| 34 |
-
THROW 50002, 'Employee role not found.', 1;
|
| 35 |
-
|
| 36 |
-
-------------------------------------------------------------------------
|
| 37 |
-
-- Permissions and menus used by the role/access UI
|
| 38 |
-
-------------------------------------------------------------------------
|
| 39 |
-
DECLARE @MenuProjectsId bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE MenuCode = N'PROJECTS');
|
| 40 |
-
DECLARE @MenuTasksId bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE MenuCode = N'TASKS');
|
| 41 |
-
DECLARE @MenuReportsId bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE MenuCode = N'REPORTS');
|
| 42 |
-
DECLARE @MenuUsersId bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE MenuCode = N'USERS');
|
| 43 |
-
DECLARE @MenuRolesId bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE MenuCode = N'ROLES');
|
| 44 |
-
|
| 45 |
-
;WITH PermissionSeed AS
|
| 46 |
-
(
|
| 47 |
-
SELECT N'Projects_List' AS PermissionCode, @MenuProjectsId AS MenuId, N'List' AS ActionName, N'api/Project' AS ApiName, N'GET' AS HttpMethod, 1 AS Visible, 10 AS OrderNo
|
| 48 |
-
UNION ALL SELECT N'Projects_Create', @MenuProjectsId, N'Create', N'api/Project', N'POST', 1, 20
|
| 49 |
-
UNION ALL SELECT N'Projects_Update', @MenuProjectsId, N'Update', N'api/Project', N'PUT', 1, 30
|
| 50 |
-
UNION ALL SELECT N'Projects_Delete', @MenuProjectsId, N'Delete', N'api/Project', N'DELETE', 1, 40
|
| 51 |
-
UNION ALL SELECT N'Tasks_List', @MenuTasksId, N'List', N'api/Task', N'GET', 1, 10
|
| 52 |
-
UNION ALL SELECT N'Tasks_Create', @MenuTasksId, N'Create', N'api/Task', N'POST', 1, 20
|
| 53 |
-
UNION ALL SELECT N'Tasks_Update', @MenuTasksId, N'Update', N'api/Task', N'PUT', 1, 30
|
| 54 |
-
UNION ALL SELECT N'Tasks_Delete', @MenuTasksId, N'Delete', N'api/Task', N'DELETE', 1, 40
|
| 55 |
-
UNION ALL SELECT N'Users_List', @MenuUsersId, N'List', N'api/User', N'GET', 1, 10
|
| 56 |
-
UNION ALL SELECT N'Users_Create', @MenuUsersId, N'Create', N'api/User', N'POST', 1, 20
|
| 57 |
-
UNION ALL SELECT N'Users_Update', @MenuUsersId, N'Update', N'api/User', N'PUT', 1, 30
|
| 58 |
-
UNION ALL SELECT N'Users_Delete', @MenuUsersId, N'Delete', N'api/User', N'DELETE', 1, 40
|
| 59 |
-
UNION ALL SELECT N'Roles_List', @MenuRolesId, N'List', N'api/Role', N'GET', 1, 10
|
| 60 |
-
UNION ALL SELECT N'Roles_Create', @MenuRolesId, N'Create', N'api/Role', N'POST', 1, 20
|
| 61 |
-
UNION ALL SELECT N'Roles_Update', @MenuRolesId, N'Update', N'api/Role', N'PUT', 1, 30
|
| 62 |
-
UNION ALL SELECT N'Roles_Delete', @MenuRolesId, N'Delete', N'api/Role', N'DELETE', 1, 40
|
| 63 |
-
)
|
| 64 |
-
INSERT INTO dbo.Permissions
|
| 65 |
-
(
|
| 66 |
-
PermissionCode,
|
| 67 |
-
MenuId,
|
| 68 |
-
ActionName,
|
| 69 |
-
ApiName,
|
| 70 |
-
HttpMethod,
|
| 71 |
-
Visible,
|
| 72 |
-
OrderNo,
|
| 73 |
-
IsDeleted,
|
| 74 |
-
CreatedAt
|
| 75 |
-
)
|
| 76 |
-
SELECT
|
| 77 |
-
p.PermissionCode,
|
| 78 |
-
p.MenuId,
|
| 79 |
-
p.ActionName,
|
| 80 |
-
p.ApiName,
|
| 81 |
-
p.HttpMethod,
|
| 82 |
-
p.Visible,
|
| 83 |
-
p.OrderNo,
|
| 84 |
-
0,
|
| 85 |
-
SYSUTCDATETIME()
|
| 86 |
-
FROM PermissionSeed p
|
| 87 |
-
WHERE p.MenuId IS NOT NULL
|
| 88 |
-
AND NOT EXISTS
|
| 89 |
-
(
|
| 90 |
-
SELECT 1
|
| 91 |
-
FROM dbo.Permissions existing
|
| 92 |
-
WHERE existing.PermissionCode = p.PermissionCode
|
| 93 |
-
);
|
| 94 |
-
|
| 95 |
-
-------------------------------------------------------------------------
|
| 96 |
-
-- Rebuild role-menu mappings for Manager and Employee
|
| 97 |
-
-------------------------------------------------------------------------
|
| 98 |
-
IF @ManagerRoleId IS NOT NULL
|
| 99 |
-
BEGIN
|
| 100 |
-
DELETE FROM dbo.RoleMenus WHERE RoleId = @ManagerRoleId;
|
| 101 |
-
END
|
| 102 |
-
|
| 103 |
-
IF @EmployeeRoleId IS NOT NULL
|
| 104 |
-
BEGIN
|
| 105 |
-
DELETE FROM dbo.RoleMenus WHERE RoleId = @EmployeeRoleId;
|
| 106 |
-
END
|
| 107 |
-
|
| 108 |
-
;WITH RoleMenuSeed AS
|
| 109 |
-
(
|
| 110 |
-
SELECT @ManagerRoleId AS RoleId, N'DASHBOARD' AS MenuCode
|
| 111 |
-
UNION ALL SELECT @ManagerRoleId, N'PROJECTS'
|
| 112 |
-
UNION ALL SELECT @ManagerRoleId, N'TASKS'
|
| 113 |
-
UNION ALL SELECT @ManagerRoleId, N'REPORTS'
|
| 114 |
-
UNION ALL SELECT @ManagerRoleId, N'USERS'
|
| 115 |
-
|
| 116 |
-
UNION ALL SELECT @EmployeeRoleId, N'DASHBOARD'
|
| 117 |
-
UNION ALL SELECT @EmployeeRoleId, N'PROJECTS'
|
| 118 |
-
UNION ALL SELECT @EmployeeRoleId, N'TASKS'
|
| 119 |
-
UNION ALL SELECT @EmployeeRoleId, N'REPORTS'
|
| 120 |
-
)
|
| 121 |
-
INSERT INTO dbo.RoleMenus
|
| 122 |
-
(
|
| 123 |
-
RoleId,
|
| 124 |
-
MenuId,
|
| 125 |
-
IsDeleted,
|
| 126 |
-
CreatedAt
|
| 127 |
-
)
|
| 128 |
-
SELECT DISTINCT
|
| 129 |
-
s.RoleId,
|
| 130 |
-
m.MenuId,
|
| 131 |
-
0,
|
| 132 |
-
SYSUTCDATETIME()
|
| 133 |
-
FROM RoleMenuSeed s
|
| 134 |
-
INNER JOIN dbo.Menus m
|
| 135 |
-
ON m.MenuCode = s.MenuCode
|
| 136 |
-
WHERE s.RoleId IS NOT NULL
|
| 137 |
-
AND NOT EXISTS
|
| 138 |
-
(
|
| 139 |
-
SELECT 1
|
| 140 |
-
FROM dbo.RoleMenus rm
|
| 141 |
-
WHERE rm.RoleId = s.RoleId
|
| 142 |
-
AND rm.MenuId = m.MenuId
|
| 143 |
-
);
|
| 144 |
-
|
| 145 |
-
-------------------------------------------------------------------------
|
| 146 |
-
-- Rebuild role-permission mappings
|
| 147 |
-
-------------------------------------------------------------------------
|
| 148 |
-
IF @ManagerRoleId IS NOT NULL
|
| 149 |
-
BEGIN
|
| 150 |
-
DELETE FROM dbo.RolePermissions WHERE RoleId = @ManagerRoleId;
|
| 151 |
-
END
|
| 152 |
-
|
| 153 |
-
IF @EmployeeRoleId IS NOT NULL
|
| 154 |
-
BEGIN
|
| 155 |
-
DELETE FROM dbo.RolePermissions WHERE RoleId = @EmployeeRoleId;
|
| 156 |
-
END
|
| 157 |
-
|
| 158 |
-
;WITH RolePermissionSeed AS
|
| 159 |
-
(
|
| 160 |
-
SELECT @ManagerRoleId AS RoleId, N'Projects_List' AS PermissionCode
|
| 161 |
-
UNION ALL SELECT @ManagerRoleId, N'Projects_Update'
|
| 162 |
-
UNION ALL SELECT @ManagerRoleId, N'Tasks_List'
|
| 163 |
-
UNION ALL SELECT @ManagerRoleId, N'Tasks_Create'
|
| 164 |
-
UNION ALL SELECT @ManagerRoleId, N'Tasks_Update'
|
| 165 |
-
UNION ALL SELECT @ManagerRoleId, N'Users_List'
|
| 166 |
-
|
| 167 |
-
UNION ALL SELECT @EmployeeRoleId, N'Projects_List'
|
| 168 |
-
UNION ALL SELECT @EmployeeRoleId, N'Tasks_List'
|
| 169 |
-
UNION ALL SELECT @EmployeeRoleId, N'Tasks_Update'
|
| 170 |
-
)
|
| 171 |
-
INSERT INTO dbo.RolePermissions
|
| 172 |
-
(
|
| 173 |
-
RoleId,
|
| 174 |
-
PermissionId,
|
| 175 |
-
IsDeleted,
|
| 176 |
-
CreatedAt
|
| 177 |
-
)
|
| 178 |
-
SELECT DISTINCT
|
| 179 |
-
s.RoleId,
|
| 180 |
-
p.PermissionId,
|
| 181 |
-
0,
|
| 182 |
-
SYSUTCDATETIME()
|
| 183 |
-
FROM RolePermissionSeed s
|
| 184 |
-
INNER JOIN dbo.Permissions p
|
| 185 |
-
ON p.PermissionCode = s.PermissionCode
|
| 186 |
-
WHERE s.RoleId IS NOT NULL
|
| 187 |
-
AND NOT EXISTS
|
| 188 |
-
(
|
| 189 |
-
SELECT 1
|
| 190 |
-
FROM dbo.RolePermissions rp
|
| 191 |
-
WHERE rp.RoleId = s.RoleId
|
| 192 |
-
AND rp.PermissionId = p.PermissionId
|
| 193 |
-
);
|
| 194 |
-
|
| 195 |
-
-------------------------------------------------------------------------
|
| 196 |
-
-- Sample project membership seed
|
| 197 |
-
-- This spreads managers and employees across the first 5 projects found.
|
| 198 |
-
-------------------------------------------------------------------------
|
| 199 |
-
;WITH ProjectOrder AS
|
| 200 |
-
(
|
| 201 |
-
SELECT
|
| 202 |
-
p.Id,
|
| 203 |
-
ROW_NUMBER() OVER (ORDER BY p.Id) AS ProjectSlot
|
| 204 |
-
FROM dbo.Projects p
|
| 205 |
-
WHERE p.IsDeleted = 0
|
| 206 |
-
),
|
| 207 |
-
MembershipSeed AS
|
| 208 |
-
(
|
| 209 |
-
SELECT N'mgr01' AS Username, 1 AS ProjectSlot UNION ALL
|
| 210 |
-
SELECT N'mgr06', 1 UNION ALL
|
| 211 |
-
SELECT N'emp01', 1 UNION ALL
|
| 212 |
-
SELECT N'emp02', 1 UNION ALL
|
| 213 |
-
SELECT N'emp03', 1 UNION ALL
|
| 214 |
-
SELECT N'emp04', 1 UNION ALL
|
| 215 |
-
SELECT N'emp05', 1 UNION ALL
|
| 216 |
-
SELECT N'emp06', 1 UNION ALL
|
| 217 |
-
|
| 218 |
-
SELECT N'mgr02', 2 UNION ALL
|
| 219 |
-
SELECT N'mgr07', 2 UNION ALL
|
| 220 |
-
SELECT N'emp07', 2 UNION ALL
|
| 221 |
-
SELECT N'emp08', 2 UNION ALL
|
| 222 |
-
SELECT N'emp09', 2 UNION ALL
|
| 223 |
-
SELECT N'emp10', 2 UNION ALL
|
| 224 |
-
SELECT N'emp11', 2 UNION ALL
|
| 225 |
-
SELECT N'emp12', 2 UNION ALL
|
| 226 |
-
|
| 227 |
-
SELECT N'mgr03', 3 UNION ALL
|
| 228 |
-
SELECT N'mgr08', 3 UNION ALL
|
| 229 |
-
SELECT N'emp13', 3 UNION ALL
|
| 230 |
-
SELECT N'emp14', 3 UNION ALL
|
| 231 |
-
SELECT N'emp15', 3 UNION ALL
|
| 232 |
-
SELECT N'emp16', 3 UNION ALL
|
| 233 |
-
SELECT N'emp17', 3 UNION ALL
|
| 234 |
-
SELECT N'emp18', 3 UNION ALL
|
| 235 |
-
|
| 236 |
-
SELECT N'mgr04', 4 UNION ALL
|
| 237 |
-
SELECT N'mgr09', 4 UNION ALL
|
| 238 |
-
SELECT N'emp19', 4 UNION ALL
|
| 239 |
-
SELECT N'emp20', 4 UNION ALL
|
| 240 |
-
SELECT N'emp21', 4 UNION ALL
|
| 241 |
-
SELECT N'emp22', 4 UNION ALL
|
| 242 |
-
SELECT N'emp23', 4 UNION ALL
|
| 243 |
-
SELECT N'emp24', 4 UNION ALL
|
| 244 |
-
|
| 245 |
-
SELECT N'mgr05', 5 UNION ALL
|
| 246 |
-
SELECT N'mgr10', 5 UNION ALL
|
| 247 |
-
SELECT N'emp25', 5 UNION ALL
|
| 248 |
-
SELECT N'emp26', 5 UNION ALL
|
| 249 |
-
SELECT N'emp27', 5 UNION ALL
|
| 250 |
-
SELECT N'emp28', 5 UNION ALL
|
| 251 |
-
SELECT N'emp29', 5 UNION ALL
|
| 252 |
-
SELECT N'emp30', 5
|
| 253 |
-
)
|
| 254 |
-
INSERT INTO dbo.ProjectMembers
|
| 255 |
-
(
|
| 256 |
-
ProjectId,
|
| 257 |
-
UserId,
|
| 258 |
-
CreatedAt,
|
| 259 |
-
CreatedBy
|
| 260 |
-
)
|
| 261 |
-
SELECT
|
| 262 |
-
po.Id,
|
| 263 |
-
u.Id,
|
| 264 |
-
SYSUTCDATETIME(),
|
| 265 |
-
NULL
|
| 266 |
-
FROM MembershipSeed s
|
| 267 |
-
INNER JOIN dbo.Users u
|
| 268 |
-
ON u.Username = s.Username
|
| 269 |
-
AND u.IsDeleted = 0
|
| 270 |
-
INNER JOIN ProjectOrder po
|
| 271 |
-
ON po.ProjectSlot = s.ProjectSlot
|
| 272 |
-
WHERE NOT EXISTS
|
| 273 |
-
(
|
| 274 |
-
SELECT 1
|
| 275 |
-
FROM dbo.ProjectMembers pm
|
| 276 |
-
WHERE pm.ProjectId = po.Id
|
| 277 |
-
AND pm.UserId = u.Id
|
| 278 |
-
);
|
| 279 |
-
|
| 280 |
-
COMMIT TRANSACTION;
|
| 281 |
-
END TRY
|
| 282 |
-
BEGIN CATCH
|
| 283 |
-
IF @@TRANCOUNT > 0
|
| 284 |
-
ROLLBACK TRANSACTION;
|
| 285 |
-
|
| 286 |
-
THROW;
|
| 287 |
-
END CATCH;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
reset-sample-role-access.sql
DELETED
|
@@ -1,242 +0,0 @@
|
|
| 1 |
-
/*
|
| 2 |
-
Safe reset for the sample role/menu/permission setup.
|
| 3 |
-
|
| 4 |
-
What this script fixes:
|
| 5 |
-
- Admin gets the full menu tree.
|
| 6 |
-
- Manager gets project/task/report menus with the correct permissions.
|
| 7 |
-
- Employee gets the smaller scoped menu tree.
|
| 8 |
-
- The page tree stays clickable because both parent menus and leaf pages are assigned.
|
| 9 |
-
|
| 10 |
-
It also restores a few project memberships so Task Assign / Project Assign can show people.
|
| 11 |
-
|
| 12 |
-
Run this only after your normalized menu/permission tables already exist.
|
| 13 |
-
*/
|
| 14 |
-
|
| 15 |
-
SET NOCOUNT ON;
|
| 16 |
-
SET XACT_ABORT ON;
|
| 17 |
-
|
| 18 |
-
BEGIN TRANSACTION;
|
| 19 |
-
|
| 20 |
-
DECLARE @AdminRoleId bigint = (SELECT TOP (1) Id FROM dbo.Roles WHERE Name = N'Admin' AND IsDeleted = 0);
|
| 21 |
-
DECLARE @ManagerRoleId bigint = (SELECT TOP (1) Id FROM dbo.Roles WHERE Name = N'Manager' AND IsDeleted = 0);
|
| 22 |
-
DECLARE @EmployeeRoleId bigint = (SELECT TOP (1) Id FROM dbo.Roles WHERE Name = N'Employee' AND IsDeleted = 0);
|
| 23 |
-
|
| 24 |
-
IF @AdminRoleId IS NULL OR @ManagerRoleId IS NULL OR @EmployeeRoleId IS NULL
|
| 25 |
-
BEGIN
|
| 26 |
-
RAISERROR('One or more sample roles are missing. Expected Admin, Manager, Employee.', 16, 1);
|
| 27 |
-
ROLLBACK TRANSACTION;
|
| 28 |
-
RETURN;
|
| 29 |
-
END
|
| 30 |
-
|
| 31 |
-
IF COL_LENGTH('dbo.RoleMenus', 'MenuId') IS NULL OR COL_LENGTH('dbo.RolePermissions', 'PermissionId') IS NULL
|
| 32 |
-
BEGIN
|
| 33 |
-
RAISERROR('dbo.RoleMenus or dbo.RolePermissions does not look like the normalized schema yet.', 16, 1);
|
| 34 |
-
ROLLBACK TRANSACTION;
|
| 35 |
-
RETURN;
|
| 36 |
-
END
|
| 37 |
-
|
| 38 |
-
DECLARE @MenuDashboard bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE IsDeleted = 0 AND (MenuCode = N'DASHBOARD' OR MenuUrl = N'/dashboard'));
|
| 39 |
-
DECLARE @MenuProjects bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE IsDeleted = 0 AND (MenuCode = N'PROJECTS' OR MenuUrl = N'/projects'));
|
| 40 |
-
DECLARE @MenuProjectList bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE IsDeleted = 0 AND (MenuUrl = N'/projects/all' OR MenuName = N'Project List' OR MenuCode = N'PROJECT_LIST'));
|
| 41 |
-
DECLARE @MenuProjectAssign bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE IsDeleted = 0 AND (MenuUrl = N'/projects/assign' OR MenuName = N'Project Assign' OR MenuCode = N'PROJECT_ASSIGN'));
|
| 42 |
-
|
| 43 |
-
DECLARE @MenuTasks bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE IsDeleted = 0 AND (MenuCode = N'TASKS' OR MenuUrl = N'/tasks'));
|
| 44 |
-
DECLARE @MenuTaskList bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE IsDeleted = 0 AND (MenuUrl = N'/tasks/all' OR MenuName = N'Task List' OR MenuCode = N'TASK_LIST'));
|
| 45 |
-
DECLARE @MenuKanban bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE IsDeleted = 0 AND (MenuUrl = N'/board' OR MenuUrl = N'/projects/{ProjectId:long}/tasks' OR MenuName = N'Kanban Board' OR MenuCode = N'KANBAN_BOARD'));
|
| 46 |
-
DECLARE @MenuTaskAssign bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE IsDeleted = 0 AND (MenuUrl = N'/tasks/assign' OR MenuName = N'Task Assign' OR MenuCode = N'TASK_ASSIGN'));
|
| 47 |
-
|
| 48 |
-
DECLARE @MenuReports bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE IsDeleted = 0 AND (MenuCode = N'REPORTS' OR MenuUrl = N'/reports'));
|
| 49 |
-
DECLARE @MenuProjectReport bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE IsDeleted = 0 AND (MenuUrl = N'/reports/projects' OR MenuName = N'Project Progress' OR MenuName = N'Project Progress Report' OR MenuCode = N'REPORT_PROJECTS'));
|
| 50 |
-
DECLARE @MenuTaskReport bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE IsDeleted = 0 AND (MenuUrl = N'/reports/tasks' OR MenuName = N'Task Report' OR MenuCode = N'REPORT_TASKS'));
|
| 51 |
-
DECLARE @MenuOverdueReport bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE IsDeleted = 0 AND (MenuUrl = N'/reports/overdue' OR MenuName = N'Overdue Tasks' OR MenuCode = N'REPORT_OVERDUE'));
|
| 52 |
-
DECLARE @MenuTimesheetReport bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE IsDeleted = 0 AND (MenuUrl = N'/reports/timesheet' OR MenuName = N'Time Tracking' OR MenuName = N'Time Tracking Report' OR MenuCode = N'REPORT_TIMESHEET'));
|
| 53 |
-
DECLARE @MenuEmployeeReport bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE IsDeleted = 0 AND (MenuUrl = N'/reports/employees' OR MenuName = N'Employee Report' OR MenuCode = N'REPORT_EMPLOYEES'));
|
| 54 |
-
|
| 55 |
-
DECLARE @MenuUsers bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE IsDeleted = 0 AND (MenuCode = N'USERS' OR MenuUrl = N'/users'));
|
| 56 |
-
DECLARE @MenuRoles bigint = (SELECT TOP (1) MenuId FROM dbo.Menus WHERE IsDeleted = 0 AND (MenuCode = N'ROLES' OR MenuUrl = N'/roles'));
|
| 57 |
-
|
| 58 |
-
IF @MenuDashboard IS NULL OR @MenuProjects IS NULL OR @MenuTasks IS NULL OR @MenuReports IS NULL OR @MenuUsers IS NULL OR @MenuRoles IS NULL
|
| 59 |
-
BEGIN
|
| 60 |
-
RAISERROR('One or more top-level menus were not found. Check the seeded Menus table.', 16, 1);
|
| 61 |
-
ROLLBACK TRANSACTION;
|
| 62 |
-
RETURN;
|
| 63 |
-
END
|
| 64 |
-
|
| 65 |
-
IF @MenuProjectList IS NULL OR @MenuProjectAssign IS NULL OR @MenuTaskList IS NULL OR @MenuKanban IS NULL OR @MenuTaskAssign IS NULL
|
| 66 |
-
OR @MenuProjectReport IS NULL OR @MenuTaskReport IS NULL OR @MenuOverdueReport IS NULL OR @MenuTimesheetReport IS NULL OR @MenuEmployeeReport IS NULL
|
| 67 |
-
BEGIN
|
| 68 |
-
RAISERROR('One or more child menus were not found. Check the seeded Menus table.', 16, 1);
|
| 69 |
-
ROLLBACK TRANSACTION;
|
| 70 |
-
RETURN;
|
| 71 |
-
END
|
| 72 |
-
|
| 73 |
-
-- Keep the list pages on their alias routes so they do not overlap with assign pages.
|
| 74 |
-
UPDATE dbo.Menus
|
| 75 |
-
SET MenuUrl = N'/projects/all'
|
| 76 |
-
WHERE MenuId = @MenuProjectList
|
| 77 |
-
AND ISNULL(MenuUrl, N'') <> N'/projects/all';
|
| 78 |
-
|
| 79 |
-
UPDATE dbo.Menus
|
| 80 |
-
SET MenuUrl = N'/tasks/all'
|
| 81 |
-
WHERE MenuId = @MenuTaskList
|
| 82 |
-
AND ISNULL(MenuUrl, N'') <> N'/tasks/all';
|
| 83 |
-
|
| 84 |
-
DECLARE @ProjectsListPermissionId bigint = (SELECT TOP (1) PermissionId FROM dbo.Permissions WHERE IsDeleted = 0 AND PermissionCode = N'Projects_List');
|
| 85 |
-
DECLARE @ProjectsCreatePermissionId bigint = (SELECT TOP (1) PermissionId FROM dbo.Permissions WHERE IsDeleted = 0 AND PermissionCode = N'Projects_Create');
|
| 86 |
-
DECLARE @ProjectsUpdatePermissionId bigint = (SELECT TOP (1) PermissionId FROM dbo.Permissions WHERE IsDeleted = 0 AND PermissionCode = N'Projects_Update');
|
| 87 |
-
DECLARE @ProjectsDeletePermissionId bigint = (SELECT TOP (1) PermissionId FROM dbo.Permissions WHERE IsDeleted = 0 AND PermissionCode = N'Projects_Delete');
|
| 88 |
-
DECLARE @TasksListPermissionId bigint = (SELECT TOP (1) PermissionId FROM dbo.Permissions WHERE IsDeleted = 0 AND PermissionCode = N'Tasks_List');
|
| 89 |
-
DECLARE @TasksCreatePermissionId bigint = (SELECT TOP (1) PermissionId FROM dbo.Permissions WHERE IsDeleted = 0 AND PermissionCode = N'Tasks_Create');
|
| 90 |
-
DECLARE @TasksUpdatePermissionId bigint = (SELECT TOP (1) PermissionId FROM dbo.Permissions WHERE IsDeleted = 0 AND PermissionCode = N'Tasks_Update');
|
| 91 |
-
DECLARE @TasksDeletePermissionId bigint = (SELECT TOP (1) PermissionId FROM dbo.Permissions WHERE IsDeleted = 0 AND PermissionCode = N'Tasks_Delete');
|
| 92 |
-
DECLARE @UsersListPermissionId bigint = (SELECT TOP (1) PermissionId FROM dbo.Permissions WHERE IsDeleted = 0 AND PermissionCode = N'Users_List');
|
| 93 |
-
DECLARE @UsersCreatePermissionId bigint = (SELECT TOP (1) PermissionId FROM dbo.Permissions WHERE IsDeleted = 0 AND PermissionCode = N'Users_Create');
|
| 94 |
-
DECLARE @UsersUpdatePermissionId bigint = (SELECT TOP (1) PermissionId FROM dbo.Permissions WHERE IsDeleted = 0 AND PermissionCode = N'Users_Update');
|
| 95 |
-
DECLARE @UsersDeletePermissionId bigint = (SELECT TOP (1) PermissionId FROM dbo.Permissions WHERE IsDeleted = 0 AND PermissionCode = N'Users_Delete');
|
| 96 |
-
DECLARE @RolesListPermissionId bigint = (SELECT TOP (1) PermissionId FROM dbo.Permissions WHERE IsDeleted = 0 AND PermissionCode = N'Roles_List');
|
| 97 |
-
DECLARE @RolesCreatePermissionId bigint = (SELECT TOP (1) PermissionId FROM dbo.Permissions WHERE IsDeleted = 0 AND PermissionCode = N'Roles_Create');
|
| 98 |
-
DECLARE @RolesUpdatePermissionId bigint = (SELECT TOP (1) PermissionId FROM dbo.Permissions WHERE IsDeleted = 0 AND PermissionCode = N'Roles_Update');
|
| 99 |
-
DECLARE @RolesDeletePermissionId bigint = (SELECT TOP (1) PermissionId FROM dbo.Permissions WHERE IsDeleted = 0 AND PermissionCode = N'Roles_Delete');
|
| 100 |
-
|
| 101 |
-
IF @ProjectsListPermissionId IS NULL OR @TasksListPermissionId IS NULL OR @TasksUpdatePermissionId IS NULL
|
| 102 |
-
OR @ProjectsCreatePermissionId IS NULL OR @ProjectsUpdatePermissionId IS NULL OR @ProjectsDeletePermissionId IS NULL
|
| 103 |
-
OR @TasksCreatePermissionId IS NULL OR @TasksDeletePermissionId IS NULL
|
| 104 |
-
OR @UsersListPermissionId IS NULL OR @UsersCreatePermissionId IS NULL OR @UsersUpdatePermissionId IS NULL OR @UsersDeletePermissionId IS NULL
|
| 105 |
-
OR @RolesListPermissionId IS NULL OR @RolesCreatePermissionId IS NULL OR @RolesUpdatePermissionId IS NULL OR @RolesDeletePermissionId IS NULL
|
| 106 |
-
BEGIN
|
| 107 |
-
RAISERROR('One or more permissions were not found. Check the seeded Permissions table.', 16, 1);
|
| 108 |
-
ROLLBACK TRANSACTION;
|
| 109 |
-
RETURN;
|
| 110 |
-
END
|
| 111 |
-
|
| 112 |
-
DELETE FROM dbo.RoleMenus WHERE RoleId IN (@AdminRoleId, @ManagerRoleId, @EmployeeRoleId);
|
| 113 |
-
DELETE FROM dbo.RolePermissions WHERE RoleId IN (@AdminRoleId, @ManagerRoleId, @EmployeeRoleId);
|
| 114 |
-
|
| 115 |
-
INSERT INTO dbo.RoleMenus (RoleId, MenuId, IsDeleted, CreatedAt)
|
| 116 |
-
SELECT @AdminRoleId, MenuId, 0, SYSUTCDATETIME()
|
| 117 |
-
FROM (VALUES
|
| 118 |
-
(@MenuDashboard),
|
| 119 |
-
(@MenuProjects),
|
| 120 |
-
(@MenuProjectList),
|
| 121 |
-
(@MenuProjectAssign),
|
| 122 |
-
(@MenuTasks),
|
| 123 |
-
(@MenuTaskList),
|
| 124 |
-
(@MenuKanban),
|
| 125 |
-
(@MenuTaskAssign),
|
| 126 |
-
(@MenuReports),
|
| 127 |
-
(@MenuProjectReport),
|
| 128 |
-
(@MenuTaskReport),
|
| 129 |
-
(@MenuOverdueReport),
|
| 130 |
-
(@MenuTimesheetReport),
|
| 131 |
-
(@MenuEmployeeReport),
|
| 132 |
-
(@MenuUsers),
|
| 133 |
-
(@MenuRoles)
|
| 134 |
-
) AS V(MenuId);
|
| 135 |
-
|
| 136 |
-
INSERT INTO dbo.RoleMenus (RoleId, MenuId, IsDeleted, CreatedAt)
|
| 137 |
-
SELECT @ManagerRoleId, MenuId, 0, SYSUTCDATETIME()
|
| 138 |
-
FROM (VALUES
|
| 139 |
-
(@MenuDashboard),
|
| 140 |
-
(@MenuProjects),
|
| 141 |
-
(@MenuProjectList),
|
| 142 |
-
(@MenuProjectAssign),
|
| 143 |
-
(@MenuTasks),
|
| 144 |
-
(@MenuTaskList),
|
| 145 |
-
(@MenuKanban),
|
| 146 |
-
(@MenuTaskAssign),
|
| 147 |
-
(@MenuReports),
|
| 148 |
-
(@MenuProjectReport),
|
| 149 |
-
(@MenuTaskReport),
|
| 150 |
-
(@MenuOverdueReport),
|
| 151 |
-
(@MenuTimesheetReport)
|
| 152 |
-
) AS V(MenuId);
|
| 153 |
-
|
| 154 |
-
INSERT INTO dbo.RoleMenus (RoleId, MenuId, IsDeleted, CreatedAt)
|
| 155 |
-
SELECT @EmployeeRoleId, MenuId, 0, SYSUTCDATETIME()
|
| 156 |
-
FROM (VALUES
|
| 157 |
-
(@MenuDashboard),
|
| 158 |
-
(@MenuProjects),
|
| 159 |
-
(@MenuProjectList),
|
| 160 |
-
(@MenuTasks),
|
| 161 |
-
(@MenuTaskList),
|
| 162 |
-
(@MenuKanban),
|
| 163 |
-
(@MenuReports),
|
| 164 |
-
(@MenuTaskReport),
|
| 165 |
-
(@MenuTimesheetReport)
|
| 166 |
-
) AS V(MenuId);
|
| 167 |
-
|
| 168 |
-
INSERT INTO dbo.RolePermissions (RoleId, PermissionId, IsDeleted, CreatedAt)
|
| 169 |
-
SELECT @AdminRoleId, PermissionId, 0, SYSUTCDATETIME()
|
| 170 |
-
FROM (VALUES
|
| 171 |
-
(@ProjectsListPermissionId),
|
| 172 |
-
(@ProjectsCreatePermissionId),
|
| 173 |
-
(@ProjectsUpdatePermissionId),
|
| 174 |
-
(@ProjectsDeletePermissionId),
|
| 175 |
-
(@TasksListPermissionId),
|
| 176 |
-
(@TasksCreatePermissionId),
|
| 177 |
-
(@TasksUpdatePermissionId),
|
| 178 |
-
(@TasksDeletePermissionId),
|
| 179 |
-
(@UsersListPermissionId),
|
| 180 |
-
(@UsersCreatePermissionId),
|
| 181 |
-
(@UsersUpdatePermissionId),
|
| 182 |
-
(@UsersDeletePermissionId),
|
| 183 |
-
(@RolesListPermissionId),
|
| 184 |
-
(@RolesCreatePermissionId),
|
| 185 |
-
(@RolesUpdatePermissionId),
|
| 186 |
-
(@RolesDeletePermissionId)
|
| 187 |
-
) AS V(PermissionId);
|
| 188 |
-
|
| 189 |
-
INSERT INTO dbo.RolePermissions (RoleId, PermissionId, IsDeleted, CreatedAt)
|
| 190 |
-
SELECT @ManagerRoleId, PermissionId, 0, SYSUTCDATETIME()
|
| 191 |
-
FROM (VALUES
|
| 192 |
-
(@ProjectsListPermissionId),
|
| 193 |
-
(@ProjectsUpdatePermissionId),
|
| 194 |
-
(@TasksListPermissionId),
|
| 195 |
-
(@TasksCreatePermissionId),
|
| 196 |
-
(@TasksUpdatePermissionId)
|
| 197 |
-
) AS V(PermissionId);
|
| 198 |
-
|
| 199 |
-
INSERT INTO dbo.RolePermissions (RoleId, PermissionId, IsDeleted, CreatedAt)
|
| 200 |
-
SELECT @EmployeeRoleId, PermissionId, 0, SYSUTCDATETIME()
|
| 201 |
-
FROM (VALUES
|
| 202 |
-
(@ProjectsListPermissionId),
|
| 203 |
-
(@TasksListPermissionId),
|
| 204 |
-
(@TasksUpdatePermissionId)
|
| 205 |
-
) AS V(PermissionId);
|
| 206 |
-
|
| 207 |
-
DECLARE @ProjectIds TABLE (Slot int IDENTITY(1,1), ProjectId bigint);
|
| 208 |
-
INSERT INTO @ProjectIds (ProjectId)
|
| 209 |
-
SELECT TOP (5) Id
|
| 210 |
-
FROM dbo.Projects
|
| 211 |
-
WHERE IsDeleted = 0
|
| 212 |
-
ORDER BY Id;
|
| 213 |
-
|
| 214 |
-
IF (SELECT COUNT(*) FROM @ProjectIds) = 0
|
| 215 |
-
BEGIN
|
| 216 |
-
RAISERROR('No projects were found to attach sample members to.', 16, 1);
|
| 217 |
-
ROLLBACK TRANSACTION;
|
| 218 |
-
RETURN;
|
| 219 |
-
END
|
| 220 |
-
|
| 221 |
-
DELETE FROM dbo.ProjectMembers
|
| 222 |
-
WHERE UserId IN (
|
| 223 |
-
SELECT Id
|
| 224 |
-
FROM dbo.Users
|
| 225 |
-
WHERE IsDeleted = 0
|
| 226 |
-
AND (Username LIKE N'mgr%' OR Username LIKE N'emp%')
|
| 227 |
-
);
|
| 228 |
-
|
| 229 |
-
INSERT INTO dbo.ProjectMembers (ProjectId, UserId, CreatedAt, CreatedBy)
|
| 230 |
-
SELECT p.ProjectId, u.Id, SYSUTCDATETIME(), NULL
|
| 231 |
-
FROM @ProjectIds p
|
| 232 |
-
JOIN dbo.Users u
|
| 233 |
-
ON u.IsDeleted = 0
|
| 234 |
-
AND (
|
| 235 |
-
(p.Slot = 1 AND u.Username IN (N'mgr01', N'mgr06', N'emp01', N'emp02', N'emp03', N'emp04', N'emp05', N'emp06'))
|
| 236 |
-
OR (p.Slot = 2 AND u.Username IN (N'mgr02', N'mgr07', N'emp07', N'emp08', N'emp09', N'emp10', N'emp11', N'emp12'))
|
| 237 |
-
OR (p.Slot = 3 AND u.Username IN (N'mgr03', N'mgr08', N'emp13', N'emp14', N'emp15', N'emp16', N'emp17', N'emp18'))
|
| 238 |
-
OR (p.Slot = 4 AND u.Username IN (N'mgr04', N'mgr09', N'emp19', N'emp20', N'emp21', N'emp22', N'emp23', N'emp24'))
|
| 239 |
-
OR (p.Slot = 5 AND u.Username IN (N'mgr05', N'mgr10', N'emp25', N'emp26', N'emp27', N'emp28', N'emp29', N'emp30'))
|
| 240 |
-
);
|
| 241 |
-
|
| 242 |
-
COMMIT TRANSACTION;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|