diff --git a/Web/Context/MileageTrakerContext.cs b/Web/Context/MileageTrakerContext.cs index 8e607da..ad2409c 100644 --- a/Web/Context/MileageTrakerContext.cs +++ b/Web/Context/MileageTrakerContext.cs @@ -11,6 +11,7 @@ namespace MileageTraker.Web.Context public DbSet Cities { get; set; } public DbSet Users { get; set; } public DbSet Roles { get; set; } + public DbSet PurposeTypes { get; set; } /* * WebSecurity.Register("Demo", "123456", "demo@demo.com", true, "Demo", "Demo"); diff --git a/Web/Migrations/201303010157481_AddPurposeType.Designer.cs b/Web/Migrations/201303010157481_AddPurposeType.Designer.cs new file mode 100644 index 0000000..bb2e8e5 --- /dev/null +++ b/Web/Migrations/201303010157481_AddPurposeType.Designer.cs @@ -0,0 +1,24 @@ +// +namespace MileageTraker.Web.Migrations +{ + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + + public sealed partial class AddPurposeType : IMigrationMetadata + { + string IMigrationMetadata.Id + { + get { return "201303010157481_AddPurposeType"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return "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"; } + } + } +} diff --git a/Web/Migrations/201303010157481_AddPurposeType.cs b/Web/Migrations/201303010157481_AddPurposeType.cs new file mode 100644 index 0000000..2258d26 --- /dev/null +++ b/Web/Migrations/201303010157481_AddPurposeType.cs @@ -0,0 +1,67 @@ +using MileageTraker.Web.Models; + +namespace MileageTraker.Web.Migrations +{ + using System.Data.Entity.Migrations; + + public partial class AddPurposeType : DbMigration + { + private const string InsertPurposeTemplate = @"INSERT INTO [PurposeType] + ([Purpose] + ,[SortOrder]) + VALUES + ('{0}' + ,'{1}')"; + + private static string GetPurposeTypeInsertSql(PurposeType purpose) + { + return string.Format(InsertPurposeTemplate, + purpose.Purpose, + purpose.SortOrder); + } + public override void Up() + { + CreateTable( + "PurposeType", + c => new + { + PurposeTypeId = c.Int(nullable: false, identity: true), + Purpose = c.String(), + SortOrder = c.Int(nullable: false), + }) + .PrimaryKey(t => t.PurposeTypeId); + + AddColumn("Log", "PurposeTypeId", c => c.Int()); + AddForeignKey("Log", "PurposeTypeId", "PurposeType", "PurposeTypeId"); + CreateIndex("Log", "PurposeTypeId"); + + var purposeTypes = + new[] + { + new PurposeType {Purpose = "Audit/Assessment", SortOrder = 1}, + new PurposeType {Purpose = "Client Assessment/Home Visit", SortOrder = 3}, + new PurposeType {Purpose = "Delivery Goods/Services", SortOrder = 5}, + new PurposeType {Purpose = "Meal Delivery", SortOrder = 7}, + new PurposeType {Purpose = "Meeting", SortOrder = 9}, + new PurposeType {Purpose = "(ETHRA)Office Visit", SortOrder = 11}, + new PurposeType {Purpose = "Pick-Up/Delivery Equipment", SortOrder = 13}, + new PurposeType {Purpose = "Site Visit", SortOrder = 15}, + new PurposeType {Purpose = "Training", SortOrder = 17}, + new PurposeType {Purpose = "Other (see Notes)", SortOrder = 19}, + }; + + foreach (var purposeType in purposeTypes) + { + Sql(GetPurposeTypeInsertSql(purposeType)); + } + } + + public override void Down() + { + DropIndex("Log", new[] { "PurposeTypeId" }); + DropForeignKey("Log", "PurposeTypeId", "PurposeType"); + DropColumn("Log", "PurposeTypeId"); + DropTable("PurposeType"); + } + } +} diff --git a/Web/Models/Log.cs b/Web/Models/Log.cs index 01213c5..8cc9178 100644 --- a/Web/Models/Log.cs +++ b/Web/Models/Log.cs @@ -28,6 +28,8 @@ namespace MileageTraker.Web.Models [StringLength(64, MinimumLength = 3, ErrorMessage = "Minimum 3 characters")] public string CityName { get; set; } + public virtual PurposeType Purpose { get; set; } + [Required] public virtual User User { get; set; } diff --git a/Web/Models/PurposeType.cs b/Web/Models/PurposeType.cs new file mode 100644 index 0000000..503cc86 --- /dev/null +++ b/Web/Models/PurposeType.cs @@ -0,0 +1,12 @@ +using System.ComponentModel.DataAnnotations; + +namespace MileageTraker.Web.Models +{ + public class PurposeType + { + [Key] + public int PurposeTypeId { get; set; } + public string Purpose { get; set; } + public int SortOrder { get; set; } + } +} \ No newline at end of file diff --git a/Web/Web.csproj b/Web/Web.csproj index 0b8bd88..266c1fe 100644 --- a/Web/Web.csproj +++ b/Web/Web.csproj @@ -156,7 +156,12 @@ 201302130049004_PasswordNullForUninitialized.cs + + + 201303010157481_AddPurposeType.cs + +