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;
}
}
}