private async Task OnCourseSearchChange(ChangeEventArgs e)
        {
            var search = e.Value?.ToString().ToLower();

            if (search.Length > 2 && !searchingCourse)
            {
                searchingCourse = true;
                searchedCourses = await ProgramContext.SearchCoursesByName(search, ProgrammeId);

                lastCourseSearch = search;
            }
            else if (search.Contains(lastCourseSearch) && searchingCourse)
            {
                searchedCourses  = searchedCourses.Where(x => x.CourseName.ToLower().Contains(search)).ToList();
                lastCourseSearch = search;
            }
            else
            {
                searchedCourses.Clear();
                searchingCourse  = false;
                lastCourseSearch = "";
            }
            this.StateHasChanged();
        }