public ActionResult Edit(int albumId)
        {
            var album     = _albumRepository.GetAlbumById(albumId);
            var viewModel = AlbumViewModelCreator.CreateEditViewModel(album);

            return(View(viewModel));
        }
        private T CreateAlbumViewModel <T>(Func <T> albumViewModelCreator, int albumId, Action <T> initializer = null)
            where T : BaseAlbumViewModel
        {
            var album = _albumRepository.GetAlbumById(albumId);

            return(AlbumViewModelCreator.CreateViewModel(albumViewModelCreator, album, initializer));
        }
        public ActionResult Browse(int albumId)
        {
            var album  = _albumRepository.GetAlbumById(albumId);
            var photos = album.GetPhotoIds().Select(photoId => _photoRepository.GetPhotoById(photoId));

            var albumWithPhotosViewModel = AlbumViewModelCreator.CreateViewModel(() => new AlbumWithPhotosViewModel(),
                                                                                 album,
                                                                                 viewModel => viewModel.Photos = photos);

            return(View(albumWithPhotosViewModel));
        }