204 lines
6.1 KiB
C#
204 lines
6.1 KiB
C#
using Marco.Pms.Model.Dtos.Directory;
|
|
using Marco.Pms.Model.Utilities;
|
|
using Marco.Pms.Services.Helpers;
|
|
using MarcoBMS.Services.Service;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace Marco.Pms.Services.Controllers
|
|
{
|
|
[ApiController]
|
|
[Route("api/[controller]")]
|
|
[Authorize]
|
|
|
|
public class DirectoryController : ControllerBase
|
|
{
|
|
|
|
private readonly DirectoryHelper _directoryHelper;
|
|
private readonly ILoggingService _logger;
|
|
|
|
|
|
public DirectoryController(DirectoryHelper directoryHelper, ILoggingService logger)
|
|
{
|
|
_directoryHelper = directoryHelper;
|
|
_logger = logger;
|
|
}
|
|
|
|
[HttpGet]
|
|
public async Task<IActionResult> GetContactList()
|
|
{
|
|
var response = await _directoryHelper.GetListOfContacts();
|
|
|
|
|
|
if (response.StatusCode == 200)
|
|
{
|
|
return Ok(response);
|
|
}
|
|
else
|
|
{
|
|
return BadRequest(response);
|
|
}
|
|
|
|
}
|
|
[HttpGet("contact-bucket/{bucketId}")]
|
|
public async Task<IActionResult> GetContactsListByBucketId(Guid bucketId)
|
|
{
|
|
var response = await _directoryHelper.GetContactsListByBucketId(bucketId);
|
|
if (response.StatusCode == 200)
|
|
{
|
|
return Ok(response);
|
|
}
|
|
else if (response.StatusCode == 401)
|
|
{
|
|
return Unauthorized(response);
|
|
}
|
|
else
|
|
{
|
|
return BadRequest(response);
|
|
}
|
|
}
|
|
|
|
[HttpPost]
|
|
public async Task<IActionResult> CreateContact([FromBody] CreateContactDto createContact)
|
|
{
|
|
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<object>.ErrorResponse("Invalid data", errors, 400));
|
|
}
|
|
var response = await _directoryHelper.CreateContact(createContact);
|
|
if (response.StatusCode == 200)
|
|
{
|
|
return Ok(response);
|
|
}
|
|
else
|
|
{
|
|
return BadRequest(response);
|
|
}
|
|
}
|
|
|
|
[HttpPut("{id}")]
|
|
public async Task<IActionResult> UpdateContact(Guid id, [FromBody] UpdateContactDto updateContact)
|
|
{
|
|
var response = await _directoryHelper.UpdateContact(id, updateContact);
|
|
if (response.StatusCode == 200)
|
|
{
|
|
return Ok(response);
|
|
}
|
|
else if (response.StatusCode == 404)
|
|
{
|
|
return NotFound(response);
|
|
}
|
|
else
|
|
{
|
|
return BadRequest(response);
|
|
}
|
|
}
|
|
|
|
// -------------------------------- Contact Notes --------------------------------
|
|
|
|
[HttpPost("note")]
|
|
public async Task<IActionResult> CreateContactNote([FromBody] CreateContactNoteDto noteDto)
|
|
{
|
|
|
|
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<IActionResult> 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<IActionResult> UpdateContactNote(Guid id, [FromBody] UpdateContactNoteDto noteDto)
|
|
{
|
|
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<IActionResult> DeleteContactNote(Guid id)
|
|
{
|
|
var response = await _directoryHelper.DeleteContactNote(id);
|
|
return Ok(response);
|
|
}
|
|
|
|
// -------------------------------- Bucket --------------------------------
|
|
|
|
[HttpGet("buckets")]
|
|
public async Task<IActionResult> GetBucketList()
|
|
{
|
|
var response = await _directoryHelper.GetBucketList();
|
|
return Ok(response);
|
|
}
|
|
|
|
[HttpPost("bucket")]
|
|
public async Task<IActionResult> 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<object>.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);
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|