From 1f5614314243069ccf3e79d3b711a6acea21df3f Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Mon, 16 Jun 2025 16:24:49 +0530 Subject: [PATCH] Added new API to get list of work status --- .../Activities/CreateWorkStatusMasterDto.cs | 8 +++ .../Activities/UpdateWorkStatusMasterDto.cs | 9 +++ .../Controllers/MasterController.cs | 62 +++++++++++++++++++ Marco.Pms.Services/Helpers/MasterHelper.cs | 45 +++++++++++++- 4 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 Marco.Pms.Model/Dtos/Activities/CreateWorkStatusMasterDto.cs create mode 100644 Marco.Pms.Model/Dtos/Activities/UpdateWorkStatusMasterDto.cs diff --git a/Marco.Pms.Model/Dtos/Activities/CreateWorkStatusMasterDto.cs b/Marco.Pms.Model/Dtos/Activities/CreateWorkStatusMasterDto.cs new file mode 100644 index 0000000..b4ff25f --- /dev/null +++ b/Marco.Pms.Model/Dtos/Activities/CreateWorkStatusMasterDto.cs @@ -0,0 +1,8 @@ +namespace Marco.Pms.Model.Dtos.Master +{ + public class CreateWorkStatusMasterDto + { + public string? Name { get; set; } + public string? Description { get; set; } + } +} diff --git a/Marco.Pms.Model/Dtos/Activities/UpdateWorkStatusMasterDto.cs b/Marco.Pms.Model/Dtos/Activities/UpdateWorkStatusMasterDto.cs new file mode 100644 index 0000000..a40052f --- /dev/null +++ b/Marco.Pms.Model/Dtos/Activities/UpdateWorkStatusMasterDto.cs @@ -0,0 +1,9 @@ +namespace Marco.Pms.Model.Dtos.Master +{ + public class UpdateWorkStatusMasterDto + { + public Guid Id { get; set; } + public string? Name { get; set; } + public string? Description { get; set; } + } +} diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index 7835e8d..4e6ad8f 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -671,6 +671,68 @@ namespace Marco.Pms.Services.Controllers } } + // -------------------------------- Work Status -------------------------------- + + [HttpGet("work-status")] + public async Task GetWorkStatusMasterList() + { + var response = await _masterHelper.GetWorkStatusList(); + return StatusCode(response.StatusCode, response); + } + + [HttpPost("work-status")] + public async Task CreateWorkStatusMaster([FromBody] CreateWorkStatusMasterDto createWorkStatusDto) + { + if (!ModelState.IsValid) + { + var errors = ModelState.Values + .SelectMany(v => v.Errors) + .Select(e => e.ErrorMessage) + .ToList(); + _logger.LogError("User sent Invalid Date while marking attendance"); + return BadRequest(ApiResponse.ErrorResponse("Invalid data", errors, 400)); + } + var response = await _masterHelper.CreateWorkStatus(createWorkStatusDto); + if (response.StatusCode == 200) + { + return Ok(response); + } + else if (response.StatusCode == 409) + { + return Conflict(response); + } + else + { + return BadRequest(response); + } + } + + [HttpPost("work-status/edit/{id}")] + public async Task UpdateWorkStatusMaster(Guid id, [FromBody] UpdateWorkStatusMasterDto updateWorkStatusDto) + { + var response = await _masterHelper.UpdateWorkStatus(id, updateWorkStatusDto); + if (response.StatusCode == 200) + { + return Ok(response); + } + else if (response.StatusCode == 404) + { + return NotFound(response); + } + else + { + return BadRequest(response); + + } + } + + [HttpDelete("work-status/{id}")] + public async Task DeleteWorkStatusMaster(Guid id) + { + var response = await _masterHelper.DeleteWorkStatus(id); + return Ok(response); + } + // -------------------------------- Contact Category -------------------------------- [HttpGet("contact-categories")] diff --git a/Marco.Pms.Services/Helpers/MasterHelper.cs b/Marco.Pms.Services/Helpers/MasterHelper.cs index 60d2385..508205b 100644 --- a/Marco.Pms.Services/Helpers/MasterHelper.cs +++ b/Marco.Pms.Services/Helpers/MasterHelper.cs @@ -5,6 +5,7 @@ using Marco.Pms.Model.Employees; using Marco.Pms.Model.Mapper; using Marco.Pms.Model.Utilities; using Marco.Pms.Model.ViewModels.Master; +using Marco.Pms.Services.Service; using MarcoBMS.Services.Helpers; using MarcoBMS.Services.Service; using Microsoft.EntityFrameworkCore; @@ -16,13 +17,19 @@ namespace Marco.Pms.Services.Helpers private readonly ApplicationDbContext _context; private readonly ILoggingService _logger; private readonly UserHelper _userHelper; + private readonly PermissionServices _permissionService; + private readonly Guid View_Master; + private readonly Guid Manage_Master; - public MasterHelper(ApplicationDbContext context, ILoggingService logger, UserHelper userHelper) + public MasterHelper(ApplicationDbContext context, ILoggingService logger, UserHelper userHelper, PermissionServices permissionServices) { _context = context; _logger = logger; _userHelper = userHelper; + _permissionService = permissionServices; + View_Master = Guid.Parse("5ffbafe0-7ab0-48b1-bb50-c1bf76b65f9d"); + Manage_Master = Guid.Parse("588a8824-f924-4955-82d8-fc51956cf323"); } // -------------------------------- Contact Category -------------------------------- public async Task> CreateContactCategory(CreateContactCategoryDto contactCategoryDto) @@ -247,5 +254,41 @@ namespace Marco.Pms.Services.Helpers return ApiResponse.SuccessResponse(new { }, "Tag deleted successfully", 200); } + // -------------------------------- Work Status -------------------------------- + public async Task> GetWorkStatusList() + { + Guid tenantId = _userHelper.GetTenantId(); + var LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); + bool hasViewPermission = await _permissionService.HasPermission(View_Master, LoggedInEmployee.Id); + + if (!hasViewPermission) + { + return ApiResponse.ErrorResponse("You don't have access", "Don't have access to take action", 403); + } + var workStatus = await _context.WorkStatusMasters.Where(ws => ws.TenantId == tenantId).Select(ws => new { ws.Id, ws.Name, ws.Description, ws.IsSystem }).ToListAsync(); + + return ApiResponse.SuccessResponse(workStatus, $"{workStatus.Count} number of work status fetched successfully", 200); + + } + public async Task> CreateWorkStatus(CreateWorkStatusMasterDto createWorkStatusDto) + { + Guid tenantId = _userHelper.GetTenantId(); + var LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); + return ApiResponse.ErrorResponse("You don't have access", "Don't have access to take action", 403); + } + public async Task> UpdateWorkStatus(Guid id, UpdateWorkStatusMasterDto contacupdateWorkStatusDtotTagDto) + { + var tenantId = _userHelper.GetTenantId(); + Employee LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); + return ApiResponse.ErrorResponse("You don't have access", "Don't have access to take action", 403); + } + public async Task> DeleteWorkStatus(Guid id) + { + Guid tenantId = _userHelper.GetTenantId(); + var LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); + return ApiResponse.ErrorResponse("You don't have access", "Don't have access to take action", 403); + + } + } }