/Gradebook/Controllers/SubjectsController.cs
C# | 98 lines | 72 code | 21 blank | 5 comment | 8 complexity | 6ac20a79126e00b3661673dd9b628298 MD5 | raw file
- using System.Linq;
- using System.Web.Security;
- using AutoMapper;
- using Gradebook.Contracts;
- using Gradebook.Model;
- using System;
- using System.Collections.Generic;
- using System.Net;
- using System.Net.Http;
- using System.Web.Http;
- using Gradebook.ViewModels;
-
- namespace Gradebook.Controllers
- {
- public class SubjectsController : ApiControllerBase
- {
- public SubjectsController(IGradebookUow uow) : base(uow) { }
-
- // GET /api/subjects
- public IEnumerable<Subject> Get()
- {
- return Unit.Subjects.GetAll();
- }
-
- // GET /api/subjects/{int}
- public Subject Get(int id)
- {
- var subject = Unit.Subjects.Read(id);
-
- if (subject == null)
- throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
-
- return subject;
- }
-
- // POST /api/subjects
- public HttpResponseMessage Post(Subject model)
- {
- if (ModelState.IsValid)
- {
- Unit.Subjects.Create(model);
- Unit.Commit();
-
- var response = Request.CreateResponse(HttpStatusCode.Created, model);
- var uri = Url.Link("DefaultApi", new { id = model.Id });
- response.Headers.Location = new Uri(Request.RequestUri, uri);
-
- return response;
- }
-
- throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest));
- }
-
- // PUT /api/subjects/{int}
- public HttpResponseMessage Put(int id, Subject model)
- {
- var subject = Unit.Subjects.Read(model.Id);
-
- if (subject == null)
- throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
-
- if (ModelState.IsValid)
- {
- subject.Name = model.Name;
-
- Unit.Subjects.Update(subject);
- Unit.Commit();
-
- return new HttpResponseMessage(HttpStatusCode.NoContent);
- }
-
- throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest));
- }
-
- // DELETE /api/subjects/{int}
- public void Delete(int id)
- {
- var game = Unit.Subjects.Read(id);
-
- if (game == null)
- throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
-
- Unit.Subjects.Delete(id);
- Unit.Commit();
-
- throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable));
- }
-
- [Authorize]
- [ActionName("Classes")]
- public IEnumerable<ClassSubject> GetByTeacher()
- {
- var teacherId = AccountController.CurrentUser.Teacher.Id;
-
- return Unit.ClassSubjects.GetByTeacher(teacherId).Select(Mapper.Map<ClassCode, ClassSubject>);
- }
- }
- }