diff --git a/Tsi1.Api/Tsi1.Api/Controllers/TenantController.cs b/Tsi1.Api/Tsi1.Api/Controllers/TenantController.cs index f89bb6beb7a7a425bda20d76669b2315ba465083..738bc5b34acb2810373bc8ac6902096ef52bb9bb 100644 --- a/Tsi1.Api/Tsi1.Api/Controllers/TenantController.cs +++ b/Tsi1.Api/Tsi1.Api/Controllers/TenantController.cs @@ -49,5 +49,43 @@ namespace Tsi1.Api.Controllers return Ok(result.Data); } + + [Authorize(Roles = UserTypes.UdelarAdmin)] + [HttpPut("Modify/{tenantId}")] + public async Task<IActionResult> Modify(int tenantId, TenantCreateDto tenantDto) + { + var result = await _tenantService.Modify(tenantId, tenantDto); + + if (result.HasError) + { + return BadRequest(result.Message); + } + + if (result.Data == false) + { + return NotFound(result.Message); + } + + return Ok(); + } + + [Authorize(Roles = UserTypes.UdelarAdmin)] + [HttpDelete("Delete/{tenantId}")] + public async Task<IActionResult> Delete(int tenantId) + { + var result = await _tenantService.Delete(tenantId); + + if (result.HasError) + { + return BadRequest(result.Message); + } + + if (result.Data == false) + { + return NotFound(result.Message); + } + + return Ok(); + } } } diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/ITenantService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/ITenantService.cs index 90bf95b9d814421c99c54eff4ff0a2e20885af0f..ea42bbcb4fa8850ad5a0e458dec57fd3608704b0 100644 --- a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/ITenantService.cs +++ b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/ITenantService.cs @@ -14,5 +14,9 @@ namespace Tsi1.BusinessLayer.Interfaces Task<ServiceResult<List<TenantPreviewDto>>> GetAll(); Task<ServiceResult<TenantPreviewDto>> Create(TenantCreateDto newTenant); + + Task<ServiceResult<bool>> Modify(int tenantId, TenantCreateDto tenantDto); + + Task<ServiceResult<bool>> Delete(int tenantId); } } diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Services/TenantService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Services/TenantService.cs index c2659069a5eacd7516d4c4c6d49cf6dcb06d749a..8f629676d9123978260602c3892aba1ce68e2c6d 100644 --- a/Tsi1.Api/Tsi1.BusinessLayer/Services/TenantService.cs +++ b/Tsi1.Api/Tsi1.BusinessLayer/Services/TenantService.cs @@ -79,5 +79,48 @@ namespace Tsi1.BusinessLayer.Services return result; } + public async Task<ServiceResult<bool>> Modify(int tenantId, TenantCreateDto tenantDto) + { + var result = new ServiceResult<bool>(); + + var tenant = await _context.Tenants + .FirstOrDefaultAsync(x => x.Id == tenantId); + + if (tenant == null) + { + result.Message = string.Format(ErrorMessages.TenantDoesNotExist, tenantId); + return result; + } + + _mapper.Map(tenantDto, tenant); + + await _context.SaveChangesAsync(); + + result.Data = true; + + return result; + } + + public async Task<ServiceResult<bool>> Delete(int tenantId) + { + var result = new ServiceResult<bool>(); + + var tenant = await _context.Tenants + .FirstOrDefaultAsync(x => x.Id == tenantId); + + if (tenant == null) + { + result.Message = string.Format(ErrorMessages.TenantDoesNotExist, tenantId); + return result; + } + + _context.Tenants.Remove(tenant); + + await _context.SaveChangesAsync(); + + result.Data = true; + + return result; + } } }