From ecadd21228cd67919dfd7af27902869c91c6a87d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tommy=20=C3=96man?= Date: Wed, 23 Jan 2019 20:22:25 +0100 Subject: [PATCH] Movies are editable as well --- Vidly/Controllers/MoviesController.cs | 51 +++++++ ...equiredAndMaxlengthToMovieName.Designer.cs | 29 ++++ ...59_AddedRequiredAndMaxlengthToMovieName.cs | 18 +++ ..._AddedRequiredAndMaxlengthToMovieName.resx | 126 ++++++++++++++++++ ...ddedNullableReleaseDateToMovie.Designer.cs | 29 ++++ ...2224513_AddedNullableReleaseDateToMovie.cs | 18 +++ ...24513_AddedNullableReleaseDateToMovie.resx | 126 ++++++++++++++++++ ..._AddedNullableAddedDateToMovie.Designer.cs | 29 ++++ ...222227126_AddedNullableAddedDateToMovie.cs | 18 +++ ...2227126_AddedNullableAddedDateToMovie.resx | 126 ++++++++++++++++++ Vidly/Models/IdentityModels.cs | 1 + Vidly/Models/Movie.cs | 17 ++- Vidly/Vidly.csproj | 23 ++++ Vidly/ViewModels/MovieFormViewModel.cs | 14 ++ Vidly/Views/Movies/Index.cshtml | 35 ++--- Vidly/Views/Movies/MovieForm.cshtml | 37 +++++ 16 files changed, 678 insertions(+), 19 deletions(-) create mode 100644 Vidly/Migrations/201901222208159_AddedRequiredAndMaxlengthToMovieName.Designer.cs create mode 100644 Vidly/Migrations/201901222208159_AddedRequiredAndMaxlengthToMovieName.cs create mode 100644 Vidly/Migrations/201901222208159_AddedRequiredAndMaxlengthToMovieName.resx create mode 100644 Vidly/Migrations/201901222224513_AddedNullableReleaseDateToMovie.Designer.cs create mode 100644 Vidly/Migrations/201901222224513_AddedNullableReleaseDateToMovie.cs create mode 100644 Vidly/Migrations/201901222224513_AddedNullableReleaseDateToMovie.resx create mode 100644 Vidly/Migrations/201901222227126_AddedNullableAddedDateToMovie.Designer.cs create mode 100644 Vidly/Migrations/201901222227126_AddedNullableAddedDateToMovie.cs create mode 100644 Vidly/Migrations/201901222227126_AddedNullableAddedDateToMovie.resx create mode 100644 Vidly/ViewModels/MovieFormViewModel.cs create mode 100644 Vidly/Views/Movies/MovieForm.cshtml diff --git a/Vidly/Controllers/MoviesController.cs b/Vidly/Controllers/MoviesController.cs index 3188e9d..2b75e92 100644 --- a/Vidly/Controllers/MoviesController.cs +++ b/Vidly/Controllers/MoviesController.cs @@ -23,6 +23,39 @@ namespace Vidly.Controllers _context.Dispose(); } + public ActionResult New() + { + var movieGenres = _context.MovieGenres.ToList(); + var viewModel = new MovieFormViewModel + { + Movie = new Movie(), + MovieGenres = movieGenres + }; + return View("MovieForm", viewModel); + } + + [HttpPost] + public ActionResult Save(Movie movie) + { + if (movie.Id == 0) + _context.Movies.Add(movie); + else + { + var movieInDb = _context.Movies.Single(c => c.Id == movie.Id); + // Mapper.Map(customer, customerInDb); + + movieInDb.Name = movie.Name; + movieInDb.ReleaseDate = movie.ReleaseDate; + movieInDb.MovieGenreId = movie.MovieGenreId; + movieInDb.NumberInStock = movie.NumberInStock; + } + _context.SaveChanges(); + + return RedirectToAction("Index", "Movies"); + } + + + [Route("Movies")] [Route("Movies/Index")] public ActionResult Index() @@ -43,5 +76,23 @@ namespace Vidly.Controllers return View(movie); } + public ActionResult Edit(int id) + { + var movie = _context.Movies.SingleOrDefault(c => c.Id == id); + + if (movie == null) + return HttpNotFound(); + + var viewModel = new MovieFormViewModel + { + Movie = movie, + MovieGenres = _context.MovieGenres.ToList() + }; + + return View("MovieForm", viewModel); + + } + + } } \ No newline at end of file diff --git a/Vidly/Migrations/201901222208159_AddedRequiredAndMaxlengthToMovieName.Designer.cs b/Vidly/Migrations/201901222208159_AddedRequiredAndMaxlengthToMovieName.Designer.cs new file mode 100644 index 0000000..3bb4d8f --- /dev/null +++ b/Vidly/Migrations/201901222208159_AddedRequiredAndMaxlengthToMovieName.Designer.cs @@ -0,0 +1,29 @@ +// +namespace Vidly.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] + public sealed partial class AddedRequiredAndMaxlengthToMovieName : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(AddedRequiredAndMaxlengthToMovieName)); + + string IMigrationMetadata.Id + { + get { return "201901222208159_AddedRequiredAndMaxlengthToMovieName"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/Vidly/Migrations/201901222208159_AddedRequiredAndMaxlengthToMovieName.cs b/Vidly/Migrations/201901222208159_AddedRequiredAndMaxlengthToMovieName.cs new file mode 100644 index 0000000..831d9dc --- /dev/null +++ b/Vidly/Migrations/201901222208159_AddedRequiredAndMaxlengthToMovieName.cs @@ -0,0 +1,18 @@ +namespace Vidly.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class AddedRequiredAndMaxlengthToMovieName : DbMigration + { + public override void Up() + { + AlterColumn("dbo.Movies", "Name", c => c.String(nullable: false, maxLength: 255)); + } + + public override void Down() + { + AlterColumn("dbo.Movies", "Name", c => c.String()); + } + } +} diff --git a/Vidly/Migrations/201901222208159_AddedRequiredAndMaxlengthToMovieName.resx b/Vidly/Migrations/201901222208159_AddedRequiredAndMaxlengthToMovieName.resx new file mode 100644 index 0000000..afd4ecf --- /dev/null +++ b/Vidly/Migrations/201901222208159_AddedRequiredAndMaxlengthToMovieName.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + dbo + + \ No newline at end of file diff --git a/Vidly/Migrations/201901222224513_AddedNullableReleaseDateToMovie.Designer.cs b/Vidly/Migrations/201901222224513_AddedNullableReleaseDateToMovie.Designer.cs new file mode 100644 index 0000000..0adce32 --- /dev/null +++ b/Vidly/Migrations/201901222224513_AddedNullableReleaseDateToMovie.Designer.cs @@ -0,0 +1,29 @@ +// +namespace Vidly.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] + public sealed partial class AddedNullableReleaseDateToMovie : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(AddedNullableReleaseDateToMovie)); + + string IMigrationMetadata.Id + { + get { return "201901222224513_AddedNullableReleaseDateToMovie"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/Vidly/Migrations/201901222224513_AddedNullableReleaseDateToMovie.cs b/Vidly/Migrations/201901222224513_AddedNullableReleaseDateToMovie.cs new file mode 100644 index 0000000..13bcac8 --- /dev/null +++ b/Vidly/Migrations/201901222224513_AddedNullableReleaseDateToMovie.cs @@ -0,0 +1,18 @@ +namespace Vidly.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class AddedNullableReleaseDateToMovie : DbMigration + { + public override void Up() + { + AlterColumn("dbo.Movies", "ReleaseDate", c => c.DateTime()); + } + + public override void Down() + { + AlterColumn("dbo.Movies", "ReleaseDate", c => c.DateTime(nullable: false)); + } + } +} diff --git a/Vidly/Migrations/201901222224513_AddedNullableReleaseDateToMovie.resx b/Vidly/Migrations/201901222224513_AddedNullableReleaseDateToMovie.resx new file mode 100644 index 0000000..421991f --- /dev/null +++ b/Vidly/Migrations/201901222224513_AddedNullableReleaseDateToMovie.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + dbo + + \ No newline at end of file diff --git a/Vidly/Migrations/201901222227126_AddedNullableAddedDateToMovie.Designer.cs b/Vidly/Migrations/201901222227126_AddedNullableAddedDateToMovie.Designer.cs new file mode 100644 index 0000000..c97b682 --- /dev/null +++ b/Vidly/Migrations/201901222227126_AddedNullableAddedDateToMovie.Designer.cs @@ -0,0 +1,29 @@ +// +namespace Vidly.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] + public sealed partial class AddedNullableAddedDateToMovie : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(AddedNullableAddedDateToMovie)); + + string IMigrationMetadata.Id + { + get { return "201901222227126_AddedNullableAddedDateToMovie"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/Vidly/Migrations/201901222227126_AddedNullableAddedDateToMovie.cs b/Vidly/Migrations/201901222227126_AddedNullableAddedDateToMovie.cs new file mode 100644 index 0000000..e056f43 --- /dev/null +++ b/Vidly/Migrations/201901222227126_AddedNullableAddedDateToMovie.cs @@ -0,0 +1,18 @@ +namespace Vidly.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class AddedNullableAddedDateToMovie : DbMigration + { + public override void Up() + { + AlterColumn("dbo.Movies", "DateAdded", c => c.DateTime()); + } + + public override void Down() + { + AlterColumn("dbo.Movies", "DateAdded", c => c.DateTime(nullable: false)); + } + } +} diff --git a/Vidly/Migrations/201901222227126_AddedNullableAddedDateToMovie.resx b/Vidly/Migrations/201901222227126_AddedNullableAddedDateToMovie.resx new file mode 100644 index 0000000..a5b3860 --- /dev/null +++ b/Vidly/Migrations/201901222227126_AddedNullableAddedDateToMovie.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + dbo + + \ No newline at end of file diff --git a/Vidly/Models/IdentityModels.cs b/Vidly/Models/IdentityModels.cs index 6c83390..4eb85a0 100644 --- a/Vidly/Models/IdentityModels.cs +++ b/Vidly/Models/IdentityModels.cs @@ -23,6 +23,7 @@ namespace Vidly.Models public DbSet Customers { get; set; } public DbSet Movies { get; set; } public DbSet MembershipTypes { get; set; } + public DbSet MovieGenres { get; set; } public ApplicationDbContext() // : base("DefaultConnection", throwIfV1Schema: false) diff --git a/Vidly/Models/Movie.cs b/Vidly/Models/Movie.cs index 153863b..c08b11b 100644 --- a/Vidly/Models/Movie.cs +++ b/Vidly/Models/Movie.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; @@ -8,11 +9,23 @@ namespace Vidly.Models public class Movie { public int Id { get; set; } + + [Required] + [StringLength(255)] public string Name { get; set; } - public DateTime ReleaseDate { get; set; } - public DateTime DateAdded { get; set; } + + [Display(Name="Release Date")] + public DateTime? ReleaseDate { get; set; } + + public DateTime? DateAdded { get; set; } + + [Display(Name = "Number In Stock")] public int NumberInStock { get; set; } + public MovieGenre MovieGenre { get; set; } + + [Display(Name = "Genre")] + [Required] public byte MovieGenreId { get; set; } } diff --git a/Vidly/Vidly.csproj b/Vidly/Vidly.csproj index 9422ed9..38ea25d 100644 --- a/Vidly/Vidly.csproj +++ b/Vidly/Vidly.csproj @@ -229,6 +229,18 @@ 201901201503276_AddingaFewMovies.cs + + + 201901222208159_AddedRequiredAndMaxlengthToMovieName.cs + + + + 201901222224513_AddedNullableReleaseDateToMovie.cs + + + + 201901222227126_AddedNullableAddedDateToMovie.cs + @@ -240,6 +252,7 @@ + @@ -309,6 +322,7 @@ + @@ -364,6 +378,15 @@ 201901201503276_AddingaFewMovies.cs + + 201901222208159_AddedRequiredAndMaxlengthToMovieName.cs + + + 201901222224513_AddedNullableReleaseDateToMovie.cs + + + 201901222227126_AddedNullableAddedDateToMovie.cs + 10.0 diff --git a/Vidly/ViewModels/MovieFormViewModel.cs b/Vidly/ViewModels/MovieFormViewModel.cs new file mode 100644 index 0000000..a953b61 --- /dev/null +++ b/Vidly/ViewModels/MovieFormViewModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using Vidly.Models; + +namespace Vidly.ViewModels +{ + public class MovieFormViewModel + { + public IEnumerable MovieGenres { get; set; } + public Movie Movie { get; set; } + } +} \ No newline at end of file diff --git a/Vidly/Views/Movies/Index.cshtml b/Vidly/Views/Movies/Index.cshtml index cc5c8b9..540fe8f 100644 --- a/Vidly/Views/Movies/Index.cshtml +++ b/Vidly/Views/Movies/Index.cshtml @@ -5,6 +5,7 @@ }

Movies

+@Html.ActionLink("New Movie", "New", "Movies", null, new { @class = "btn btn-primary" }) @if (Model.Movies.Count == 0) { @@ -12,21 +13,21 @@ } else { - - - - - - - - - @foreach (var movie in Model.Movies) - { - - - - - } - -
MovieGenre
@Html.ActionLink(@movie.Name,"Movies","Movies",new { id = movie.Id },null) @movie.MovieGenre.Name
+ + + + + + + + + @foreach (var movie in Model.Movies) + { + + + + + } + +
MovieGenre
@Html.ActionLink(@movie.Name, "Edit", "Movies", new { id = movie.Id }, null) @movie.MovieGenre.Name
} \ No newline at end of file diff --git a/Vidly/Views/Movies/MovieForm.cshtml b/Vidly/Views/Movies/MovieForm.cshtml new file mode 100644 index 0000000..4af3107 --- /dev/null +++ b/Vidly/Views/Movies/MovieForm.cshtml @@ -0,0 +1,37 @@ +@model Vidly.ViewModels.MovieFormViewModel +@{ + ViewBag.Title = "New"; + Layout = "~/Views/Shared/_Layout.cshtml"; +} + + +@if (Model.Movie.Id == null || Model.Movie.Id == 0) +{ +

New Movie

+} +else +{ +

Edit Movie

+} + +@using (Html.BeginForm("Save", "Movies")) +{ +
+ @Html.LabelFor(m => m.Movie.Name) + @Html.TextBoxFor(m => m.Movie.Name, new { @class = "form-control" }) +
+
+ @Html.LabelFor(m => m.Movie.ReleaseDate) + @Html.TextBoxFor(m => m.Movie.ReleaseDate, "{0:d MMM yyyy}", new { @class = "form-control" }) +
+
+ @Html.LabelFor(m => m.Movie.MovieGenreId) + @Html.DropDownListFor(m => m.Movie.MovieGenreId, new SelectList(Model.MovieGenres, "Id", "Name"), "Select Genre Type", new { @class = "form-control" }) +
+
+ @Html.LabelFor(m => m.Movie.NumberInStock) + @Html.TextBoxFor(m => m.Movie.NumberInStock, new { @class = "form-control" }) +
+@Html.HiddenFor(m=>m.Movie.Id) + +} \ No newline at end of file