From f7543a37a1b50bc474d21c8888a6a0f333407379 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Sat, 17 May 2025 16:13:35 +0530 Subject: [PATCH] added an API to get a list of contact-notes by contact ID --- Marco.Pms.Model/Mapper/DirectoryMapper.cs | 22 ++++++ .../Controllers/DirectoryController.cs | 67 +++++++++++++++++++ Marco.Pms.Services/Helpers/DirectoryHelper.cs | 23 +++++++ 3 files changed, 112 insertions(+) diff --git a/Marco.Pms.Model/Mapper/DirectoryMapper.cs b/Marco.Pms.Model/Mapper/DirectoryMapper.cs index f78c260..2807e9a 100644 --- a/Marco.Pms.Model/Mapper/DirectoryMapper.cs +++ b/Marco.Pms.Model/Mapper/DirectoryMapper.cs @@ -188,5 +188,27 @@ namespace Marco.Pms.Model.Mapper Description = bucket.Description }; } + + //Contact Note + public static ContactNote ToContactNoteFromCreateContactNoteDto(this CreateContactNoteDto noteDto, Guid tenantId, Guid employeeId) + { + return new ContactNote + { + Note = noteDto.Note, + ContactId = noteDto.ContactId, + CreatedAt = DateTime.UtcNow, + CreatedById = employeeId, + TenantId = tenantId + }; + } + public static ContactNoteVM ToContactNoteVMFromContactNote(this ContactNote note) + { + return new ContactNoteVM + { + Id = note.Id, + Note = note.Note, + ContactId = note.ContactId + }; + } } } diff --git a/Marco.Pms.Services/Controllers/DirectoryController.cs b/Marco.Pms.Services/Controllers/DirectoryController.cs index bd49e18..dd3785e 100644 --- a/Marco.Pms.Services/Controllers/DirectoryController.cs +++ b/Marco.Pms.Services/Controllers/DirectoryController.cs @@ -99,6 +99,73 @@ namespace Marco.Pms.Services.Controllers } } + // -------------------------------- Contact Notes -------------------------------- + + [HttpPost("note")] + public async Task CreateContactNote([FromBody] CreateContactNoteDto noteDto) + { + return Ok(); + //var response = await _directoryHelper.CreateContactNote(noteDto); + //if (response.StatusCode == 200) + //{ + //return Ok(response); + //} + //else if (response.StatusCode == 404) + //{ + // return NotFound(response); + //} + //else + //{ + // return BadRequest(response); + //} + } + + [HttpGet("note/{ContactId}")] + public async Task GetNoteListByContactId(Guid contactId) + { + var response = await _directoryHelper.GetNoteListByContactId(contactId); + if (response.StatusCode == 200) + { + return Ok(response); + } + else if (response.StatusCode == 404) + { + return NotFound(response); + } + else + { + return BadRequest(response); + } + } + + [HttpPut("note/{id}")] + public async Task UpdateContactNote(Guid id, [FromBody] UpdateContactNoteDto noteDto) + { + return Ok(); + //var response = await _directoryHelper.UpdateContactNote(id, noteDto); + //if (response.StatusCode == 200) + //{ + // return Ok(response); + //} + //else if (response.StatusCode == 404) + //{ + // return NotFound(response); + //} + //else + //{ + // return BadRequest(response); + //} + } + + [HttpDelete("note/{id}")] + public async Task DeleteContactNote(Guid id) + { + return Ok(); + //var response = await _directoryHelper.DeleteContactNote(id); + //return Ok(response); + } + + // -------------------------------- Bucket -------------------------------- [HttpGet("buckets")] public async Task GetBucketList() diff --git a/Marco.Pms.Services/Helpers/DirectoryHelper.cs b/Marco.Pms.Services/Helpers/DirectoryHelper.cs index ab3047e..49d3785 100644 --- a/Marco.Pms.Services/Helpers/DirectoryHelper.cs +++ b/Marco.Pms.Services/Helpers/DirectoryHelper.cs @@ -1963,6 +1963,29 @@ namespace Marco.Pms.Services.Helpers return ApiResponse.ErrorResponse("User Send empty Payload", "User Send empty Payload", 400); } + // -------------------------------- Contact Notes -------------------------------- + + public async Task> GetNoteListByContactId(Guid id) + { + Guid tenantId = _userHelper.GetTenantId(); + var LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); + Contact? contact = await _context.Contacts.FirstOrDefaultAsync(c => c.Id == id && c.IsActive && c.TenantId == tenantId); + if (contact != null) + { + List? notes = await _context.ContactNotes.Where(n => n.ContactId == contact.Id && n.IsActive).ToListAsync(); + List? noteVMs = new List(); + foreach (var note in notes) + { + ContactNoteVM noteVM = note.ToContactNoteVMFromContactNote(); + noteVMs.Add(noteVM); + } + _logger.LogInfo("{count} contact-notes record from contact {ContactId} fetched by Employee {EmployeeId}", noteVMs.Count, id, LoggedInEmployee.Id); + return ApiResponse.SuccessResponse(noteVMs, $"{noteVMs.Count} contact-notes record fetched successfully", 200); + } + _logger.LogWarning("Employee with ID {LoggedInEmployeeId} attempted to fetch a list notes from contact with ID {ContactId}, but the contact was not found in the database.", LoggedInEmployee.Id, id); + return ApiResponse.ErrorResponse("Contact not found", "Contact not found", 404); + } + // -------------------------------- Bucket -------------------------------- public async Task> GetBucketList()