using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using eprintServer.Services; using eprintServer.Requests; using eprintServer.Responses; using System.Linq; using System.Threading.Tasks; namespace eprintServer.Controllers; [ApiController] [Route("api/v1/cms/contact")] [Authorize(Roles = "ADMIN,SUB_ADMIN")] public class ContactController : ControllerBase { private readonly ContactService _contactService; public ContactController(ContactService contactService) { _contactService = contactService; } [HttpGet] public async Task> GetContactInfo() { var settings = await _contactService.GetOrInitializeContactSettingsAsync(); return Ok(ContactInfoResponse.FromEntity(settings)); } [HttpPut] public async Task> UpdateContactInfo([FromBody] UpdateContactInfoRequest request) { var updatedSettings = await _contactService.UpdateContactInfoAsync(request); return Ok(ContactInfoResponse.FromEntity(updatedSettings)); } [HttpPost("email-recipients")] public async Task> AddEmailRecipient([FromBody] AddEmailRecipientRequest request) { var settings = await _contactService.AddEmailRecipientAsync(request.Email); return Ok(new EmailRecipientsResponse(settings.EmailRecipients)); } [HttpDelete("email-recipients")] public async Task> RemoveEmailRecipient([FromBody] RemoveEmailRecipientRequest request) { var settings = await _contactService.RemoveEmailRecipientAsync(request.Email); return Ok(new EmailRecipientsResponse(settings.EmailRecipients)); } }