コード例 #1
0
        /// <summary>
        /// Removing genre from the static list on button click
        /// </summary>
        /// <param name="sender">The source of the event</param>
        /// <param name="e">The instance containing the event data</param>
        private void RemoveButton_Click(object sender, RoutedEventArgs e)
        {
            if (Genres.GenresList.Count < 1)
            {
                MessageBox.Show("No genres to remove.");
                return;
            }
            GenreDetailViewModel viewmodel = (GenreDetailViewModel)DataContext;
            Genre genre = Genres.GetGenre(viewmodel.MyGenre.GenreId);

            if (genre.BooksList.Count > 0)
            {
                MessageBox.Show("Genre cannot be removed. The associated books must be removed first.");
            }
            else if (MessageBox.Show("Are you sure you want to remove the genre?", "Remove genre", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
            {
                Genres.RemoveGenre(genre.GenreId);
                Genres.AreRemovedItems = true;
                var mw = Application.Current.Windows
                         .Cast <Window>()
                         .FirstOrDefault(window => window is MainWindow) as MainWindow;

                mw.DataContext = new
                {
                    collection = new GenresListViewModel(),
                    detail     = new GenreDetailViewModel(Genres.GetGenre(Genres.GenresList.Count))
                };
            }
        }
コード例 #2
0
        /// <summary>
        /// Setting genre to be updated, if user has clicked the input field
        /// </summary>
        /// <param name="sender">The source of the event</param>
        /// <param name="e">The instance containing the event data</param>
        private void TxtName_GotFocus(object sender, RoutedEventArgs e)
        {
            GenreDetailViewModel viewmodel = (GenreDetailViewModel)DataContext;
            Genre genre = viewmodel.MyGenre;

            genre.IsUpdated  = true;
            Genres.IsUpdated = true;
        }
コード例 #3
0
        public async Task <ActionResult> Add(GenreDetailViewModel vm)
        {
            await _genreRepository.AddGenre(new Genre
            {
                Name = vm.Name
            });

            return(RedirectToAction("Index"));
        }
コード例 #4
0
        public async Task <ActionResult> Edit(Guid id, GenreDetailViewModel vm)
        {
            await _genreRepository.EditGenre(new Genre
            {
                Id   = id,
                Name = vm.Name
            });

            return(RedirectToAction("Index"));
        }
コード例 #5
0
        public GenreDetailViewModelTests()
        {
            eventAggregatorMock    = new Mock <IEventAggregator>();
            metroDialogServiceMock = new Mock <IMetroDialogService>();
            genreRepoMock          = new Mock <IRepository <Genre> >();
            genreLookupServiceMock = new Mock <IGenreLookupDataService>();

            viewModel = new GenreDetailViewModel(eventAggregatorMock.Object,
                                                 metroDialogServiceMock.Object,
                                                 genreRepoMock.Object,
                                                 genreLookupServiceMock.Object);
        }
コード例 #6
0
        public GenreDetailPage(GenreDetailViewModel viewModel)
        {
            InitializeComponent();

            BindingContext       = ViewModel = viewModel;
            viewModel.Navigation = Navigation;

            // Der Backbutton wird von Xamarin für Android nicht erwartungsgemäß behandelt: OnBackButtonPressed wird nicht gefeuert,
            // wenn man ihn antippt. Dann funktioniert die Validierung nicht => Abschalten
            if (Device.RuntimePlatform == Device.Android)
            {
                NavigationPage.SetHasBackButton(this, false);
            }
        }
コード例 #7
0
        public GenreDetailViewModelTests()
        {
            var eventAggregatorMock    = new Mock <IEventAggregator>();
            var loggerMock             = new Mock <ILogger>();
            var genreLookupServiceMock = new Mock <IGenreLookupDataService>();
            var genreRepoMock          = new Mock <IRepository <Genre> >();
            var domainService          = new GenreService(genreRepoMock.Object);
            var dialogService          = new DialogService();

            viewModel = new GenreDetailViewModel(eventAggregatorMock.Object,
                                                 loggerMock.Object,
                                                 domainService,
                                                 genreLookupServiceMock.Object,
                                                 dialogService);
        }
コード例 #8
0
        public async Task <ActionResult> Edit(Guid id)
        {
            var existingGenre = await _genreRepository.GetGenreById(id);

            if (existingGenre != null)
            {
                var vm = new GenreDetailViewModel {
                    Name = existingGenre.Name
                };
                return(View(vm));
            }
            else
            {
                return(RedirectToAction("Index"));
            }
        }
コード例 #9
0
        public IActionResult Detail(int id)
        {
            var genreInfo = _repository.Genres.First(it => it.GenreId == id);
            var books     = _repository.Books.Where(it => it.GenreId == id).ToList();

            if (genreInfo != null && books != null)
            {
                var viewModel = new GenreDetailViewModel {
                    GenreId   = genreInfo.GenreId,
                    Books     = books,
                    GenreName = genreInfo.Nome
                };
                viewModel.Authors = _repository.BookAuthors.Where(it => it.Book.GenreId == id).Include(it => it.Author).ToList();
                return(View(viewModel));
            }
            else
            {
                return(Redirect("catalog/error"));
            }
        }
コード例 #10
0
        /// <summary>
        /// Checking that the genre's name is not empty and that it doesn't already exist
        /// </summary>
        /// <param name="sender">The source of the event</param>
        /// <param name="e">The instance containing the event data</param>
        private void TxtName_LostFocus(object sender, RoutedEventArgs e)
        {
            GenreDetailViewModel viewmodel = (GenreDetailViewModel)DataContext;
            Genre oldGenre = viewmodel.MyGenre;

            if (string.IsNullOrEmpty(txtName.Text))
            {
                MessageBox.Show("Field cannot be empty!");
                txtName.Text = oldGenre.Name;
            }

            foreach (var genre in Genres.GenresList)
            {
                if (genre.Name == txtName.Text && (oldGenre.GenreId != genre.GenreId))
                {
                    MessageBox.Show("Genre already exists!");

                    txtName.Text = oldGenre.Name;
                    break;
                }
            }
        }