Files
MileageTraker/Web/DAL/MileageTrakerInitializer.cs

98 lines
3.1 KiB
C#

using System;
using System.Data.Entity;
using System.IO;
using System.Linq;
using System.Web;
using MileageTraker.Web.Context;
using MileageTraker.Web.Models;
namespace MileageTraker.Web.DAL
{
public class MileageTrakerInitializer :
//#if DEBUG
// DropCreateDatabaseIfModelChanges<MileageTrakerContext>
//#else
CreateDatabaseIfNotExists<MileageTrakerContext>
//#endif
{
private const string CreateIndex = "CREATE NONCLUSTERED INDEX [IDX_{1}] ON [{0}] ([{1}])";
protected override void Seed(MileageTrakerContext context)
{
Action<string, string> createIndex =
(table, column) => context.Database.ExecuteSqlCommand(string.Format(CreateIndex, table, column));
createIndex("Log", "VehicleId");
createIndex("Log", "EndOdometer");
//createIndex("Log", "EmployeeName");
//createIndex("Log", "CityName");
createIndex("Log", "Date");
createIndex("Log", "Created");
//createIndex("Vehicle", "Assigned");
var folder = HttpContext.Current.Server.MapPath("~/App_Data");
var vehicles = VehicleImporter.Import(Path.Combine(folder, "2011ETHRAvehicles.xls"));
foreach (var vehicle in vehicles)
{
context.Vehicles.Add(vehicle);
}
var cities = VehicleImporter.ImportCities(Path.Combine(folder, "Cities.xls"));
foreach (var city in cities)
{
context.Cities.Add(city);
}
/* // make some random logs
var random = new Random(10);
foreach (var vehicle in vehicles.Where(v => v.Assigned != null))
{
var odom = 1000 + random.Next(20000);
var purDateSplit = vehicle.PurDate.Split('/');
var date = new DateTime(int.Parse("20" + purDateSplit[1]), int.Parse(purDateSplit[0]), 1);
var commonLogType = random.Next(1)%2 == 0 ? MileageLogType.NonCommuting : MileageLogType.Commuting;
var commonCity = cities.OrderBy(c => Guid.NewGuid()).First();
while (date < DateTime.Today)
{
var gas = random.Next(4)%4 == 0 ? Math.Round(random.NextDouble()*15, 3) : 0;
var logType = commonLogType;
if (gas > 0 && random.Next(3) % 3 == 0)
logType = MileageLogType.GasPurchase;
else if (random.Next(6) % 6 == 0)
logType = commonLogType == MileageLogType.NonCommuting ? MileageLogType.Commuting : MileageLogType.NonCommuting;
var driver = vehicle.Assigned;
if (random.Next(10)%10 == 0)
driver = vehicles.Where(v => v.Assigned != null).OrderBy(x => Guid.NewGuid()).First().Assigned;
var city = commonCity;
if (random.Next(10)%10 == 0)
city = cities.OrderBy(c => Guid.NewGuid()).First();
var log = new Log
{
CityName = city.Name,
Date = date,
EndOdometer = odom,
GasPurchased = gas,
LogType = logType,
VehicleId = vehicle.VehicleId,
Source = "Autogenerated",
UserAgent = "IE",
UserHostAddress = "127.0.0.1",
Created = date
};
context.Logs.Add(log);
date += new TimeSpan(random.Next(15), 0, 0, 0);
if (random.Next(10) % 10 == 0)
date += new TimeSpan(random.Next(360) + 90, 0, 0, 0);
odom += random.Next(25) + 25;
}
}
context.SaveChanges(); */
}
}
}