// GET api/universities/{universityCode}/programs/{programCode}/courses/{courseCode}
        public EIProgramRequiredCourse GetProgramCourse(string universityCode, string programCode, string courseCode)
        {
            EIProgramRequiredCourse programcourse = db.ProgramCourses.FirstOrDefault(pc => pc.Program.EducationalInstitute.Code == universityCode && pc.Program.Code == programCode && pc.Code == courseCode);

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

            return(programcourse);
        }
        // DELETE api/universities/{universityCode}/programs/{programCode}/courses/{courseCode}
        public HttpResponseMessage DeleteProgramCourse(string universityCode, string programCode, string courseCode)
        {
            EIProgramRequiredCourse programcourse = GetProgramCourse(universityCode, programCode, courseCode);

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

            db.ProgramCourses.Remove(programcourse);

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

            return(Request.CreateResponse(HttpStatusCode.OK, programcourse));
        }
        // POST api/universities/{universityCode}/programs/{programCode}/courses
        public HttpResponseMessage PostProgramCourse(string universityCode, string programCode, [FromBody] EIProgramRequiredCourse programcourse)
        {
            if (ModelState.IsValid)
            {
                programcourse.Program = db.Programs.First(p => p.EducationalInstitute.Code == universityCode && p.Code == programCode);
                db.ProgramCourses.Add(programcourse);
                db.SaveChanges();

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, programcourse);
                response.Headers.Location = new Uri(Url.Link("CoursesOfProgramsOfEducationalInstitute",
                                                             new { universityCode = universityCode, programCode = programCode, courseCode = programcourse.Code }));
                return(response);
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, ModelState.Values));
            }
        }
        // PUT api/universities/{universityCode}/programs/{programCode}/courses/{courseCode}
        public HttpResponseMessage PutProgramCourse(string universityCode, string programCode, string courseCode, [FromBody] EIProgramRequiredCourse programcourse)
        {
            if (ModelState.IsValid && courseCode == programcourse.Code)
            {
                var pc = GetProgramCourse(universityCode, programCode, courseCode);
                //db.Entry(programcourse).State = EntityState.Modified;

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

                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, ModelState.Values));
            }
        }