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.Model/ViewModels/Directory/ContactNoteVM.cs b/Marco.Pms.Model/ViewModels/Directory/ContactNoteVM.cs new file mode 100644 index 0000000..5e1c340 --- /dev/null +++ b/Marco.Pms.Model/ViewModels/Directory/ContactNoteVM.cs @@ -0,0 +1,9 @@ +namespace Marco.Pms.Model.ViewModels.Directory +{ + public class ContactNoteVM + { + public Guid Id { get; set; } + public string Note { get; set; } = string.Empty; + public Guid ContactId { get; set; } + } +} 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 d866509..b68a854 100644 --- a/Marco.Pms.Services/Helpers/DirectoryHelper.cs +++ b/Marco.Pms.Services/Helpers/DirectoryHelper.cs @@ -624,6 +624,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()