/Gradebook/Controllers/StudentsController.cs
C# | 98 lines | 73 code | 20 blank | 5 comment | 9 complexity | f92f36541750c597d5dc11a424e2d254 MD5 | raw file
- using System.Linq;
- 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;
-
- namespace Gradebook.Controllers
- {
- public class StudentsController : ApiControllerBase
- {
- public StudentsController(IGradebookUow uow) : base(uow) { }
-
- // GET /api/students
- public IEnumerable<ViewModels.Student> Get(int? code = 0)
- {
- if (code.GetValueOrDefault() > 0)
- {
- return
- Unit.ClassCodes.Read(code.Value)
- .TeacherClassCodes.SelectMany(x => x.StudentClassCodes)
- .Select(x => x.Student)
- .Select(Mapper.Map<Model.Student, ViewModels.Student>);
- }
-
- return Unit.Students.GetAll().Select(Mapper.Map<Model.Student, ViewModels.Student>);
- }
-
- // GET /api/students/{int}
- [ActionName("Default")]
- public Student Get(int id)
- {
- var student = Unit.Students.Read(id);
-
- if (student == null)
- throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
-
- return student;
- }
-
- // POST /api/students
- public HttpResponseMessage Post(Student model)
- {
- if (ModelState.IsValid)
- {
- Unit.Students.Create(model);
- Unit.Commit();
-
- var response = Request.CreateResponse(HttpStatusCode.Created, model);
- var uri = Url.Link(WebApiConfig.Default, new { id = model.Id });
- response.Headers.Location = new Uri(Request.RequestUri, uri);
-
- return response;
- }
-
- throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest));
- }
-
- // PUT /api/students/{int}
- public HttpResponseMessage Put(int id, Student model)
- {
- var student = Unit.Students.Read(model.Id);
-
- if (student == null)
- throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
-
- if (ModelState.IsValid)
- {
- student.FirstName = model.FirstName;
- student.LastName = model.LastName;
-
- Unit.Students.Update(student);
- Unit.Commit();
-
- return new HttpResponseMessage(HttpStatusCode.NoContent);
- }
-
- throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest));
- }
-
- // DELETE /api/students/{int}
- public void Delete(int id)
- {
- var game = Unit.Students.Read(id);
-
- if (game == null)
- throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
-
- Unit.Students.Delete(id);
- Unit.Commit();
-
- throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable));
- }
- }
- }