Compare commits
No commits in common. "5fab8371aca5325219db33b30ce3611695a84502" and "8c97c78408f02a03eb8ca9a92236b5a319a39e41" have entirely different histories.
5fab8371ac
...
8c97c78408
@ -12,7 +12,6 @@ using Marco.Pms.Model.ViewModels.Projects;
|
|||||||
using Marco.Pms.Services.Service;
|
using Marco.Pms.Services.Service;
|
||||||
using MarcoBMS.Services.Helpers;
|
using MarcoBMS.Services.Helpers;
|
||||||
using MarcoBMS.Services.Service;
|
using MarcoBMS.Services.Service;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
@ -22,7 +21,6 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
{
|
{
|
||||||
[Route("api/[controller]")]
|
[Route("api/[controller]")]
|
||||||
[ApiController]
|
[ApiController]
|
||||||
[Authorize]
|
|
||||||
public class OrganizationController : ControllerBase
|
public class OrganizationController : ControllerBase
|
||||||
{
|
{
|
||||||
private readonly IDbContextFactory<ApplicationDbContext> _dbContextFactory;
|
private readonly IDbContextFactory<ApplicationDbContext> _dbContextFactory;
|
||||||
@ -111,7 +109,7 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
#region =================================================================== Post Functions ===================================================================
|
#region =================================================================== Post Functions ===================================================================
|
||||||
|
|
||||||
[HttpPost("create")]
|
[HttpPost("create")]
|
||||||
public async Task<IActionResult> CreateOrganizationAsync([FromBody] CreateOrganizationDto model)
|
public async Task<IActionResult> CreateServiceProviderAsync([FromBody] CreateOrganizationDto model)
|
||||||
{
|
{
|
||||||
await using var _context = await _dbContextFactory.CreateDbContextAsync();
|
await using var _context = await _dbContextFactory.CreateDbContextAsync();
|
||||||
using var scope = _serviceScope.CreateScope();
|
using var scope = _serviceScope.CreateScope();
|
||||||
@ -240,7 +238,7 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("assign/project")]
|
[HttpPost("assign/project")]
|
||||||
public async Task<IActionResult> AssignOrganizationToProjectAsync([FromBody] AssignOrganizationDto model)
|
public async Task<IActionResult> AssignServiceProviderToProjectAsync([FromBody] AssignOrganizationDto model)
|
||||||
{
|
{
|
||||||
await using var _context = await _dbContextFactory.CreateDbContextAsync();
|
await using var _context = await _dbContextFactory.CreateDbContextAsync();
|
||||||
using var scope = _serviceScope.CreateScope();
|
using var scope = _serviceScope.CreateScope();
|
||||||
@ -428,70 +426,6 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
return StatusCode(500, ApiResponse<object>.ErrorResponse("Internal error", "An internal exception has been occured", 500));
|
return StatusCode(500, ApiResponse<object>.ErrorResponse("Internal error", "An internal exception has been occured", 500));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("assign/tenant/{organizationId}")]
|
|
||||||
public async Task<IActionResult> AssignOrganizationToTenantAsync(Guid organizationId)
|
|
||||||
{
|
|
||||||
await using var _context = await _dbContextFactory.CreateDbContextAsync();
|
|
||||||
using var scope = _serviceScope.CreateScope();
|
|
||||||
await using var transaction = await _context.Database.BeginTransactionAsync();
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
|
||||||
|
|
||||||
var serviceProviderTenantMappingTask = Task.Run(async () =>
|
|
||||||
{
|
|
||||||
await using var context = await _dbContextFactory.CreateDbContextAsync();
|
|
||||||
return await context.TenantOrgMappings
|
|
||||||
.FirstOrDefaultAsync(spt => spt.OrganizationId == organizationId && spt.TenantId == tenantId && spt.IsActive);
|
|
||||||
});
|
|
||||||
|
|
||||||
var organizationTask = Task.Run(async () =>
|
|
||||||
{
|
|
||||||
await using var context = await _dbContextFactory.CreateDbContextAsync();
|
|
||||||
return await context.Organizations
|
|
||||||
.FirstOrDefaultAsync(o => o.Id == organizationId);
|
|
||||||
});
|
|
||||||
|
|
||||||
await Task.WhenAll(serviceProviderTenantMappingTask, organizationTask);
|
|
||||||
|
|
||||||
var serviceProviderTenantMapping = serviceProviderTenantMappingTask.Result;
|
|
||||||
var organization = organizationTask.Result;
|
|
||||||
|
|
||||||
if (organization == null)
|
|
||||||
{
|
|
||||||
return NotFound(ApiResponse<object>.ErrorResponse("Organization not found", "Organization not found in database", 404));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (serviceProviderTenantMapping == null)
|
|
||||||
{
|
|
||||||
var newServiceProviderTenantMapping = new TenantOrgMapping
|
|
||||||
{
|
|
||||||
OrganizationId = organization.Id,
|
|
||||||
SPRID = organization.SPRID,
|
|
||||||
AssignedDate = DateTime.UtcNow,
|
|
||||||
IsActive = true,
|
|
||||||
TenantId = tenantId
|
|
||||||
};
|
|
||||||
_context.TenantOrgMappings.Add(newServiceProviderTenantMapping);
|
|
||||||
await _context.SaveChangesAsync();
|
|
||||||
}
|
|
||||||
var response = _mapper.Map<BasicOrganizationVm>(organization);
|
|
||||||
return Ok(ApiResponse<object>.SuccessResponse(response, "Organization has been assigned to tenant", 200));
|
|
||||||
}
|
|
||||||
catch (DbUpdateException dbEx)
|
|
||||||
{
|
|
||||||
await transaction.RollbackAsync();
|
|
||||||
|
|
||||||
_logger.LogError(dbEx, "Database Exception has been occured, While assigning the organization to project");
|
|
||||||
return StatusCode(500, ApiResponse<object>.ErrorResponse("Internal error", "An database exception has been occured", 500));
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
_logger.LogError(ex, "Exception has been occured, While assigned the organizatio to project");
|
|
||||||
return StatusCode(500, ApiResponse<object>.ErrorResponse("Internal error", "An internal exception has been occured", 500));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region =================================================================== Put Functions ===================================================================
|
#region =================================================================== Put Functions ===================================================================
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user