94 lines
2.6 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);
}
}
[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);
}
}
[HttpGet("buckets")]
public async Task<IActionResult> GetBucketList()
{
var response = await _directoryHelper.GetBucketList();
return Ok(response);
}
}
}