using Microsoft.AspNetCore.Mvc; using ProfessionalProfile.Domain; using ProfessionalProfile.Interfaces; namespace ProfessionalProfile.Controllers { [ApiController] [Route("api/[controller]")] public class NotificationController : Controller { private readonly INotificationRepo _notificationRepo; public NotificationController(INotificationRepo notificationRepo) { _notificationRepo = notificationRepo; } [HttpGet(Name = "GetAllNotifications")] public IActionResult GetAll() { try { return Ok(_notificationRepo.GetAll()); } catch (Exception ex) { return BadRequest(ex.Message); } } [HttpGet("{id}", Name = "NotificationGetById")] [ProducesResponseType(200, Type = typeof(Notification))] [ProducesResponseType(400)] public IActionResult GetById(int id) { try { return Ok(_notificationRepo.GetById(id)); } catch (Exception ex) { return BadRequest(ex.Message); } } [HttpPost(Name = "AddNotification")] [ProducesResponseType(201)] [ProducesResponseType(400)] public IActionResult Add([FromBody] Notification notification) { try { _notificationRepo.Add(notification); return CreatedAtRoute("NotificationGetById", new { id = notification.notificationId }, notification); } catch (Exception ex) { return BadRequest(ex.Message); } } [HttpPut(Name = "UpdateNotification")] [ProducesResponseType(204)] [ProducesResponseType(400)] public IActionResult Update([FromBody] Notification notification) { try { _notificationRepo.Update(notification); return Ok(notification); } catch (Exception ex) { return BadRequest(ex.Message); } } [HttpDelete("{id}", Name = "DeleteNotification")] [ProducesResponseType(204)] [ProducesResponseType(400)] public IActionResult Delete([FromRoute] int id) { try { _notificationRepo.Delete(id); return NoContent(); } catch (Exception ex) { return BadRequest(ex.Message); } } } }