// PUT api/universities/{universityCode}/students/{studentId}/programs/{programCode}
        public HttpResponseMessage PutStudentProgram(string universityCode, string studentId, string programCode, EIStudentEnrolledProgram studentProgram)
        {
            if (ModelState.IsValid && programCode == studentProgram.ProgramCode)
            {
                EIStudentEnrolledProgram existingStudentProgram = GetStudentProgram(universityCode, studentId, programCode);
                existingStudentProgram.EndDate   = studentProgram.EndDate;
                existingStudentProgram.StartDate = studentProgram.StartDate;
                existingStudentProgram.Status    = studentProgram.Status;
                existingStudentProgram.CGPA      = studentProgram.CGPA;
                //db.Entry(existingStudent).State = EntityState.Modified;

                try
                {
                    db.SaveChanges();
                }
                catch (DbUpdateConcurrencyException)
                {
                    return(Request.CreateResponse(HttpStatusCode.NotFound));
                }

                return(Request.CreateResponse(HttpStatusCode.OK, existingStudentProgram));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, ModelState.Values));
            }
        }
        // GET api/universities/{universityCode}/students/{studentId}/programs/{programCode}
        public EIStudentEnrolledProgram GetStudentProgram(string universityCode, string studentId, string programCode)
        {
            EIStudentEnrolledProgram studentProgram = db.StudentPrograms.FirstOrDefault(sp => sp.Student.EducationalInstitute.Code == universityCode && sp.Student.StudentId == studentId && sp.ProgramCode == programCode);

            if (studentProgram == null)
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
            }

            return(studentProgram);
        }
        // DELETE api/universities/{universityCode}/students/{studentId}/programs/{programCode}
        public HttpResponseMessage DeleteStudentProgram(string universityCode, string studentId, string programCode)
        {
            EIStudentEnrolledProgram studentProgram = GetStudentProgram(universityCode, studentId, programCode);

            if (studentProgram == null)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound));
            }

            db.StudentPrograms.Remove(studentProgram);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound));
            }

            return(Request.CreateResponse(HttpStatusCode.OK, studentProgram));
        }
        // POST api/universities/{universityCode}/students/
        public HttpResponseMessage PostStudentProgram(string universityCode, string studentId, EIStudentEnrolledProgram studentProgram)
        {
            if (ModelState.IsValid)
            {
                studentProgram.Student = db.Students.First(s => s.EducationalInstitute.Code == universityCode && s.StudentId == studentId);
                db.StudentPrograms.Add(studentProgram);
                db.SaveChanges();

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, studentProgram);
                response.Headers.Location = new Uri(Url.Link("ProgramsOfStudentOfEducationalInstitute", new { universityCode = universityCode, studentId = studentProgram.Id, programCode = studentProgram.ProgramCode }));
                return(response);
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, ModelState.Values));
            }
        }