Valided the organization by it name

This commit is contained in:
ashutosh.nehete 2025-12-08 12:24:14 +05:30
parent cce84d901a
commit 93c4803634

View File

@ -425,24 +425,31 @@ namespace Marco.Pms.Services.Service
return await permissionService.HasPermission(PermissionsMaster.AddOrganization, loggedInEmployee.Id);
});
var isPrimaryOrganizationTask = Task.Run(async () =>
var isOrganizationExistTask = Task.Run(async () =>
{
await using var context = await _dbContextFactory.CreateDbContextAsync();
return await context.Tenants.AnyAsync(t => t.OrganizationId == loggedInEmployee.OrganizationId);
return await context.Organizations.AnyAsync(t => t.Name == model.Name);
});
await Task.WhenAll(hasPermissionTask, isPrimaryOrganizationTask);
await Task.WhenAll(hasPermissionTask, isOrganizationExistTask);
bool hasPermission = hasPermissionTask.Result;
bool isPrimaryOrganization = isPrimaryOrganizationTask.Result;
bool isOrganizationExist = isOrganizationExistTask.Result;
// Check user access permission
if (!hasPermission && !isPrimaryOrganization)
if (!hasPermission)
{
_logger.LogWarning("User {EmployeeId} attempted to create a new organization without permission", loggedInEmployee.Id);
return ApiResponse<object>.ErrorResponse("Access Denied", "You do not have permission to create new organization.", 403);
}
// check if organization name already exists
if (isOrganizationExist)
{
_logger.LogWarning("Organization with name {OrganizationName} already exists", model.Name);
return ApiResponse<object>.ErrorResponse("Organization already exists", "Organization with name already exists", 409);
}
// Get last SPRID and increment for new organization
var lastOrganization = await _context.Organizations.OrderByDescending(sp => sp.SPRID).FirstOrDefaultAsync();
long lastSPRID = lastOrganization?.SPRID ?? 5400;