// POST api/programs
        public HttpResponseMessage Post(ProgramPublic newProgram)
        {
            if (ModelState.IsValid)
            {
                // Add the new program
                var p = r.AddNew(newProgram);

                // Build the response object
                var response = Request.CreateResponse<ProgramFull>(HttpStatusCode.Created, p);

                // Set the Location header
                // The "new Uri" object constructor needs a string argument
                // The ApiController.Url property provides that
                // Its Link() method takes two arguments...
                // A route name, which can be seen in App_Start/WebApiConfig.cs, and
                // A route value, which substitutes for the {id} placeholder
                response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = p.Id }));

                return response;
            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.UnsupportedMediaType);
            }
        }
        /// <summary>
        /// Add new
        /// </summary>
        /// <param name="newProgram">New ProgramPublic object</param>
        /// <returns>ProgramFull object</returns>
        public ProgramFull AddNew(ProgramPublic newProgram)
        {
            // Add the new Program object
            var p = ds.Programs.Add(Mapper.Map<Models.Program>(newProgram));
            ds.SaveChanges();

            return Mapper.Map<ViewModels.ProgramFull>(p);
        }
        /// <summary>
        /// Add new
        /// </summary>
        /// <param name="newProgram">New ProgramPublic object</param>
        /// <returns>ProgramFull object</returns>
        public ProgramFull AddNew(ProgramPublic newProgram)
        {
            // Add the new Program object
            var p = ds.Programs.Add(Mapper.Map <Models.Program>(newProgram));

            ds.SaveChanges();

            return(Mapper.Map <ViewModels.ProgramFull>(p));
        }