From 0f73663b0ad2543975f0971ea5aa2b04e3277f7f Mon Sep 17 00:00:00 2001
From: esantangelo <enzo020895@gmail.com>
Date: Sat, 31 Oct 2020 14:56:27 -0300
Subject: [PATCH] abm tenant

---
 .../Tsi1.Api/Controllers/TenantController.cs  | 38 ++++++++++++++++
 .../Interfaces/ITenantService.cs              |  4 ++
 .../Services/TenantService.cs                 | 43 +++++++++++++++++++
 3 files changed, 85 insertions(+)

diff --git a/Tsi1.Api/Tsi1.Api/Controllers/TenantController.cs b/Tsi1.Api/Tsi1.Api/Controllers/TenantController.cs
index f89bb6b..738bc5b 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 90bf95b..ea42bbc 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 c265906..8f62967 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;
+        }
     }
 }
-- 
GitLab