PageRenderTime 51ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/Gradebook/Controllers/StudentsController.cs

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