Upload project.

This commit is contained in:
StevenJW
2020-06-07 22:36:12 +01:00
parent 0df30b8f36
commit 5829fb5504
170 changed files with 31989 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace ThAmCo.Venues.Data
{
public class Availability
{
[DataType(DataType.Date)]
public DateTime Date { get; set; }
public string VenueCode { get; set; }
[ForeignKey(nameof(VenueCode))]
public Venue Venue { get; set; }
[Range(0.0, Double.MaxValue)]
public double CostPerHour { get; set; }
public Reservation Reservation { get; set; }
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace ThAmCo.Venues.Data
{
public class EventType
{
[MinLength(3), MaxLength(3)]
public string Id { get; set; }
[Required]
public string Title { get; set; }
public List<Suitability> SuitableVenues { get; set; }
}
}

View File

@@ -0,0 +1,247 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using ThAmCo.Venues.Data;
namespace ThAmCo.Venues.Data.Migrations
{
[DbContext(typeof(VenuesDbContext))]
[Migration("20181028125345_InitialCreate")]
partial class InitialCreate
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasDefaultSchema("thamco.venues")
.HasAnnotation("ProductVersion", "2.1.1-rtm-30846")
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
modelBuilder.Entity("ThAmCo.Venues.Data.Availability", b =>
{
b.Property<DateTime>("Date");
b.Property<string>("VenueCode");
b.Property<double>("CostPerHour");
b.HasKey("Date", "VenueCode");
b.HasIndex("VenueCode");
b.ToTable("Availabilities");
b.HasData(
new { Date = new DateTime(2018, 10, 28, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 51.79 },
new { Date = new DateTime(2018, 11, 2, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 46.77 },
new { Date = new DateTime(2018, 11, 2, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 72.07 },
new { Date = new DateTime(2018, 11, 3, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 57.18 },
new { Date = new DateTime(2018, 11, 3, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 91.03 },
new { Date = new DateTime(2018, 11, 4, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 61.13 },
new { Date = new DateTime(2018, 11, 5, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 139.55 },
new { Date = new DateTime(2018, 11, 10, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 96.38 },
new { Date = new DateTime(2018, 11, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 92.69 },
new { Date = new DateTime(2018, 11, 14, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 59.86 },
new { Date = new DateTime(2018, 11, 14, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 95.01 },
new { Date = new DateTime(2018, 11, 17, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 57.45 },
new { Date = new DateTime(2018, 11, 18, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 55.44 },
new { Date = new DateTime(2018, 11, 18, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 79.26 },
new { Date = new DateTime(2018, 11, 19, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 80.49 },
new { Date = new DateTime(2018, 11, 20, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 97.65 },
new { Date = new DateTime(2018, 11, 22, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 57.4 },
new { Date = new DateTime(2018, 11, 23, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 58.02 },
new { Date = new DateTime(2018, 11, 24, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 50.63 },
new { Date = new DateTime(2018, 11, 24, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 78.49 },
new { Date = new DateTime(2018, 11, 25, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 94.67 },
new { Date = new DateTime(2018, 11, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 32.43 },
new { Date = new DateTime(2018, 11, 28, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 68.05 },
new { Date = new DateTime(2018, 11, 29, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 92.52 },
new { Date = new DateTime(2018, 11, 30, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 53.12 },
new { Date = new DateTime(2018, 12, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 49.28 },
new { Date = new DateTime(2018, 12, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 104.76 },
new { Date = new DateTime(2018, 12, 3, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 30.91 },
new { Date = new DateTime(2018, 12, 4, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 99.44 },
new { Date = new DateTime(2018, 12, 5, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 69.36 },
new { Date = new DateTime(2018, 12, 6, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 76.14 },
new { Date = new DateTime(2018, 12, 7, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 64.02 },
new { Date = new DateTime(2018, 12, 8, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 51.48 },
new { Date = new DateTime(2018, 12, 8, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 112.88 },
new { Date = new DateTime(2018, 12, 9, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 109.15 },
new { Date = new DateTime(2018, 12, 10, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 115.89 },
new { Date = new DateTime(2018, 12, 11, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 64.03 },
new { Date = new DateTime(2018, 12, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 53.84 },
new { Date = new DateTime(2018, 12, 13, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 40.11 },
new { Date = new DateTime(2018, 12, 13, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 92.32 },
new { Date = new DateTime(2018, 12, 13, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 76.81 },
new { Date = new DateTime(2018, 12, 14, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 43.72 },
new { Date = new DateTime(2018, 12, 14, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 80.66 },
new { Date = new DateTime(2018, 12, 17, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 42.3 },
new { Date = new DateTime(2018, 12, 18, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 51.56 },
new { Date = new DateTime(2018, 12, 18, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 87.87 },
new { Date = new DateTime(2018, 12, 19, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 48.59 },
new { Date = new DateTime(2018, 12, 20, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 84.98 },
new { Date = new DateTime(2018, 12, 21, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 35.85 },
new { Date = new DateTime(2018, 12, 21, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 80.77 },
new { Date = new DateTime(2018, 12, 21, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 83.71 },
new { Date = new DateTime(2018, 12, 22, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 91.53 },
new { Date = new DateTime(2018, 12, 22, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 132.13 },
new { Date = new DateTime(2018, 12, 23, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 104.41 },
new { Date = new DateTime(2018, 12, 24, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 114.65 },
new { Date = new DateTime(2018, 12, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 50.39 },
new { Date = new DateTime(2018, 12, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 95.83 },
new { Date = new DateTime(2018, 12, 28, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 62.54 },
new { Date = new DateTime(2018, 12, 30, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 78.43 },
new { Date = new DateTime(2019, 1, 7, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 77.7 },
new { Date = new DateTime(2019, 1, 11, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 33.03 },
new { Date = new DateTime(2019, 1, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 110.11 },
new { Date = new DateTime(2019, 1, 13, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 77.64 },
new { Date = new DateTime(2019, 1, 15, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 130.17 },
new { Date = new DateTime(2019, 1, 16, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 35.67 },
new { Date = new DateTime(2019, 1, 16, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 101.32 },
new { Date = new DateTime(2019, 1, 17, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 53.22 },
new { Date = new DateTime(2019, 1, 19, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 74.15 },
new { Date = new DateTime(2019, 1, 19, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 102.22 },
new { Date = new DateTime(2019, 1, 21, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 44.05 },
new { Date = new DateTime(2019, 1, 22, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 99.88 },
new { Date = new DateTime(2019, 1, 23, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 115.3 },
new { Date = new DateTime(2019, 1, 24, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 53.81 },
new { Date = new DateTime(2019, 1, 24, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 72.34 },
new { Date = new DateTime(2019, 1, 25, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 52.94 },
new { Date = new DateTime(2019, 1, 25, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 112.63 }
);
});
modelBuilder.Entity("ThAmCo.Venues.Data.EventType", b =>
{
b.Property<string>("Id")
.ValueGeneratedOnAdd()
.IsFixedLength(true)
.HasMaxLength(3);
b.Property<string>("Title")
.IsRequired();
b.HasKey("Id");
b.ToTable("EventTypes");
b.HasData(
new { Id = "CON", Title = "Conference" },
new { Id = "MET", Title = "Meeting" },
new { Id = "PTY", Title = "Party" },
new { Id = "WED", Title = "Wedding" }
);
});
modelBuilder.Entity("ThAmCo.Venues.Data.Reservation", b =>
{
b.Property<string>("Reference")
.ValueGeneratedOnAdd()
.IsFixedLength(true)
.HasMaxLength(13);
b.Property<DateTime>("EventDate");
b.Property<string>("StaffId")
.IsRequired();
b.Property<string>("VenueCode")
.IsRequired();
b.Property<DateTime>("WhenMade");
b.HasKey("Reference");
b.HasIndex("EventDate", "VenueCode")
.IsUnique();
b.ToTable("Reservations");
});
modelBuilder.Entity("ThAmCo.Venues.Data.Suitability", b =>
{
b.Property<string>("EventTypeId");
b.Property<string>("VenueCode");
b.HasKey("EventTypeId", "VenueCode");
b.HasIndex("VenueCode");
b.ToTable("Suitabilities");
b.HasData(
new { EventTypeId = "WED", VenueCode = "CRKHL" },
new { EventTypeId = "CON", VenueCode = "CRKHL" },
new { EventTypeId = "PTY", VenueCode = "CRKHL" },
new { EventTypeId = "WED", VenueCode = "TNDMR" },
new { EventTypeId = "CON", VenueCode = "TNDMR" },
new { EventTypeId = "MET", VenueCode = "TNDMR" },
new { EventTypeId = "WED", VenueCode = "FDLCK" },
new { EventTypeId = "PTY", VenueCode = "FDLCK" }
);
});
modelBuilder.Entity("ThAmCo.Venues.Data.Venue", b =>
{
b.Property<string>("Code")
.ValueGeneratedOnAdd()
.IsFixedLength(true)
.HasMaxLength(5);
b.Property<int>("Capacity");
b.Property<string>("Description")
.IsRequired();
b.Property<string>("Name")
.IsRequired();
b.HasKey("Code");
b.ToTable("Venues");
b.HasData(
new { Code = "CRKHL", Capacity = 150, Description = "Once the residence of Lord and Lady Crackling, this lavish dwelling remains a prime example of 18th century fine living.", Name = "Crackling Hall" },
new { Code = "TNDMR", Capacity = 450, Description = "Refurbished manor house with fully equipped facilities ready to help you have a good time in business or pleasure.", Name = "Tinder Manor" },
new { Code = "FDLCK", Capacity = 85, Description = "Rustic pub set in ideallic countryside, the original venue of a notorious local musician and his parrot.", Name = "The Fiddler's Cockatoo" }
);
});
modelBuilder.Entity("ThAmCo.Venues.Data.Availability", b =>
{
b.HasOne("ThAmCo.Venues.Data.Venue", "Venue")
.WithMany("AvailableDates")
.HasForeignKey("VenueCode")
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity("ThAmCo.Venues.Data.Reservation", b =>
{
b.HasOne("ThAmCo.Venues.Data.Availability", "Availability")
.WithOne("Reservation")
.HasForeignKey("ThAmCo.Venues.Data.Reservation", "EventDate", "VenueCode")
.OnDelete(DeleteBehavior.Restrict);
});
modelBuilder.Entity("ThAmCo.Venues.Data.Suitability", b =>
{
b.HasOne("ThAmCo.Venues.Data.EventType", "EventType")
.WithMany("SuitableVenues")
.HasForeignKey("EventTypeId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("ThAmCo.Venues.Data.Venue", "Venue")
.WithMany("SuitableEventTypes")
.HasForeignKey("VenueCode")
.OnDelete(DeleteBehavior.Cascade);
});
#pragma warning restore 612, 618
}
}
}

View File

@@ -0,0 +1,278 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
namespace ThAmCo.Venues.Data.Migrations
{
public partial class InitialCreate : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.EnsureSchema(
name: "thamco.venues");
migrationBuilder.CreateTable(
name: "EventTypes",
schema: "thamco.venues",
columns: table => new
{
Id = table.Column<string>(fixedLength: true, maxLength: 3, nullable: false),
Title = table.Column<string>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_EventTypes", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Venues",
schema: "thamco.venues",
columns: table => new
{
Code = table.Column<string>(fixedLength: true, maxLength: 5, nullable: false),
Name = table.Column<string>(nullable: false),
Description = table.Column<string>(nullable: false),
Capacity = table.Column<int>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Venues", x => x.Code);
});
migrationBuilder.CreateTable(
name: "Availabilities",
schema: "thamco.venues",
columns: table => new
{
Date = table.Column<DateTime>(nullable: false),
VenueCode = table.Column<string>(nullable: false),
CostPerHour = table.Column<double>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Availabilities", x => new { x.Date, x.VenueCode });
table.ForeignKey(
name: "FK_Availabilities_Venues_VenueCode",
column: x => x.VenueCode,
principalSchema: "thamco.venues",
principalTable: "Venues",
principalColumn: "Code",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Suitabilities",
schema: "thamco.venues",
columns: table => new
{
EventTypeId = table.Column<string>(nullable: false),
VenueCode = table.Column<string>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Suitabilities", x => new { x.EventTypeId, x.VenueCode });
table.ForeignKey(
name: "FK_Suitabilities_EventTypes_EventTypeId",
column: x => x.EventTypeId,
principalSchema: "thamco.venues",
principalTable: "EventTypes",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_Suitabilities_Venues_VenueCode",
column: x => x.VenueCode,
principalSchema: "thamco.venues",
principalTable: "Venues",
principalColumn: "Code",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Reservations",
schema: "thamco.venues",
columns: table => new
{
Reference = table.Column<string>(fixedLength: true, maxLength: 13, nullable: false),
EventDate = table.Column<DateTime>(nullable: false),
VenueCode = table.Column<string>(nullable: false),
WhenMade = table.Column<DateTime>(nullable: false),
StaffId = table.Column<string>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Reservations", x => x.Reference);
table.ForeignKey(
name: "FK_Reservations_Availabilities_EventDate_VenueCode",
columns: x => new { x.EventDate, x.VenueCode },
principalSchema: "thamco.venues",
principalTable: "Availabilities",
principalColumns: new[] { "Date", "VenueCode" },
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.InsertData(
schema: "thamco.venues",
table: "EventTypes",
columns: new[] { "Id", "Title" },
values: new object[,]
{
{ "CON", "Conference" },
{ "MET", "Meeting" },
{ "PTY", "Party" },
{ "WED", "Wedding" }
});
migrationBuilder.InsertData(
schema: "thamco.venues",
table: "Venues",
columns: new[] { "Code", "Capacity", "Description", "Name" },
values: new object[,]
{
{ "CRKHL", 150, "Once the residence of Lord and Lady Crackling, this lavish dwelling remains a prime example of 18th century fine living.", "Crackling Hall" },
{ "TNDMR", 450, "Refurbished manor house with fully equipped facilities ready to help you have a good time in business or pleasure.", "Tinder Manor" },
{ "FDLCK", 85, "Rustic pub set in ideallic countryside, the original venue of a notorious local musician and his parrot.", "The Fiddler's Cockatoo" }
});
migrationBuilder.InsertData(
schema: "thamco.venues",
table: "Availabilities",
columns: new[] { "Date", "VenueCode", "CostPerHour" },
values: new object[,]
{
{ new DateTime(2018, 11, 3, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 91.03 },
{ new DateTime(2018, 11, 14, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 59.86 },
{ new DateTime(2018, 11, 3, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 57.18 },
{ new DateTime(2018, 11, 2, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 46.77 },
{ new DateTime(2018, 10, 28, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 51.79 },
{ new DateTime(2019, 1, 25, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 112.63 },
{ new DateTime(2019, 1, 23, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 115.3 },
{ new DateTime(2019, 1, 22, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 99.88 },
{ new DateTime(2018, 11, 18, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 55.44 },
{ new DateTime(2019, 1, 19, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 102.22 },
{ new DateTime(2019, 1, 15, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 130.17 },
{ new DateTime(2019, 1, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 110.11 },
{ new DateTime(2019, 1, 7, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 77.7 },
{ new DateTime(2018, 12, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 95.83 },
{ new DateTime(2018, 12, 24, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 114.65 },
{ new DateTime(2018, 12, 23, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 104.41 },
{ new DateTime(2018, 12, 22, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 132.13 },
{ new DateTime(2019, 1, 16, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 101.32 },
{ new DateTime(2018, 12, 21, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 83.71 },
{ new DateTime(2018, 11, 23, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 58.02 },
{ new DateTime(2018, 11, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 32.43 },
{ new DateTime(2019, 1, 25, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 52.94 },
{ new DateTime(2019, 1, 24, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 53.81 },
{ new DateTime(2019, 1, 21, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 44.05 },
{ new DateTime(2019, 1, 16, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 35.67 },
{ new DateTime(2019, 1, 11, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 33.03 },
{ new DateTime(2018, 12, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 50.39 },
{ new DateTime(2018, 12, 21, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 35.85 },
{ new DateTime(2018, 11, 24, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 50.63 },
{ new DateTime(2018, 12, 19, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 48.59 },
{ new DateTime(2018, 12, 17, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 42.3 },
{ new DateTime(2018, 12, 14, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 43.72 },
{ new DateTime(2018, 12, 13, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 40.11 },
{ new DateTime(2018, 12, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 53.84 },
{ new DateTime(2018, 12, 8, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 51.48 },
{ new DateTime(2018, 12, 3, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 30.91 },
{ new DateTime(2018, 12, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 49.28 },
{ new DateTime(2018, 12, 18, 0, 0, 0, 0, DateTimeKind.Unspecified), "FDLCK", 51.56 },
{ new DateTime(2018, 12, 13, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 76.81 },
{ new DateTime(2018, 12, 18, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 87.87 },
{ new DateTime(2018, 12, 9, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 109.15 },
{ new DateTime(2018, 12, 14, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 80.66 },
{ new DateTime(2018, 12, 13, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 92.32 },
{ new DateTime(2018, 12, 11, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 64.03 },
{ new DateTime(2018, 12, 7, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 64.02 },
{ new DateTime(2018, 12, 6, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 76.14 },
{ new DateTime(2018, 12, 5, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 69.36 },
{ new DateTime(2018, 12, 4, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 99.44 },
{ new DateTime(2018, 11, 30, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 53.12 },
{ new DateTime(2018, 12, 20, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 84.98 },
{ new DateTime(2018, 11, 29, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 92.52 },
{ new DateTime(2018, 11, 24, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 78.49 },
{ new DateTime(2018, 11, 22, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 57.4 },
{ new DateTime(2018, 11, 20, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 97.65 },
{ new DateTime(2018, 11, 19, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 80.49 },
{ new DateTime(2018, 11, 17, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 57.45 },
{ new DateTime(2018, 11, 14, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 95.01 },
{ new DateTime(2018, 11, 10, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 96.38 },
{ new DateTime(2018, 11, 4, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 61.13 },
{ new DateTime(2018, 11, 28, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 68.05 },
{ new DateTime(2018, 12, 21, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 80.77 },
{ new DateTime(2018, 12, 22, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 91.53 },
{ new DateTime(2018, 12, 28, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 62.54 },
{ new DateTime(2018, 12, 30, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 78.43 },
{ new DateTime(2019, 1, 13, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 77.64 },
{ new DateTime(2018, 12, 8, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 112.88 },
{ new DateTime(2018, 12, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 104.76 },
{ new DateTime(2019, 1, 17, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 53.22 },
{ new DateTime(2019, 1, 19, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 74.15 },
{ new DateTime(2019, 1, 24, 0, 0, 0, 0, DateTimeKind.Unspecified), "CRKHL", 72.34 },
{ new DateTime(2018, 11, 25, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 94.67 },
{ new DateTime(2018, 12, 10, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 115.89 },
{ new DateTime(2018, 11, 18, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 79.26 },
{ new DateTime(2018, 11, 2, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 72.07 },
{ new DateTime(2018, 11, 5, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 139.55 },
{ new DateTime(2018, 11, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), "TNDMR", 92.69 }
});
migrationBuilder.InsertData(
schema: "thamco.venues",
table: "Suitabilities",
columns: new[] { "EventTypeId", "VenueCode" },
values: new object[,]
{
{ "WED", "FDLCK" },
{ "CON", "CRKHL" },
{ "WED", "CRKHL" },
{ "WED", "TNDMR" },
{ "CON", "TNDMR" },
{ "MET", "TNDMR" },
{ "PTY", "CRKHL" },
{ "PTY", "FDLCK" }
});
migrationBuilder.CreateIndex(
name: "IX_Availabilities_VenueCode",
schema: "thamco.venues",
table: "Availabilities",
column: "VenueCode");
migrationBuilder.CreateIndex(
name: "IX_Reservations_EventDate_VenueCode",
schema: "thamco.venues",
table: "Reservations",
columns: new[] { "EventDate", "VenueCode" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_Suitabilities_VenueCode",
schema: "thamco.venues",
table: "Suitabilities",
column: "VenueCode");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Reservations",
schema: "thamco.venues");
migrationBuilder.DropTable(
name: "Suitabilities",
schema: "thamco.venues");
migrationBuilder.DropTable(
name: "Availabilities",
schema: "thamco.venues");
migrationBuilder.DropTable(
name: "EventTypes",
schema: "thamco.venues");
migrationBuilder.DropTable(
name: "Venues",
schema: "thamco.venues");
}
}
}

View File

@@ -0,0 +1,245 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using ThAmCo.Venues.Data;
namespace ThAmCo.Venues.Data.Migrations
{
[DbContext(typeof(VenuesDbContext))]
partial class VenuesDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasDefaultSchema("thamco.venues")
.HasAnnotation("ProductVersion", "2.1.1-rtm-30846")
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
modelBuilder.Entity("ThAmCo.Venues.Data.Availability", b =>
{
b.Property<DateTime>("Date");
b.Property<string>("VenueCode");
b.Property<double>("CostPerHour");
b.HasKey("Date", "VenueCode");
b.HasIndex("VenueCode");
b.ToTable("Availabilities");
b.HasData(
new { Date = new DateTime(2018, 10, 28, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 51.79 },
new { Date = new DateTime(2018, 11, 2, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 46.77 },
new { Date = new DateTime(2018, 11, 2, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 72.07 },
new { Date = new DateTime(2018, 11, 3, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 57.18 },
new { Date = new DateTime(2018, 11, 3, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 91.03 },
new { Date = new DateTime(2018, 11, 4, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 61.13 },
new { Date = new DateTime(2018, 11, 5, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 139.55 },
new { Date = new DateTime(2018, 11, 10, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 96.38 },
new { Date = new DateTime(2018, 11, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 92.69 },
new { Date = new DateTime(2018, 11, 14, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 59.86 },
new { Date = new DateTime(2018, 11, 14, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 95.01 },
new { Date = new DateTime(2018, 11, 17, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 57.45 },
new { Date = new DateTime(2018, 11, 18, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 55.44 },
new { Date = new DateTime(2018, 11, 18, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 79.26 },
new { Date = new DateTime(2018, 11, 19, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 80.49 },
new { Date = new DateTime(2018, 11, 20, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 97.65 },
new { Date = new DateTime(2018, 11, 22, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 57.4 },
new { Date = new DateTime(2018, 11, 23, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 58.02 },
new { Date = new DateTime(2018, 11, 24, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 50.63 },
new { Date = new DateTime(2018, 11, 24, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 78.49 },
new { Date = new DateTime(2018, 11, 25, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 94.67 },
new { Date = new DateTime(2018, 11, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 32.43 },
new { Date = new DateTime(2018, 11, 28, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 68.05 },
new { Date = new DateTime(2018, 11, 29, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 92.52 },
new { Date = new DateTime(2018, 11, 30, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 53.12 },
new { Date = new DateTime(2018, 12, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 49.28 },
new { Date = new DateTime(2018, 12, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 104.76 },
new { Date = new DateTime(2018, 12, 3, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 30.91 },
new { Date = new DateTime(2018, 12, 4, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 99.44 },
new { Date = new DateTime(2018, 12, 5, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 69.36 },
new { Date = new DateTime(2018, 12, 6, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 76.14 },
new { Date = new DateTime(2018, 12, 7, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 64.02 },
new { Date = new DateTime(2018, 12, 8, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 51.48 },
new { Date = new DateTime(2018, 12, 8, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 112.88 },
new { Date = new DateTime(2018, 12, 9, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 109.15 },
new { Date = new DateTime(2018, 12, 10, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 115.89 },
new { Date = new DateTime(2018, 12, 11, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 64.03 },
new { Date = new DateTime(2018, 12, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 53.84 },
new { Date = new DateTime(2018, 12, 13, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 40.11 },
new { Date = new DateTime(2018, 12, 13, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 92.32 },
new { Date = new DateTime(2018, 12, 13, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 76.81 },
new { Date = new DateTime(2018, 12, 14, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 43.72 },
new { Date = new DateTime(2018, 12, 14, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 80.66 },
new { Date = new DateTime(2018, 12, 17, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 42.3 },
new { Date = new DateTime(2018, 12, 18, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 51.56 },
new { Date = new DateTime(2018, 12, 18, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 87.87 },
new { Date = new DateTime(2018, 12, 19, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 48.59 },
new { Date = new DateTime(2018, 12, 20, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 84.98 },
new { Date = new DateTime(2018, 12, 21, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 35.85 },
new { Date = new DateTime(2018, 12, 21, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 80.77 },
new { Date = new DateTime(2018, 12, 21, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 83.71 },
new { Date = new DateTime(2018, 12, 22, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 91.53 },
new { Date = new DateTime(2018, 12, 22, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 132.13 },
new { Date = new DateTime(2018, 12, 23, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 104.41 },
new { Date = new DateTime(2018, 12, 24, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 114.65 },
new { Date = new DateTime(2018, 12, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 50.39 },
new { Date = new DateTime(2018, 12, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 95.83 },
new { Date = new DateTime(2018, 12, 28, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 62.54 },
new { Date = new DateTime(2018, 12, 30, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 78.43 },
new { Date = new DateTime(2019, 1, 7, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 77.7 },
new { Date = new DateTime(2019, 1, 11, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 33.03 },
new { Date = new DateTime(2019, 1, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 110.11 },
new { Date = new DateTime(2019, 1, 13, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 77.64 },
new { Date = new DateTime(2019, 1, 15, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 130.17 },
new { Date = new DateTime(2019, 1, 16, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 35.67 },
new { Date = new DateTime(2019, 1, 16, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 101.32 },
new { Date = new DateTime(2019, 1, 17, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 53.22 },
new { Date = new DateTime(2019, 1, 19, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 74.15 },
new { Date = new DateTime(2019, 1, 19, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 102.22 },
new { Date = new DateTime(2019, 1, 21, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 44.05 },
new { Date = new DateTime(2019, 1, 22, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 99.88 },
new { Date = new DateTime(2019, 1, 23, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 115.3 },
new { Date = new DateTime(2019, 1, 24, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 53.81 },
new { Date = new DateTime(2019, 1, 24, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "CRKHL", CostPerHour = 72.34 },
new { Date = new DateTime(2019, 1, 25, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "FDLCK", CostPerHour = 52.94 },
new { Date = new DateTime(2019, 1, 25, 0, 0, 0, 0, DateTimeKind.Unspecified), VenueCode = "TNDMR", CostPerHour = 112.63 }
);
});
modelBuilder.Entity("ThAmCo.Venues.Data.EventType", b =>
{
b.Property<string>("Id")
.ValueGeneratedOnAdd()
.IsFixedLength(true)
.HasMaxLength(3);
b.Property<string>("Title")
.IsRequired();
b.HasKey("Id");
b.ToTable("EventTypes");
b.HasData(
new { Id = "CON", Title = "Conference" },
new { Id = "MET", Title = "Meeting" },
new { Id = "PTY", Title = "Party" },
new { Id = "WED", Title = "Wedding" }
);
});
modelBuilder.Entity("ThAmCo.Venues.Data.Reservation", b =>
{
b.Property<string>("Reference")
.ValueGeneratedOnAdd()
.IsFixedLength(true)
.HasMaxLength(13);
b.Property<DateTime>("EventDate");
b.Property<string>("StaffId")
.IsRequired();
b.Property<string>("VenueCode")
.IsRequired();
b.Property<DateTime>("WhenMade");
b.HasKey("Reference");
b.HasIndex("EventDate", "VenueCode")
.IsUnique();
b.ToTable("Reservations");
});
modelBuilder.Entity("ThAmCo.Venues.Data.Suitability", b =>
{
b.Property<string>("EventTypeId");
b.Property<string>("VenueCode");
b.HasKey("EventTypeId", "VenueCode");
b.HasIndex("VenueCode");
b.ToTable("Suitabilities");
b.HasData(
new { EventTypeId = "WED", VenueCode = "CRKHL" },
new { EventTypeId = "CON", VenueCode = "CRKHL" },
new { EventTypeId = "PTY", VenueCode = "CRKHL" },
new { EventTypeId = "WED", VenueCode = "TNDMR" },
new { EventTypeId = "CON", VenueCode = "TNDMR" },
new { EventTypeId = "MET", VenueCode = "TNDMR" },
new { EventTypeId = "WED", VenueCode = "FDLCK" },
new { EventTypeId = "PTY", VenueCode = "FDLCK" }
);
});
modelBuilder.Entity("ThAmCo.Venues.Data.Venue", b =>
{
b.Property<string>("Code")
.ValueGeneratedOnAdd()
.IsFixedLength(true)
.HasMaxLength(5);
b.Property<int>("Capacity");
b.Property<string>("Description")
.IsRequired();
b.Property<string>("Name")
.IsRequired();
b.HasKey("Code");
b.ToTable("Venues");
b.HasData(
new { Code = "CRKHL", Capacity = 150, Description = "Once the residence of Lord and Lady Crackling, this lavish dwelling remains a prime example of 18th century fine living.", Name = "Crackling Hall" },
new { Code = "TNDMR", Capacity = 450, Description = "Refurbished manor house with fully equipped facilities ready to help you have a good time in business or pleasure.", Name = "Tinder Manor" },
new { Code = "FDLCK", Capacity = 85, Description = "Rustic pub set in ideallic countryside, the original venue of a notorious local musician and his parrot.", Name = "The Fiddler's Cockatoo" }
);
});
modelBuilder.Entity("ThAmCo.Venues.Data.Availability", b =>
{
b.HasOne("ThAmCo.Venues.Data.Venue", "Venue")
.WithMany("AvailableDates")
.HasForeignKey("VenueCode")
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity("ThAmCo.Venues.Data.Reservation", b =>
{
b.HasOne("ThAmCo.Venues.Data.Availability", "Availability")
.WithOne("Reservation")
.HasForeignKey("ThAmCo.Venues.Data.Reservation", "EventDate", "VenueCode")
.OnDelete(DeleteBehavior.Restrict);
});
modelBuilder.Entity("ThAmCo.Venues.Data.Suitability", b =>
{
b.HasOne("ThAmCo.Venues.Data.EventType", "EventType")
.WithMany("SuitableVenues")
.HasForeignKey("EventTypeId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("ThAmCo.Venues.Data.Venue", "Venue")
.WithMany("SuitableEventTypes")
.HasForeignKey("VenueCode")
.OnDelete(DeleteBehavior.Cascade);
});
#pragma warning restore 612, 618
}
}
}

View File

@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace ThAmCo.Venues.Data
{
public class Reservation
{
[Key, MinLength(13), MaxLength(13)]
public string Reference { get; set; }
[DataType(DataType.Date)]
public DateTime EventDate { get; set; }
[Required]
public string VenueCode { get; set; }
[ForeignKey(nameof(EventDate) + ", " + nameof(VenueCode))]
public Availability Availability { get; set; }
public DateTime WhenMade { get; set; }
[Required]
public string StaffId { get; set; }
}
}

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace ThAmCo.Venues.Data
{
public class Suitability
{
public string EventTypeId { get; set; }
public EventType EventType { get; set; }
public string VenueCode { get; set; }
public Venue Venue { get; set; }
}
}

View File

@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace ThAmCo.Venues.Data
{
public class Venue
{
[Key, MinLength(5), MaxLength(5)]
public string Code { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Description { get; set; }
[Range(1, Int32.MaxValue)]
public int Capacity { get; set; }
public List<Suitability> SuitableEventTypes { get; set; }
public List<Availability> AvailableDates { get; set; }
}
}

View File

@@ -0,0 +1,132 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
namespace ThAmCo.Venues.Data
{
public class VenuesDbContext : DbContext
{
public DbSet<EventType> EventTypes { get; set; }
public DbSet<Venue> Venues { get; set; }
public DbSet<Availability> Availabilities { get; set; }
public DbSet<Suitability> Suitabilities { get; set; }
public DbSet<Reservation> Reservations { get; set; }
private readonly IHostingEnvironment _hostEnv;
public VenuesDbContext(DbContextOptions<VenuesDbContext> options,
IHostingEnvironment env) : base(options)
{
_hostEnv = env;
}
protected override void OnConfiguring(DbContextOptionsBuilder builder)
{
base.OnConfiguring(builder);
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.HasDefaultSchema("thamco.venues");
builder.Entity<Suitability>()
.HasKey(s => new { s.EventTypeId, s.VenueCode });
builder.Entity<EventType>()
.Property(e => e.Id)
.IsFixedLength();
builder.Entity<EventType>()
.HasMany(e => e.SuitableVenues)
.WithOne(s => s.EventType)
.HasForeignKey(s => s.EventTypeId);
builder.Entity<Venue>()
.Property(v => v.Code)
.IsFixedLength();
builder.Entity<Venue>()
.HasMany(v => v.SuitableEventTypes)
.WithOne(s => s.Venue)
.HasForeignKey(s => s.VenueCode);
builder.Entity<Venue>()
.HasMany(v => v.AvailableDates)
.WithOne(a => a.Venue)
.HasForeignKey(a => a.VenueCode);
builder.Entity<Availability>()
.HasKey(a => new { a.Date, a.VenueCode });
builder.Entity<Reservation>()
.Property(r => r.Reference)
.IsFixedLength();
builder.Entity<Reservation>()
.HasOne(r => r.Availability)
.WithOne(a => a.Reservation)
.IsRequired()
// prevent an Availability being deleted if there's a Reservation
.OnDelete(DeleteBehavior.Restrict);
builder.Entity<EventType>()
.HasData(
new EventType { Id = "CON", Title = "Conference" },
new EventType { Id = "MET", Title = "Meeting" },
new EventType { Id = "PTY", Title = "Party" },
new EventType { Id = "WED", Title = "Wedding" }
);
if (_hostEnv != null && _hostEnv.IsDevelopment())
{
builder.Entity<Venue>()
.HasData(
new Venue { Code = "CRKHL", Name = "Crackling Hall", Description = "Once the residence of Lord and Lady Crackling, this lavish dwelling remains a prime example of 18th century fine living.", Capacity = 150 },
new Venue { Code = "TNDMR", Name = "Tinder Manor", Description = "Refurbished manor house with fully equipped facilities ready to help you have a good time in business or pleasure.", Capacity = 450 },
new Venue { Code = "FDLCK", Name = "The Fiddler's Cockatoo", Description = "Rustic pub set in ideallic countryside, the original venue of a notorious local musician and his parrot.", Capacity = 85 }
);
builder.Entity<Suitability>()
.HasData(
new Suitability { VenueCode = "CRKHL", EventTypeId = "WED" },
new Suitability { VenueCode = "CRKHL", EventTypeId = "CON" },
new Suitability { VenueCode = "CRKHL", EventTypeId = "PTY" },
new Suitability { VenueCode = "TNDMR", EventTypeId = "WED" },
new Suitability { VenueCode = "TNDMR", EventTypeId = "CON" },
new Suitability { VenueCode = "TNDMR", EventTypeId = "MET" },
new Suitability { VenueCode = "FDLCK", EventTypeId = "WED" },
new Suitability { VenueCode = "FDLCK", EventTypeId = "PTY" }
);
var rand = new Random(0);
var startDate = new DateTime(2018, 10, 28);
var dates = new List<Availability>();
var venues = new [] {
new { Venue = "FDLCK", Cost = 30.0 },
new { Venue = "CRKHL", Cost = 50.0 },
new { Venue = "TNDMR", Cost = 70.0 }
}.ToList();
venues.ForEach(v =>
{
var more = Enumerable.Range(0, 90)
.Select(i => new Availability
{
VenueCode = v.Venue,
Date = startDate.AddDays(i),
CostPerHour = Math.Round(v.Cost * (1.0 + rand.NextDouble()), 2)
});
dates.AddRange(more);
});
var availabilities = dates.Where(d => rand.NextDouble() < 0.3)
.OrderBy(d => d.Date)
.ToArray();
builder.Entity<Availability>()
.HasData(availabilities);
}
}
}
}