From da552afb0d245071f75e0ebfb56bd840088db0f1 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Thu, 15 May 2025 22:23:08 +0530 Subject: [PATCH 1/2] Added an API to create bucket --- .../Dtos/Directory/CreateBucketDto.cs | 4 +- .../Controllers/DirectoryController.cs | 28 ++++++++++++++ Marco.Pms.Services/Helpers/DirectoryHelper.cs | 37 +++++++++++++++++++ 3 files changed, 67 insertions(+), 2 deletions(-) diff --git a/Marco.Pms.Model/Dtos/Directory/CreateBucketDto.cs b/Marco.Pms.Model/Dtos/Directory/CreateBucketDto.cs index ba0918d..0c02457 100644 --- a/Marco.Pms.Model/Dtos/Directory/CreateBucketDto.cs +++ b/Marco.Pms.Model/Dtos/Directory/CreateBucketDto.cs @@ -2,7 +2,7 @@ { public class CreateBucketDto { - public string name { get; set; } = string.Empty; - public string description { get; set; } = string.Empty; + public string Name { get; set; } = string.Empty; + public string Description { get; set; } = string.Empty; } } diff --git a/Marco.Pms.Services/Controllers/DirectoryController.cs b/Marco.Pms.Services/Controllers/DirectoryController.cs index 65ccd2d..749061f 100644 --- a/Marco.Pms.Services/Controllers/DirectoryController.cs +++ b/Marco.Pms.Services/Controllers/DirectoryController.cs @@ -89,5 +89,33 @@ namespace Marco.Pms.Services.Controllers var response = await _directoryHelper.GetBucketList(); return Ok(response); } + + [HttpPost("bucket")] + public async Task CreateBucket(CreateBucketDto bucketDto) + { + 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 _directoryHelper.CreateBucket(bucketDto); + if (response.StatusCode == 200) + { + return Ok(response); + } + else if (response.StatusCode == 409) + { + return Conflict(response); + } + else + { + return BadRequest(response); + } + + } } } diff --git a/Marco.Pms.Services/Helpers/DirectoryHelper.cs b/Marco.Pms.Services/Helpers/DirectoryHelper.cs index 5d8e0b7..704a0d0 100644 --- a/Marco.Pms.Services/Helpers/DirectoryHelper.cs +++ b/Marco.Pms.Services/Helpers/DirectoryHelper.cs @@ -455,5 +455,42 @@ namespace Marco.Pms.Services.Helpers _logger.LogInfo("{count} Buckets are fetched by Employee with ID {LoggedInEmployeeId}", bucketVMs.Count, LoggedInEmployee.Id); return ApiResponse.SuccessResponse(bucketVMs, System.String.Format("{0} buckets fetched successfully", bucketVMs.Count), 200); } + + public async Task> CreateBucket(CreateBucketDto bucketDto) + { + Guid tenantId = _userHelper.GetTenantId(); + var LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); + if (bucketDto != null) + { + var existingBucket = await _context.Buckets.FirstOrDefaultAsync(b => b.Name == bucketDto.Name); + if (existingBucket != null) + { + _logger.LogWarning("Employee ID {LoggedInEmployeeId} attempted to create an existing bucket.", LoggedInEmployee.Id); + return ApiResponse.ErrorResponse("Bucket already existed", "Bucket already existed", 409); + } + Bucket bucket = new Bucket + { + Name = bucketDto.Name, + Description = bucketDto.Description, + TenantId = tenantId + }; + _context.Buckets.Add(bucket); + + EmployeeBucketMapping employeeBucket = new EmployeeBucketMapping + { + EmployeeId = LoggedInEmployee.Id, + BucketId = bucket.Id + }; + + _context.EmployeeBucketMappings.Add(employeeBucket); + await _context.SaveChangesAsync(); + + BucketVM bucketVM = bucket.ToBucketVMFromBucket(); + _logger.LogInfo("Employee Id {LoggedInEmployeeId} creayted new bucket {BucketId}", LoggedInEmployee.Id, bucket.Id); + return ApiResponse.SuccessResponse(bucketVM, "Bucket Created SuccessFully", 200); + } + _logger.LogWarning("Employee with ID {LoggedInEmployeeId} sended empty payload", LoggedInEmployee.Id); + return ApiResponse.ErrorResponse("User Send empty Payload", "User Send empty Payload", 400); + } } } From 6a456001fd0136a0b8557754cf61e9dc206a5fd8 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Fri, 16 May 2025 15:13:29 +0530 Subject: [PATCH 2/2] When checking in exsiting tag change Id from mapping Id to Tag ID --- Marco.Pms.Services/Helpers/DirectoryHelper.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marco.Pms.Services/Helpers/DirectoryHelper.cs b/Marco.Pms.Services/Helpers/DirectoryHelper.cs index 704a0d0..a218ba2 100644 --- a/Marco.Pms.Services/Helpers/DirectoryHelper.cs +++ b/Marco.Pms.Services/Helpers/DirectoryHelper.cs @@ -377,7 +377,7 @@ namespace Marco.Pms.Services.Helpers } foreach (var contactTag in contactTags) { - if (!updatedTagIds.Contains(contactTag.Id)) + if (!updatedTagIds.Contains(contactTag.ContactTagtId)) { _context.ContactTagMappings.Remove(contactTag); }