Spaces:
Running
Running
User commited on
Commit ·
631e3a2
1
Parent(s): 8889023
adjust: messages and namings
Browse files
TaskTrackingSystem.Shared/Result.cs
CHANGED
|
@@ -84,8 +84,8 @@ namespace TaskTrackingSystem.Shared
|
|
| 84 |
public const string FailedToUpdateRole = "Failed to update role.";
|
| 85 |
public const string FailedToCreateRole = "Failed to create role.";
|
| 86 |
public static string RoleNotFound(long id) => $"Role with ID {id} not found.";
|
| 87 |
-
public const string
|
| 88 |
-
public static string
|
| 89 |
|
| 90 |
// User
|
| 91 |
public const string FillAllFields = "Please fill in all required fields.";
|
|
|
|
| 84 |
public const string FailedToUpdateRole = "Failed to update role.";
|
| 85 |
public const string FailedToCreateRole = "Failed to create role.";
|
| 86 |
public static string RoleNotFound(long id) => $"Role with ID {id} not found.";
|
| 87 |
+
public const string AccessCodesCannotBeNull = "Access codes cannot be null.";
|
| 88 |
+
public static string InvalidAccessCodes(string ids) => $"The following access codes are invalid or deleted: {ids}";
|
| 89 |
|
| 90 |
// User
|
| 91 |
public const string FillAllFields = "Please fill in all required fields.";
|
TaskTrackingSystem.WebApi/Features/Role/RoleController.cs
CHANGED
|
@@ -61,9 +61,9 @@ namespace TaskTrackingSystem.WebApi.Features.Role
|
|
| 61 |
|
| 62 |
[HttpGet("{id}/menus")]
|
| 63 |
[HttpGet("{id}/access")]
|
| 64 |
-
public async Task<ActionResult<Result<List<string>>>>
|
| 65 |
{
|
| 66 |
-
var result = await _roleService.
|
| 67 |
if (!result.IsSuccess)
|
| 68 |
{
|
| 69 |
return StatusCode(result.StatusCode, new { message = result.ErrorMessage });
|
|
@@ -86,3 +86,4 @@ namespace TaskTrackingSystem.WebApi.Features.Role
|
|
| 86 |
}
|
| 87 |
|
| 88 |
|
|
|
|
|
|
| 61 |
|
| 62 |
[HttpGet("{id}/menus")]
|
| 63 |
[HttpGet("{id}/access")]
|
| 64 |
+
public async Task<ActionResult<Result<List<string>>>> GetAssignedAccessCodes(long id)
|
| 65 |
{
|
| 66 |
+
var result = await _roleService.GetAssignedAccessCodesByRoleIdAsync(id);
|
| 67 |
if (!result.IsSuccess)
|
| 68 |
{
|
| 69 |
return StatusCode(result.StatusCode, new { message = result.ErrorMessage });
|
|
|
|
| 86 |
}
|
| 87 |
|
| 88 |
|
| 89 |
+
|
TaskTrackingSystem.WebApi/Features/Role/RoleService.cs
CHANGED
|
@@ -65,7 +65,7 @@ namespace TaskTrackingSystem.WebApi.Features.Role
|
|
| 65 |
|
| 66 |
if (dto.AccessCodes != null && dto.AccessCodes.Any())
|
| 67 |
{
|
| 68 |
-
var validCodesResult = await
|
| 69 |
if (!validCodesResult.IsSuccess)
|
| 70 |
{
|
| 71 |
return Result<RoleDto>.Failure(validCodesResult.ErrorMessage ?? ResultMessages.FailedToCreateRole, validCodesResult.StatusCode);
|
|
@@ -141,7 +141,7 @@ namespace TaskTrackingSystem.WebApi.Features.Role
|
|
| 141 |
return Result.Success(200);
|
| 142 |
}
|
| 143 |
|
| 144 |
-
public async Task<Result<List<string>>>
|
| 145 |
{
|
| 146 |
var role = await _db.Roles.FirstOrDefaultAsync(r => r.Id == roleId && r.IsDeleted != true);
|
| 147 |
if (role == null)
|
|
@@ -177,7 +177,7 @@ namespace TaskTrackingSystem.WebApi.Features.Role
|
|
| 177 |
|
| 178 |
if (dto.AccessCodes == null)
|
| 179 |
{
|
| 180 |
-
return Result.Failure(
|
| 181 |
}
|
| 182 |
|
| 183 |
var selectedCodes = dto.AccessCodes
|
|
@@ -186,7 +186,7 @@ namespace TaskTrackingSystem.WebApi.Features.Role
|
|
| 186 |
.Distinct(StringComparer.OrdinalIgnoreCase)
|
| 187 |
.ToList();
|
| 188 |
|
| 189 |
-
var validCodesResult = await
|
| 190 |
if (!validCodesResult.IsSuccess)
|
| 191 |
{
|
| 192 |
return Result.Failure(validCodesResult.ErrorMessage ?? ResultMessages.FailedToUpdateRole, validCodesResult.StatusCode);
|
|
@@ -279,7 +279,7 @@ namespace TaskTrackingSystem.WebApi.Features.Role
|
|
| 279 |
}
|
| 280 |
}
|
| 281 |
|
| 282 |
-
private async Task<Result>
|
| 283 |
{
|
| 284 |
var normalizedCodes = codes
|
| 285 |
.Where(code => !string.IsNullOrWhiteSpace(code))
|
|
@@ -307,7 +307,7 @@ namespace TaskTrackingSystem.WebApi.Features.Role
|
|
| 307 |
|
| 308 |
if (invalidCodes.Any())
|
| 309 |
{
|
| 310 |
-
return Result.Failure(ResultMessages.
|
| 311 |
}
|
| 312 |
|
| 313 |
return Result.Success(200);
|
|
@@ -316,3 +316,4 @@ namespace TaskTrackingSystem.WebApi.Features.Role
|
|
| 316 |
}
|
| 317 |
|
| 318 |
|
|
|
|
|
|
| 65 |
|
| 66 |
if (dto.AccessCodes != null && dto.AccessCodes.Any())
|
| 67 |
{
|
| 68 |
+
var validCodesResult = await ValidateAccessCodesAsync(dto.AccessCodes);
|
| 69 |
if (!validCodesResult.IsSuccess)
|
| 70 |
{
|
| 71 |
return Result<RoleDto>.Failure(validCodesResult.ErrorMessage ?? ResultMessages.FailedToCreateRole, validCodesResult.StatusCode);
|
|
|
|
| 141 |
return Result.Success(200);
|
| 142 |
}
|
| 143 |
|
| 144 |
+
public async Task<Result<List<string>>> GetAssignedAccessCodesByRoleIdAsync(long roleId)
|
| 145 |
{
|
| 146 |
var role = await _db.Roles.FirstOrDefaultAsync(r => r.Id == roleId && r.IsDeleted != true);
|
| 147 |
if (role == null)
|
|
|
|
| 177 |
|
| 178 |
if (dto.AccessCodes == null)
|
| 179 |
{
|
| 180 |
+
return Result.Failure(ResultMessages.AccessCodesCannotBeNull, 400);
|
| 181 |
}
|
| 182 |
|
| 183 |
var selectedCodes = dto.AccessCodes
|
|
|
|
| 186 |
.Distinct(StringComparer.OrdinalIgnoreCase)
|
| 187 |
.ToList();
|
| 188 |
|
| 189 |
+
var validCodesResult = await ValidateAccessCodesAsync(selectedCodes);
|
| 190 |
if (!validCodesResult.IsSuccess)
|
| 191 |
{
|
| 192 |
return Result.Failure(validCodesResult.ErrorMessage ?? ResultMessages.FailedToUpdateRole, validCodesResult.StatusCode);
|
|
|
|
| 279 |
}
|
| 280 |
}
|
| 281 |
|
| 282 |
+
private async Task<Result> ValidateAccessCodesAsync(IEnumerable<string> codes)
|
| 283 |
{
|
| 284 |
var normalizedCodes = codes
|
| 285 |
.Where(code => !string.IsNullOrWhiteSpace(code))
|
|
|
|
| 307 |
|
| 308 |
if (invalidCodes.Any())
|
| 309 |
{
|
| 310 |
+
return Result.Failure(ResultMessages.InvalidAccessCodes(string.Join(", ", invalidCodes)), 400);
|
| 311 |
}
|
| 312 |
|
| 313 |
return Result.Success(200);
|
|
|
|
| 316 |
}
|
| 317 |
|
| 318 |
|
| 319 |
+
|