using System.Data; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Data.SqlClient; using WebAPI.Models; namespace WebAPI.Controllers; [ApiController] [Route("api/[controller]")] public class DataInboxController : Controller { private readonly AppDbContext _db; private readonly IConfiguration _configuration; private readonly LogsController _logsController; public DataInboxController( AppDbContext db, GoogleSheetsHelper googleSheetsHelper, IConfiguration configuration) { _db = db; _configuration = configuration; _logsController = new LogsController(googleSheetsHelper, _configuration); } [HttpPut] [Route("Add/{apiKey}")] [AllowAnonymous] public IActionResult Add(string apiKey, [FromBody] DataInbox dataInbox) { if (apiKey != _configuration["apiKey"]) { _logsController.AddEntry(new LogEntry { Title = $"Unauthorized request - wrong apiKey ({dataInbox.Source})", Type = LogEntryType.Warning, LogType = LogType.DataInbox, CreatedAt = DateTime.UtcNow }); return Unauthorized(); } try { dataInbox.Id = Guid.NewGuid(); dataInbox.CreatedAt = DateTime.UtcNow; _db.DataInbox.Add(dataInbox); _db.SaveChanges(); _logsController.AddEntry(new LogEntry { Title = $"Insert success: {dataInbox.Source}, {dataInbox.Name}", Type = LogEntryType.Info, LogType = LogType.DataInbox, CreatedAt = DateTime.UtcNow }); return Ok(); } catch (Exception e) { _logsController.AddEntry(new LogEntry { Title = $"Insert error: {dataInbox.Source}, {dataInbox.Name}", Type = LogEntryType.Error, LogType = LogType.DataInbox, Message = e.ToString(), CreatedAt = DateTime.UtcNow }); return BadRequest(e.ToString()); } } [HttpGet] public IActionResult GetAll() { return Ok(_db.DataInbox); } }