From 103bdcfb0b62b2456cc28222a2e9d31aebd29aa2 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Thu, 15 May 2025 22:30:29 +0530 Subject: [PATCH] Added an API to create a contact tag --- .../Controllers/MasterController.cs | 23 ++++++++++++- Marco.Pms.Services/Helpers/MasterHelper.cs | 34 ++++++++++++++++--- 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index 4df3a62..8e4a86f 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -734,7 +734,28 @@ namespace Marco.Pms.Services.Controllers [HttpPost("contact-tag")] public async Task CreateContactTagMaster([FromBody] CreateContactTagDto contactTagDto) { - return Ok(); + 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.CreateContactTag(contactTagDto); + if (response.StatusCode == 200) + { + return Ok(response); + } + else if (response.StatusCode == 409) + { + return Conflict(response); + } + else + { + return BadRequest(response); + } } [HttpPost("contact-tag/edit/{id}")] diff --git a/Marco.Pms.Services/Helpers/MasterHelper.cs b/Marco.Pms.Services/Helpers/MasterHelper.cs index ca1bbde..1906ec2 100644 --- a/Marco.Pms.Services/Helpers/MasterHelper.cs +++ b/Marco.Pms.Services/Helpers/MasterHelper.cs @@ -1,5 +1,4 @@ -using System.Linq; -using Marco.Pms.DataAccess.Data; +using Marco.Pms.DataAccess.Data; using Marco.Pms.Model.Directory; using Marco.Pms.Model.Dtos.Master; using Marco.Pms.Model.Mapper; @@ -76,13 +75,38 @@ namespace Marco.Pms.Services.Helpers var taglist = await _context.ContactTagMasters.Where(t => t.TenantId == tenantId).ToListAsync(); List contactTags = new List(); - foreach (var tag in taglist) { + foreach (var tag in taglist) + { ContactTagVM tagVm = tag.ToContactTagVMFromContactTagMaster(); contactTags.Add(tagVm); } _logger.LogInfo("{count} contact Tags are fetched by Employee with ID {LoggedInEmployeeId}", contactTags.Count, LoggedInEmployee.Id); - return ApiResponse.SuccessResponse(contactTags, System.String.Format("{0} contact tags fetched successfully", contactTags.Count),200); + return ApiResponse.SuccessResponse(contactTags, System.String.Format("{0} contact tags fetched successfully", contactTags.Count), 200); } - // -------------------------------- Bucket -------------------------------- + public async Task> CreateContactTag(CreateContactTagDto contactTagDto) + { + Guid tenantId = _userHelper.GetTenantId(); + var LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); + if (contactTagDto != null) + { + ContactCategoryMaster? existingContactCategory = await _context.ContactCategoryMasters.FirstOrDefaultAsync(c => c.TenantId == tenantId && c.Name.ToLower() == (contactTagDto.Name != null ? contactTagDto.Name.ToLower() : "")); + if (existingContactCategory == null) + { + ContactTagMaster contactTag = contactTagDto.ToContactTagMasterFromCreateContactTagDto(tenantId); + _context.ContactTagMasters.Add(contactTag); + await _context.SaveChangesAsync(); + ContactTagVM tagVM = contactTag.ToContactTagVMFromContactTagMaster(); + + _logger.LogInfo("Employee ID {LoggedInEmployeeId} created a contact tag {ContactTagId}.", LoggedInEmployee.Id, contactTag.Id); + return ApiResponse.SuccessResponse(tagVM, "Tag Created Successfully", 200); + } + _logger.LogWarning("Employee ID {LoggedInEmployeeId} attempted to create an existing contact tag.", LoggedInEmployee.Id); + return ApiResponse.ErrorResponse("Tag already existed", "Tag already existed", 409); + } + _logger.LogWarning("Employee with ID {LoggedInEmployeeId} sended empty payload", LoggedInEmployee.Id); + return ApiResponse.ErrorResponse("User Send empty Payload", "User Send empty Payload", 400); + } + + } }