/// <summary>
        /// Related specific course with specific study program, and semester.
        /// </summary>
        /// <param name="courseId">Unique identifer for the course</param>
        /// <param name="studyProgram">Study program that needs to be related with specified course</param>
        /// <param name="semester">Semester that needs to be related with specified course</param>
        /// <returns>True if added, false if not</returns>
        public async Task <ResultMessage <bool> > AddInStudyProgram(int courseId, StudyProgram studyProgram, Semester semester)
        {
            try
            {
                CourseStudyProgram courseStudyProgram = new CourseStudyProgram()
                {
                    CourseId     = courseId,
                    Semester     = semester,
                    StudyProgram = studyProgram,
                    StudyYear    = semester.GetStudyYear()
                };
                await _orhedgeContext.AddAsync(courseStudyProgram);

                await _orhedgeContext.SaveChangesAsync();

                return(new ResultMessage <bool>(true, OperationStatus.Success));
            }
            catch (DbUpdateException ex)
            {
                return(new ResultMessage <bool>(false, _errorHandler.Handle(ex)));
            }
            catch (Exception ex)
            {
                return(new ResultMessage <bool>(false, _errorHandler.Handle(ex)));
            }
        }
        /// <summary>
        /// Deletes course from study program and within certain semester.
        /// </summary>
        /// <param name="courseId">Unique identifer for the course</param>
        /// <param name="studyProgram">Study program from which course is being deleted</param>
        /// <param name="semester">Semester from which course if being deleted</param>
        /// <returns>True if deleted, false if not</returns>
        public async Task <ResultMessage <bool> > DeleteFromStudyProgram(int courseId, StudyProgram studyProgram, Semester semester)
        {
            try
            {
                CourseStudyProgram courseStudyProgram = await _orhedgeContext.CourseStudyPrograms
                                                        .SingleOrDefaultAsync(x => x.CourseId == courseId &&
                                                                              x.StudyProgram == studyProgram &&
                                                                              x.Semester == semester);

                if (courseStudyProgram == null)
                {
                    return(new ResultMessage <bool>(false, OperationStatus.NotFound));
                }
                _orhedgeContext.Remove(courseStudyProgram);
                await _orhedgeContext.SaveChangesAsync();

                return(new ResultMessage <bool>(true, OperationStatus.Success));
            }
            catch (DbUpdateException ex)
            {
                return(new ResultMessage <bool>(false, _errorHandler.Handle(ex)));
            }
            catch (Exception ex)
            {
                return(new ResultMessage <bool>(false, _errorHandler.Handle(ex)));
            }
        }