using Microsoft.AspNetCore.Mvc; using System.Linq.Expressions; using System.Reflection.Metadata; using WebApp.Data; using WebApp.Entities; namespace WebApp.Controllers.Api { [ApiController] [Route("api/events")] public class EventsApiController : ControllerBase { private readonly ApplicationDbContext _context; public EventsApiController(ApplicationDbContext context) { _context = context; } // GET: /api/events [HttpGet] public IActionResult GetAll() { var events = _context.Events.ToList(); return Ok(events); } // GET: /api/events/5 [HttpGet("{id}")] public IActionResult GetById(int id) { var ev = _context.Events.Find(id); if (ev == null) return NotFound(); return Ok(ev); } // POST: /api/events [HttpPost] public IActionResult Create([FromBody] Event ev) { if (!ModelState.IsValid) return BadRequest(ModelState); ev.EventDate = DateTime.SpecifyKind(ev.EventDate, DateTimeKind.Utc); _context.Events.Add(ev); _context.SaveChanges(); return CreatedAtAction(nameof(GetById), new { id = ev.EventId }, ev); } // PUT: /api/events/5 [HttpPut("{id}")] public IActionResult Update(int id, [FromBody] Event updated) { if (id != updated.EventId) return BadRequest("ID w URL nie zgadza się z obiektem."); var ev = _context.Events.Find(id); if (ev == null) return NotFound(); ev.Title = updated.Title; ev.Description = updated.Description; ev.Location = updated.Location; ev.EventDate = updated.EventDate; ev.OrganisationId = updated.OrganisationId; _context.SaveChanges(); return NoContent(); } // DELETE: /api/events/5 [HttpDelete("{id}")] public IActionResult Delete(int id) { var ev = _context.Events.Find(id); if (ev == null) return NotFound(); _context.Events.Remove(ev); _context.SaveChanges(); return NoContent(); } } }