/// <summary>
        /// returns a Course object containing all the required fields
        /// </summary>
        /// <param name="email">email of the user</param>
        /// <param name="providerCode">the provider code</param>
        /// <param name="courseCode">the ucas code of the course</param>
        /// <returns>new Course object. Null if not found</returns>
        public Course GetCourseForUser(string email, string providerCode, string courseCode)
        {
            var courseRecords = _context.GetCourse(providerCode, courseCode, email);

            if (courseRecords.Count == 0)
            {
                return(null);
            }

            return(WithEnrichmentMetadata(courseRecords, providerCode, email).Single());
        }
        public void UpdateNewCourse(string providerCode, string courseCode, string email)
        {
            var optedInNewCourse = _context.GetCourse(providerCode, courseCode, email)
                                   .FirstOrDefault(c =>
                                                   c.Provider.OptedIn &&
                                                   c.CourseSites != null &&
                                                   c.CourseSites.Any(OnlyNewOrRunningAndUnpublished));

            if (optedInNewCourse != null)
            {
                foreach (var cs in optedInNewCourse.CourseSites.Where(OnlyNewOrRunningAndUnpublished))
                {
                    cs.Publish = "Y";
                    cs.Status  = "R";
                }

                _context.Save();
            }
        }