using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Linq; using System.Net; using System.Net.Http; using System.Threading.Tasks; using System.Web.Http; using System.Web.Http.Description; using EventManage.Models; namespace EventManage.Controllers { [RoutePrefix("api/events")] public class EventsController : ApiController { private TodoDB db = new TodoDB(); // GET: api/Events [Route("")] public IQueryable<Event> GetEvents() { return db.Events; } //Get: api/5/recurrences [Route("{EventId:int}/recurrences")] [ResponseType(typeof(Recurrence))] [HttpGet] public async Task<IHttpActionResult> GetRepeatsByEvent(int EventId) { IList<Recurrence> @rec = await db.Repeats.Where(c => c.Event_Id == EventId).ToListAsync(); if (@rec == null) { return NotFound(); } return Ok(@rec); } // GET: api/Events/5 [Route("{id:int}")] [ResponseType(typeof(Event))] public async Task<IHttpActionResult> GetEvent(int id) { Event @event = await db.Events.FindAsync(id); if (@event == null) { return NotFound(); } return Ok(@event); } // PUT: api/Events/5 [Route("{id:int}")] [ResponseType(typeof(void))] public async Task<IHttpActionResult> PutEvent(int id, Event @event) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (id != @event.Id) { return BadRequest(); } db.Entry(@event).State = EntityState.Modified; try { await db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!EventExists(id)) { return NotFound(); } else { throw; } } return StatusCode(HttpStatusCode.NoContent); } // POST: api/Events [Route("")] [ResponseType(typeof(Event))] public async Task<IHttpActionResult> PostEvent(Event @event) { if (!ModelState.IsValid) { return BadRequest(ModelState); } db.Events.Add(@event); await db.SaveChangesAsync(); return CreatedAtRoute("DefaultApi", new { id = @event.Id }, @event); } // DELETE: api/Events/5 [Route("{id:int}")] [ResponseType(typeof(Event))] public async Task<IHttpActionResult> DeleteEvent(int id) { Event @event = await db.Events.FindAsync(id); if (@event == null) { return NotFound(); } db.Events.Remove(@event); await db.SaveChangesAsync(); return Ok(@event); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } private bool EventExists(int id) { return db.Events.Count(e => e.Id == id) > 0; } } }