From 0adb0713f3955a4e1c00c753dc92aada8e09ce14 Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Wed, 12 Nov 2025 23:17:56 +0330 Subject: [PATCH] update --- docs/model.ndm2 | 5849 +++++++++-------- .../Common/Interfaces/IHashService.cs | 18 + .../CreateNewOtpTokenCommandHandler.cs | 16 +- .../VerifyOtpTokenCommandHandler.cs | 21 +- .../AdminGetJwtTokenQueryHandler.cs | 24 +- .../ConfigureServices.cs | 1 + .../Services/HashService.cs | 88 + 7 files changed, 3205 insertions(+), 2812 deletions(-) create mode 100644 src/CMSMicroservice.Application/Common/Interfaces/IHashService.cs create mode 100644 src/CMSMicroservice.Infrastructure/Services/HashService.cs diff --git a/docs/model.ndm2 b/docs/model.ndm2 index f31db58..e3cced3 100644 --- a/docs/model.ndm2 +++ b/docs/model.ndm2 @@ -38644,6 +38644,224 @@ "dataCompressions": [] } }, + { + "objectType": "Table_MSSQL", + "name": "AdminGetJwtTokenRequest", + "comment": "ورودی حذف کاربر", + "owner": "", + "isChangeTracking": false, + "isTrackColumnsUpdated": false, + "oldName": "", + "isSystemTable": false, + "createTime": "", + "modifyTime": "", + "objectID": 2924, + "numberOfRows": 0, + "identityCurrent": 0, + "dataLength": 0, + "indexLength": 0, + "fields": [ + { + "objectType": "TableField_MSSQL", + "name": "Username", + "type": "nvarchar", + "size": -2147483648, + "isNullable": "No", + "scale": -2147483648, + "comment": "نام کاربری", + "computedExpression": "", + "defaultValue": "", + "defaultValueType": "None", + "schema": "", + "userDefinedType": "", + "collate": "", + "isWithValues": false, + "isFilestream": false, + "isColumnSet": false, + "isPersisted": false, + "isSparse": false, + "isRowGUIDColumn": false, + "oldName": "Username", + "computedBaseType": "", + "isDefaultConstraint": false, + "defaultConstraint": "", + "isIdentity": false, + "isExistingField": false, + "identitySeed": -2147483648, + "identityIncrement": -2147483648, + "identityIsNotForReplication": false + }, + { + "objectType": "TableField_MSSQL", + "name": "Password", + "type": "nvarchar", + "size": -2147483648, + "isNullable": "No", + "scale": -2147483648, + "comment": "کلمه عبور", + "computedExpression": "", + "defaultValue": "", + "defaultValueType": "None", + "schema": "", + "userDefinedType": "", + "collate": "", + "isWithValues": false, + "isFilestream": false, + "isColumnSet": false, + "isPersisted": false, + "isSparse": false, + "isRowGUIDColumn": false, + "oldName": "Password", + "computedBaseType": "", + "isDefaultConstraint": false, + "defaultConstraint": "", + "isIdentity": false, + "isExistingField": false, + "identitySeed": 0, + "identityIncrement": 0, + "identityIsNotForReplication": false + } + ], + "indexes": [], + "primaryKey": { + "objectType": "PrimaryKey_MSSQL", + "name": "_copy_43_copy_2", + "fields": [ + "Username" + ], + "fillFactor": 0, + "oldName": "", + "isClustered": false, + "isPadded": false, + "noRecomputeStatistics": false, + "ignoreDuplicatedKeyValues": false, + "allowRowLocks": false, + "allowPageLocks": false, + "storage": { + "objectType": "Storage_MSSQL", + "name": "", + "oldName": "", + "storageType": "Default", + "filegroup": "", + "textImageFilegroup": "", + "filestreamFilegroup": "", + "partitionScheme": "", + "partitionColumn": "", + "filestreamPartitionScheme": "", + "dataCompressions": [] + } + }, + "foreignKeys": [], + "uniques": [], + "checks": [], + "triggers": [], + "storage": { + "objectType": "Storage_MSSQL", + "name": "", + "oldName": "", + "storageType": "Default", + "filegroup": "", + "textImageFilegroup": "", + "filestreamFilegroup": "", + "partitionScheme": "", + "partitionColumn": "", + "filestreamPartitionScheme": "", + "dataCompressions": [] + } + }, + { + "objectType": "Table_MSSQL", + "name": "AdminGetJwtTokenResponse", + "comment": "خروجی واکشی توکن", + "owner": "", + "isChangeTracking": false, + "isTrackColumnsUpdated": false, + "oldName": "", + "isSystemTable": false, + "createTime": "", + "modifyTime": "", + "objectID": 6042, + "numberOfRows": 0, + "identityCurrent": 0, + "dataLength": 0, + "indexLength": 0, + "fields": [ + { + "objectType": "TableField_MSSQL", + "name": "Token", + "type": "nvarchar", + "size": -2147483648, + "isNullable": "No", + "scale": -2147483648, + "comment": "توکن", + "computedExpression": "", + "defaultValue": "", + "defaultValueType": "Others", + "schema": "", + "userDefinedType": "", + "collate": "", + "isWithValues": false, + "isFilestream": false, + "isColumnSet": false, + "isPersisted": false, + "isSparse": false, + "isRowGUIDColumn": false, + "oldName": "Token", + "computedBaseType": "", + "isDefaultConstraint": false, + "defaultConstraint": "", + "isIdentity": true, + "isExistingField": false, + "identitySeed": -2147483648, + "identityIncrement": -2147483648, + "identityIsNotForReplication": false + } + ], + "indexes": [], + "primaryKey": { + "objectType": "PrimaryKey_MSSQL", + "name": "_copy_46_copy_1", + "fields": [], + "fillFactor": 0, + "oldName": "", + "isClustered": false, + "isPadded": false, + "noRecomputeStatistics": false, + "ignoreDuplicatedKeyValues": false, + "allowRowLocks": false, + "allowPageLocks": false, + "storage": { + "objectType": "Storage_MSSQL", + "name": "", + "oldName": "", + "storageType": "Default", + "filegroup": "", + "textImageFilegroup": "", + "filestreamFilegroup": "", + "partitionScheme": "", + "partitionColumn": "", + "filestreamPartitionScheme": "", + "dataCompressions": [] + } + }, + "foreignKeys": [], + "uniques": [], + "checks": [], + "triggers": [], + "storage": { + "objectType": "Storage_MSSQL", + "name": "", + "oldName": "", + "storageType": "Default", + "filegroup": "", + "textImageFilegroup": "", + "filestreamFilegroup": "", + "partitionScheme": "", + "partitionColumn": "", + "filestreamPartitionScheme": "", + "dataCompressions": [] + } + }, { "objectType": "Table_MSSQL", "name": "UserService", @@ -38870,6 +39088,36 @@ "identitySeed": 0, "identityIncrement": 0, "identityIsNotForReplication": false + }, + { + "objectType": "TableField_MSSQL", + "name": "SetPasswordForUser", + "type": "Command", + "size": -2147483648, + "isNullable": "Yes", + "scale": -2147483648, + "comment": "تنظیم کلمه عبور", + "computedExpression": "", + "defaultValue": "", + "defaultValueType": "None", + "schema": "", + "userDefinedType": "", + "collate": "", + "isWithValues": false, + "isFilestream": false, + "isColumnSet": false, + "isPersisted": false, + "isSparse": false, + "isRowGUIDColumn": false, + "oldName": "SetPasswordForUser", + "computedBaseType": "", + "isDefaultConstraint": false, + "defaultConstraint": "", + "isIdentity": false, + "isExistingField": false, + "identitySeed": 0, + "identityIncrement": 0, + "identityIsNotForReplication": false } ], "indexes": [], @@ -39139,6 +39387,26 @@ "sourceCardinality": "NoneRelationship", "targetCardinality": "NoneRelationship", "oldName": "" + }, + { + "objectType": "ForeignKey_MSSQL", + "name": "fk_UserService_SetPasswordForUserRequest_1", + "fields": [ + "SetPasswordForUser" + ], + "referencedSchema": "CMS", + "referencedTable": "SetPasswordForUserRequest", + "referencedFields": [ + "UserId" + ], + "onDelete": "", + "onUpdate": "", + "isNotForReplication": false, + "isEnabled": true, + "comment": "", + "sourceCardinality": "NoneRelationship", + "targetCardinality": "NoneRelationship", + "oldName": "" } ], "uniques": [], @@ -39160,7 +39428,7 @@ }, { "objectType": "Table_MSSQL", - "name": "AdminGetJwtTokenRequest", + "name": "SetPasswordForUserRequest", "comment": "ورودی حذف کاربر", "owner": "", "isChangeTracking": false, @@ -39177,12 +39445,12 @@ "fields": [ { "objectType": "TableField_MSSQL", - "name": "Username", - "type": "nvarchar", + "name": "UserId", + "type": "bigint", "size": -2147483648, "isNullable": "No", "scale": -2147483648, - "comment": "نام کاربری", + "comment": "شناسه کاربر", "computedExpression": "", "defaultValue": "", "defaultValueType": "None", @@ -39195,7 +39463,7 @@ "isPersisted": false, "isSparse": false, "isRowGUIDColumn": false, - "oldName": "Username", + "oldName": "UserId", "computedBaseType": "", "isDefaultConstraint": false, "defaultConstraint": "", @@ -39207,7 +39475,37 @@ }, { "objectType": "TableField_MSSQL", - "name": "Password", + "name": "CurrentPassword", + "type": "nvarchar", + "size": -2147483648, + "isNullable": "Yes", + "scale": -2147483648, + "comment": "کلمه عبور فعلی", + "computedExpression": "", + "defaultValue": "", + "defaultValueType": "None", + "schema": "", + "userDefinedType": "", + "collate": "", + "isWithValues": false, + "isFilestream": false, + "isColumnSet": false, + "isPersisted": false, + "isSparse": false, + "isRowGUIDColumn": false, + "oldName": "CurrentPassword", + "computedBaseType": "", + "isDefaultConstraint": false, + "defaultConstraint": "", + "isIdentity": false, + "isExistingField": false, + "identitySeed": 0, + "identityIncrement": 0, + "identityIsNotForReplication": false + }, + { + "objectType": "TableField_MSSQL", + "name": "NewPassword", "type": "nvarchar", "size": -2147483648, "isNullable": "No", @@ -39225,7 +39523,37 @@ "isPersisted": false, "isSparse": false, "isRowGUIDColumn": false, - "oldName": "Password", + "oldName": "NewPassword", + "computedBaseType": "", + "isDefaultConstraint": false, + "defaultConstraint": "", + "isIdentity": false, + "isExistingField": false, + "identitySeed": 0, + "identityIncrement": 0, + "identityIsNotForReplication": false + }, + { + "objectType": "TableField_MSSQL", + "name": "ConfirmPassword", + "type": "nvarchar", + "size": -2147483648, + "isNullable": "No", + "scale": -2147483648, + "comment": "تایید کلمه عبور", + "computedExpression": "", + "defaultValue": "", + "defaultValueType": "None", + "schema": "", + "userDefinedType": "", + "collate": "", + "isWithValues": false, + "isFilestream": false, + "isColumnSet": false, + "isPersisted": false, + "isSparse": false, + "isRowGUIDColumn": false, + "oldName": "ConfirmPassword", "computedBaseType": "", "isDefaultConstraint": false, "defaultConstraint": "", @@ -39239,9 +39567,9 @@ "indexes": [], "primaryKey": { "objectType": "PrimaryKey_MSSQL", - "name": "_copy_43_copy_2", + "name": "_copy_43_copy_3", "fields": [ - "Username" + "UserId" ], "fillFactor": 0, "oldName": "", @@ -39282,99 +39610,6 @@ "filestreamPartitionScheme": "", "dataCompressions": [] } - }, - { - "objectType": "Table_MSSQL", - "name": "AdminGetJwtTokenResponse", - "comment": "خروجی واکشی توکن", - "owner": "", - "isChangeTracking": false, - "isTrackColumnsUpdated": false, - "oldName": "", - "isSystemTable": false, - "createTime": "", - "modifyTime": "", - "objectID": 6042, - "numberOfRows": 0, - "identityCurrent": 0, - "dataLength": 0, - "indexLength": 0, - "fields": [ - { - "objectType": "TableField_MSSQL", - "name": "Token", - "type": "nvarchar", - "size": -2147483648, - "isNullable": "No", - "scale": -2147483648, - "comment": "توکن", - "computedExpression": "", - "defaultValue": "", - "defaultValueType": "Others", - "schema": "", - "userDefinedType": "", - "collate": "", - "isWithValues": false, - "isFilestream": false, - "isColumnSet": false, - "isPersisted": false, - "isSparse": false, - "isRowGUIDColumn": false, - "oldName": "Token", - "computedBaseType": "", - "isDefaultConstraint": false, - "defaultConstraint": "", - "isIdentity": true, - "isExistingField": false, - "identitySeed": -2147483648, - "identityIncrement": -2147483648, - "identityIsNotForReplication": false - } - ], - "indexes": [], - "primaryKey": { - "objectType": "PrimaryKey_MSSQL", - "name": "_copy_46_copy_1", - "fields": [], - "fillFactor": 0, - "oldName": "", - "isClustered": false, - "isPadded": false, - "noRecomputeStatistics": false, - "ignoreDuplicatedKeyValues": false, - "allowRowLocks": false, - "allowPageLocks": false, - "storage": { - "objectType": "Storage_MSSQL", - "name": "", - "oldName": "", - "storageType": "Default", - "filegroup": "", - "textImageFilegroup": "", - "filestreamFilegroup": "", - "partitionScheme": "", - "partitionColumn": "", - "filestreamPartitionScheme": "", - "dataCompressions": [] - } - }, - "foreignKeys": [], - "uniques": [], - "checks": [], - "triggers": [], - "storage": { - "objectType": "Storage_MSSQL", - "name": "", - "oldName": "", - "storageType": "Default", - "filegroup": "", - "textImageFilegroup": "", - "filestreamFilegroup": "", - "partitionScheme": "", - "partitionColumn": "", - "filestreamPartitionScheme": "", - "dataCompressions": [] - } } ], "views": [] @@ -39401,8 +39636,8 @@ "type": "table", "schemaName": "CMS", "tableName": "User", - "x": 18010, - "y": 8150, + "x": 18510, + "y": 8680, "width": 370, "height": 435, "isBold": false, @@ -39417,8 +39652,8 @@ "type": "table", "schemaName": "CMS", "tableName": "UserAddress", - "x": 17590, - "y": 8110, + "x": 18090, + "y": 8640, "width": 310, "height": 220, "isBold": false, @@ -39433,8 +39668,8 @@ "type": "table", "schemaName": "CMS", "tableName": "Package", - "x": 17170, - "y": 8490, + "x": 17670, + "y": 9020, "width": 310, "height": 170, "isBold": false, @@ -39449,8 +39684,8 @@ "type": "table", "schemaName": "CMS", "tableName": "UserOrder", - "x": 17170, - "y": 8150, + "x": 17670, + "y": 8680, "width": 310, "height": 285, "isBold": false, @@ -39465,8 +39700,8 @@ "type": "table", "schemaName": "CMS", "tableName": "Role", - "x": 18040, - "y": 8780, + "x": 18540, + "y": 9350, "width": 310, "height": 130, "isBold": false, @@ -39481,8 +39716,8 @@ "type": "table", "schemaName": "CMS", "tableName": "UserRole", - "x": 18040, - "y": 8600, + "x": 18540, + "y": 9170, "width": 310, "height": 130, "isBold": false, @@ -39497,10 +39732,10 @@ "type": "table", "schemaName": "CMS", "tableName": "UserService", - "x": 6270, - "y": 5520, + "x": 6330, + "y": 6010, "width": 400, - "height": 229, + "height": 284, "isBold": false, "titleColor": { "r": 0, @@ -39513,8 +39748,8 @@ "type": "table", "schemaName": "CMS", "tableName": "CreateNewUserRequest", - "x": 6510, - "y": 4930, + "x": 6550, + "y": 5370, "width": 400, "height": 270, "isBold": false, @@ -39529,8 +39764,8 @@ "type": "table", "schemaName": "CMS", "tableName": "CreateNewUserResponse", - "x": 6140, - "y": 4770, + "x": 6190, + "y": 5210, "width": 400, "height": 106, "isBold": false, @@ -39545,8 +39780,8 @@ "type": "table", "schemaName": "CMS", "tableName": "UpdateUserRequest", - "x": 5760, - "y": 5470, + "x": 5820, + "y": 6000, "width": 400, "height": 300, "isBold": false, @@ -39561,8 +39796,8 @@ "type": "table", "schemaName": "CMS", "tableName": "DeleteUserRequest", - "x": 6270, - "y": 5760, + "x": 6330, + "y": 6340, "width": 400, "height": 106, "isBold": false, @@ -39577,8 +39812,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetUserRequest", - "x": 8310, - "y": 5640, + "x": 9910, + "y": 6220, "width": 400, "height": 106, "isBold": false, @@ -39593,8 +39828,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetUserResponse", - "x": 8310, - "y": 5240, + "x": 9910, + "y": 5820, "width": 400, "height": 350, "isBold": false, @@ -39609,8 +39844,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllUserByFilterRequest", - "x": 7740, - "y": 5420, + "x": 9330, + "y": 6060, "width": 400, "height": 137, "isBold": false, @@ -39625,8 +39860,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllUserByFilterFilter", - "x": 8250, - "y": 4840, + "x": 9850, + "y": 5420, "width": 400, "height": 350, "isBold": false, @@ -39641,8 +39876,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllUserByFilterResponse", - "x": 7290, - "y": 5250, + "x": 8880, + "y": 5890, "width": 400, "height": 118, "isBold": false, @@ -39657,8 +39892,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllUserByFilterResponseModel", - "x": 7740, - "y": 5020, + "x": 9330, + "y": 5650, "width": 400, "height": 350, "isBold": false, @@ -39673,8 +39908,8 @@ "type": "table", "schemaName": "CMS", "tableName": "UserAddressService", - "x": 8930, - "y": 4610, + "x": 8490, + "y": 5080, "width": 400, "height": 200, "isBold": false, @@ -39689,8 +39924,8 @@ "type": "table", "schemaName": "CMS", "tableName": "CreateNewUserAddressRequest", - "x": 7020, - "y": 4960, + "x": 6700, + "y": 4950, "width": 400, "height": 213, "isBold": false, @@ -39705,8 +39940,8 @@ "type": "table", "schemaName": "CMS", "tableName": "CreateNewUserAddressResponse", - "x": 7280, - "y": 4740, + "x": 6840, + "y": 5210, "width": 400, "height": 106, "isBold": false, @@ -39721,8 +39956,8 @@ "type": "table", "schemaName": "CMS", "tableName": "UpdateUserAddressRequest", - "x": 8930, - "y": 4860, + "x": 8490, + "y": 5330, "width": 400, "height": 213, "isBold": false, @@ -39737,8 +39972,8 @@ "type": "table", "schemaName": "CMS", "tableName": "DeleteUserAddressRequest", - "x": 9440, - "y": 4650, + "x": 9000, + "y": 5130, "width": 400, "height": 106, "isBold": false, @@ -39753,8 +39988,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetUserAddressRequest", - "x": 8930, - "y": 4450, + "x": 8490, + "y": 4930, "width": 400, "height": 106, "isBold": false, @@ -39769,8 +40004,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetUserAddressResponse", - "x": 8420, - "y": 4390, + "x": 7980, + "y": 4870, "width": 400, "height": 213, "isBold": false, @@ -39785,8 +40020,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllUserAddressByFilterRequest", - "x": 7910, - "y": 4140, + "x": 7410, + "y": 4510, "width": 400, "height": 137, "isBold": false, @@ -39801,8 +40036,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllUserAddressByFilterFilter", - "x": 7400, - "y": 4070, + "x": 6960, + "y": 4420, "width": 400, "height": 213, "isBold": false, @@ -39817,8 +40052,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllUserAddressByFilterResponse", - "x": 7850, - "y": 4420, + "x": 7410, + "y": 4780, "width": 400, "height": 118, "isBold": false, @@ -39833,8 +40068,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllUserAddressByFilterResponseModel", - "x": 7400, - "y": 4330, + "x": 6960, + "y": 4680, "width": 400, "height": 213, "isBold": false, @@ -39849,1079 +40084,7 @@ "type": "table", "schemaName": "CMS", "tableName": "PackageService", - "x": 6610, - "y": 2970, - "width": 400, - "height": 175, - "isBold": false, - "titleColor": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "CreateNewPackageRequest", - "x": 6630, - "y": 4630, - "width": 400, - "height": 175, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "CreateNewPackageResponse", - "x": 6890, - "y": 4470, - "width": 400, - "height": 106, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "UpdatePackageRequest", - "x": 7060, - "y": 2970, - "width": 400, - "height": 175, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "DeletePackageRequest", - "x": 6610, - "y": 2760, - "width": 400, - "height": 106, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetPackageRequest", "x": 6160, - "y": 3010, - "width": 400, - "height": 106, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetPackageResponse", - "x": 6280, - "y": 3260, - "width": 400, - "height": 175, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllPackageByFilterRequest", - "x": 6360, - "y": 3540, - "width": 400, - "height": 137, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllPackageByFilterFilter", - "x": 6360, - "y": 3730, - "width": 400, - "height": 175, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllPackageByFilterResponse", - "x": 6430, - "y": 4020, - "width": 400, - "height": 118, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllPackageByFilterResponseModel", - "x": 6430, - "y": 4190, - "width": 400, - "height": 175, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "UserOrderService", - "x": 3970, - "y": 6540, - "width": 400, - "height": 175, - "isBold": false, - "titleColor": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "CreateNewUserOrderRequest", - "x": 5640, - "y": 5820, - "width": 400, - "height": 220, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "CreateNewUserOrderResponse", - "x": 4210, - "y": 5760, - "width": 400, - "height": 106, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "UpdateUserOrderRequest", - "x": 3840, - "y": 5490, - "width": 400, - "height": 230, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "DeleteUserOrderRequest", - "x": 3460, - "y": 6570, - "width": 400, - "height": 106, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetUserOrderRequest", - "x": 3970, - "y": 6760, - "width": 400, - "height": 106, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetUserOrderResponse", - "x": 4540, - "y": 6620, - "width": 400, - "height": 240, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllUserOrderByFilterRequest", - "x": 4540, - "y": 6430, - "width": 400, - "height": 137, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllUserOrderByFilterFilter", - "x": 5050, - "y": 6430, - "width": 400, - "height": 240, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllUserOrderByFilterResponse", - "x": 4480, - "y": 6260, - "width": 400, - "height": 118, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllUserOrderByFilterResponseModel", - "x": 4930, - "y": 6140, - "width": 400, - "height": 240, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "RoleService", - "x": 5660, - "y": 7590, - "width": 400, - "height": 175, - "isBold": false, - "titleColor": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "CreateNewRoleRequest", - "x": 5640, - "y": 6090, - "width": 400, - "height": 137, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "CreateNewRoleResponse", - "x": 5380, - "y": 6270, - "width": 400, - "height": 106, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "UpdateRoleRequest", - "x": 5210, - "y": 7610, - "width": 400, - "height": 137, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "DeleteRoleRequest", - "x": 5660, - "y": 7820, - "width": 400, - "height": 106, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetRoleRequest", - "x": 6110, - "y": 7620, - "width": 400, - "height": 106, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetRoleResponse", - "x": 6000, - "y": 7340, - "width": 400, - "height": 137, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllRoleByFilterRequest", - "x": 5920, - "y": 7100, - "width": 400, - "height": 137, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllRoleByFilterFilter", - "x": 5920, - "y": 6910, - "width": 400, - "height": 137, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllRoleByFilterResponse", - "x": 5850, - "y": 6680, - "width": 400, - "height": 118, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllRoleByFilterResponseModel", - "x": 5850, - "y": 6490, - "width": 400, - "height": 137, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "UserRoleService", - "x": 11480, - "y": 5990, - "width": 400, - "height": 175, - "isBold": false, - "titleColor": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "CreateNewUserRoleRequest", - "x": 9820, - "y": 6090, - "width": 400, - "height": 137, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "CreateNewUserRoleResponse", - "x": 10340, - "y": 6090, - "width": 400, - "height": 106, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "UpdateUserRoleRequest", - "x": 11480, - "y": 6210, - "width": 400, - "height": 137, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "DeleteUserRoleRequest", - "x": 11990, - "y": 6020, - "width": 400, - "height": 106, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetUserRoleRequest", - "x": 11480, - "y": 5830, - "width": 400, - "height": 106, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetUserRoleResponse", - "x": 10970, - "y": 5850, - "width": 400, - "height": 137, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllUserRoleByFilterRequest", - "x": 10400, - "y": 5660, - "width": 400, - "height": 137, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllUserRoleByFilterFilter", - "x": 9950, - "y": 5650, - "width": 400, - "height": 137, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllUserRoleByFilterResponse", - "x": 10400, - "y": 5850, - "width": 400, - "height": 118, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllUserRoleByFilterResponseModel", - "x": 9950, - "y": 5840, - "width": 400, - "height": 137, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "OtpToken", - "x": 18040, - "y": 6370, - "width": 310, - "height": 230, - "isBold": false, - "titleColor": { - "r": 55, - "g": 131, - "b": 192, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "OtpTokenService", - "x": 9690, - "y": 2160, - "width": 400, - "height": 150, - "isBold": false, - "titleColor": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "CreateNewOtpTokenRequest", - "x": 9690, - "y": 2650, - "width": 400, - "height": 110, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "CreateNewOtpTokenResponse", - "x": 9950, - "y": 2420, - "width": 400, - "height": 180, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllOtpTokenByFilterRequest", - "x": 10140, - "y": 2160, - "width": 400, - "height": 137, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllOtpTokenByFilterFilter", - "x": 10590, - "y": 2130, - "width": 400, - "height": 213, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllOtpTokenByFilterResponse", - "x": 9690, - "y": 1990, - "width": 400, - "height": 118, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetAllOtpTokenByFilterResponseModel", - "x": 9690, - "y": 1730, - "width": 400, - "height": 213, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "VerifyOtpTokenRequest", - "x": 9240, - "y": 2150, - "width": 400, - "height": 160, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "VerifyOtpTokenResponse", - "x": 9440, - "y": 2360, - "width": 400, - "height": 180, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetJwtTokenRequest", - "x": 6780, - "y": 5400, - "width": 400, - "height": 106, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "GetJwtTokenResponse", - "x": 6620, - "y": 5250, - "width": 400, - "height": 106, - "isBold": false, - "titleColor": { - "r": 200, - "g": 255, - "b": 160, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "SetAddressAsDefaultRequest", - "x": 7790, - "y": 4590, - "width": 400, - "height": 106, - "isBold": false, - "titleColor": { - "r": 255, - "g": 214, - "b": 147, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "UserWallet", - "x": 18430, - "y": 8240, - "width": 310, - "height": 220, - "isBold": false, - "titleColor": { - "r": 55, - "g": 131, - "b": 192, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "UserWalletChangeLog", - "x": 18790, - "y": 8240, - "width": 310, - "height": 220, - "isBold": false, - "titleColor": { - "r": 55, - "g": 131, - "b": 192, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "Transactions", - "x": 16810, - "y": 8010, - "width": 310, - "height": 574, - "isBold": false, - "titleColor": { - "r": 55, - "g": 131, - "b": 192, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "UserCarts", - "x": 18040, - "y": 7880, - "width": 310, - "height": 220, - "isBold": false, - "titleColor": { - "r": 55, - "g": 131, - "b": 192, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "FactorDetails", - "x": 17410, - "y": 7500, - "width": 310, - "height": 290, - "isBold": false, - "titleColor": { - "r": 55, - "g": 131, - "b": 192, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "Products", - "x": 18040, - "y": 7470, - "width": 310, - "height": 358, - "isBold": false, - "titleColor": { - "r": 55, - "g": 131, - "b": 192, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "ProductImages", - "x": 18040, - "y": 6650, - "width": 310, - "height": 358, - "isBold": false, - "titleColor": { - "r": 55, - "g": 131, - "b": 192, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "ProductGallerys", - "x": 18040, - "y": 7060, - "width": 310, - "height": 358, - "isBold": false, - "titleColor": { - "r": 55, - "g": 131, - "b": 192, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "PaymentStatus", - "x": 16980, - "y": 6270, - "width": 310, - "height": 170, - "isBold": false, - "titleColor": { - "r": 190, - "g": 220, - "b": 255, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "TransactionType", - "x": 16450, - "y": 8170, - "width": 310, - "height": 170, - "isBold": false, - "titleColor": { - "r": 190, - "g": 220, - "b": 255, - "a": 1 - } - }, - { - "type": "table", - "schemaName": "CMS", - "tableName": "UserWalletService", - "x": 1800, "y": 3170, "width": 400, "height": 175, @@ -40936,11 +40099,11 @@ { "type": "table", "schemaName": "CMS", - "tableName": "CreateNewUserWalletRequest", - "x": 3210, - "y": 2760, + "tableName": "CreateNewPackageRequest", + "x": 6190, + "y": 4830, "width": 400, - "height": 137, + "height": 175, "isBold": false, "titleColor": { "r": 255, @@ -40952,9 +40115,9 @@ { "type": "table", "schemaName": "CMS", - "tableName": "CreateNewUserWalletResponse", - "x": 2040, - "y": 2690, + "tableName": "CreateNewPackageResponse", + "x": 6450, + "y": 4670, "width": 400, "height": 106, "isBold": false, @@ -40968,11 +40131,11 @@ { "type": "table", "schemaName": "CMS", - "tableName": "UpdateUserWalletRequest", - "x": 1670, - "y": 2500, + "tableName": "UpdatePackageRequest", + "x": 6610, + "y": 3170, "width": 400, - "height": 137, + "height": 175, "isBold": false, "titleColor": { "r": 255, @@ -40984,9 +40147,9 @@ { "type": "table", "schemaName": "CMS", - "tableName": "DeleteUserWalletRequest", - "x": 1290, - "y": 3220, + "tableName": "DeletePackageRequest", + "x": 6160, + "y": 2950, "width": 400, "height": 106, "isBold": false, @@ -41000,9 +40163,9 @@ { "type": "table", "schemaName": "CMS", - "tableName": "GetUserWalletRequest", - "x": 1800, - "y": 3390, + "tableName": "GetPackageRequest", + "x": 5710, + "y": 3200, "width": 400, "height": 106, "isBold": false, @@ -41016,11 +40179,11 @@ { "type": "table", "schemaName": "CMS", - "tableName": "GetUserWalletResponse", - "x": 2370, - "y": 3260, + "tableName": "GetPackageResponse", + "x": 5830, + "y": 3460, "width": 400, - "height": 137, + "height": 175, "isBold": false, "titleColor": { "r": 200, @@ -41032,9 +40195,9 @@ { "type": "table", "schemaName": "CMS", - "tableName": "GetAllUserWalletByFilterRequest", - "x": 2370, - "y": 3070, + "tableName": "GetAllPackageByFilterRequest", + "x": 5910, + "y": 3740, "width": 400, "height": 137, "isBold": false, @@ -41048,11 +40211,11 @@ { "type": "table", "schemaName": "CMS", - "tableName": "GetAllUserWalletByFilterFilter", - "x": 2880, - "y": 3070, + "tableName": "GetAllPackageByFilterFilter", + "x": 5910, + "y": 3930, "width": 400, - "height": 137, + "height": 175, "isBold": false, "titleColor": { "r": 255, @@ -41064,9 +40227,9 @@ { "type": "table", "schemaName": "CMS", - "tableName": "GetAllUserWalletByFilterResponse", - "x": 2310, - "y": 2900, + "tableName": "GetAllPackageByFilterResponse", + "x": 5980, + "y": 4220, "width": 400, "height": 118, "isBold": false, @@ -41080,11 +40243,11 @@ { "type": "table", "schemaName": "CMS", - "tableName": "GetAllUserWalletByFilterResponseModel", - "x": 2760, - "y": 2880, + "tableName": "GetAllPackageByFilterResponseModel", + "x": 5980, + "y": 4390, "width": 400, - "height": 137, + "height": 175, "isBold": false, "titleColor": { "r": 200, @@ -41096,9 +40259,9 @@ { "type": "table", "schemaName": "CMS", - "tableName": "UserWalletChangeLogService", - "x": 3040, - "y": 9510, + "tableName": "UserOrderService", + "x": 4030, + "y": 7070, "width": 400, "height": 175, "isBold": false, @@ -41112,11 +40275,11 @@ { "type": "table", "schemaName": "CMS", - "tableName": "CreateNewUserWalletChangeLogRequest", - "x": 3210, - "y": 7880, + "tableName": "CreateNewUserOrderRequest", + "x": 5700, + "y": 6350, "width": 400, - "height": 194, + "height": 220, "isBold": false, "titleColor": { "r": 255, @@ -41128,9 +40291,9 @@ { "type": "table", "schemaName": "CMS", - "tableName": "CreateNewUserWalletChangeLogResponse", - "x": 2760, - "y": 8060, + "tableName": "CreateNewUserOrderResponse", + "x": 4250, + "y": 6300, "width": 400, "height": 106, "isBold": false, @@ -41144,11 +40307,11 @@ { "type": "table", "schemaName": "CMS", - "tableName": "UpdateUserWalletChangeLogRequest", - "x": 2590, - "y": 9500, + "tableName": "UpdateUserOrderRequest", + "x": 3890, + "y": 6020, "width": 400, - "height": 194, + "height": 230, "isBold": false, "titleColor": { "r": 255, @@ -41160,9 +40323,9 @@ { "type": "table", "schemaName": "CMS", - "tableName": "DeleteUserWalletChangeLogRequest", - "x": 3040, - "y": 9740, + "tableName": "DeleteUserOrderRequest", + "x": 3520, + "y": 7100, "width": 400, "height": 106, "isBold": false, @@ -41176,9 +40339,9 @@ { "type": "table", "schemaName": "CMS", - "tableName": "GetUserWalletChangeLogRequest", - "x": 3490, - "y": 9560, + "tableName": "GetUserOrderRequest", + "x": 4030, + "y": 7290, "width": 400, "height": 106, "isBold": false, @@ -41192,11 +40355,11 @@ { "type": "table", "schemaName": "CMS", - "tableName": "GetUserWalletChangeLogResponse", - "x": 3370, - "y": 9210, + "tableName": "GetUserOrderResponse", + "x": 4600, + "y": 7160, "width": 400, - "height": 194, + "height": 240, "isBold": false, "titleColor": { "r": 200, @@ -41208,9 +40371,9 @@ { "type": "table", "schemaName": "CMS", - "tableName": "GetAllUserWalletChangeLogByFilterRequest", - "x": 3300, - "y": 8960, + "tableName": "GetAllUserOrderByFilterRequest", + "x": 4600, + "y": 6970, "width": 400, "height": 137, "isBold": false, @@ -41224,11 +40387,11 @@ { "type": "table", "schemaName": "CMS", - "tableName": "GetAllUserWalletChangeLogByFilterFilter", - "x": 3300, - "y": 8720, + "tableName": "GetAllUserOrderByFilterFilter", + "x": 5110, + "y": 6970, "width": 400, - "height": 194, + "height": 240, "isBold": false, "titleColor": { "r": 255, @@ -41240,9 +40403,9 @@ { "type": "table", "schemaName": "CMS", - "tableName": "GetAllUserWalletChangeLogByFilterResponse", - "x": 3220, - "y": 8490, + "tableName": "GetAllUserOrderByFilterResponse", + "x": 4540, + "y": 6800, "width": 400, "height": 118, "isBold": false, @@ -41256,11 +40419,11 @@ { "type": "table", "schemaName": "CMS", - "tableName": "GetAllUserWalletChangeLogByFilterResponseModel", - "x": 3220, - "y": 8250, + "tableName": "GetAllUserOrderByFilterResponseModel", + "x": 4990, + "y": 6680, "width": 400, - "height": 194, + "height": 240, "isBold": false, "titleColor": { "r": 200, @@ -41272,9 +40435,9 @@ { "type": "table", "schemaName": "CMS", - "tableName": "UserCartsService", - "x": 14030, - "y": 7790, + "tableName": "RoleService", + "x": 5730, + "y": 8140, "width": 400, "height": 175, "isBold": false, @@ -41288,11 +40451,11 @@ { "type": "table", "schemaName": "CMS", - "tableName": "CreateNewUserCartsRequest", - "x": 12370, - "y": 7900, + "tableName": "CreateNewRoleRequest", + "x": 5700, + "y": 6620, "width": 400, - "height": 156, + "height": 137, "isBold": false, "titleColor": { "r": 255, @@ -41304,9 +40467,9 @@ { "type": "table", "schemaName": "CMS", - "tableName": "CreateNewUserCartsResponse", - "x": 12890, - "y": 7900, + "tableName": "CreateNewRoleResponse", + "x": 5440, + "y": 6810, "width": 400, "height": 106, "isBold": false, @@ -41320,11 +40483,11 @@ { "type": "table", "schemaName": "CMS", - "tableName": "UpdateUserCartsRequest", - "x": 14030, - "y": 8010, + "tableName": "UpdateRoleRequest", + "x": 5280, + "y": 8150, "width": 400, - "height": 156, + "height": 137, "isBold": false, "titleColor": { "r": 255, @@ -41336,9 +40499,9 @@ { "type": "table", "schemaName": "CMS", - "tableName": "DeleteUserCartsRequest", - "x": 14540, - "y": 7830, + "tableName": "DeleteRoleRequest", + "x": 5730, + "y": 8360, "width": 400, "height": 106, "isBold": false, @@ -41352,9 +40515,9 @@ { "type": "table", "schemaName": "CMS", - "tableName": "GetUserCartsRequest", - "x": 14030, - "y": 7650, + "tableName": "GetRoleRequest", + "x": 6180, + "y": 8170, "width": 400, "height": 106, "isBold": false, @@ -41368,11 +40531,11 @@ { "type": "table", "schemaName": "CMS", - "tableName": "GetUserCartsResponse", - "x": 13520, - "y": 7630, + "tableName": "GetRoleResponse", + "x": 6060, + "y": 7890, "width": 400, - "height": 156, + "height": 137, "isBold": false, "titleColor": { "r": 200, @@ -41384,8 +40547,24 @@ { "type": "table", "schemaName": "CMS", - "tableName": "GetAllUserCartsByFilterRequest", - "x": 13010, + "tableName": "GetAllRoleByFilterRequest", + "x": 5990, + "y": 7640, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllRoleByFilterFilter", + "x": 5990, "y": 7450, "width": 400, "height": 137, @@ -41397,12 +40576,1068 @@ "a": 1 } }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllRoleByFilterResponse", + "x": 5910, + "y": 7220, + "width": 400, + "height": 118, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllRoleByFilterResponseModel", + "x": 5910, + "y": 7030, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "UserRoleService", + "x": 11950, + "y": 6520, + "width": 400, + "height": 175, + "isBold": false, + "titleColor": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "CreateNewUserRoleRequest", + "x": 10270, + "y": 6620, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "CreateNewUserRoleResponse", + "x": 10810, + "y": 6620, + "width": 400, + "height": 106, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "UpdateUserRoleRequest", + "x": 11950, + "y": 6740, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "DeleteUserRoleRequest", + "x": 12470, + "y": 6550, + "width": 400, + "height": 106, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetUserRoleRequest", + "x": 11950, + "y": 6360, + "width": 400, + "height": 106, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetUserRoleResponse", + "x": 11440, + "y": 6380, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllUserRoleByFilterRequest", + "x": 10870, + "y": 6200, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllUserRoleByFilterFilter", + "x": 10420, + "y": 6180, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllUserRoleByFilterResponse", + "x": 10870, + "y": 6390, + "width": 400, + "height": 118, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllUserRoleByFilterResponseModel", + "x": 10420, + "y": 6370, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "OtpToken", + "x": 18540, + "y": 6910, + "width": 310, + "height": 230, + "isBold": false, + "titleColor": { + "r": 55, + "g": 131, + "b": 192, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "OtpTokenService", + "x": 10180, + "y": 2350, + "width": 400, + "height": 150, + "isBold": false, + "titleColor": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "CreateNewOtpTokenRequest", + "x": 10160, + "y": 2840, + "width": 400, + "height": 110, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "CreateNewOtpTokenResponse", + "x": 10420, + "y": 2610, + "width": 400, + "height": 180, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllOtpTokenByFilterRequest", + "x": 10630, + "y": 2360, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllOtpTokenByFilterFilter", + "x": 11080, + "y": 2320, + "width": 400, + "height": 213, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllOtpTokenByFilterResponse", + "x": 10180, + "y": 2180, + "width": 400, + "height": 118, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllOtpTokenByFilterResponseModel", + "x": 10180, + "y": 1920, + "width": 400, + "height": 213, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "VerifyOtpTokenRequest", + "x": 9730, + "y": 2340, + "width": 400, + "height": 160, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "VerifyOtpTokenResponse", + "x": 9910, + "y": 2550, + "width": 400, + "height": 180, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetJwtTokenRequest", + "x": 8370, + "y": 5970, + "width": 400, + "height": 106, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetJwtTokenResponse", + "x": 7860, + "y": 5950, + "width": 400, + "height": 106, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "SetAddressAsDefaultRequest", + "x": 7350, + "y": 5070, + "width": 400, + "height": 106, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "UserWallet", + "x": 18930, + "y": 8790, + "width": 310, + "height": 220, + "isBold": false, + "titleColor": { + "r": 55, + "g": 131, + "b": 192, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "UserWalletChangeLog", + "x": 19290, + "y": 8790, + "width": 310, + "height": 220, + "isBold": false, + "titleColor": { + "r": 55, + "g": 131, + "b": 192, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "Transactions", + "x": 17310, + "y": 8540, + "width": 310, + "height": 574, + "isBold": false, + "titleColor": { + "r": 55, + "g": 131, + "b": 192, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "UserCarts", + "x": 18540, + "y": 8410, + "width": 310, + "height": 220, + "isBold": false, + "titleColor": { + "r": 55, + "g": 131, + "b": 192, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "FactorDetails", + "x": 17890, + "y": 8040, + "width": 310, + "height": 290, + "isBold": false, + "titleColor": { + "r": 55, + "g": 131, + "b": 192, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "Products", + "x": 18540, + "y": 8000, + "width": 310, + "height": 358, + "isBold": false, + "titleColor": { + "r": 55, + "g": 131, + "b": 192, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "ProductImages", + "x": 18540, + "y": 7190, + "width": 310, + "height": 358, + "isBold": false, + "titleColor": { + "r": 55, + "g": 131, + "b": 192, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "ProductGallerys", + "x": 18540, + "y": 7600, + "width": 310, + "height": 358, + "isBold": false, + "titleColor": { + "r": 55, + "g": 131, + "b": 192, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "PaymentStatus", + "x": 17490, + "y": 6810, + "width": 310, + "height": 170, + "isBold": false, + "titleColor": { + "r": 190, + "g": 220, + "b": 255, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "TransactionType", + "x": 16950, + "y": 8700, + "width": 310, + "height": 170, + "isBold": false, + "titleColor": { + "r": 190, + "g": 220, + "b": 255, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "UserWalletService", + "x": 1840, + "y": 7320, + "width": 400, + "height": 175, + "isBold": false, + "titleColor": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "CreateNewUserWalletRequest", + "x": 3260, + "y": 6910, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "CreateNewUserWalletResponse", + "x": 2070, + "y": 6820, + "width": 400, + "height": 106, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "UpdateUserWalletRequest", + "x": 1710, + "y": 6630, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "DeleteUserWalletRequest", + "x": 1330, + "y": 7360, + "width": 400, + "height": 106, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetUserWalletRequest", + "x": 1840, + "y": 7550, + "width": 400, + "height": 106, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetUserWalletResponse", + "x": 2420, + "y": 7420, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllUserWalletByFilterRequest", + "x": 2420, + "y": 7230, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllUserWalletByFilterFilter", + "x": 2930, + "y": 7230, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllUserWalletByFilterResponse", + "x": 2360, + "y": 7050, + "width": 400, + "height": 118, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllUserWalletByFilterResponseModel", + "x": 2810, + "y": 7040, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "UserWalletChangeLogService", + "x": 3100, + "y": 10070, + "width": 400, + "height": 175, + "isBold": false, + "titleColor": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "CreateNewUserWalletChangeLogRequest", + "x": 3260, + "y": 8430, + "width": 400, + "height": 194, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "CreateNewUserWalletChangeLogResponse", + "x": 2810, + "y": 8580, + "width": 400, + "height": 106, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "UpdateUserWalletChangeLogRequest", + "x": 2650, + "y": 10060, + "width": 400, + "height": 194, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "DeleteUserWalletChangeLogRequest", + "x": 3100, + "y": 10300, + "width": 400, + "height": 106, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetUserWalletChangeLogRequest", + "x": 3550, + "y": 10100, + "width": 400, + "height": 106, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetUserWalletChangeLogResponse", + "x": 3430, + "y": 9770, + "width": 400, + "height": 194, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllUserWalletChangeLogByFilterRequest", + "x": 3350, + "y": 9520, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllUserWalletChangeLogByFilterFilter", + "x": 3350, + "y": 9270, + "width": 400, + "height": 194, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllUserWalletChangeLogByFilterResponse", + "x": 3270, + "y": 9040, + "width": 400, + "height": 118, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllUserWalletChangeLogByFilterResponseModel", + "x": 3270, + "y": 8790, + "width": 400, + "height": 194, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "UserCartsService", + "x": 14510, + "y": 8340, + "width": 400, + "height": 175, + "isBold": false, + "titleColor": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "CreateNewUserCartsRequest", + "x": 12860, + "y": 8450, + "width": 400, + "height": 156, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "CreateNewUserCartsResponse", + "x": 13370, + "y": 8450, + "width": 400, + "height": 106, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "UpdateUserCartsRequest", + "x": 14510, + "y": 8570, + "width": 400, + "height": 156, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "DeleteUserCartsRequest", + "x": 15020, + "y": 8380, + "width": 400, + "height": 106, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetUserCartsRequest", + "x": 14510, + "y": 8190, + "width": 400, + "height": 106, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetUserCartsResponse", + "x": 14000, + "y": 8190, + "width": 400, + "height": 156, + "isBold": false, + "titleColor": { + "r": 200, + "g": 255, + "b": 160, + "a": 1 + } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "GetAllUserCartsByFilterRequest", + "x": 13430, + "y": 8010, + "width": 400, + "height": 137, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } + }, { "type": "table", "schemaName": "CMS", "tableName": "GetAllUserCartsByFilterFilter", - "x": 12500, - "y": 7430, + "x": 12980, + "y": 7980, "width": 400, "height": 156, "isBold": false, @@ -41417,8 +41652,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllUserCartsByFilterResponse", - "x": 12950, - "y": 7660, + "x": 13430, + "y": 8210, "width": 400, "height": 118, "isBold": false, @@ -41433,8 +41668,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllUserCartsByFilterResponseModel", - "x": 12500, - "y": 7640, + "x": 12980, + "y": 8180, "width": 400, "height": 156, "isBold": false, @@ -41449,8 +41684,8 @@ "type": "table", "schemaName": "CMS", "tableName": "ProductGallerysService", - "x": 12340, - "y": 220, + "x": 9700, + "y": 250, "width": 400, "height": 175, "isBold": false, @@ -41465,8 +41700,8 @@ "type": "table", "schemaName": "CMS", "tableName": "CreateNewProductGallerysRequest", - "x": 12240, - "y": 1610, + "x": 9730, + "y": 1800, "width": 400, "height": 137, "isBold": false, @@ -41481,8 +41716,8 @@ "type": "table", "schemaName": "CMS", "tableName": "CreateNewProductGallerysResponse", - "x": 12500, - "y": 1790, + "x": 9990, + "y": 1640, "width": 400, "height": 106, "isBold": false, @@ -41497,8 +41732,8 @@ "type": "table", "schemaName": "CMS", "tableName": "UpdateProductGallerysRequest", - "x": 12790, - "y": 240, + "x": 10150, + "y": 270, "width": 400, "height": 137, "isBold": false, @@ -41513,7 +41748,7 @@ "type": "table", "schemaName": "CMS", "tableName": "DeleteProductGallerysRequest", - "x": 12340, + "x": 9700, "y": 30, "width": 400, "height": 106, @@ -41529,8 +41764,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetProductGallerysRequest", - "x": 11890, - "y": 270, + "x": 9250, + "y": 280, "width": 400, "height": 106, "isBold": false, @@ -41545,8 +41780,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetProductGallerysResponse", - "x": 12010, - "y": 510, + "x": 9370, + "y": 540, "width": 400, "height": 137, "isBold": false, @@ -41561,8 +41796,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllProductGallerysByFilterRequest", - "x": 12090, - "y": 750, + "x": 9440, + "y": 780, "width": 400, "height": 137, "isBold": false, @@ -41577,8 +41812,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllProductGallerysByFilterFilter", - "x": 12090, - "y": 940, + "x": 9440, + "y": 970, "width": 400, "height": 137, "isBold": false, @@ -41593,8 +41828,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllProductGallerysByFilterResponse", - "x": 12160, - "y": 1190, + "x": 9520, + "y": 1220, "width": 400, "height": 118, "isBold": false, @@ -41609,8 +41844,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllProductGallerysByFilterResponseModel", - "x": 12160, - "y": 1360, + "x": 9520, + "y": 1390, "width": 400, "height": 137, "isBold": false, @@ -41626,7 +41861,7 @@ "schemaName": "CMS", "tableName": "FactorDetailsService", "x": 540, - "y": 10570, + "y": 11160, "width": 400, "height": 175, "isBold": false, @@ -41641,8 +41876,8 @@ "type": "table", "schemaName": "CMS", "tableName": "CreateNewFactorDetailsRequest", - "x": 1160, - "y": 9520, + "x": 1220, + "y": 10110, "width": 400, "height": 232, "isBold": false, @@ -41657,8 +41892,8 @@ "type": "table", "schemaName": "CMS", "tableName": "CreateNewFactorDetailsResponse", - "x": 780, - "y": 9390, + "x": 760, + "y": 10070, "width": 400, "height": 106, "isBold": false, @@ -41674,7 +41909,7 @@ "schemaName": "CMS", "tableName": "UpdateFactorDetailsRequest", "x": 410, - "y": 9110, + "y": 9790, "width": 400, "height": 232, "isBold": false, @@ -41690,7 +41925,7 @@ "schemaName": "CMS", "tableName": "DeleteFactorDetailsRequest", "x": 30, - "y": 10620, + "y": 11190, "width": 400, "height": 106, "isBold": false, @@ -41706,7 +41941,7 @@ "schemaName": "CMS", "tableName": "GetFactorDetailsRequest", "x": 540, - "y": 10790, + "y": 11380, "width": 400, "height": 106, "isBold": false, @@ -41722,7 +41957,7 @@ "schemaName": "CMS", "tableName": "GetFactorDetailsResponse", "x": 1110, - "y": 10650, + "y": 11240, "width": 400, "height": 232, "isBold": false, @@ -41738,7 +41973,7 @@ "schemaName": "CMS", "tableName": "GetAllFactorDetailsByFilterRequest", "x": 1110, - "y": 10460, + "y": 11060, "width": 400, "height": 137, "isBold": false, @@ -41753,8 +41988,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllFactorDetailsByFilterFilter", - "x": 1560, - "y": 10460, + "x": 1570, + "y": 11050, "width": 400, "height": 232, "isBold": false, @@ -41770,7 +42005,7 @@ "schemaName": "CMS", "tableName": "GetAllFactorDetailsByFilterResponse", "x": 1050, - "y": 10290, + "y": 10890, "width": 400, "height": 118, "isBold": false, @@ -41785,8 +42020,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllFactorDetailsByFilterResponseModel", - "x": 1500, - "y": 10180, + "x": 1510, + "y": 10770, "width": 400, "height": 232, "isBold": false, @@ -41801,8 +42036,8 @@ "type": "table", "schemaName": "CMS", "tableName": "ProductsService", - "x": 21490, - "y": 10330, + "x": 21990, + "y": 10880, "width": 400, "height": 175, "isBold": false, @@ -41817,8 +42052,8 @@ "type": "table", "schemaName": "CMS", "tableName": "CreateNewProductsRequest", - "x": 1160, - "y": 9800, + "x": 1220, + "y": 10390, "width": 400, "height": 327, "isBold": false, @@ -41833,8 +42068,8 @@ "type": "table", "schemaName": "CMS", "tableName": "CreateNewProductsResponse", - "x": 21150, - "y": 10060, + "x": 21660, + "y": 10650, "width": 400, "height": 106, "isBold": false, @@ -41849,8 +42084,8 @@ "type": "table", "schemaName": "CMS", "tableName": "UpdateProductsRequest", - "x": 21040, - "y": 10250, + "x": 21540, + "y": 10810, "width": 400, "height": 327, "isBold": false, @@ -41865,8 +42100,8 @@ "type": "table", "schemaName": "CMS", "tableName": "DeleteProductsRequest", - "x": 21490, - "y": 10620, + "x": 21990, + "y": 11170, "width": 400, "height": 106, "isBold": false, @@ -41881,8 +42116,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetProductsRequest", - "x": 21940, - "y": 10380, + "x": 22440, + "y": 10910, "width": 400, "height": 106, "isBold": false, @@ -41897,8 +42132,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetProductsResponse", - "x": 21710, - "y": 8770, + "x": 22280, + "y": 9540, "width": 400, "height": 327, "isBold": false, @@ -41913,8 +42148,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllProductsByFilterRequest", - "x": 21380, - "y": 9150, + "x": 21830, + "y": 9730, "width": 400, "height": 137, "isBold": false, @@ -41929,8 +42164,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllProductsByFilterFilter", - "x": 21260, - "y": 8770, + "x": 21830, + "y": 9350, "width": 400, "height": 327, "isBold": false, @@ -41945,8 +42180,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllProductsByFilterResponse", - "x": 21310, - "y": 9770, + "x": 21810, + "y": 10360, "width": 400, "height": 118, "isBold": false, @@ -41961,8 +42196,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllProductsByFilterResponseModel", - "x": 21310, - "y": 9400, + "x": 21810, + "y": 9980, "width": 400, "height": 327, "isBold": false, @@ -41977,8 +42212,8 @@ "type": "table", "schemaName": "CMS", "tableName": "ProductImagesService", - "x": 20350, - "y": 9570, + "x": 20850, + "y": 10160, "width": 400, "height": 175, "isBold": false, @@ -41993,8 +42228,8 @@ "type": "table", "schemaName": "CMS", "tableName": "CreateNewProductImagesRequest", - "x": 15030, - "y": 9800, + "x": 15520, + "y": 10380, "width": 400, "height": 156, "isBold": false, @@ -42009,8 +42244,8 @@ "type": "table", "schemaName": "CMS", "tableName": "CreateNewProductImagesResponse", - "x": 19210, - "y": 9690, + "x": 19710, + "y": 10260, "width": 400, "height": 106, "isBold": false, @@ -42025,8 +42260,8 @@ "type": "table", "schemaName": "CMS", "tableName": "UpdateProductImagesRequest", - "x": 20350, - "y": 9800, + "x": 20850, + "y": 10380, "width": 400, "height": 156, "isBold": false, @@ -42041,8 +42276,8 @@ "type": "table", "schemaName": "CMS", "tableName": "DeleteProductImagesRequest", - "x": 20860, - "y": 9620, + "x": 21360, + "y": 10190, "width": 400, "height": 106, "isBold": false, @@ -42057,8 +42292,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetProductImagesRequest", - "x": 20350, - "y": 9440, + "x": 20850, + "y": 10000, "width": 400, "height": 106, "isBold": false, @@ -42073,8 +42308,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetProductImagesResponse", - "x": 19840, - "y": 9410, + "x": 20340, + "y": 9990, "width": 400, "height": 156, "isBold": false, @@ -42089,8 +42324,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllProductImagesByFilterRequest", - "x": 19330, - "y": 5120, + "x": 19830, + "y": 5620, "width": 400, "height": 137, "isBold": false, @@ -42105,8 +42340,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllProductImagesByFilterFilter", - "x": 18880, - "y": 5100, + "x": 19380, + "y": 5600, "width": 400, "height": 156, "isBold": false, @@ -42121,8 +42356,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllProductImagesByFilterResponse", - "x": 19270, - "y": 5320, + "x": 19770, + "y": 5810, "width": 400, "height": 118, "isBold": false, @@ -42137,8 +42372,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllProductImagesByFilterResponseModel", - "x": 18820, - "y": 5310, + "x": 19320, + "y": 5810, "width": 400, "height": 156, "isBold": false, @@ -42153,8 +42388,8 @@ "type": "table", "schemaName": "CMS", "tableName": "TransactionsService", - "x": 14920, - "y": 9000, + "x": 15420, + "y": 9560, "width": 400, "height": 175, "isBold": false, @@ -42169,8 +42404,8 @@ "type": "table", "schemaName": "CMS", "tableName": "CreateNewTransactionsRequest", - "x": 15880, - "y": 6320, + "x": 16380, + "y": 6870, "width": 400, "height": 498, "isBold": false, @@ -42185,8 +42420,8 @@ "type": "table", "schemaName": "CMS", "tableName": "CreateNewTransactionsResponse", - "x": 14920, - "y": 9220, + "x": 15420, + "y": 9790, "width": 400, "height": 106, "isBold": false, @@ -42201,8 +42436,8 @@ "type": "table", "schemaName": "CMS", "tableName": "UpdateTransactionsRequest", - "x": 16380, - "y": 9080, + "x": 16900, + "y": 9650, "width": 400, "height": 498, "isBold": false, @@ -42217,8 +42452,8 @@ "type": "table", "schemaName": "CMS", "tableName": "DeleteTransactionsRequest", - "x": 14790, - "y": 5410, + "x": 15280, + "y": 5880, "width": 400, "height": 106, "isBold": false, @@ -42233,8 +42468,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetTransactionsRequest", - "x": 14410, - "y": 9040, + "x": 14910, + "y": 9590, "width": 400, "height": 106, "isBold": false, @@ -42249,8 +42484,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetTransactionsResponse", - "x": 15430, - "y": 6190, + "x": 15930, + "y": 6750, "width": 400, "height": 498, "isBold": false, @@ -42265,8 +42500,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllTransactionsByFilterRequest", - "x": 15270, - "y": 5780, + "x": 15740, + "y": 6300, "width": 400, "height": 137, "isBold": false, @@ -42281,8 +42516,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllTransactionsByFilterFilter", - "x": 16400, - "y": 5600, + "x": 16910, + "y": 6090, "width": 400, "height": 543, "isBold": false, @@ -42297,8 +42532,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllTransactionsByFilterResponse", - "x": 19270, - "y": 5490, + "x": 19770, + "y": 5980, "width": 400, "height": 118, "isBold": false, @@ -42313,8 +42548,8 @@ "type": "table", "schemaName": "CMS", "tableName": "GetAllTransactionsByFilterResponseModel", - "x": 19270, - "y": 5960, + "x": 19770, + "y": 6500, "width": 400, "height": 498, "isBold": false, @@ -42329,8 +42564,8 @@ "type": "table", "schemaName": "CMS", "tableName": "AdminGetJwtTokenRequest", - "x": 6792, - "y": 5752, + "x": 7350, + "y": 5900, "width": 400, "height": 128, "isBold": false, @@ -42345,8 +42580,8 @@ "type": "table", "schemaName": "CMS", "tableName": "AdminGetJwtTokenResponse", - "x": 6406, - "y": 5904, + "x": 6840, + "y": 5890, "width": 400, "height": 106, "isBold": false, @@ -42356,15 +42591,31 @@ "b": 160, "a": 1 } + }, + { + "type": "table", + "schemaName": "CMS", + "tableName": "SetPasswordForUserRequest", + "x": 6650, + "y": 5690, + "width": 400, + "height": 155, + "isBold": false, + "titleColor": { + "r": 255, + "g": 214, + "b": 147, + "a": 1 + } } ], "layers": [ { "name": "Domain", - "x": 16330, - "y": 6150, - "width": 2820, - "height": 2872, + "x": 16840, + "y": 6690, + "width": 2812, + "height": 2901, "layerColor": { "r": 100, "g": 234, @@ -42390,29 +42641,29 @@ "visible": true, "vertices": [ { - "x": 18395, - "y": 8520 + "x": 18895, + "y": 9090 }, { - "x": 18410, - "y": 8520 + "x": 18910, + "y": 9090 }, { - "x": 18410, - "y": 8580 + "x": 18910, + "y": 9150 }, { - "x": 18350, - "y": 8580 + "x": 18850, + "y": 9150 }, { - "x": 18350, - "y": 8600 + "x": 18850, + "y": 9130 } ], "label": { - "x": 18385, - "y": 8482, + "x": 18885, + "y": 9052, "width": 104, "height": 32, "fontName": "Arial Unicode MS", @@ -42436,17 +42687,17 @@ "visible": true, "vertices": [ { - "x": 17915, - "y": 8220 + "x": 18415, + "y": 8750 }, { - "x": 17995, - "y": 8220 + "x": 18495, + "y": 8750 } ], "label": { - "x": 17748, - "y": 8182, + "x": 18248, + "y": 8712, "width": 157, "height": 32, "fontName": "Arial Unicode MS", @@ -42470,17 +42721,17 @@ "visible": true, "vertices": [ { - "x": 18190, - "y": 8745 + "x": 18690, + "y": 9315 }, { - "x": 18190, - "y": 8765 + "x": 18690, + "y": 9335 } ], "label": { - "x": 18198, - "y": 8735, + "x": 18698, + "y": 9305, "width": 135, "height": 32, "fontName": "Arial Unicode MS", @@ -42504,17 +42755,17 @@ "visible": true, "vertices": [ { - "x": 18190, - "y": 8585 + "x": 18690, + "y": 9155 }, { - "x": 18190, - "y": 8600 + "x": 18690, + "y": 9130 } ], "label": { - "x": 18058, - "y": 8555, + "x": 18558, + "y": 9125, "width": 134, "height": 32, "fontName": "Arial Unicode MS", @@ -42538,17 +42789,17 @@ "visible": true, "vertices": [ { - "x": 17320, - "y": 8450 + "x": 17820, + "y": 8980 }, { - "x": 17320, - "y": 8475 + "x": 17820, + "y": 9005 } ], "label": { - "x": 17154, - "y": 8400, + "x": 17654, + "y": 8930, "width": 168, "height": 32, "fontName": "Arial Unicode MS", @@ -42572,17 +42823,17 @@ "visible": true, "vertices": [ { - "x": 17495, - "y": 8380 + "x": 17995, + "y": 8910 }, { - "x": 17995, - "y": 8380 + "x": 18495, + "y": 8910 } ], "label": { - "x": 17343, - "y": 8342, + "x": 17843, + "y": 8872, "width": 142, "height": 32, "fontName": "Arial Unicode MS", @@ -42606,21 +42857,21 @@ "visible": true, "vertices": [ { - "x": 6460, - "y": 5505 + "x": 6490, + "y": 5995 }, { - "x": 6460, - "y": 5060 + "x": 6490, + "y": 5500 }, { - "x": 6495, - "y": 5060 + "x": 6535, + "y": 5500 } ], "label": { - "x": 6468, - "y": 5515, + "x": 6498, + "y": 6005, "width": 278, "height": 32, "fontName": "Arial Unicode MS", @@ -42644,17 +42895,17 @@ "visible": true, "vertices": [ { - "x": 6340, - "y": 5505 + "x": 6390, + "y": 5995 }, { - "x": 6340, - "y": 4891 + "x": 6390, + "y": 5331 } ], "label": { - "x": 6348, - "y": 5485, + "x": 6398, + "y": 5975, "width": 288, "height": 32, "fontName": "Arial Unicode MS", @@ -42678,17 +42929,17 @@ "visible": true, "vertices": [ { - "x": 6255, - "y": 5620 + "x": 6315, + "y": 6150 }, { - "x": 6175, - "y": 5620 + "x": 6235, + "y": 6150 } ], "label": { - "x": 6271, - "y": 5622, + "x": 6331, + "y": 6152, "width": 254, "height": 32, "fontName": "Arial Unicode MS", @@ -42712,17 +42963,17 @@ "visible": true, "vertices": [ { - "x": 6470, - "y": 5764 + "x": 6530, + "y": 6309 }, { - "x": 6470, - "y": 5745 + "x": 6530, + "y": 6325 } ], "label": { - "x": 6478, - "y": 5724, + "x": 6538, + "y": 6269, "width": 249, "height": 32, "fontName": "Arial Unicode MS", @@ -42746,17 +42997,17 @@ "visible": true, "vertices": [ { - "x": 6685, - "y": 5690 + "x": 6745, + "y": 6270 }, { - "x": 8295, - "y": 5690 + "x": 9895, + "y": 6270 } ], "label": { - "x": 6681, - "y": 5662, + "x": 6741, + "y": 6242, "width": 228, "height": 32, "fontName": "Arial Unicode MS", @@ -42780,25 +43031,25 @@ "visible": true, "vertices": [ { - "x": 6685, - "y": 5620 + "x": 6745, + "y": 6250 }, { - "x": 8260, - "y": 5620 + "x": 9850, + "y": 6250 }, { - "x": 8260, - "y": 5530 + "x": 9850, + "y": 6110 }, { - "x": 8295, - "y": 5530 + "x": 9895, + "y": 6110 } ], "label": { - "x": 6681, - "y": 5622, + "x": 6741, + "y": 6252, "width": 238, "height": 32, "fontName": "Arial Unicode MS", @@ -42822,25 +43073,25 @@ "visible": true, "vertices": [ { - "x": 6685, - "y": 5590 + "x": 6745, + "y": 6160 }, { - "x": 7300, - "y": 5590 + "x": 8890, + "y": 6160 }, { - "x": 7300, - "y": 5500 + "x": 8890, + "y": 6130 }, { - "x": 7725, - "y": 5500 + "x": 9315, + "y": 6130 } ], "label": { - "x": 6681, - "y": 5592, + "x": 6741, + "y": 6162, "width": 295, "height": 32, "fontName": "Arial Unicode MS", @@ -42864,25 +43115,25 @@ "visible": true, "vertices": [ { - "x": 6685, - "y": 5570 + "x": 6745, + "y": 6130 }, { - "x": 7240, - "y": 5570 + "x": 8830, + "y": 6130 }, { - "x": 7240, - "y": 5310 + "x": 8830, + "y": 5950 }, { - "x": 7275, - "y": 5310 + "x": 8865, + "y": 5950 } ], "label": { - "x": 6681, - "y": 5572, + "x": 6741, + "y": 6132, "width": 305, "height": 32, "fontName": "Arial Unicode MS", @@ -42906,25 +43157,25 @@ "visible": true, "vertices": [ { - "x": 8155, - "y": 5490 + "x": 9745, + "y": 6120 }, { - "x": 8200, - "y": 5490 + "x": 9790, + "y": 6120 }, { - "x": 8200, - "y": 5120 + "x": 9790, + "y": 5710 }, { - "x": 8235, - "y": 5120 + "x": 9835, + "y": 5710 } ], "label": { - "x": 8151, - "y": 5492, + "x": 9741, + "y": 6122, "width": 357, "height": 32, "fontName": "Arial Unicode MS", @@ -42948,17 +43199,17 @@ "visible": true, "vertices": [ { - "x": 7705, - "y": 5300 + "x": 9295, + "y": 5940 }, { - "x": 7725, - "y": 5300 + "x": 9315, + "y": 5940 } ], "label": { - "x": 7701, - "y": 5302, + "x": 9291, + "y": 5942, "width": 442, "height": 32, "fontName": "Arial Unicode MS", @@ -42982,29 +43233,25 @@ "visible": true, "vertices": [ { - "x": 8915, - "y": 4760 + "x": 8475, + "y": 5230 }, { - "x": 7730, - "y": 4760 + "x": 7290, + "y": 5230 }, { - "x": 7730, - "y": 4680 + "x": 7290, + "y": 5100 }, { - "x": 7220, - "y": 4680 - }, - { - "x": 7220, - "y": 4945 + "x": 7115, + "y": 5100 } ], "label": { - "x": 8931, - "y": 4762, + "x": 8491, + "y": 5232, "width": 384, "height": 32, "fontName": "Arial Unicode MS", @@ -43028,17 +43275,17 @@ "visible": true, "vertices": [ { - "x": 8915, - "y": 4790 + "x": 8475, + "y": 5260 }, { - "x": 7695, - "y": 4790 + "x": 7255, + "y": 5260 } ], "label": { - "x": 8931, - "y": 4762, + "x": 8491, + "y": 5232, "width": 394, "height": 32, "fontName": "Arial Unicode MS", @@ -43062,17 +43309,17 @@ "visible": true, "vertices": [ { - "x": 9130, - "y": 4825 + "x": 8690, + "y": 5295 }, { - "x": 9130, - "y": 4845 + "x": 8690, + "y": 5315 } ], "label": { - "x": 9138, - "y": 4815, + "x": 8698, + "y": 5285, "width": 360, "height": 32, "fontName": "Arial Unicode MS", @@ -43096,17 +43343,17 @@ "visible": true, "vertices": [ { - "x": 9345, - "y": 4710 + "x": 8905, + "y": 5180 }, { - "x": 9425, - "y": 4710 + "x": 8985, + "y": 5180 } ], "label": { - "x": 9341, - "y": 4682, + "x": 8901, + "y": 5152, "width": 355, "height": 32, "fontName": "Arial Unicode MS", @@ -43130,17 +43377,17 @@ "visible": true, "vertices": [ { - "x": 9130, - "y": 4595 + "x": 8690, + "y": 5065 }, { - "x": 9130, - "y": 4571 + "x": 8690, + "y": 5051 } ], "label": { - "x": 9138, - "y": 4575, + "x": 8698, + "y": 5045, "width": 334, "height": 32, "fontName": "Arial Unicode MS", @@ -43164,25 +43411,25 @@ "visible": true, "vertices": [ { - "x": 8915, - "y": 4630 + "x": 8475, + "y": 5100 }, { - "x": 8870, - "y": 4630 + "x": 8440, + "y": 5100 }, { - "x": 8870, - "y": 4540 + "x": 8440, + "y": 5020 }, { - "x": 8835, - "y": 4540 + "x": 8395, + "y": 5020 } ], "label": { - "x": 8931, - "y": 4632, + "x": 8491, + "y": 5102, "width": 344, "height": 32, "fontName": "Arial Unicode MS", @@ -43206,25 +43453,25 @@ "visible": true, "vertices": [ { - "x": 8915, - "y": 4660 + "x": 8475, + "y": 5130 }, { - "x": 8360, - "y": 4660 + "x": 7920, + "y": 5130 }, { - "x": 8360, - "y": 4220 + "x": 7920, + "y": 4580 }, { - "x": 8325, - "y": 4220 + "x": 7825, + "y": 4580 } ], "label": { - "x": 8931, - "y": 4662, + "x": 8491, + "y": 5132, "width": 401, "height": 32, "fontName": "Arial Unicode MS", @@ -43248,25 +43495,25 @@ "visible": true, "vertices": [ { - "x": 8915, - "y": 4690 + "x": 8475, + "y": 5160 }, { - "x": 8300, - "y": 4690 + "x": 7860, + "y": 5160 }, { - "x": 8300, - "y": 4480 + "x": 7860, + "y": 4840 }, { - "x": 8265, - "y": 4480 + "x": 7825, + "y": 4840 } ], "label": { - "x": 8931, - "y": 4692, + "x": 8491, + "y": 5162, "width": 411, "height": 32, "fontName": "Arial Unicode MS", @@ -43290,17 +43537,17 @@ "visible": true, "vertices": [ { - "x": 7895, - "y": 4210 + "x": 7395, + "y": 4570 }, { - "x": 7815, - "y": 4210 + "x": 7375, + "y": 4570 } ], "label": { - "x": 7911, - "y": 4212, + "x": 7411, + "y": 4572, "width": 463, "height": 32, "fontName": "Arial Unicode MS", @@ -43324,17 +43571,17 @@ "visible": true, "vertices": [ { - "x": 7835, - "y": 4480 + "x": 7395, + "y": 4830 }, { - "x": 7815, - "y": 4480 + "x": 7375, + "y": 4830 } ], "label": { - "x": 7851, - "y": 4482, + "x": 7411, + "y": 4832, "width": 548, "height": 32, "fontName": "Arial Unicode MS", @@ -43358,25 +43605,25 @@ "visible": true, "vertices": [ { - "x": 6890, - "y": 3160 + "x": 6430, + "y": 3360 }, { - "x": 6890, - "y": 4420 + "x": 6430, + "y": 4620 }, { - "x": 6830, - "y": 4420 + "x": 6390, + "y": 4620 }, { - "x": 6830, - "y": 4615 + "x": 6390, + "y": 4815 } ], "label": { - "x": 6898, - "y": 3150, + "x": 6438, + "y": 3350, "width": 330, "height": 32, "fontName": "Arial Unicode MS", @@ -43400,17 +43647,17 @@ "visible": true, "vertices": [ { - "x": 6960, - "y": 3160 + "x": 6510, + "y": 3360 }, { - "x": 6960, - "y": 4455 + "x": 6510, + "y": 4655 } ], "label": { - "x": 6968, - "y": 3120, + "x": 6518, + "y": 3320, "width": 340, "height": 32, "fontName": "Arial Unicode MS", @@ -43434,17 +43681,17 @@ "visible": true, "vertices": [ { - "x": 7025, - "y": 3060 + "x": 6575, + "y": 3250 }, { - "x": 7045, - "y": 3060 + "x": 6595, + "y": 3250 } ], "label": { - "x": 7021, - "y": 3062, + "x": 6571, + "y": 3252, "width": 306, "height": 32, "fontName": "Arial Unicode MS", @@ -43468,17 +43715,17 @@ "visible": true, "vertices": [ { - "x": 6810, - "y": 2955 + "x": 6360, + "y": 3155 }, { - "x": 6810, - "y": 2881 + "x": 6360, + "y": 3071 } ], "label": { - "x": 6818, - "y": 2935, + "x": 6368, + "y": 3135, "width": 301, "height": 32, "fontName": "Arial Unicode MS", @@ -43502,17 +43749,17 @@ "visible": true, "vertices": [ { - "x": 6595, - "y": 3060 + "x": 6145, + "y": 3250 }, { - "x": 6575, - "y": 3060 + "x": 6125, + "y": 3250 } ], "label": { - "x": 6611, - "y": 3032, + "x": 6161, + "y": 3222, "width": 280, "height": 32, "fontName": "Arial Unicode MS", @@ -43536,25 +43783,25 @@ "visible": true, "vertices": [ { - "x": 6660, - "y": 3160 + "x": 6210, + "y": 3360 }, { - "x": 6660, - "y": 3200 + "x": 6210, + "y": 3400 }, { - "x": 6610, - "y": 3200 + "x": 6170, + "y": 3400 }, { - "x": 6610, - "y": 3245 + "x": 6170, + "y": 3445 } ], "label": { - "x": 6668, - "y": 3150, + "x": 6218, + "y": 3350, "width": 290, "height": 32, "fontName": "Arial Unicode MS", @@ -43578,25 +43825,25 @@ "visible": true, "vertices": [ { - "x": 6740, - "y": 3160 + "x": 6280, + "y": 3360 }, { - "x": 6740, - "y": 3490 + "x": 6280, + "y": 3690 }, { - "x": 6680, - "y": 3490 + "x": 6240, + "y": 3690 }, { - "x": 6680, - "y": 3525 + "x": 6240, + "y": 3725 } ], "label": { - "x": 6748, - "y": 3150, + "x": 6288, + "y": 3350, "width": 347, "height": 32, "fontName": "Arial Unicode MS", @@ -43620,25 +43867,25 @@ "visible": true, "vertices": [ { - "x": 6810, - "y": 3160 + "x": 6360, + "y": 3360 }, { - "x": 6810, - "y": 3960 + "x": 6360, + "y": 4160 }, { - "x": 6760, - "y": 3960 + "x": 6320, + "y": 4160 }, { - "x": 6760, - "y": 4005 + "x": 6320, + "y": 4205 } ], "label": { - "x": 6818, - "y": 3150, + "x": 6368, + "y": 3350, "width": 357, "height": 32, "fontName": "Arial Unicode MS", @@ -43662,17 +43909,17 @@ "visible": true, "vertices": [ { - "x": 6560, - "y": 3692 + "x": 6100, + "y": 3892 }, { - "x": 6560, - "y": 3715 + "x": 6100, + "y": 3915 } ], "label": { - "x": 6568, - "y": 3682, + "x": 6108, + "y": 3882, "width": 409, "height": 32, "fontName": "Arial Unicode MS", @@ -43696,17 +43943,17 @@ "visible": true, "vertices": [ { - "x": 6630, - "y": 4153 + "x": 6180, + "y": 4353 }, { - "x": 6630, - "y": 4175 + "x": 6180, + "y": 4375 } ], "label": { - "x": 6638, - "y": 4143, + "x": 6188, + "y": 4343, "width": 494, "height": 32, "fontName": "Arial Unicode MS", @@ -43730,21 +43977,21 @@ "visible": true, "vertices": [ { - "x": 4270, - "y": 6525 + "x": 4290, + "y": 7055 }, { - "x": 4270, - "y": 5930 + "x": 4290, + "y": 6460 }, { - "x": 5625, - "y": 5930 + "x": 5685, + "y": 6460 } ], "label": { - "x": 4278, - "y": 6535, + "x": 4298, + "y": 7065, "width": 354, "height": 32, "fontName": "Arial Unicode MS", @@ -43768,21 +44015,21 @@ "visible": true, "vertices": [ { - "x": 4160, - "y": 6525 + "x": 4190, + "y": 7055 }, { - "x": 4160, - "y": 5820 + "x": 4190, + "y": 6350 }, { - "x": 4195, - "y": 5820 + "x": 4235, + "y": 6350 } ], "label": { - "x": 4168, - "y": 6505, + "x": 4198, + "y": 7035, "width": 364, "height": 32, "fontName": "Arial Unicode MS", @@ -43806,17 +44053,17 @@ "visible": true, "vertices": [ { - "x": 4040, - "y": 6525 + "x": 4090, + "y": 7055 }, { - "x": 4040, - "y": 5735 + "x": 4090, + "y": 6265 } ], "label": { - "x": 4048, - "y": 6535, + "x": 4098, + "y": 7065, "width": 330, "height": 32, "fontName": "Arial Unicode MS", @@ -43840,17 +44087,17 @@ "visible": true, "vertices": [ { - "x": 3955, - "y": 6620 + "x": 4015, + "y": 7150 }, { - "x": 3875, - "y": 6620 + "x": 3935, + "y": 7150 } ], "label": { - "x": 3971, - "y": 6592, + "x": 4031, + "y": 7122, "width": 325, "height": 32, "fontName": "Arial Unicode MS", @@ -43874,17 +44121,17 @@ "visible": true, "vertices": [ { - "x": 4170, - "y": 6730 + "x": 4230, + "y": 7260 }, { - "x": 4170, - "y": 6745 + "x": 4230, + "y": 7275 } ], "label": { - "x": 4178, - "y": 6690, + "x": 4238, + "y": 7220, "width": 304, "height": 32, "fontName": "Arial Unicode MS", @@ -43908,17 +44155,17 @@ "visible": true, "vertices": [ { - "x": 4385, - "y": 6690 + "x": 4445, + "y": 7220 }, { - "x": 4525, - "y": 6690 + "x": 4585, + "y": 7220 } ], "label": { - "x": 4381, - "y": 6692, + "x": 4441, + "y": 7222, "width": 314, "height": 32, "fontName": "Arial Unicode MS", @@ -43942,25 +44189,25 @@ "visible": true, "vertices": [ { - "x": 4385, - "y": 6590 + "x": 4445, + "y": 7120 }, { - "x": 4490, - "y": 6590 + "x": 4540, + "y": 7120 }, { - "x": 4490, - "y": 6500 + "x": 4540, + "y": 7040 }, { - "x": 4525, - "y": 6500 + "x": 4585, + "y": 7040 } ], "label": { - "x": 4381, - "y": 6592, + "x": 4441, + "y": 7122, "width": 371, "height": 32, "fontName": "Arial Unicode MS", @@ -43984,25 +44231,25 @@ "visible": true, "vertices": [ { - "x": 4385, - "y": 6560 + "x": 4445, + "y": 7090 }, { - "x": 4430, - "y": 6560 + "x": 4480, + "y": 7090 }, { - "x": 4430, - "y": 6320 + "x": 4480, + "y": 6860 }, { - "x": 4465, - "y": 6320 + "x": 4525, + "y": 6860 } ], "label": { - "x": 4381, - "y": 6562, + "x": 4441, + "y": 7092, "width": 381, "height": 32, "fontName": "Arial Unicode MS", @@ -44026,17 +44273,17 @@ "visible": true, "vertices": [ { - "x": 4955, - "y": 6500 + "x": 5015, + "y": 7040 }, { - "x": 5035, - "y": 6500 + "x": 5095, + "y": 7040 } ], "label": { - "x": 4951, - "y": 6502, + "x": 5011, + "y": 7042, "width": 433, "height": 32, "fontName": "Arial Unicode MS", @@ -44060,17 +44307,17 @@ "visible": true, "vertices": [ { - "x": 4895, - "y": 6310 + "x": 4955, + "y": 6850 }, { - "x": 4915, - "y": 6310 + "x": 4975, + "y": 6850 } ], "label": { - "x": 4891, - "y": 6312, + "x": 4951, + "y": 6852, "width": 518, "height": 32, "fontName": "Arial Unicode MS", @@ -44094,25 +44341,25 @@ "visible": true, "vertices": [ { - "x": 5790, - "y": 7575 + "x": 5860, + "y": 8125 }, { - "x": 5790, - "y": 6440 + "x": 5860, + "y": 6970 }, { - "x": 5840, - "y": 6440 + "x": 5900, + "y": 6970 }, { - "x": 5840, - "y": 6242 + "x": 5900, + "y": 6772 } ], "label": { - "x": 5798, - "y": 7585, + "x": 5868, + "y": 8135, "width": 280, "height": 32, "fontName": "Arial Unicode MS", @@ -44136,17 +44383,17 @@ "visible": true, "vertices": [ { - "x": 5710, - "y": 7575 + "x": 5780, + "y": 8125 }, { - "x": 5710, - "y": 6391 + "x": 5780, + "y": 6931 } ], "label": { - "x": 5718, - "y": 7555, + "x": 5788, + "y": 8105, "width": 290, "height": 32, "fontName": "Arial Unicode MS", @@ -44170,17 +44417,17 @@ "visible": true, "vertices": [ { - "x": 5645, - "y": 7680 + "x": 5715, + "y": 8220 }, { - "x": 5625, - "y": 7680 + "x": 5695, + "y": 8220 } ], "label": { - "x": 5661, - "y": 7682, + "x": 5731, + "y": 8222, "width": 256, "height": 32, "fontName": "Arial Unicode MS", @@ -44204,17 +44451,17 @@ "visible": true, "vertices": [ { - "x": 5860, - "y": 7780 + "x": 5930, + "y": 8330 }, { - "x": 5860, - "y": 7805 + "x": 5930, + "y": 8345 } ], "label": { - "x": 5868, - "y": 7740, + "x": 5938, + "y": 8290, "width": 251, "height": 32, "fontName": "Arial Unicode MS", @@ -44238,17 +44485,17 @@ "visible": true, "vertices": [ { - "x": 6075, - "y": 7680 + "x": 6145, + "y": 8220 }, { - "x": 6095, - "y": 7680 + "x": 6165, + "y": 8220 } ], "label": { - "x": 6071, - "y": 7652, + "x": 6141, + "y": 8192, "width": 230, "height": 32, "fontName": "Arial Unicode MS", @@ -44272,25 +44519,25 @@ "visible": true, "vertices": [ { - "x": 6020, - "y": 7575 + "x": 6080, + "y": 8125 }, { - "x": 6020, - "y": 7540 + "x": 6080, + "y": 8080 }, { - "x": 6070, - "y": 7540 + "x": 6120, + "y": 8080 }, { - "x": 6070, - "y": 7492 + "x": 6120, + "y": 8042 } ], "label": { - "x": 6028, - "y": 7585, + "x": 6088, + "y": 8135, "width": 240, "height": 32, "fontName": "Arial Unicode MS", @@ -44314,25 +44561,25 @@ "visible": true, "vertices": [ { - "x": 5940, - "y": 7575 + "x": 6010, + "y": 8125 }, { - "x": 5940, - "y": 7290 + "x": 6010, + "y": 7830 }, { - "x": 5990, - "y": 7290 + "x": 6050, + "y": 7830 }, { - "x": 5990, - "y": 7252 + "x": 6050, + "y": 7792 } ], "label": { - "x": 5948, - "y": 7585, + "x": 6018, + "y": 8135, "width": 297, "height": 32, "fontName": "Arial Unicode MS", @@ -44356,25 +44603,25 @@ "visible": true, "vertices": [ { - "x": 5870, - "y": 7575 + "x": 5930, + "y": 8125 }, { - "x": 5870, - "y": 6850 + "x": 5930, + "y": 7390 }, { - "x": 5920, - "y": 6850 + "x": 5970, + "y": 7390 }, { - "x": 5920, - "y": 6813 + "x": 5970, + "y": 7353 } ], "label": { - "x": 5878, - "y": 7585, + "x": 5938, + "y": 8135, "width": 307, "height": 32, "fontName": "Arial Unicode MS", @@ -44398,17 +44645,17 @@ "visible": true, "vertices": [ { - "x": 6120, - "y": 7085 + "x": 6190, + "y": 7625 }, { - "x": 6120, - "y": 7062 + "x": 6190, + "y": 7602 } ], "label": { - "x": 6128, - "y": 7095, + "x": 6198, + "y": 7635, "width": 359, "height": 32, "fontName": "Arial Unicode MS", @@ -44432,17 +44679,17 @@ "visible": true, "vertices": [ { - "x": 6050, - "y": 6665 + "x": 6110, + "y": 7205 }, { - "x": 6050, - "y": 6642 + "x": 6110, + "y": 7182 } ], "label": { - "x": 6058, - "y": 6675, + "x": 6118, + "y": 7215, "width": 444, "height": 32, "fontName": "Arial Unicode MS", @@ -44466,29 +44713,29 @@ "visible": true, "vertices": [ { - "x": 11465, - "y": 6110 + "x": 11935, + "y": 6640 }, { - "x": 10790, - "y": 6110 + "x": 11260, + "y": 6640 }, { - "x": 10790, - "y": 6030 + "x": 11260, + "y": 6570 }, { - "x": 10020, - "y": 6030 + "x": 10460, + "y": 6570 }, { - "x": 10020, - "y": 6075 + "x": 10460, + "y": 6605 } ], "label": { - "x": 11481, - "y": 6112, + "x": 11951, + "y": 6642, "width": 338, "height": 32, "fontName": "Arial Unicode MS", @@ -44512,17 +44759,17 @@ "visible": true, "vertices": [ { - "x": 11465, - "y": 6140 + "x": 11935, + "y": 6670 }, { - "x": 10755, - "y": 6140 + "x": 11225, + "y": 6670 } ], "label": { - "x": 11481, - "y": 6112, + "x": 11951, + "y": 6642, "width": 348, "height": 32, "fontName": "Arial Unicode MS", @@ -44546,17 +44793,17 @@ "visible": true, "vertices": [ { - "x": 11680, - "y": 6180 + "x": 12160, + "y": 6710 }, { - "x": 11680, - "y": 6195 + "x": 12160, + "y": 6725 } ], "label": { - "x": 11688, - "y": 6170, + "x": 12168, + "y": 6700, "width": 314, "height": 32, "fontName": "Arial Unicode MS", @@ -44580,17 +44827,17 @@ "visible": true, "vertices": [ { - "x": 11895, - "y": 6070 + "x": 12365, + "y": 6610 }, { - "x": 11975, - "y": 6070 + "x": 12455, + "y": 6610 } ], "label": { - "x": 11891, - "y": 6042, + "x": 12361, + "y": 6582, "width": 309, "height": 32, "fontName": "Arial Unicode MS", @@ -44614,17 +44861,17 @@ "visible": true, "vertices": [ { - "x": 11680, - "y": 5975 + "x": 12160, + "y": 6505 }, { - "x": 11680, - "y": 5951 + "x": 12160, + "y": 6481 } ], "label": { - "x": 11688, - "y": 5955, + "x": 12168, + "y": 6485, "width": 288, "height": 32, "fontName": "Arial Unicode MS", @@ -44648,25 +44895,25 @@ "visible": true, "vertices": [ { - "x": 11465, - "y": 6010 + "x": 11935, + "y": 6540 }, { - "x": 11420, - "y": 6010 + "x": 11900, + "y": 6540 }, { - "x": 11420, - "y": 5920 + "x": 11900, + "y": 6450 }, { - "x": 11385, - "y": 5920 + "x": 11855, + "y": 6450 } ], "label": { - "x": 11481, - "y": 6012, + "x": 11951, + "y": 6542, "width": 298, "height": 32, "fontName": "Arial Unicode MS", @@ -44690,25 +44937,25 @@ "visible": true, "vertices": [ { - "x": 11465, - "y": 6040 + "x": 11935, + "y": 6570 }, { - "x": 10910, - "y": 6040 + "x": 11390, + "y": 6570 }, { - "x": 10910, - "y": 5730 + "x": 11390, + "y": 6270 }, { - "x": 10815, - "y": 5730 + "x": 11285, + "y": 6270 } ], "label": { - "x": 11481, - "y": 6042, + "x": 11951, + "y": 6572, "width": 355, "height": 32, "fontName": "Arial Unicode MS", @@ -44732,25 +44979,25 @@ "visible": true, "vertices": [ { - "x": 11465, - "y": 6070 + "x": 11935, + "y": 6600 }, { - "x": 10850, - "y": 6070 + "x": 11330, + "y": 6600 }, { - "x": 10850, - "y": 5920 + "x": 11330, + "y": 6450 }, { - "x": 10815, - "y": 5920 + "x": 11285, + "y": 6450 } ], "label": { - "x": 11481, - "y": 6072, + "x": 11951, + "y": 6602, "width": 365, "height": 32, "fontName": "Arial Unicode MS", @@ -44774,17 +45021,17 @@ "visible": true, "vertices": [ { - "x": 10385, - "y": 5720 + "x": 10855, + "y": 6260 }, { - "x": 10365, - "y": 5720 + "x": 10835, + "y": 6260 } ], "label": { - "x": 10401, - "y": 5722, + "x": 10871, + "y": 6262, "width": 417, "height": 32, "fontName": "Arial Unicode MS", @@ -44808,17 +45055,17 @@ "visible": true, "vertices": [ { - "x": 10385, - "y": 5910 + "x": 10855, + "y": 6450 }, { - "x": 10365, - "y": 5910 + "x": 10835, + "y": 6450 } ], "label": { - "x": 10401, - "y": 5912, + "x": 10871, + "y": 6452, "width": 502, "height": 32, "fontName": "Arial Unicode MS", @@ -44842,17 +45089,17 @@ "visible": true, "vertices": [ { - "x": 9890, - "y": 2325 + "x": 10360, + "y": 2515 }, { - "x": 9890, - "y": 2635 + "x": 10360, + "y": 2825 } ], "label": { - "x": 9898, - "y": 2315, + "x": 10368, + "y": 2505, "width": 352, "height": 32, "fontName": "Arial Unicode MS", @@ -44876,17 +45123,17 @@ "visible": true, "vertices": [ { - "x": 10105, - "y": 2230 + "x": 10595, + "y": 2420 }, { - "x": 10125, - "y": 2230 + "x": 10615, + "y": 2420 } ], "label": { - "x": 10101, - "y": 2232, + "x": 10591, + "y": 2422, "width": 369, "height": 32, "fontName": "Arial Unicode MS", @@ -44910,17 +45157,17 @@ "visible": true, "vertices": [ { - "x": 9890, - "y": 2145 + "x": 10380, + "y": 2335 }, { - "x": 9890, - "y": 2123 + "x": 10380, + "y": 2313 } ], "label": { - "x": 9898, - "y": 2155, + "x": 10388, + "y": 2345, "width": 379, "height": 32, "fontName": "Arial Unicode MS", @@ -44944,17 +45191,17 @@ "visible": true, "vertices": [ { - "x": 10555, - "y": 2230 + "x": 11045, + "y": 2420 }, { - "x": 10575, - "y": 2230 + "x": 11065, + "y": 2420 } ], "label": { - "x": 10551, - "y": 2232, + "x": 11041, + "y": 2422, "width": 431, "height": 32, "fontName": "Arial Unicode MS", @@ -44978,17 +45225,17 @@ "visible": true, "vertices": [ { - "x": 9890, - "y": 1975 + "x": 10380, + "y": 2165 }, { - "x": 9890, - "y": 1958 + "x": 10380, + "y": 2148 } ], "label": { - "x": 9898, - "y": 1985, + "x": 10388, + "y": 2175, "width": 516, "height": 32, "fontName": "Arial Unicode MS", @@ -45012,17 +45259,17 @@ "visible": true, "vertices": [ { - "x": 10020, - "y": 2325 + "x": 10520, + "y": 2515 }, { - "x": 10020, - "y": 2405 + "x": 10520, + "y": 2595 } ], "label": { - "x": 10022, - "y": 2275, + "x": 10522, + "y": 2465, "width": 362, "height": 32, "fontName": "Arial Unicode MS", @@ -45046,17 +45293,17 @@ "visible": true, "vertices": [ { - "x": 9675, - "y": 2230 + "x": 10165, + "y": 2420 }, { - "x": 9655, - "y": 2230 + "x": 10145, + "y": 2420 } ], "label": { - "x": 9685, - "y": 2192, + "x": 10175, + "y": 2382, "width": 317, "height": 32, "fontName": "Arial Unicode MS", @@ -45080,17 +45327,17 @@ "visible": true, "vertices": [ { - "x": 9760, - "y": 2325 + "x": 10250, + "y": 2515 }, { - "x": 9760, - "y": 2345 + "x": 10250, + "y": 2535 } ], "label": { - "x": 9762, - "y": 2275, + "x": 10252, + "y": 2465, "width": 327, "height": 32, "fontName": "Arial Unicode MS", @@ -45114,25 +45361,25 @@ "visible": true, "vertices": [ { - "x": 6685, - "y": 5540 + "x": 6745, + "y": 6110 }, { - "x": 6730, - "y": 5540 + "x": 8320, + "y": 6110 }, { - "x": 6730, - "y": 5460 + "x": 8320, + "y": 6030 }, { - "x": 6765, - "y": 5460 + "x": 8355, + "y": 6030 } ], "label": { - "x": 6675, - "y": 5502, + "x": 6735, + "y": 6072, "width": 261, "height": 32, "fontName": "Arial Unicode MS", @@ -45156,21 +45403,25 @@ "visible": true, "vertices": [ { - "x": 6570, - "y": 5505 + "x": 6745, + "y": 6080 }, { - "x": 6570, - "y": 5300 + "x": 7800, + "y": 6080 }, { - "x": 6605, - "y": 5300 + "x": 7800, + "y": 6000 + }, + { + "x": 7845, + "y": 6000 } ], "label": { - "x": 6572, - "y": 5475, + "x": 6735, + "y": 6042, "width": 271, "height": 32, "fontName": "Arial Unicode MS", @@ -45194,17 +45445,17 @@ "visible": true, "vertices": [ { - "x": 17495, - "y": 8220 + "x": 17995, + "y": 8750 }, { - "x": 17575, - "y": 8220 + "x": 18075, + "y": 8750 } ], "label": { - "x": 17485, - "y": 8182, + "x": 17985, + "y": 8712, "width": 195, "height": 32, "fontName": "Arial Unicode MS", @@ -45228,25 +45479,25 @@ "visible": true, "vertices": [ { - "x": 8915, - "y": 4720 + "x": 8475, + "y": 5190 }, { - "x": 8240, - "y": 4720 + "x": 7800, + "y": 5190 }, { - "x": 8240, - "y": 4650 + "x": 7800, + "y": 5120 }, { - "x": 8205, - "y": 4650 + "x": 7765, + "y": 5120 } ], "label": { - "x": 8925, - "y": 4682, + "x": 8485, + "y": 5152, "width": 369, "height": 32, "fontName": "Arial Unicode MS", @@ -45270,17 +45521,17 @@ "visible": true, "vertices": [ { - "x": 18775, - "y": 8350 + "x": 19275, + "y": 8900 }, { - "x": 18755, - "y": 8350 + "x": 19255, + "y": 8900 } ], "label": { - "x": 18785, - "y": 8310, + "x": 19285, + "y": 8860, "width": 268, "height": 32, "fontName": "Sans", @@ -45304,17 +45555,17 @@ "visible": true, "vertices": [ { - "x": 18415, - "y": 8350 + "x": 18915, + "y": 8900 }, { - "x": 18395, - "y": 8350 + "x": 18895, + "y": 8900 } ], "label": { - "x": 18425, - "y": 8310, + "x": 18925, + "y": 8860, "width": 150, "height": 32, "fontName": "Sans", @@ -45338,21 +45589,21 @@ "visible": true, "vertices": [ { - "x": 17395, - "y": 7650 + "x": 17875, + "y": 8180 }, { - "x": 17350, - "y": 7650 + "x": 17830, + "y": 8180 }, { - "x": 17350, - "y": 8135 + "x": 17830, + "y": 8665 } ], "label": { - "x": 17405, - "y": 7610, + "x": 17885, + "y": 8140, "width": 204, "height": 32, "fontName": "Sans", @@ -45376,17 +45627,17 @@ "visible": true, "vertices": [ { - "x": 17135, - "y": 8300 + "x": 17635, + "y": 8820 }, { - "x": 17155, - "y": 8300 + "x": 17655, + "y": 8820 } ], "label": { - "x": 17131, - "y": 8270, + "x": 17631, + "y": 8790, "width": 202, "height": 32, "fontName": "Sans", @@ -45410,17 +45661,17 @@ "visible": true, "vertices": [ { - "x": 18190, - "y": 8115 + "x": 18690, + "y": 8645 }, { - "x": 18190, - "y": 8135 + "x": 18690, + "y": 8665 } ], "label": { - "x": 18192, - "y": 8063, + "x": 18692, + "y": 8593, "width": 143, "height": 32, "fontName": "Sans", @@ -45444,17 +45695,17 @@ "visible": true, "vertices": [ { - "x": 18190, - "y": 7865 + "x": 18690, + "y": 8395 }, { - "x": 18190, - "y": 7843 + "x": 18690, + "y": 8373 } ], "label": { - "x": 18198, - "y": 7875, + "x": 18698, + "y": 8405, "width": 171, "height": 32, "fontName": "Sans", @@ -45478,17 +45729,17 @@ "visible": true, "vertices": [ { - "x": 17735, - "y": 7650 + "x": 18215, + "y": 8180 }, { - "x": 18025, - "y": 7650 + "x": 18525, + "y": 8180 } ], "label": { - "x": 17533, - "y": 7610, + "x": 18013, + "y": 8140, "width": 192, "height": 32, "fontName": "Sans", @@ -45512,17 +45763,17 @@ "visible": true, "vertices": [ { - "x": 18190, - "y": 7433 + "x": 18690, + "y": 7973 }, { - "x": 18190, - "y": 7455 + "x": 18690, + "y": 7985 } ], "label": { - "x": 18192, - "y": 7381, + "x": 18692, + "y": 7921, "width": 211, "height": 32, "fontName": "Sans", @@ -45546,25 +45797,17 @@ "visible": true, "vertices": [ { - "x": 17240, - "y": 8135 + "x": 17730, + "y": 8665 }, { - "x": 17240, - "y": 8100 - }, - { - "x": 17220, - "y": 8100 - }, - { - "x": 17220, - "y": 6455 + "x": 17730, + "y": 6995 } ], "label": { - "x": 17025, - "y": 8103, + "x": 17515, + "y": 8633, "width": 217, "height": 32, "fontName": "Sans", @@ -45588,17 +45831,17 @@ "visible": true, "vertices": [ { - "x": 17050, - "y": 7995 + "x": 17550, + "y": 8525 }, { - "x": 17050, - "y": 6455 + "x": 17550, + "y": 6995 } ], "label": { - "x": 17058, - "y": 8005, + "x": 17558, + "y": 8535, "width": 231, "height": 32, "fontName": "Sans", @@ -45622,17 +45865,17 @@ "visible": true, "vertices": [ { - "x": 16795, - "y": 8300 + "x": 17295, + "y": 8820 }, { - "x": 16775, - "y": 8300 + "x": 17275, + "y": 8820 } ], "label": { - "x": 16811, - "y": 8302, + "x": 17311, + "y": 8822, "width": 241, "height": 32, "fontName": "Sans", @@ -45656,17 +45899,17 @@ "visible": true, "vertices": [ { - "x": 18190, - "y": 7045 + "x": 18690, + "y": 7585 }, { - "x": 18190, - "y": 7023 + "x": 18690, + "y": 7563 } ], "label": { - "x": 18192, - "y": 7013, + "x": 18692, + "y": 7553, "width": 254, "height": 32, "fontName": "Sans", @@ -45690,17 +45933,17 @@ "visible": true, "vertices": [ { - "x": 16295, - "y": 6390 + "x": 16795, + "y": 6930 }, { - "x": 16965, - "y": 6390 + "x": 17475, + "y": 6930 } ], "label": { - "x": 16285, - "y": 6350, + "x": 16785, + "y": 6890, "width": 360, "height": 32, "fontName": "Sans", @@ -45724,21 +45967,21 @@ "visible": true, "vertices": [ { - "x": 16080, - "y": 6833 + "x": 16580, + "y": 7383 }, { - "x": 16080, - "y": 8220 + "x": 16580, + "y": 8750 }, { - "x": 16435, - "y": 8220 + "x": 16935, + "y": 8750 } ], "label": { - "x": 16082, - "y": 6781, + "x": 16582, + "y": 7331, "width": 370, "height": 32, "fontName": "Sans", @@ -45762,25 +46005,25 @@ "visible": true, "vertices": [ { - "x": 16795, - "y": 9330 + "x": 17315, + "y": 9900 }, { - "x": 19210, - "y": 9330 + "x": 19710, + "y": 9900 }, { - "x": 19210, - "y": 6320 + "x": 19710, + "y": 6850 }, { - "x": 17305, - "y": 6320 + "x": 17815, + "y": 6850 } ], "label": { - "x": 16785, - "y": 9290, + "x": 17305, + "y": 9860, "width": 335, "height": 32, "fontName": "Sans", @@ -45804,17 +46047,17 @@ "visible": true, "vertices": [ { - "x": 16580, - "y": 9065 + "x": 17100, + "y": 9635 }, { - "x": 16580, - "y": 8355 + "x": 17100, + "y": 8885 } ], "label": { - "x": 16582, - "y": 9033, + "x": 17102, + "y": 9603, "width": 345, "height": 32, "fontName": "Sans", @@ -45838,25 +46081,25 @@ "visible": true, "vertices": [ { - "x": 15845, - "y": 6260 + "x": 16345, + "y": 6810 }, { - "x": 16660, - "y": 6260 + "x": 17170, + "y": 6810 }, { - "x": 16660, - "y": 6320 + "x": 17170, + "y": 6850 }, { - "x": 16965, - "y": 6320 + "x": 17475, + "y": 6850 } ], "label": { - "x": 15835, - "y": 6220, + "x": 16335, + "y": 6770, "width": 319, "height": 32, "fontName": "Sans", @@ -45880,21 +46123,21 @@ "visible": true, "vertices": [ { - "x": 15630, - "y": 6703 + "x": 16130, + "y": 7263 }, { - "x": 15630, - "y": 8290 + "x": 16130, + "y": 8820 }, { - "x": 16435, - "y": 8290 + "x": 16935, + "y": 8820 } ], "label": { - "x": 15632, - "y": 6651, + "x": 16132, + "y": 7211, "width": 329, "height": 32, "fontName": "Sans", @@ -45918,21 +46161,21 @@ "visible": true, "vertices": [ { - "x": 16815, - "y": 5850 + "x": 17325, + "y": 6370 }, { - "x": 17050, - "y": 5850 + "x": 17550, + "y": 6370 }, { - "x": 17050, - "y": 6255 + "x": 17550, + "y": 6795 } ], "label": { - "x": 16805, - "y": 5810, + "x": 17315, + "y": 6330, "width": 355, "height": 32, "fontName": "Sans", @@ -45956,17 +46199,17 @@ "visible": true, "vertices": [ { - "x": 16600, - "y": 6158 + "x": 17110, + "y": 6648 }, { - "x": 16600, - "y": 8155 + "x": 17110, + "y": 8685 } ], "label": { - "x": 16602, - "y": 6106, + "x": 17112, + "y": 6596, "width": 365, "height": 32, "fontName": "Sans", @@ -45990,21 +46233,21 @@ "visible": true, "vertices": [ { - "x": 19255, - "y": 6210 + "x": 19755, + "y": 6750 }, { - "x": 17160, - "y": 6210 + "x": 17650, + "y": 6750 }, { - "x": 17160, - "y": 6255 + "x": 17650, + "y": 6795 } ], "label": { - "x": 19265, - "y": 6170, + "x": 19765, + "y": 6710, "width": 428, "height": 32, "fontName": "Sans", @@ -46028,25 +46271,25 @@ "visible": true, "vertices": [ { - "x": 19470, - "y": 6473 + "x": 19960, + "y": 7013 }, { - "x": 19470, - "y": 8960 + "x": 19960, + "y": 9530 }, { - "x": 16690, - "y": 8960 + "x": 17200, + "y": 9530 }, { - "x": 16690, - "y": 8355 + "x": 17200, + "y": 8885 } ], "label": { - "x": 19472, - "y": 6421, + "x": 19962, + "y": 6961, "width": 438, "height": 32, "fontName": "Sans", @@ -46070,21 +46313,21 @@ "visible": true, "vertices": [ { - "x": 2090, - "y": 3155 + "x": 2110, + "y": 7305 }, { - "x": 2090, - "y": 2830 + "x": 2110, + "y": 6980 }, { - "x": 3195, - "y": 2830 + "x": 3245, + "y": 6980 } ], "label": { - "x": 2098, - "y": 3165, + "x": 2118, + "y": 7315, "width": 369, "height": 32, "fontName": "Sans", @@ -46108,21 +46351,21 @@ "visible": true, "vertices": [ { - "x": 1980, - "y": 3155 + "x": 2010, + "y": 7305 }, { - "x": 1980, - "y": 2730 + "x": 2010, + "y": 6870 }, { - "x": 2025, - "y": 2730 + "x": 2055, + "y": 6870 } ], "label": { - "x": 1988, - "y": 3133, + "x": 2018, + "y": 7283, "width": 379, "height": 32, "fontName": "Sans", @@ -46146,17 +46389,17 @@ "visible": true, "vertices": [ { - "x": 1870, - "y": 3155 + "x": 1910, + "y": 7305 }, { - "x": 1870, - "y": 2652 + "x": 1910, + "y": 6782 } ], "label": { - "x": 1878, - "y": 3165, + "x": 1918, + "y": 7315, "width": 344, "height": 32, "fontName": "Sans", @@ -46180,17 +46423,17 @@ "visible": true, "vertices": [ { - "x": 1785, - "y": 3260 + "x": 1825, + "y": 7410 }, { - "x": 1705, - "y": 3260 + "x": 1745, + "y": 7410 } ], "label": { - "x": 1801, - "y": 3230, + "x": 1841, + "y": 7380, "width": 338, "height": 32, "fontName": "Sans", @@ -46214,17 +46457,17 @@ "visible": true, "vertices": [ { - "x": 2000, - "y": 3360 + "x": 2050, + "y": 7510 }, { - "x": 2000, - "y": 3375 + "x": 2050, + "y": 7535 } ], "label": { - "x": 2008, - "y": 3318, + "x": 2058, + "y": 7468, "width": 318, "height": 32, "fontName": "Sans", @@ -46248,17 +46491,17 @@ "visible": true, "vertices": [ { - "x": 2215, - "y": 3320 + "x": 2255, + "y": 7480 }, { - "x": 2355, - "y": 3320 + "x": 2405, + "y": 7480 } ], "label": { - "x": 2211, - "y": 3322, + "x": 2251, + "y": 7482, "width": 328, "height": 32, "fontName": "Sans", @@ -46282,25 +46525,25 @@ "visible": true, "vertices": [ { - "x": 2215, - "y": 3220 + "x": 2255, + "y": 7380 }, { - "x": 2310, - "y": 3220 + "x": 2360, + "y": 7380 }, { - "x": 2310, - "y": 3140 + "x": 2360, + "y": 7300 }, { - "x": 2355, - "y": 3140 + "x": 2405, + "y": 7300 } ], "label": { - "x": 2211, - "y": 3222, + "x": 2251, + "y": 7382, "width": 385, "height": 32, "fontName": "Sans", @@ -46324,25 +46567,25 @@ "visible": true, "vertices": [ { - "x": 2215, - "y": 3190 + "x": 2255, + "y": 7340 }, { - "x": 2250, - "y": 3190 + "x": 2300, + "y": 7340 }, { - "x": 2250, - "y": 2960 + "x": 2300, + "y": 7110 }, { - "x": 2295, - "y": 2960 + "x": 2345, + "y": 7110 } ], "label": { - "x": 2211, - "y": 3192, + "x": 2251, + "y": 7342, "width": 395, "height": 32, "fontName": "Sans", @@ -46366,17 +46609,17 @@ "visible": true, "vertices": [ { - "x": 2785, - "y": 3140 + "x": 2835, + "y": 7300 }, { - "x": 2865, - "y": 3140 + "x": 2915, + "y": 7300 } ], "label": { - "x": 2781, - "y": 3142, + "x": 2831, + "y": 7302, "width": 447, "height": 32, "fontName": "Sans", @@ -46400,17 +46643,17 @@ "visible": true, "vertices": [ { - "x": 2725, - "y": 2950 + "x": 2775, + "y": 7110 }, { - "x": 2745, - "y": 2950 + "x": 2795, + "y": 7110 } ], "label": { - "x": 2721, - "y": 2952, + "x": 2771, + "y": 7112, "width": 530, "height": 32, "fontName": "Sans", @@ -46434,25 +46677,25 @@ "visible": true, "vertices": [ { - "x": 3170, - "y": 9495 + "x": 3220, + "y": 10055 }, { - "x": 3170, - "y": 8190 + "x": 3220, + "y": 8740 }, { - "x": 3280, - "y": 8190 + "x": 3320, + "y": 8740 }, { - "x": 3280, - "y": 8089 + "x": 3320, + "y": 8639 } ], "label": { - "x": 3178, - "y": 9505, + "x": 3228, + "y": 10065, "width": 521, "height": 32, "fontName": "Sans", @@ -46476,17 +46719,17 @@ "visible": true, "vertices": [ { - "x": 3090, - "y": 9495 + "x": 3150, + "y": 10055 }, { - "x": 3090, - "y": 8181 + "x": 3150, + "y": 8701 } ], "label": { - "x": 3098, - "y": 9473, + "x": 3158, + "y": 10033, "width": 531, "height": 32, "fontName": "Sans", @@ -46510,17 +46753,17 @@ "visible": true, "vertices": [ { - "x": 3025, - "y": 9600 + "x": 3085, + "y": 10160 }, { - "x": 3005, - "y": 9600 + "x": 3065, + "y": 10160 } ], "label": { - "x": 3041, - "y": 9602, + "x": 3101, + "y": 10162, "width": 496, "height": 32, "fontName": "Sans", @@ -46544,17 +46787,17 @@ "visible": true, "vertices": [ { - "x": 3240, - "y": 9700 + "x": 3290, + "y": 10260 }, { - "x": 3240, - "y": 9725 + "x": 3290, + "y": 10285 } ], "label": { - "x": 3248, - "y": 9658, + "x": 3298, + "y": 10218, "width": 490, "height": 32, "fontName": "Sans", @@ -46578,17 +46821,17 @@ "visible": true, "vertices": [ { - "x": 3455, - "y": 9600 + "x": 3515, + "y": 10160 }, { - "x": 3475, - "y": 9600 + "x": 3535, + "y": 10160 } ], "label": { - "x": 3451, - "y": 9570, + "x": 3511, + "y": 10130, "width": 470, "height": 32, "fontName": "Sans", @@ -46612,25 +46855,25 @@ "visible": true, "vertices": [ { - "x": 3390, - "y": 9495 + "x": 3450, + "y": 10055 }, { - "x": 3390, - "y": 9460 + "x": 3450, + "y": 10020 }, { - "x": 3440, - "y": 9460 + "x": 3490, + "y": 10020 }, { - "x": 3440, - "y": 9419 + "x": 3490, + "y": 9979 } ], "label": { - "x": 3398, - "y": 9505, + "x": 3458, + "y": 10065, "width": 480, "height": 32, "fontName": "Sans", @@ -46654,25 +46897,25 @@ "visible": true, "vertices": [ { - "x": 3320, - "y": 9495 - }, - { - "x": 3320, - "y": 9160 + "x": 3370, + "y": 10055 }, { "x": 3370, - "y": 9160 + "y": 9710 }, { - "x": 3370, - "y": 9112 + "x": 3420, + "y": 9710 + }, + { + "x": 3420, + "y": 9672 } ], "label": { - "x": 3328, - "y": 9505, + "x": 3378, + "y": 10065, "width": 537, "height": 32, "fontName": "Sans", @@ -46696,25 +46939,25 @@ "visible": true, "vertices": [ { - "x": 3240, - "y": 9495 + "x": 3300, + "y": 10055 }, { - "x": 3240, - "y": 8660 + "x": 3300, + "y": 9210 }, { - "x": 3290, - "y": 8660 + "x": 3340, + "y": 9210 }, { - "x": 3290, - "y": 8623 + "x": 3340, + "y": 9173 } ], "label": { - "x": 3248, - "y": 9505, + "x": 3308, + "y": 10065, "width": 547, "height": 32, "fontName": "Sans", @@ -46738,17 +46981,17 @@ "visible": true, "vertices": [ { - "x": 3500, - "y": 8945 + "x": 3550, + "y": 9505 }, { - "x": 3500, - "y": 8929 + "x": 3550, + "y": 9479 } ], "label": { - "x": 3508, - "y": 8955, + "x": 3558, + "y": 9515, "width": 599, "height": 32, "fontName": "Sans", @@ -46772,17 +47015,17 @@ "visible": true, "vertices": [ { - "x": 3420, - "y": 8475 + "x": 3480, + "y": 9025 }, { - "x": 3420, - "y": 8459 + "x": 3480, + "y": 8999 } ], "label": { - "x": 3428, - "y": 8485, + "x": 3488, + "y": 9035, "width": 682, "height": 32, "fontName": "Sans", @@ -46806,29 +47049,29 @@ "visible": true, "vertices": [ { - "x": 14015, - "y": 7910 + "x": 14495, + "y": 8470 }, { - "x": 13340, - "y": 7910 + "x": 13820, + "y": 8470 }, { - "x": 13340, - "y": 7850 + "x": 13820, + "y": 8390 }, { - "x": 12570, - "y": 7850 + "x": 13060, + "y": 8390 }, { - "x": 12570, - "y": 7885 + "x": 13060, + "y": 8435 } ], "label": { - "x": 14031, - "y": 7912, + "x": 14511, + "y": 8472, "width": 355, "height": 32, "fontName": "Sans", @@ -46852,17 +47095,17 @@ "visible": true, "vertices": [ { - "x": 14015, - "y": 7940 + "x": 14495, + "y": 8500 }, { - "x": 13305, - "y": 7940 + "x": 13785, + "y": 8500 } ], "label": { - "x": 14031, - "y": 7910, + "x": 14511, + "y": 8470, "width": 365, "height": 32, "fontName": "Sans", @@ -46886,17 +47129,17 @@ "visible": true, "vertices": [ { - "x": 14230, - "y": 7980 + "x": 14710, + "y": 8530 }, { - "x": 14230, - "y": 7995 + "x": 14710, + "y": 8555 } ], "label": { - "x": 14238, - "y": 7970, + "x": 14718, + "y": 8520, "width": 330, "height": 32, "fontName": "Sans", @@ -46920,17 +47163,17 @@ "visible": true, "vertices": [ { - "x": 14445, - "y": 7870 + "x": 14925, + "y": 8430 }, { - "x": 14525, - "y": 7870 + "x": 15005, + "y": 8430 } ], "label": { - "x": 14441, - "y": 7840, + "x": 14921, + "y": 8400, "width": 324, "height": 32, "fontName": "Sans", @@ -46954,17 +47197,17 @@ "visible": true, "vertices": [ { - "x": 14230, - "y": 7775 + "x": 14710, + "y": 8325 }, { - "x": 14230, - "y": 7771 + "x": 14710, + "y": 8311 } ], "label": { - "x": 14238, - "y": 7753, + "x": 14718, + "y": 8303, "width": 304, "height": 32, "fontName": "Sans", @@ -46988,25 +47231,25 @@ "visible": true, "vertices": [ { - "x": 14015, - "y": 7810 + "x": 14495, + "y": 8360 }, { - "x": 13970, - "y": 7810 + "x": 14460, + "y": 8360 }, { - "x": 13970, - "y": 7710 + "x": 14460, + "y": 8280 }, { - "x": 13935, - "y": 7710 + "x": 14415, + "y": 8280 } ], "label": { - "x": 14031, - "y": 7812, + "x": 14511, + "y": 8362, "width": 314, "height": 32, "fontName": "Sans", @@ -47030,25 +47273,25 @@ "visible": true, "vertices": [ { - "x": 14015, - "y": 7840 + "x": 14495, + "y": 8400 }, { - "x": 13460, - "y": 7840 + "x": 13940, + "y": 8400 }, { - "x": 13460, - "y": 7520 + "x": 13940, + "y": 8080 }, { - "x": 13425, - "y": 7520 + "x": 13845, + "y": 8080 } ], "label": { - "x": 14031, - "y": 7842, + "x": 14511, + "y": 8402, "width": 371, "height": 32, "fontName": "Sans", @@ -47072,25 +47315,25 @@ "visible": true, "vertices": [ { - "x": 14015, - "y": 7870 + "x": 14495, + "y": 8420 }, { - "x": 13400, - "y": 7870 + "x": 13880, + "y": 8420 }, { - "x": 13400, - "y": 7720 + "x": 13880, + "y": 8280 }, { - "x": 13365, - "y": 7720 + "x": 13845, + "y": 8280 } ], "label": { - "x": 14031, - "y": 7872, + "x": 14511, + "y": 8422, "width": 381, "height": 32, "fontName": "Sans", @@ -47114,17 +47357,17 @@ "visible": true, "vertices": [ { - "x": 12995, - "y": 7510 + "x": 13415, + "y": 8070 }, { - "x": 12915, - "y": 7510 + "x": 13395, + "y": 8070 } ], "label": { - "x": 13011, - "y": 7512, + "x": 13431, + "y": 8072, "width": 433, "height": 32, "fontName": "Sans", @@ -47148,17 +47391,17 @@ "visible": true, "vertices": [ { - "x": 12935, - "y": 7720 + "x": 13415, + "y": 8270 }, { - "x": 12915, - "y": 7720 + "x": 13395, + "y": 8270 } ], "label": { - "x": 12951, - "y": 7722, + "x": 13431, + "y": 8272, "width": 516, "height": 32, "fontName": "Sans", @@ -47182,25 +47425,25 @@ "visible": true, "vertices": [ { - "x": 12620, - "y": 410 + "x": 9980, + "y": 440 }, { - "x": 12620, - "y": 1550 + "x": 9980, + "y": 1590 }, { - "x": 12570, - "y": 1550 + "x": 9930, + "y": 1590 }, { - "x": 12570, - "y": 1595 + "x": 9930, + "y": 1785 } ], "label": { - "x": 12628, - "y": 400, + "x": 9988, + "y": 430, "width": 435, "height": 32, "fontName": "Sans", @@ -47224,17 +47467,17 @@ "visible": true, "vertices": [ { - "x": 12700, - "y": 410 + "x": 10050, + "y": 440 }, { - "x": 12700, - "y": 1775 + "x": 10050, + "y": 1625 } ], "label": { - "x": 12708, - "y": 368, + "x": 10058, + "y": 398, "width": 445, "height": 32, "fontName": "Sans", @@ -47258,17 +47501,17 @@ "visible": true, "vertices": [ { - "x": 12755, - "y": 310 + "x": 10115, + "y": 330 }, { - "x": 12775, - "y": 310 + "x": 10135, + "y": 330 } ], "label": { - "x": 12751, - "y": 312, + "x": 10111, + "y": 332, "width": 410, "height": 32, "fontName": "Sans", @@ -47292,17 +47535,17 @@ "visible": true, "vertices": [ { - "x": 12540, - "y": 205 + "x": 9900, + "y": 235 }, { - "x": 12540, + "x": 9900, "y": 151 } ], "label": { - "x": 12548, - "y": 183, + "x": 9908, + "y": 213, "width": 404, "height": 32, "fontName": "Sans", @@ -47326,17 +47569,17 @@ "visible": true, "vertices": [ { - "x": 12325, - "y": 310 + "x": 9685, + "y": 330 }, { - "x": 12305, - "y": 310 + "x": 9665, + "y": 330 } ], "label": { - "x": 12341, - "y": 280, + "x": 9701, + "y": 300, "width": 384, "height": 32, "fontName": "Sans", @@ -47360,25 +47603,25 @@ "visible": true, "vertices": [ { - "x": 12390, - "y": 410 + "x": 9750, + "y": 440 }, { - "x": 12390, - "y": 450 + "x": 9750, + "y": 480 }, { - "x": 12340, - "y": 450 + "x": 9700, + "y": 480 }, { - "x": 12340, - "y": 495 + "x": 9700, + "y": 525 } ], "label": { - "x": 12398, - "y": 400, + "x": 9758, + "y": 430, "width": 394, "height": 32, "fontName": "Sans", @@ -47402,25 +47645,25 @@ "visible": true, "vertices": [ { - "x": 12470, - "y": 410 + "x": 9820, + "y": 440 }, { - "x": 12470, - "y": 700 + "x": 9820, + "y": 730 }, { - "x": 12410, - "y": 700 + "x": 9780, + "y": 730 }, { - "x": 12410, - "y": 735 + "x": 9780, + "y": 765 } ], "label": { - "x": 12478, - "y": 400, + "x": 9828, + "y": 430, "width": 451, "height": 32, "fontName": "Sans", @@ -47444,25 +47687,25 @@ "visible": true, "vertices": [ { - "x": 12540, - "y": 410 + "x": 9890, + "y": 440 }, { - "x": 12540, - "y": 1130 + "x": 9890, + "y": 1170 }, { - "x": 12490, - "y": 1130 + "x": 9850, + "y": 1170 }, { - "x": 12490, - "y": 1175 + "x": 9850, + "y": 1205 } ], "label": { - "x": 12548, - "y": 400, + "x": 9898, + "y": 430, "width": 461, "height": 32, "fontName": "Sans", @@ -47486,17 +47729,17 @@ "visible": true, "vertices": [ { - "x": 12290, - "y": 902 + "x": 9640, + "y": 932 }, { - "x": 12290, - "y": 925 + "x": 9640, + "y": 955 } ], "label": { - "x": 12298, - "y": 892, + "x": 9648, + "y": 922, "width": 513, "height": 32, "fontName": "Sans", @@ -47520,17 +47763,17 @@ "visible": true, "vertices": [ { - "x": 12360, - "y": 1323 + "x": 9720, + "y": 1353 }, { - "x": 12360, - "y": 1345 + "x": 9720, + "y": 1375 } ], "label": { - "x": 12368, - "y": 1313, + "x": 9728, + "y": 1343, "width": 596, "height": 32, "fontName": "Sans", @@ -47554,21 +47797,21 @@ "visible": true, "vertices": [ { - "x": 830, - "y": 10555 + "x": 810, + "y": 11145 }, { - "x": 830, - "y": 9640 + "x": 810, + "y": 10230 }, { - "x": 1145, - "y": 9640 + "x": 1205, + "y": 10230 } ], "label": { - "x": 838, - "y": 10565, + "x": 818, + "y": 11155, "width": 397, "height": 32, "fontName": "Sans", @@ -47592,21 +47835,21 @@ "visible": true, "vertices": [ { - "x": 720, - "y": 10555 + "x": 710, + "y": 11145 }, { - "x": 720, - "y": 9430 + "x": 710, + "y": 10120 }, { - "x": 765, - "y": 9430 + "x": 745, + "y": 10120 } ], "label": { - "x": 728, - "y": 10533, + "x": 718, + "y": 11123, "width": 407, "height": 32, "fontName": "Sans", @@ -47631,16 +47874,16 @@ "vertices": [ { "x": 610, - "y": 10555 + "y": 11145 }, { "x": 610, - "y": 9357 + "y": 10037 } ], "label": { "x": 618, - "y": 10565, + "y": 11155, "width": 372, "height": 32, "fontName": "Sans", @@ -47665,16 +47908,16 @@ "vertices": [ { "x": 525, - "y": 10660 + "y": 11240 }, { "x": 445, - "y": 10660 + "y": 11240 } ], "label": { "x": 541, - "y": 10630, + "y": 11210, "width": 366, "height": 32, "fontName": "Sans", @@ -47699,16 +47942,16 @@ "vertices": [ { "x": 740, - "y": 10760 + "y": 11350 }, { "x": 740, - "y": 10775 + "y": 11365 } ], "label": { "x": 748, - "y": 10718, + "y": 11308, "width": 346, "height": 32, "fontName": "Sans", @@ -47733,16 +47976,16 @@ "vertices": [ { "x": 955, - "y": 10720 + "y": 11310 }, { "x": 1095, - "y": 10720 + "y": 11310 } ], "label": { "x": 951, - "y": 10722, + "y": 11312, "width": 356, "height": 32, "fontName": "Sans", @@ -47767,24 +48010,24 @@ "vertices": [ { "x": 955, - "y": 10620 + "y": 11200 }, { "x": 1060, - "y": 10620 + "y": 11200 }, { "x": 1060, - "y": 10540 + "y": 11130 }, { "x": 1095, - "y": 10540 + "y": 11130 } ], "label": { "x": 951, - "y": 10622, + "y": 11202, "width": 413, "height": 32, "fontName": "Sans", @@ -47809,24 +48052,24 @@ "vertices": [ { "x": 955, - "y": 10590 + "y": 11180 }, { "x": 1000, - "y": 10590 + "y": 11180 }, { "x": 1000, - "y": 10350 + "y": 10950 }, { "x": 1035, - "y": 10350 + "y": 10950 } ], "label": { "x": 951, - "y": 10592, + "y": 11182, "width": 423, "height": 32, "fontName": "Sans", @@ -47851,16 +48094,16 @@ "vertices": [ { "x": 1525, - "y": 10540 + "y": 11130 }, { - "x": 1545, - "y": 10540 + "x": 1555, + "y": 11130 } ], "label": { "x": 1521, - "y": 10542, + "y": 11132, "width": 475, "height": 32, "fontName": "Sans", @@ -47885,16 +48128,16 @@ "vertices": [ { "x": 1465, - "y": 10340 + "y": 10940 }, { - "x": 1485, - "y": 10340 + "x": 1495, + "y": 10940 } ], "label": { "x": 1461, - "y": 10342, + "y": 10942, "width": 558, "height": 32, "fontName": "Sans", @@ -47918,21 +48161,21 @@ "visible": true, "vertices": [ { - "x": 21610, - "y": 10315 + "x": 22120, + "y": 10865 }, { - "x": 21610, - "y": 10010 + "x": 22120, + "y": 10590 }, { - "x": 1575, - "y": 10010 + "x": 1635, + "y": 10590 } ], "label": { - "x": 21618, - "y": 10325, + "x": 22128, + "y": 10875, "width": 341, "height": 32, "fontName": "Sans", @@ -47956,25 +48199,25 @@ "visible": true, "vertices": [ { - "x": 21530, - "y": 10315 + "x": 22040, + "y": 10865 }, { - "x": 21530, - "y": 10200 + "x": 22040, + "y": 10830 }, { - "x": 21490, - "y": 10200 + "x": 22000, + "y": 10830 }, { - "x": 21490, - "y": 10181 + "x": 22000, + "y": 10771 } ], "label": { - "x": 21538, - "y": 10293, + "x": 22048, + "y": 10843, "width": 351, "height": 32, "fontName": "Sans", @@ -47998,17 +48241,17 @@ "visible": true, "vertices": [ { - "x": 21475, - "y": 10420 + "x": 21975, + "y": 10970 }, { - "x": 21455, - "y": 10420 + "x": 21955, + "y": 10970 } ], "label": { - "x": 21491, - "y": 10422, + "x": 21991, + "y": 10972, "width": 316, "height": 32, "fontName": "Sans", @@ -48032,17 +48275,17 @@ "visible": true, "vertices": [ { - "x": 21690, - "y": 10520 + "x": 22190, + "y": 11070 }, { - "x": 21690, - "y": 10605 + "x": 22190, + "y": 11155 } ], "label": { - "x": 21698, - "y": 10478, + "x": 22198, + "y": 11028, "width": 310, "height": 32, "fontName": "Sans", @@ -48066,17 +48309,17 @@ "visible": true, "vertices": [ { - "x": 21905, - "y": 10420 + "x": 22405, + "y": 10970 }, { - "x": 21925, - "y": 10420 + "x": 22425, + "y": 10970 } ], "label": { - "x": 21901, - "y": 10390, + "x": 22401, + "y": 10940, "width": 290, "height": 32, "fontName": "Sans", @@ -48100,17 +48343,17 @@ "visible": true, "vertices": [ { - "x": 21840, - "y": 10315 + "x": 22340, + "y": 10865 }, { - "x": 21840, - "y": 9112 + "x": 22340, + "y": 9882 } ], "label": { - "x": 21848, - "y": 10325, + "x": 22348, + "y": 10875, "width": 300, "height": 32, "fontName": "Sans", @@ -48134,25 +48377,25 @@ "visible": true, "vertices": [ { - "x": 21760, - "y": 10315 + "x": 22270, + "y": 10865 }, { - "x": 21760, - "y": 9340 + "x": 22270, + "y": 9920 }, { - "x": 21710, - "y": 9340 + "x": 22160, + "y": 9920 }, { - "x": 21710, - "y": 9302 + "x": 22160, + "y": 9882 } ], "label": { - "x": 21768, - "y": 10325, + "x": 22278, + "y": 10875, "width": 357, "height": 32, "fontName": "Sans", @@ -48176,25 +48419,25 @@ "visible": true, "vertices": [ { - "x": 21680, - "y": 10315 + "x": 22190, + "y": 10865 }, { - "x": 21680, - "y": 9950 + "x": 22190, + "y": 10530 }, { - "x": 21640, - "y": 9950 + "x": 22150, + "y": 10530 }, { - "x": 21640, - "y": 9903 + "x": 22150, + "y": 10493 } ], "label": { - "x": 21688, - "y": 10325, + "x": 22198, + "y": 10875, "width": 367, "height": 32, "fontName": "Sans", @@ -48218,17 +48461,17 @@ "visible": true, "vertices": [ { - "x": 21460, - "y": 9135 + "x": 22030, + "y": 9715 }, { - "x": 21460, - "y": 9112 + "x": 22030, + "y": 9692 } ], "label": { - "x": 21468, - "y": 9145, + "x": 22038, + "y": 9725, "width": 419, "height": 32, "fontName": "Sans", @@ -48252,17 +48495,17 @@ "visible": true, "vertices": [ { - "x": 21510, - "y": 9755 + "x": 22010, + "y": 10345 }, { - "x": 21510, - "y": 9742 + "x": 22010, + "y": 10322 } ], "label": { - "x": 21518, - "y": 9765, + "x": 22018, + "y": 10355, "width": 502, "height": 32, "fontName": "Sans", @@ -48286,29 +48529,29 @@ "visible": true, "vertices": [ { - "x": 20335, - "y": 9700 + "x": 20835, + "y": 10280 }, { - "x": 19660, - "y": 9700 + "x": 20160, + "y": 10280 }, { - "x": 19660, - "y": 9630 + "x": 20160, + "y": 10200 }, { - "x": 15230, - "y": 9630 + "x": 15720, + "y": 10200 }, { - "x": 15230, - "y": 9785 + "x": 15720, + "y": 10365 } ], "label": { - "x": 20351, - "y": 9702, + "x": 20851, + "y": 10282, "width": 427, "height": 32, "fontName": "Sans", @@ -48332,17 +48575,17 @@ "visible": true, "vertices": [ { - "x": 20335, - "y": 9730 + "x": 20835, + "y": 10310 }, { - "x": 19625, - "y": 9730 + "x": 20125, + "y": 10310 } ], "label": { - "x": 20351, - "y": 9700, + "x": 20851, + "y": 10280, "width": 437, "height": 32, "fontName": "Sans", @@ -48366,17 +48609,17 @@ "visible": true, "vertices": [ { - "x": 20550, - "y": 9760 + "x": 21050, + "y": 10350 }, { - "x": 20550, - "y": 9785 + "x": 21050, + "y": 10365 } ], "label": { - "x": 20558, - "y": 9750, + "x": 21058, + "y": 10340, "width": 402, "height": 32, "fontName": "Sans", @@ -48400,17 +48643,17 @@ "visible": true, "vertices": [ { - "x": 20765, - "y": 9660 + "x": 21265, + "y": 10240 }, { - "x": 20845, - "y": 9660 + "x": 21345, + "y": 10240 } ], "label": { - "x": 20761, - "y": 9630, + "x": 21261, + "y": 10210, "width": 396, "height": 32, "fontName": "Sans", @@ -48434,17 +48677,17 @@ "visible": true, "vertices": [ { - "x": 20550, - "y": 9555 + "x": 21050, + "y": 10145 }, { - "x": 20550, - "y": 9561 + "x": 21050, + "y": 10121 } ], "label": { - "x": 20558, - "y": 9533, + "x": 21058, + "y": 10123, "width": 376, "height": 32, "fontName": "Sans", @@ -48468,25 +48711,25 @@ "visible": true, "vertices": [ { - "x": 20335, - "y": 9590 + "x": 20835, + "y": 10180 }, { - "x": 20290, - "y": 9590 + "x": 20790, + "y": 10180 }, { - "x": 20290, - "y": 9500 + "x": 20790, + "y": 10090 }, { - "x": 20255, - "y": 9500 + "x": 20755, + "y": 10090 } ], "label": { - "x": 20351, - "y": 9592, + "x": 20851, + "y": 10182, "width": 386, "height": 32, "fontName": "Sans", @@ -48510,25 +48753,25 @@ "visible": true, "vertices": [ { - "x": 20335, - "y": 9620 + "x": 20835, + "y": 10210 }, { - "x": 19780, - "y": 9620 + "x": 20280, + "y": 10210 }, { - "x": 19780, - "y": 5200 + "x": 20280, + "y": 5700 }, { - "x": 19745, - "y": 5200 + "x": 20245, + "y": 5700 } ], "label": { - "x": 20351, - "y": 9622, + "x": 20851, + "y": 10212, "width": 443, "height": 32, "fontName": "Sans", @@ -48552,25 +48795,25 @@ "visible": true, "vertices": [ { - "x": 20335, - "y": 9650 + "x": 20835, + "y": 10240 }, { - "x": 19720, - "y": 9650 + "x": 20220, + "y": 10240 }, { - "x": 19720, - "y": 5380 + "x": 20220, + "y": 5870 }, { - "x": 19685, - "y": 5380 + "x": 20185, + "y": 5870 } ], "label": { - "x": 20351, - "y": 9652, + "x": 20851, + "y": 10242, "width": 453, "height": 32, "fontName": "Sans", @@ -48594,17 +48837,17 @@ "visible": true, "vertices": [ { - "x": 19315, - "y": 5190 + "x": 19815, + "y": 5690 }, { - "x": 19295, - "y": 5190 + "x": 19795, + "y": 5690 } ], "label": { - "x": 19331, - "y": 5192, + "x": 19831, + "y": 5692, "width": 505, "height": 32, "fontName": "Sans", @@ -48628,17 +48871,17 @@ "visible": true, "vertices": [ { - "x": 19255, - "y": 5380 + "x": 19755, + "y": 5870 }, { - "x": 19235, - "y": 5380 + "x": 19735, + "y": 5870 } ], "label": { - "x": 19271, - "y": 5382, + "x": 19771, + "y": 5872, "width": 588, "height": 32, "fontName": "Sans", @@ -48662,25 +48905,25 @@ "visible": true, "vertices": [ { - "x": 15335, - "y": 9050 + "x": 15835, + "y": 9610 }, { - "x": 15570, - "y": 9050 + "x": 16070, + "y": 9610 }, { - "x": 15570, - "y": 6750 + "x": 16070, + "y": 7300 }, { - "x": 15865, - "y": 6750 + "x": 16365, + "y": 7300 } ], "label": { - "x": 15331, - "y": 9052, + "x": 15831, + "y": 9612, "width": 393, "height": 32, "fontName": "Sans", @@ -48704,17 +48947,17 @@ "visible": true, "vertices": [ { - "x": 15120, - "y": 9190 + "x": 15620, + "y": 9750 }, { - "x": 15120, - "y": 9205 + "x": 15620, + "y": 9775 } ], "label": { - "x": 15128, - "y": 9148, + "x": 15628, + "y": 9708, "width": 403, "height": 32, "fontName": "Sans", @@ -48738,17 +48981,17 @@ "visible": true, "vertices": [ { - "x": 15335, - "y": 9150 + "x": 15835, + "y": 9710 }, { - "x": 16365, - "y": 9150 + "x": 16885, + "y": 9710 } ], "label": { - "x": 15331, - "y": 9152, + "x": 15831, + "y": 9712, "width": 368, "height": 32, "fontName": "Sans", @@ -48772,17 +49015,17 @@ "visible": true, "vertices": [ { - "x": 14990, - "y": 8985 + "x": 15480, + "y": 9545 }, { - "x": 14990, - "y": 5531 + "x": 15480, + "y": 6001 } ], "label": { - "x": 14998, - "y": 8963, + "x": 15488, + "y": 9523, "width": 362, "height": 32, "fontName": "Sans", @@ -48806,17 +49049,17 @@ "visible": true, "vertices": [ { - "x": 14905, - "y": 9080 + "x": 15405, + "y": 9650 }, { - "x": 14825, - "y": 9080 + "x": 15325, + "y": 9650 } ], "label": { - "x": 14921, - "y": 9050, + "x": 15421, + "y": 9620, "width": 342, "height": 32, "fontName": "Sans", @@ -48840,25 +49083,25 @@ "visible": true, "vertices": [ { - "x": 15335, - "y": 9020 + "x": 15835, + "y": 9580 }, { - "x": 15370, - "y": 9020 + "x": 15870, + "y": 9580 }, { - "x": 15370, - "y": 6620 + "x": 15870, + "y": 7180 }, { - "x": 15415, - "y": 6620 + "x": 15915, + "y": 7180 } ], "label": { - "x": 15331, - "y": 9022, + "x": 15831, + "y": 9582, "width": 352, "height": 32, "fontName": "Sans", @@ -48882,21 +49125,21 @@ "visible": true, "vertices": [ { - "x": 15220, - "y": 8985 + "x": 15680, + "y": 9545 }, { - "x": 15220, - "y": 5850 + "x": 15680, + "y": 6370 }, { - "x": 15255, - "y": 5850 + "x": 15725, + "y": 6370 } ], "label": { - "x": 15228, - "y": 8995, + "x": 15688, + "y": 9555, "width": 409, "height": 32, "fontName": "Sans", @@ -48920,21 +49163,21 @@ "visible": true, "vertices": [ { - "x": 15100, - "y": 8985 + "x": 15580, + "y": 9545 }, { - "x": 15100, - "y": 5540 + "x": 15580, + "y": 6040 }, { - "x": 19255, - "y": 5540 + "x": 19755, + "y": 6040 } ], "label": { - "x": 15108, - "y": 8995, + "x": 15588, + "y": 9555, "width": 419, "height": 32, "fontName": "Sans", @@ -48958,17 +49201,17 @@ "visible": true, "vertices": [ { - "x": 15685, - "y": 5850 + "x": 16155, + "y": 6370 }, { - "x": 16385, - "y": 5850 + "x": 16895, + "y": 6370 } ], "label": { - "x": 15681, - "y": 5852, + "x": 16151, + "y": 6372, "width": 471, "height": 32, "fontName": "Sans", @@ -48992,17 +49235,17 @@ "visible": true, "vertices": [ { - "x": 19470, - "y": 5623 + "x": 19960, + "y": 6113 }, { - "x": 19470, - "y": 5945 + "x": 19960, + "y": 6485 } ], "label": { - "x": 19478, - "y": 5613, + "x": 19968, + "y": 6103, "width": 554, "height": 32, "fontName": "Sans", @@ -49026,21 +49269,25 @@ "visible": true, "vertices": [ { - "x": 6685, - "y": 5550 + "x": 6745, + "y": 6050 }, { - "x": 6992, - "y": 5550 + "x": 7290, + "y": 6050 }, { - "x": 6992, - "y": 5737 + "x": 7290, + "y": 5970 + }, + { + "x": 7335, + "y": 5970 } ], "label": { - "x": 6675, - "y": 5510, + "x": 6735, + "y": 6010, "width": 306, "height": 32, "fontName": "Sans", @@ -49064,25 +49311,25 @@ "visible": true, "vertices": [ { - "x": 6480, - "y": 5764 + "x": 6745, + "y": 6030 }, { - "x": 6480, - "y": 5826 + "x": 6780, + "y": 6030 }, { - "x": 6606, - "y": 5826 + "x": 6780, + "y": 5950 }, { - "x": 6606, - "y": 5889 + "x": 6825, + "y": 5950 } ], "label": { - "x": 6488, - "y": 5754, + "x": 6741, + "y": 6032, "width": 316, "height": 32, "fontName": "Sans", @@ -49097,6 +49344,44 @@ "isFontItalic": false, "isVisible": false } + }, + { + "name": "fk_UserService_SetPasswordForUserRequest_1", + "sourceTableName": "UserService", + "sourceSchemaName": "CMS", + "lineWidth": 1, + "visible": true, + "vertices": [ + { + "x": 6590, + "y": 5995 + }, + { + "x": 6590, + "y": 5760 + }, + { + "x": 6635, + "y": 5760 + } + ], + "label": { + "x": 6275, + "y": 5963, + "width": 317, + "height": 32, + "fontName": "Sans", + "fontSize": 14, + "fontColor": { + "r": 51, + "g": 51, + "b": 51, + "a": 1 + }, + "isFontBold": false, + "isFontItalic": false, + "isVisible": false + } } ], "viewRelations": [] diff --git a/src/CMSMicroservice.Application/Common/Interfaces/IHashService.cs b/src/CMSMicroservice.Application/Common/Interfaces/IHashService.cs new file mode 100644 index 0000000..4478554 --- /dev/null +++ b/src/CMSMicroservice.Application/Common/Interfaces/IHashService.cs @@ -0,0 +1,18 @@ +namespace CMSMicroservice.Application.Common.Interfaces; +public interface IHashService +{ + // Computes a deterministic SHA-256 hex string for the given input (legacy helper) + string ComputeSha256Hex(string input); + // Compares plain input with a stored hex hash (case-insensitive) (legacy helper) + bool VerifySha256Hex(string input, string? expectedHexHash); + + // Computes HMAC-SHA256 hex using a provided secret (for OTP and similar) + string ComputeHmacSha256Hex(string input, string secret); + // Verifies input against expected HMAC-SHA256 hex using the secret + bool VerifyHmacSha256Hex(string input, string? expectedHexHash, string secret); + + // Creates a salted password hash using PBKDF2; returns an encoded string containing algorithm params and salt + string HashPassword(string password); + // Verifies a password against the stored hash; supports both PBKDF2 format and legacy SHA-256 hex + bool VerifyPassword(string password, string? storedHash); +} diff --git a/src/CMSMicroservice.Application/OtpTokenCQ/Commands/CreateNewOtpToken/CreateNewOtpTokenCommandHandler.cs b/src/CMSMicroservice.Application/OtpTokenCQ/Commands/CreateNewOtpToken/CreateNewOtpTokenCommandHandler.cs index c7b3501..50526e0 100644 --- a/src/CMSMicroservice.Application/OtpTokenCQ/Commands/CreateNewOtpToken/CreateNewOtpTokenCommandHandler.cs +++ b/src/CMSMicroservice.Application/OtpTokenCQ/Commands/CreateNewOtpToken/CreateNewOtpTokenCommandHandler.cs @@ -7,11 +7,13 @@ public class CreateNewOtpTokenCommandHandler : IRequestHandler { private readonly IApplicationDbContext _context; private readonly IConfiguration _cfg; + private readonly IHashService _hashService; - public VerifyOtpTokenCommandHandler(IApplicationDbContext context, IConfiguration cfg) + public VerifyOtpTokenCommandHandler(IApplicationDbContext context, IConfiguration cfg, IHashService hashService) { _context = context; _cfg = cfg; + _hashService = hashService; } const int MaxAttempts = 5; // محدودیت تلاش @@ -21,7 +21,6 @@ public class VerifyOtpTokenCommandHandler : IRequestHandler o.Mobile == mobile && o.Purpose == purpose && !o.IsUsed && o.ExpiresAt > now) .OrderByDescending(o => o.Created) @@ -33,7 +32,8 @@ public class VerifyOtpTokenCommandHandler : IRequestHandler Hash(code).Equals(hexHash, StringComparison.OrdinalIgnoreCase); - } diff --git a/src/CMSMicroservice.Application/UserCQ/Queries/AdminGetJwtToken/AdminGetJwtTokenQueryHandler.cs b/src/CMSMicroservice.Application/UserCQ/Queries/AdminGetJwtToken/AdminGetJwtTokenQueryHandler.cs index b7b7b1b..b93985a 100644 --- a/src/CMSMicroservice.Application/UserCQ/Queries/AdminGetJwtToken/AdminGetJwtTokenQueryHandler.cs +++ b/src/CMSMicroservice.Application/UserCQ/Queries/AdminGetJwtToken/AdminGetJwtTokenQueryHandler.cs @@ -2,15 +2,33 @@ namespace CMSMicroservice.Application.UserCQ.Queries.AdminGetJwtToken; public class AdminGetJwtTokenQueryHandler : IRequestHandler { private readonly IApplicationDbContext _context; + private readonly IGenerateJwtToken _generateJwt; + private readonly IHashService _hashService; - public AdminGetJwtTokenQueryHandler(IApplicationDbContext context) + public AdminGetJwtTokenQueryHandler(IApplicationDbContext context, IGenerateJwtToken generateJwt, IHashService hashService) { _context = context; + _generateJwt = generateJwt; + _hashService = hashService; } public async Task Handle(AdminGetJwtTokenQuery request, CancellationToken cancellationToken) { - //TODO: Implement your business logic - return new AdminGetJwtTokenResponseDto(); + var user = await _context.Users + .Include(u => u.UserRoles) + .ThenInclude(ur => ur.Role) + .FirstOrDefaultAsync(f => f.Mobile == request.Username, cancellationToken); + if (user == null) + throw new Exception("Invalid username or password."); + + // verify password (supports PBKDF2 or legacy SHA-256) + if (!_hashService.VerifyPassword(request.Password, user.HashPassword)) + throw new Exception("Invalid username or password."); + + return new AdminGetJwtTokenResponseDto() + { + Token = await _generateJwt.GenerateJwtToken(user), + }; + } } diff --git a/src/CMSMicroservice.Infrastructure/ConfigureServices.cs b/src/CMSMicroservice.Infrastructure/ConfigureServices.cs index 8c627a8..bd68d5a 100644 --- a/src/CMSMicroservice.Infrastructure/ConfigureServices.cs +++ b/src/CMSMicroservice.Infrastructure/ConfigureServices.cs @@ -19,6 +19,7 @@ public static class ConfigureServices services.AddScoped(); services.AddScoped(); services.AddScoped(); + services.AddScoped(); services.AddScoped(p => p.GetRequiredService()); if (configuration.GetValue("UseInMemoryDatabase")) { diff --git a/src/CMSMicroservice.Infrastructure/Services/HashService.cs b/src/CMSMicroservice.Infrastructure/Services/HashService.cs new file mode 100644 index 0000000..3aa9cce --- /dev/null +++ b/src/CMSMicroservice.Infrastructure/Services/HashService.cs @@ -0,0 +1,88 @@ +using CMSMicroservice.Application.Common.Interfaces; +using System.Security.Cryptography; +using System.Text; + +namespace CMSMicroservice.Infrastructure.Services; +public class HashService : IHashService +{ + // PBKDF2 parameters + private const int SaltSize = 16; // 128-bit + private const int KeySize = 32; // 256-bit + private const int Iterations = 100_000; // strong enough default + private const string Pbkdf2Prefix = "PBKDF2"; // version marker + + public string ComputeSha256Hex(string input) + { + using var sha = SHA256.Create(); + var bytes = sha.ComputeHash(Encoding.UTF8.GetBytes(input)); + return Convert.ToHexString(bytes); + } + + public bool VerifySha256Hex(string input, string? expectedHexHash) + { + if (string.IsNullOrEmpty(expectedHexHash)) return false; + var actual = ComputeSha256Hex(input); + return actual.Equals(expectedHexHash, StringComparison.OrdinalIgnoreCase); + } + + public string ComputeHmacSha256Hex(string input, string secret) + { + using var h = new HMACSHA256(Encoding.UTF8.GetBytes(secret)); + var hash = h.ComputeHash(Encoding.UTF8.GetBytes(input)); + return Convert.ToHexString(hash); + } + + public bool VerifyHmacSha256Hex(string input, string? expectedHexHash, string secret) + { + if (string.IsNullOrEmpty(expectedHexHash)) return false; + var actual = ComputeHmacSha256Hex(input, secret); + return actual.Equals(expectedHexHash, StringComparison.OrdinalIgnoreCase); + } + + public string HashPassword(string password) + { + // generate salt + Span salt = stackalloc byte[SaltSize]; + RandomNumberGenerator.Fill(salt); + + // derive key + var pbkdf2 = new Rfc2898DeriveBytes(password, salt.ToArray(), Iterations, HashAlgorithmName.SHA256); + var derived = pbkdf2.GetBytes(KeySize); + + // encode: PBKDF2$$$ + return string.Join('$', Pbkdf2Prefix, Iterations.ToString(), Convert.ToBase64String(salt.ToArray()), Convert.ToBase64String(derived)); + } + + public bool VerifyPassword(string password, string? storedHash) + { + if (string.IsNullOrWhiteSpace(storedHash)) return false; + + // legacy: raw SHA-256 hex + if (!storedHash.Contains('$')) + { + return VerifySha256Hex(password, storedHash); + } + + var parts = storedHash.Split('$'); + if (parts.Length != 4 || !string.Equals(parts[0], Pbkdf2Prefix, StringComparison.Ordinal)) + return false; + + if (!int.TryParse(parts[1], out var iterations) || iterations <= 0) return false; + byte[] salt; + byte[] expectedKey; + try + { + salt = Convert.FromBase64String(parts[2]); + expectedKey = Convert.FromBase64String(parts[3]); + } + catch + { + return false; + } + + var pbkdf2 = new Rfc2898DeriveBytes(password, salt, iterations, HashAlgorithmName.SHA256); + var actualKey = pbkdf2.GetBytes(expectedKey.Length); + // fixed-time comparison + return CryptographicOperations.FixedTimeEquals(actualKey, expectedKey); + } +}