From 19fc2475fa95235f08751f7e1863206d6d6e33fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tommy=20=C3=96man?= Date: Sat, 19 Jan 2019 17:08:56 +0100 Subject: [PATCH] Reading from database --- Vidly/Controllers/CustomersController.cs | 23 ++-- ...901181642319_AddMembershipType.Designer.cs | 29 ++++ .../201901181642319_AddMembershipType.cs | 34 +++++ .../201901181642319_AddMembershipType.resx | 126 ++++++++++++++++++ ...431535_PopulateMembershipTypes.Designer.cs | 29 ++++ ...201901191431535_PopulateMembershipTypes.cs | 20 +++ ...1901191431535_PopulateMembershipTypes.resx | 126 ++++++++++++++++++ ...ApplyAnnotationsToCustomerName.Designer.cs | 29 ++++ ...91449134_ApplyAnnotationsToCustomerName.cs | 18 +++ ...449134_ApplyAnnotationsToCustomerName.resx | 126 ++++++++++++++++++ Vidly/Models/Customer.cs | 5 + Vidly/Models/MembershipType.cs | 15 +++ Vidly/Vidly.csproj | 22 +++ Vidly/Views/Customers/Customers.cshtml | 18 ++- 14 files changed, 607 insertions(+), 13 deletions(-) create mode 100644 Vidly/Migrations/201901181642319_AddMembershipType.Designer.cs create mode 100644 Vidly/Migrations/201901181642319_AddMembershipType.cs create mode 100644 Vidly/Migrations/201901181642319_AddMembershipType.resx create mode 100644 Vidly/Migrations/201901191431535_PopulateMembershipTypes.Designer.cs create mode 100644 Vidly/Migrations/201901191431535_PopulateMembershipTypes.cs create mode 100644 Vidly/Migrations/201901191431535_PopulateMembershipTypes.resx create mode 100644 Vidly/Migrations/201901191449134_ApplyAnnotationsToCustomerName.Designer.cs create mode 100644 Vidly/Migrations/201901191449134_ApplyAnnotationsToCustomerName.cs create mode 100644 Vidly/Migrations/201901191449134_ApplyAnnotationsToCustomerName.resx create mode 100644 Vidly/Models/MembershipType.cs diff --git a/Vidly/Controllers/CustomersController.cs b/Vidly/Controllers/CustomersController.cs index 2a6077e..e0f1cf3 100644 --- a/Vidly/Controllers/CustomersController.cs +++ b/Vidly/Controllers/CustomersController.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Web; +using System.Data.Entity; using System.Web.Mvc; using Vidly.Models; using Vidly.ViewModels; @@ -11,9 +12,12 @@ namespace Vidly.Controllers public class CustomersController : Controller { List customers = null; + private ApplicationDbContext _context; public CustomersController() { + _context = new ApplicationDbContext(); + customers = new List { new Customer {Name="Nils Persson", Id=1}, @@ -22,6 +26,11 @@ namespace Vidly.Controllers }; } + protected override void Dispose(bool disposing) + { + _context.Dispose(); + } + // GET: Vidly public ActionResult Index() { @@ -33,7 +42,7 @@ namespace Vidly.Controllers var viewModel = new CustomersViewModel() { - Customers = customers + Customers = _context.Customers.Include(c=>c.MembershipType).ToList() }; return View(viewModel); @@ -42,14 +51,10 @@ namespace Vidly.Controllers [Route("Customers/Details/{nr}")] public ActionResult Customer(int nr) { - foreach(var cust in customers) - { - if (cust.Id == nr) - { - return View(cust); - } - } - return HttpNotFound(); + var customer = _context.Customers.SingleOrDefault(c => c.Id == nr); + if (customer== null) + return HttpNotFound(); + return View(customer); } public ActionResult Movies() diff --git a/Vidly/Migrations/201901181642319_AddMembershipType.Designer.cs b/Vidly/Migrations/201901181642319_AddMembershipType.Designer.cs new file mode 100644 index 0000000..ff77868 --- /dev/null +++ b/Vidly/Migrations/201901181642319_AddMembershipType.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 AddMembershipType : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(AddMembershipType)); + + string IMigrationMetadata.Id + { + get { return "201901181642319_AddMembershipType"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/Vidly/Migrations/201901181642319_AddMembershipType.cs b/Vidly/Migrations/201901181642319_AddMembershipType.cs new file mode 100644 index 0000000..ef6bc98 --- /dev/null +++ b/Vidly/Migrations/201901181642319_AddMembershipType.cs @@ -0,0 +1,34 @@ +namespace Vidly.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class AddMembershipType : DbMigration + { + public override void Up() + { + CreateTable( + "dbo.MembershipTypes", + c => new + { + Id = c.Byte(nullable: false), + SignUpFee = c.Short(nullable: false), + DurationInMonth = c.Byte(nullable: false), + DiscountRate = c.Byte(nullable: false), + }) + .PrimaryKey(t => t.Id); + + AddColumn("dbo.Customers", "MembershipTypeId", c => c.Byte(nullable: false)); + CreateIndex("dbo.Customers", "MembershipTypeId"); + AddForeignKey("dbo.Customers", "MembershipTypeId", "dbo.MembershipTypes", "Id", cascadeDelete: true); + } + + public override void Down() + { + DropForeignKey("dbo.Customers", "MembershipTypeId", "dbo.MembershipTypes"); + DropIndex("dbo.Customers", new[] { "MembershipTypeId" }); + DropColumn("dbo.Customers", "MembershipTypeId"); + DropTable("dbo.MembershipTypes"); + } + } +} diff --git a/Vidly/Migrations/201901181642319_AddMembershipType.resx b/Vidly/Migrations/201901181642319_AddMembershipType.resx new file mode 100644 index 0000000..beef53d --- /dev/null +++ b/Vidly/Migrations/201901181642319_AddMembershipType.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/201901191431535_PopulateMembershipTypes.Designer.cs b/Vidly/Migrations/201901191431535_PopulateMembershipTypes.Designer.cs new file mode 100644 index 0000000..2a9d9b8 --- /dev/null +++ b/Vidly/Migrations/201901191431535_PopulateMembershipTypes.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 PopulateMembershipTypes : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(PopulateMembershipTypes)); + + string IMigrationMetadata.Id + { + get { return "201901191431535_PopulateMembershipTypes"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/Vidly/Migrations/201901191431535_PopulateMembershipTypes.cs b/Vidly/Migrations/201901191431535_PopulateMembershipTypes.cs new file mode 100644 index 0000000..4930f5e --- /dev/null +++ b/Vidly/Migrations/201901191431535_PopulateMembershipTypes.cs @@ -0,0 +1,20 @@ +namespace Vidly.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class PopulateMembershipTypes : DbMigration + { + public override void Up() + { + Sql("INSERT INTO MembershipTypes (Id, SignUpFee, DurationInMonth, DiscountRate) VALUES (1,0,0,0)"); + Sql("INSERT INTO MembershipTypes (Id, SignUpFee, DurationInMonth, DiscountRate) VALUES (2, 30, 1, 30)"); + Sql("INSERT INTO MembershipTypes (Id, SignUpFee, DurationInMonth, DiscountRate) VALUES (3, 90, 3, 15)"); + Sql("INSERT INTO MembershipTypes (Id, SignUpFee, DurationInMonth, DiscountRate) VALUES (4, 300, 12, 20)"); + } + + public override void Down() + { + } + } +} diff --git a/Vidly/Migrations/201901191431535_PopulateMembershipTypes.resx b/Vidly/Migrations/201901191431535_PopulateMembershipTypes.resx new file mode 100644 index 0000000..beef53d --- /dev/null +++ b/Vidly/Migrations/201901191431535_PopulateMembershipTypes.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/201901191449134_ApplyAnnotationsToCustomerName.Designer.cs b/Vidly/Migrations/201901191449134_ApplyAnnotationsToCustomerName.Designer.cs new file mode 100644 index 0000000..6cf9a1d --- /dev/null +++ b/Vidly/Migrations/201901191449134_ApplyAnnotationsToCustomerName.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 ApplyAnnotationsToCustomerName : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(ApplyAnnotationsToCustomerName)); + + string IMigrationMetadata.Id + { + get { return "201901191449134_ApplyAnnotationsToCustomerName"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/Vidly/Migrations/201901191449134_ApplyAnnotationsToCustomerName.cs b/Vidly/Migrations/201901191449134_ApplyAnnotationsToCustomerName.cs new file mode 100644 index 0000000..55b5407 --- /dev/null +++ b/Vidly/Migrations/201901191449134_ApplyAnnotationsToCustomerName.cs @@ -0,0 +1,18 @@ +namespace Vidly.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class ApplyAnnotationsToCustomerName : DbMigration + { + public override void Up() + { + AlterColumn("dbo.Customers", "Name", c => c.String(nullable: false, maxLength: 255)); + } + + public override void Down() + { + AlterColumn("dbo.Customers", "Name", c => c.String()); + } + } +} diff --git a/Vidly/Migrations/201901191449134_ApplyAnnotationsToCustomerName.resx b/Vidly/Migrations/201901191449134_ApplyAnnotationsToCustomerName.resx new file mode 100644 index 0000000..29fbbda --- /dev/null +++ b/Vidly/Migrations/201901191449134_ApplyAnnotationsToCustomerName.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/Customer.cs b/Vidly/Models/Customer.cs index 2eb2468..075f7e1 100644 --- a/Vidly/Models/Customer.cs +++ b/Vidly/Models/Customer.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; @@ -8,7 +9,11 @@ namespace Vidly.Models public class Customer { public int Id { get; set; } + [Required] + [StringLength(255)] public string Name { get; set; } public bool IsSubscribedToNewsLetter { get; set; } + public MembershipType MembershipType { get; set; } + public byte MembershipTypeId { get; set; } } } \ No newline at end of file diff --git a/Vidly/Models/MembershipType.cs b/Vidly/Models/MembershipType.cs new file mode 100644 index 0000000..08409b8 --- /dev/null +++ b/Vidly/Models/MembershipType.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace Vidly.Models +{ + public class MembershipType + { + public byte Id { get; set; } + public short SignUpFee { get; set; } + public byte DurationInMonth { get; set; } + public byte DiscountRate { get; set; } + } +} \ No newline at end of file diff --git a/Vidly/Vidly.csproj b/Vidly/Vidly.csproj index d59125b..8bd1adc 100644 --- a/Vidly/Vidly.csproj +++ b/Vidly/Vidly.csproj @@ -189,11 +189,24 @@ 201901181614018_AddIsSubscribedToNewsLetter.cs + + + 201901181642319_AddMembershipType.cs + + + + 201901191431535_PopulateMembershipTypes.cs + + + + 201901191449134_ApplyAnnotationsToCustomerName.cs + + @@ -288,6 +301,15 @@ 201901181614018_AddIsSubscribedToNewsLetter.cs + + 201901181642319_AddMembershipType.cs + + + 201901191431535_PopulateMembershipTypes.cs + + + 201901191449134_ApplyAnnotationsToCustomerName.cs + 10.0 diff --git a/Vidly/Views/Customers/Customers.cshtml b/Vidly/Views/Customers/Customers.cshtml index 865759e..52ab476 100644 --- a/Vidly/Views/Customers/Customers.cshtml +++ b/Vidly/Views/Customers/Customers.cshtml @@ -12,12 +12,22 @@ } else { -
    + + + + + + + + @foreach (var customer in Model.Customers) { - @*
  • @customer.Name
  • *@ -
  • @Html.ActionLink(@customer.Name, "Details", "Customers", new { id = @customer.Id },null)
  • + + + + } - + +
    CustomerDiscount Rate
    @Html.ActionLink(@customer.Name, "Details", "Customers", new { id = @customer.Id }, null)@customer.MembershipType.DiscountRate%
    } \ No newline at end of file