PageRenderTime 39ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/Gradebook/Controllers/SubjectsController.cs

https://bitbucket.org/academium/gradebook
C# | 98 lines | 72 code | 21 blank | 5 comment | 8 complexity | 6ac20a79126e00b3661673dd9b628298 MD5 | raw file
  1. using System.Linq;
  2. using System.Web.Security;
  3. using AutoMapper;
  4. using Gradebook.Contracts;
  5. using Gradebook.Model;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Net;
  9. using System.Net.Http;
  10. using System.Web.Http;
  11. using Gradebook.ViewModels;
  12. namespace Gradebook.Controllers
  13. {
  14. public class SubjectsController : ApiControllerBase
  15. {
  16. public SubjectsController(IGradebookUow uow) : base(uow) { }
  17. // GET /api/subjects
  18. public IEnumerable<Subject> Get()
  19. {
  20. return Unit.Subjects.GetAll();
  21. }
  22. // GET /api/subjects/{int}
  23. public Subject Get(int id)
  24. {
  25. var subject = Unit.Subjects.Read(id);
  26. if (subject == null)
  27. throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
  28. return subject;
  29. }
  30. // POST /api/subjects
  31. public HttpResponseMessage Post(Subject model)
  32. {
  33. if (ModelState.IsValid)
  34. {
  35. Unit.Subjects.Create(model);
  36. Unit.Commit();
  37. var response = Request.CreateResponse(HttpStatusCode.Created, model);
  38. var uri = Url.Link("DefaultApi", new { id = model.Id });
  39. response.Headers.Location = new Uri(Request.RequestUri, uri);
  40. return response;
  41. }
  42. throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest));
  43. }
  44. // PUT /api/subjects/{int}
  45. public HttpResponseMessage Put(int id, Subject model)
  46. {
  47. var subject = Unit.Subjects.Read(model.Id);
  48. if (subject == null)
  49. throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
  50. if (ModelState.IsValid)
  51. {
  52. subject.Name = model.Name;
  53. Unit.Subjects.Update(subject);
  54. Unit.Commit();
  55. return new HttpResponseMessage(HttpStatusCode.NoContent);
  56. }
  57. throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest));
  58. }
  59. // DELETE /api/subjects/{int}
  60. public void Delete(int id)
  61. {
  62. var game = Unit.Subjects.Read(id);
  63. if (game == null)
  64. throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
  65. Unit.Subjects.Delete(id);
  66. Unit.Commit();
  67. throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable));
  68. }
  69. [Authorize]
  70. [ActionName("Classes")]
  71. public IEnumerable<ClassSubject> GetByTeacher()
  72. {
  73. var teacherId = AccountController.CurrentUser.Teacher.Id;
  74. return Unit.ClassSubjects.GetByTeacher(teacherId).Select(Mapper.Map<ClassCode, ClassSubject>);
  75. }
  76. }
  77. }