diff --git a/Notes/UpdateAllVehiclePreviousLog.sql b/Notes/UpdateAllVehiclePreviousLog.sql new file mode 100644 index 0000000..7d7e148 Binary files /dev/null and b/Notes/UpdateAllVehiclePreviousLog.sql differ diff --git a/Web/Migrations/201212042021486_AddVehiclePreviousLog.Designer.cs b/Web/Migrations/201212042021486_AddVehiclePreviousLog.Designer.cs new file mode 100644 index 0000000..bf8758d --- /dev/null +++ b/Web/Migrations/201212042021486_AddVehiclePreviousLog.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 AddVehiclePreviousLog : IMigrationMetadata + { + string IMigrationMetadata.Id + { + get { return "201212042021486_AddVehiclePreviousLog"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return "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"; } + } + } +} diff --git a/Web/Migrations/201212042021486_AddVehiclePreviousLog.cs b/Web/Migrations/201212042021486_AddVehiclePreviousLog.cs new file mode 100644 index 0000000..df371f3 --- /dev/null +++ b/Web/Migrations/201212042021486_AddVehiclePreviousLog.cs @@ -0,0 +1,45 @@ +namespace MileageTraker.Web.Migrations +{ + using System.Data.Entity.Migrations; + + public partial class AddVehiclePreviousLog : DbMigration + { + public override void Up() + { + AddColumn("Log", "VehiclePreviousLogId", c => c.Int()); + AddForeignKey("Log", "VehiclePreviousLogId", "Log", "LogId"); + CreateIndex("Log", "VehiclePreviousLogId"); + var populateSql = + @"WITH summary AS ( + SELECT + ROW_NUMBER() OVER (PARTITION BY l.LogId ORDER BY l.LogId ASC, pl.EndOdometer DESC, pl.Created DESC) AS rk, + l.LogId, pl.LogId as PreviousLogId + FROM + [Log] as l, + [Log] as pl + WHERE + pl.VehicleId = l.VehicleId + AND ((pl.[Date] <= l.[Date] + AND pl.EndOdometer < l.EndOdometer) + OR ( + pl.EndOdometer < l.EndOdometer + AND pl.Created < l.Created + )) + ) + UPDATE [Log] + SET [Log].VehiclePreviousLogId = summary.PreviousLogId + FROM summary + WHERE summary.rk = 1 + AND [Log].LogId = summary.LogId + "; + Sql(populateSql); + } + + public override void Down() + { + DropIndex("Log", new[] { "VehiclePreviousLogId" }); + DropForeignKey("Log", "VehiclePreviousLogId", "Log"); + DropColumn("Log", "VehiclePreviousLogId"); + } + } +} diff --git a/Web/Models/Log.cs b/Web/Models/Log.cs index 3412fed..54ab511 100644 --- a/Web/Models/Log.cs +++ b/Web/Models/Log.cs @@ -70,6 +70,12 @@ namespace MileageTraker.Web.Models [HiddenInput] public string UserAgent { get; set; } + [HiddenInput] + public int? VehiclePreviousLogId { get; set; } + + [HiddenInput] + public virtual Log VehiclePreviousLog { get; set; } + public Log() { LogType = new MileageLogTypeWrapper(); diff --git a/Web/Models/MileageTrakerContext.cs b/Web/Models/MileageTrakerContext.cs index 994f121..d1a4803 100644 --- a/Web/Models/MileageTrakerContext.cs +++ b/Web/Models/MileageTrakerContext.cs @@ -12,6 +12,10 @@ namespace MileageTraker.Web.Models protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove(); + modelBuilder.Entity() + .HasOptional(l => l.VehiclePreviousLog) + .WithMany() + .HasForeignKey(l => l.VehiclePreviousLogId); } } } \ No newline at end of file diff --git a/Web/Web.csproj b/Web/Web.csproj index 7bee143..b27b157 100644 --- a/Web/Web.csproj +++ b/Web/Web.csproj @@ -87,6 +87,10 @@ 201204181847082_InitialMigration.cs + + + 201212042021486_AddVehiclePreviousLog.cs +