From 6ee508645aa5e6f3fda945bef868b36819558f4f Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 29 Mar 2025 15:30:10 +0530 Subject: [PATCH 1/3] Created a new API to update tenant infromation --- .../Dtos/Tenant/UpdateTenantDto.cs | 15 +++++ .../Controllers/TenantController.cs | 57 +++++++++++-------- 2 files changed, 47 insertions(+), 25 deletions(-) create mode 100644 Marco.Pms.Model/Dtos/Tenant/UpdateTenantDto.cs diff --git a/Marco.Pms.Model/Dtos/Tenant/UpdateTenantDto.cs b/Marco.Pms.Model/Dtos/Tenant/UpdateTenantDto.cs new file mode 100644 index 0000000..5131ed1 --- /dev/null +++ b/Marco.Pms.Model/Dtos/Tenant/UpdateTenantDto.cs @@ -0,0 +1,15 @@ +namespace Marco.Pms.Model.Dtos.Tenant +{ + public class UpdateTenantDto + { + public string OrganizatioinName { get; set; } + public string About { get; set; } + public string Website { get; set; } + public string Name { get; set; } + public string ContactNumber { get; set; } + + //public string? OragnizationSize { get; set; } + //public int IndustryId { get; set; } + public DateTime OnBoardingDate { get; set; } + } +} diff --git a/Marco.Pms.Services/Controllers/TenantController.cs b/Marco.Pms.Services/Controllers/TenantController.cs index ef89675..ea4f300 100644 --- a/Marco.Pms.Services/Controllers/TenantController.cs +++ b/Marco.Pms.Services/Controllers/TenantController.cs @@ -19,8 +19,8 @@ namespace Marco.Pms.Services.Controllers private readonly string jsonString = System.IO.File.ReadAllText("Data/RolesCofiguration.json"); private readonly ApplicationDbContext _context; private readonly UserManager _userManager; - private readonly ILoggingService _logger; - public TenantController(ApplicationDbContext context,UserManager userManager, ILoggingService logger) + private readonly ILoggingService _logger; + public TenantController(ApplicationDbContext context, UserManager userManager, ILoggingService logger) { _context = context; _userManager = userManager; @@ -55,7 +55,6 @@ namespace Marco.Pms.Services.Controllers Description = settings.JobRoleDescription, TenantId = TenantId }; - var existingJobRole = await _context.JobRoles.AsNoTracking().FirstOrDefaultAsync(r => r.Name == settings.JobRoleName); ApplicationRole role = new ApplicationRole { @@ -63,27 +62,10 @@ namespace Marco.Pms.Services.Controllers Description = settings.RoleDescription, TenantId = TenantId }; - var existingRole = await _context.ApplicationRoles.AsNoTracking().FirstOrDefaultAsync(r => r.Role == settings.RoleName); - if (existingJobRole == null) - { - _context.JobRoles.Add(jobRole); - await _context.SaveChangesAsync(); - } - else - { - jobRole = existingJobRole; - } - - if (existingRole == null) - { - _context.ApplicationRoles.Add(role); - await _context.SaveChangesAsync(); - } - else - { - role = existingRole; - } + _context.JobRoles.Add(jobRole); + _context.ApplicationRoles.Add(role); + await _context.SaveChangesAsync(); List permissions = await _context.FeaturePermissions.AsNoTracking().ToListAsync(); List rolePermissionMappings = new List(); @@ -111,7 +93,7 @@ namespace Marco.Pms.Services.Controllers var result = await _userManager.CreateAsync(user, createTenantDto.Password); if (result.Succeeded) { - Employee newEmployee = CreateTenantDtoToEmployee(createTenantDto, TenantId, user.Id,jobRole.Id); + Employee newEmployee = CreateTenantDtoToEmployee(createTenantDto, TenantId, user.Id, jobRole.Id); _context.Employees.Add(newEmployee); await _context.SaveChangesAsync(); @@ -132,7 +114,7 @@ namespace Marco.Pms.Services.Controllers foreach (var error in result.Errors) { // Log error.Description - _logger.LogError("{Error}",error.Description); + _logger.LogError("{Error}", error.Description); } return BadRequest("Failed to create the root user."); } @@ -140,6 +122,31 @@ namespace Marco.Pms.Services.Controllers return BadRequest("Falied to create Tenant"); } + [HttpPost("edit/{tenantId}")] + public async Task SuspendTenant(int tenantId,UpdateTenantDto model) + { + if (tenantId <= 0) + { + return BadRequest("Tenant Id is required and must be greater than zero."); + } + var tenant = await _context.Tenants.FirstOrDefaultAsync(t => t.Id == tenantId); + //var user = await _context.ApplicationUsers.FirstOrDefaultAsync(u => u.TenantId == tenantId && u.IsRootUser == true); + //var employee = await _context.Employees.FirstOrDefaultAsync(e => e.Id == tenantId && e.ApplicationUserId == user.Id); + if (tenant == null) + { + return NotFound("Tenant Not Found"); + } + tenant.Name = model.OrganizatioinName; + tenant.DomainName = model.Website; + tenant.ContactName = model.Name; + tenant.Description = model.About; + tenant.ContactNumber = model.ContactNumber; + tenant.OnBoardingDate = model.OnBoardingDate; + + await _context.SaveChangesAsync(); + TenantVM tenantVM = tenant.ToTenantVMFromTenant(); + return Ok(ApiResponse.SuccessResponse(tenantVM, "Tenant Profile.", 200)); + } private static Employee CreateTenantDtoToEmployee(CreateTenantDto model, int TenantId, string? ApplicationUserId,int jobRoleId) { return new Employee From c69226c83eb35203524c213bdf9cb58a2284b56b Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 31 Mar 2025 12:15:16 +0530 Subject: [PATCH 2/3] Removing the conflictes between Tenantmanagement and Ashutosh_Task#16_UpdateTenant branches --- Marco.Pms.Model/Mapper/TenantMapper.cs | 15 +++++++++++++- Marco.Pms.Model/ViewModels/Tenant/TenantVM.cs | 15 ++++++++++++++ .../Controllers/TenantController.cs | 20 ++++++++++++++++++- 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 Marco.Pms.Model/ViewModels/Tenant/TenantVM.cs diff --git a/Marco.Pms.Model/Mapper/TenantMapper.cs b/Marco.Pms.Model/Mapper/TenantMapper.cs index 35659a5..3c6318d 100644 --- a/Marco.Pms.Model/Mapper/TenantMapper.cs +++ b/Marco.Pms.Model/Mapper/TenantMapper.cs @@ -19,6 +19,19 @@ namespace Marco.Pms.Model.Mapper OnBoardingDate = createTenant.OnBoardingDate, }; } - + public static TenantVM ToTenantVMFromTenant(this Tenant tenant) + { + return new TenantVM + { + OrganizationName = tenant.Name, + About = tenant.Description, + Website = tenant.DomainName, + Name = tenant.ContactName, + //OragnizationSize = OragnizationSize, + ContactNumber = tenant.ContactNumber, + OnBoardingDate = tenant.OnBoardingDate, + }; + } + } } diff --git a/Marco.Pms.Model/ViewModels/Tenant/TenantVM.cs b/Marco.Pms.Model/ViewModels/Tenant/TenantVM.cs new file mode 100644 index 0000000..6e7ed86 --- /dev/null +++ b/Marco.Pms.Model/ViewModels/Tenant/TenantVM.cs @@ -0,0 +1,15 @@ +namespace Marco.Pms.Model.ViewModels.Tenant +{ + public class TenantVM + { + public string OrganizationName { get; set; } + public string About { get; set; } + public string Website { get; set; } + public string Name { get; set; } + public string ContactNumber { get; set; } + + //public string? OragnizationSize { get; set; } + //public int IndustryId { get; set; } + public DateTime OnBoardingDate { get; set; } + } +} diff --git a/Marco.Pms.Services/Controllers/TenantController.cs b/Marco.Pms.Services/Controllers/TenantController.cs index ea4f300..09e2ef7 100644 --- a/Marco.Pms.Services/Controllers/TenantController.cs +++ b/Marco.Pms.Services/Controllers/TenantController.cs @@ -5,6 +5,7 @@ using Marco.Pms.Model.Employees; using Marco.Pms.Model.Entitlements; using Marco.Pms.Model.Mapper; using Marco.Pms.Model.Utilities; +using Marco.Pms.Model.ViewModels.Tenant; using MarcoBMS.Services.Service; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; @@ -67,6 +68,7 @@ namespace Marco.Pms.Services.Controllers _context.ApplicationRoles.Add(role); await _context.SaveChangesAsync(); + List permissions = await _context.FeaturePermissions.AsNoTracking().ToListAsync(); List rolePermissionMappings = new List(); @@ -106,7 +108,7 @@ namespace Marco.Pms.Services.Controllers }; _context.EmployeeRoleMappings.Add(employeeRoleMapping); await _context.SaveChangesAsync(); - return Ok(newEmployee); + return Ok(ApiResponse.SuccessResponse(result.Succeeded, "Tenant created successfully.", 200)); } else { @@ -122,6 +124,22 @@ namespace Marco.Pms.Services.Controllers return BadRequest("Falied to create Tenant"); } + + [HttpGet("profile/{tenantId}")] + public async Task GetTenantProfile(int tenantId) + { + if (tenantId <= 0) + { + return BadRequest("Tenant Id is required and must be greater than zero."); + } + var tenant = await _context.Tenants.FirstOrDefaultAsync(t => t.Id == tenantId); + if (tenant == null) + { + return NotFound("Tenant Not Found"); + } + TenantVM tenantVM = tenant.ToTenantVMFromTenant(); + return Ok(ApiResponse.SuccessResponse(tenantVM, "Tenant Profile.", 200)); + } [HttpPost("edit/{tenantId}")] public async Task SuspendTenant(int tenantId,UpdateTenantDto model) { From 636a6aab7b6102b2bd1aae91c3190f49ec6edcdc Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 31 Mar 2025 12:21:20 +0530 Subject: [PATCH 3/3] Removing the conflictes between Tenantmanagement and Ashutosh_Task#16_UpdateTenant branches --- Marco.Pms.Model/Mapper/TenantMapper.cs | 2 +- Marco.Pms.Model/ViewModels/Tenant/TenantVM.cs | 6 ++++++ Marco.Pms.Services/Controllers/TenantController.cs | 10 ++++++---- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Marco.Pms.Model/Mapper/TenantMapper.cs b/Marco.Pms.Model/Mapper/TenantMapper.cs index 3c6318d..9198ebc 100644 --- a/Marco.Pms.Model/Mapper/TenantMapper.cs +++ b/Marco.Pms.Model/Mapper/TenantMapper.cs @@ -1,5 +1,6 @@ using Marco.Pms.Model.Dtos.Tenant; using Marco.Pms.Model.Entitlements; +using Marco.Pms.Model.ViewModels.Tenant; namespace Marco.Pms.Model.Mapper { @@ -32,6 +33,5 @@ namespace Marco.Pms.Model.Mapper OnBoardingDate = tenant.OnBoardingDate, }; } - } } diff --git a/Marco.Pms.Model/ViewModels/Tenant/TenantVM.cs b/Marco.Pms.Model/ViewModels/Tenant/TenantVM.cs index 6e7ed86..c8a1d7a 100644 --- a/Marco.Pms.Model/ViewModels/Tenant/TenantVM.cs +++ b/Marco.Pms.Model/ViewModels/Tenant/TenantVM.cs @@ -1,3 +1,9 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + namespace Marco.Pms.Model.ViewModels.Tenant { public class TenantVM diff --git a/Marco.Pms.Services/Controllers/TenantController.cs b/Marco.Pms.Services/Controllers/TenantController.cs index 09e2ef7..67957f2 100644 --- a/Marco.Pms.Services/Controllers/TenantController.cs +++ b/Marco.Pms.Services/Controllers/TenantController.cs @@ -140,8 +140,9 @@ namespace Marco.Pms.Services.Controllers TenantVM tenantVM = tenant.ToTenantVMFromTenant(); return Ok(ApiResponse.SuccessResponse(tenantVM, "Tenant Profile.", 200)); } + [HttpPost("edit/{tenantId}")] - public async Task SuspendTenant(int tenantId,UpdateTenantDto model) + public async Task SuspendTenant(int tenantId, UpdateTenantDto model) { if (tenantId <= 0) { @@ -165,7 +166,8 @@ namespace Marco.Pms.Services.Controllers TenantVM tenantVM = tenant.ToTenantVMFromTenant(); return Ok(ApiResponse.SuccessResponse(tenantVM, "Tenant Profile.", 200)); } - private static Employee CreateTenantDtoToEmployee(CreateTenantDto model, int TenantId, string? ApplicationUserId,int jobRoleId) + + private static Employee CreateTenantDtoToEmployee(CreateTenantDto model, int TenantId, string? ApplicationUserId, int jobRoleId) { return new Employee { @@ -191,7 +193,7 @@ namespace Marco.Pms.Services.Controllers }; } - + } - + }