public ActionResult Create()
{
return this.View(new MoviesCreateModel() { ViewAction = ViewAction.Create, Movie = new MovieVM()});
}
B - Agregar una nueva vista "Create" con un formulario que permita cargar cada campo de una película.
Deben utilizarse los helpers tipados de Razor
- FormBuilder
- LabelFor
- TextBoxFor
[HttpPost]
public ActionResult Create(MovieVM movie)
{
if (this.ModelState.IsValid)
{
var newMovieDb = new Movie();
newMovieDb.Name = movie.Name;
newMovieDb.ReleaseDate = movie.ReleaseDate;
newMovieDb.Plot = movie.Plot;
newMovieDb.CoverLink = movie.CoverLink;
newMovieDb.Runtime = movie.Runtime;
this.movieService.AddMovie(newMovieDb);
movie.AsViewModel(newMovieDb);
}
return this.View(new MoviesCreateModel() { ViewAction = ViewAction.Create, Movie = movie});
}
Ejercicio 3: Si la película se guardó exitosamente retornar a la grilla de películas y mostrar mensaje de éxito.
this.TempData["successmessage"] = "Se ha agregado exitosamente la pelicula: " + movie.Name;
Bonus - Agregar otro botón “Save and New” que permitirá al usuario crear la película y seguir cargando otra película a continuación. En este caso, mostrar otro mensaje de éxito en este caso en la pantalla de creación de película.
Ejercicio 4: Agregar la funcionalidad de permitir editar una película. El usuario debería ser capaz de poder editar la película mediante haciendo click en un link botón “Editar” en la grilla de películas:
public ActionResult Edit(Guid id)
{
var movie = this.movieService.GetMovieById(id);
var vm = new MovieVM();
vm.AsViewModel(movie);
return this.View("Create", new MoviesCreateModel() { ViewAction = ViewAction.Edit, Movie = vm });
}
[HttpPost]
public ActionResult Edit(MovieVM movie)
{
if (this.ModelState.IsValid)
{
var movieDb = this.movieService.GetMovieById(movie.Id);
movieDb.Name = movie.Name;
movieDb.ReleaseDate = movie.ReleaseDate;
movieDb.Runtime = movie.Runtime;
movieDb.CoverLink = movie.CoverLink;
movieDb.Plot = movie.Plot;
this.movieService.Update(movie);
this.TempData["successmessage"] = "Se ha actualizado exitosamente la pelicula: " + movie.Name;
return this.RedirectToAction("Index");
}
else
{
return this.View("Create", new MoviesCreateModel() { ViewAction = ViewAction.Edit, Movie = movie });
}
}
Ejercicio 5: En la creación y edición de películas, incorporar la posibilidad de ingresar cuales son los géneros de la película. En la grilla de películas, por cada película mostrar cuáles son sus géneros.
@Html.ListBox("selectedGenres", Model.Genres.Select(s => new SelectListItem() { Text = s.Name, Value = s.Id.ToString(), Selected = Model.Movie.Genres.Any(a => a.Id == s.Id) }), new { @class = "form-control", size = "8" })
IEnumerable<Guid> selectedGenres
return this.View("Create", new MoviesCreateModel() { ViewAction = ViewAction.Edit, Movie = movie, Genres = this.genreService.GetGenres() });
if (selectedGenres != null)
{
foreach (var selectedGenreId in selectedGenres)
{
var genre = this.genreService.GetGenreById(selectedGenreId);
if (genre != null)
{
movie.Genres.Add(genre);
}
}
}
$.ajax({
url: '@Url.Action("Delete")/' + movieId
}).done(function () {
alert("The movie has been deleted");
row.remove();
}).fail(function () { alert("error"); });