/// <summary>
 /// Initializes a new instance of the <see cref="EditUniversityViewModel"/> class.
 /// </summary>
 /// <param name="dataService">
 /// The data service.
 /// </param>
 /// <param name="navigationService">
 /// The navigation service.
 /// </param>
 public EditUniversityViewModel(IDataService dataService, INavigationService navigationService)
 {
     _dataService = dataService;
     _navigationService = navigationService;
     _university = null;
     SaveCommand =new RelayCommand(SaveUniversity);
     CancelCommand =new RelayCommand(_navigationService.GoBack);
     GoBackCommand = new RelayCommand(_navigationService.GoBack);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="EditUniversityViewModel"/> class.
 /// </summary>
 /// <param name="dataService">
 /// The data service.
 /// </param>
 /// <param name="navigationService">
 /// The navigation service.
 /// </param>
 public EditUniversityViewModel(IDataService dataService, INavigationService navigationService)
 {
     _dataService = dataService;
     _navigationService = navigationService;
     _university = null;
     LoadDataCommand = new RelayCommand(async () => await LoadDataAsync());
     SaveCommand =new RelayCommand(SaveUniversity);
     CancelCommand =new RelayCommand(_navigationService.GoBack);
 }
        /// <summary>
        /// Deletes the university.
        /// </summary>
        /// <param name="selectedUniversity">The selected university.</param>
        /// <returns>The <see cref="Task" />.</returns>
        public async Task DeleteUniversityAsync(University selectedUniversity)
        {
           var students = await LoadStudentsByUniversityAsync(selectedUniversity);
           await App.Connection.RunInTransactionAsync(async (SQLiteConnection connection) =>
           {
               foreach (var student in students)
               {
                   DeleteStudentAsync(student);
               }

               App.Connection.DeleteAsync(selectedUniversity);
           }); 
        }
 public void LoadData()
 {
    University = new University();
 }
 /// <summary>
 /// Loads the data.
 /// </summary>
 /// <returns></returns>
 public async Task LoadData(University university)
 {
     University = university;
     Students = await _dataService.LoadStudentsByUniversityAsync(university);
 }
 /// <summary>
 /// Loads the data.
 /// </summary>
 public void LoadData(University university)
 {
    Student = new Student { UniversityId = university.Id };
 }
 /// <summary>
 /// Loads the data.
 /// </summary>
 /// <returns></returns>
 public async Task LoadDataAsync()
 {
     try
     {
         var guid = _navigationService.QueryString["university"];
         University = await this._dataService.LoadUniversityByIdAsync(guid);
     }
     catch (KeyNotFoundException)
     {
         University = new University();
     }
 }
 /// <summary>
 /// Loads the data.
 /// </summary>
 /// <returns></returns>
 public void LoadData(University university)
 {
     University = university;
 }
 /// <summary>
 /// Loads the students by university.
 /// </summary>
 /// <param name="university">The university.</param>
 /// <returns></returns>
 public async Task<IList<Student>> LoadStudentsByUniversityAsync(University university)
 {
     return await LoadStudentsByUniversityAsync(university.Id);
 }
 /// <summary>
 /// Updates the university.
 /// </summary>
 /// <param name="selectedUniversity">The selected university.</param>
 /// <returns>The <see cref="Task" />.</returns>
 public async Task UpdateUniversityAsync(University selectedUniversity)
 {
     var existingContact = await App.Connection.FindAsync<University>(u => u.Id == selectedUniversity.Id);
     if (existingContact != null)
     {
         await App.Connection.UpdateAsync(selectedUniversity);
     }
 }
 /// <summary>
 /// Saves the university.
 /// </summary>
 /// <param name="newUniversity">The new university.</param>
 /// <returns>The <see cref="Task" />.</returns>
 public async Task SaveUniversityAsync(University newUniversity)
 {
     await App.Connection.InsertAsync(newUniversity);
 }