public HttpResponseMessage PostProgram(ICTGWS.ViewModels.ProgramAdd program)
        {
            if (ModelState.IsValid)
            {
               // r.AddProgram(program);
                //db.Programs.Add(r.AddProgram(program));
                //db.SaveChanges();

                //HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, program);
                //response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = program.Id }));
                //return response;
                // Add the new item
                var c = r.AddProgram(program);
                // Prepare the response
                HttpResponseMessage response =
                    Request.CreateResponse<Program>(HttpStatusCode.Created, c);
                response.Headers.Location =
                    new Uri(Url.Link("DefaultApi", new { id = c.Id }));
                return response;
            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }
        public HttpResponseMessage PostSubject(ICTGWS.ViewModels.SubjectAdd subject)
        {
            if (ModelState.IsValid)
            {/*
                db.Subjects.Add(subject);
                db.SaveChanges();

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, subject);
                response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = subject.Id }));
                return response;   */
                var c = r.AddSubject(subject);                   //<====
                // Prepare the response
                HttpResponseMessage response =
                    Request.CreateResponse<Subject>(HttpStatusCode.Created, c);
                response.Headers.Location =
                    new Uri(Url.Link("DefaultApi", new { id = c.Id }));
                return response;
            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }
        public HttpResponseMessage PostCourse(ICTGWS.ViewModels.CourseAdd course)
        {
            if (ModelState.IsValid)
            {    /*
                db.Courses.Add(course);
                db.SaveChanges();

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, course);
                response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = course.Id }));
                return response;   */
                var c = r.AddCourse(course);                   //<====
                // Prepare the response
                HttpResponseMessage response =
                    Request.CreateResponse<Course>(HttpStatusCode.Created, c);
                response.Headers.Location =
                    new Uri(Url.Link("DefaultApi", new { id = c.Id }));
                return response;
            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }
        public HttpResponseMessage PostGradedWork(ICTGWS.ViewModels.GradedWorkAdd gradedwork)
        {
            if (ModelState.IsValid)
            {    /*
                db.GradedWorks.Add(gradedwork);
                db.SaveChanges();

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, gradedwork);
                response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = gradedwork.Id }));
                return response;     */
                var c = r.AddGradedWork(gradedwork);                   //<====
                // Prepare the response
                HttpResponseMessage response =
                    Request.CreateResponse<GradedWork>(HttpStatusCode.Created, c);
                response.Headers.Location =
                    new Uri(Url.Link("DefaultApi", new { id = c.Id }));
                return response;
            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }
        public HttpResponseMessage PutSubject(int id,  ICTGWS.ViewModels.SubjectUpdate subject)
        {
            if (ModelState.IsValid && id == subject.Id)
            {  /*
                db.Entry(subject).State = EntityState.Modified;

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

                return Request.CreateResponse(HttpStatusCode.OK);   */
                // Attempt to update the item
                var updatedSubject = r.UpdateSubject(subject);
                return (updatedSubject == null) ?
                    Request.CreateResponse(HttpStatusCode.BadRequest) :
                    Request.CreateResponse<ICTGWS.ViewModels.SubjectUpdate>(HttpStatusCode.OK, updatedSubject);

            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }
        public HttpResponseMessage PutEmployee(int id, ICTGWS.ViewModels.EmployeeUpdate employee)
        {
            if (ModelState.IsValid && id == employee.Id)
            {/*
                db.Entry(employee).State = EntityState.Modified;

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

                return Request.CreateResponse(HttpStatusCode.OK);  */
                var updatedEmployee = r.UpdateEmployee(employee);
                return (updatedEmployee == null) ?
                    Request.CreateResponse(HttpStatusCode.BadRequest) :
                    Request.CreateResponse<ICTGWS.ViewModels.EmployeeUpdate>(HttpStatusCode.OK, updatedEmployee);

            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }
        public HttpResponseMessage PutGradedWork(int id, ICTGWS.ViewModels.GradedWorkUpdate gradedwork)
        {
            if (ModelState.IsValid && id == gradedwork.Id)
            {   /*
                db.Entry(gradedwork).State = EntityState.Modified;

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

                return Request.CreateResponse(HttpStatusCode.OK);   */
                // Attempt to update the item
                var updatedGradedWork = r.UpdateGradedWork(gradedwork);
                return (updatedGradedWork == null) ?
                    Request.CreateResponse(HttpStatusCode.BadRequest) :
                    Request.CreateResponse<ICTGWS.ViewModels.GradedWorkUpdate>(HttpStatusCode.OK, updatedGradedWork);

            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }