Replace Log.EmployeeName with Log.User, drop from database

This commit is contained in:
2013-01-06 14:33:49 -05:00
parent d5d58c1649
commit 0b4c7914b3
15 changed files with 140 additions and 54 deletions
@@ -13,7 +13,6 @@ namespace Web.Tests.ViewModels
{ {
var cityName = "My Town"; var cityName = "My Town";
var date = DateTime.Today; var date = DateTime.Today;
var employeeName = "Name";
var endOdometer = "1234"; var endOdometer = "1234";
var ethraId = "4567"; var ethraId = "4567";
string gasPurchased = "2.546"; string gasPurchased = "2.546";
@@ -24,7 +23,6 @@ namespace Web.Tests.ViewModels
{ {
CityName = cityName, CityName = cityName,
Date = date, Date = date,
EmployeeName = employeeName,
EndOdometer = endOdometer, EndOdometer = endOdometer,
VehicleId = ethraId, VehicleId = ethraId,
GasPurchased = gasPurchased, GasPurchased = gasPurchased,
@@ -35,7 +33,6 @@ namespace Web.Tests.ViewModels
Assert.That(log.CityName, Is.EqualTo(cityName)); Assert.That(log.CityName, Is.EqualTo(cityName));
Assert.That(log.Date, Is.EqualTo(date)); Assert.That(log.Date, Is.EqualTo(date));
Assert.That(log.EmployeeName, Is.EqualTo(employeeName));
Assert.That(log.EndOdometer.ToString(), Is.EqualTo(endOdometer)); Assert.That(log.EndOdometer.ToString(), Is.EqualTo(endOdometer));
Assert.That(log.VehicleId, Is.EqualTo(ethraId)); Assert.That(log.VehicleId, Is.EqualTo(ethraId));
Assert.That(log.GasPurchased.ToString(), Is.EqualTo(gasPurchased)); Assert.That(log.GasPurchased.ToString(), Is.EqualTo(gasPurchased));
Binary file not shown.
+1 -5
View File
@@ -8,7 +8,6 @@ namespace MileageTraker.Web.Controllers
{ {
public class CreateLogController : ControllerBase public class CreateLogController : ControllerBase
{ {
private const string CookieKeyEmployeename = "mr_employeeName";
private const string CookeNameVehicleid = "mr_vehicleId"; private const string CookeNameVehicleid = "mr_vehicleId";
private const string CookieKeyLogtype = "mr_logType"; private const string CookieKeyLogtype = "mr_logType";
@@ -50,11 +49,11 @@ namespace MileageTraker.Web.Controllers
if (ModelState.IsValid) if (ModelState.IsValid)
{ {
SetCookieValue(CookieKeyLogtype, model.LogType.Enum.ToString()); SetCookieValue(CookieKeyLogtype, model.LogType.Enum.ToString());
SetCookieValue(CookieKeyEmployeename, model.EmployeeName);
SetCookieValue(CookeNameVehicleid, model.VehicleId); SetCookieValue(CookeNameVehicleid, model.VehicleId);
// Save the new log // Save the new log
var log = model.GetLog(); var log = model.GetLog();
log.User = DataService.FindUserByUsername(User.Identity.Name);
log.Source = HttpContext.Request.Url.AbsolutePath; log.Source = HttpContext.Request.Url.AbsolutePath;
log.UserHostAddress = HttpContext.Request.UserHostAddress; log.UserHostAddress = HttpContext.Request.UserHostAddress;
log.UserAgent = HttpContext.Request.UserAgent; log.UserAgent = HttpContext.Request.UserAgent;
@@ -62,7 +61,6 @@ namespace MileageTraker.Web.Controllers
TempData["StatusMessage-Type"] = "alert-success"; TempData["StatusMessage-Type"] = "alert-success";
TempData["StatusMessage"] = TempData["StatusMessage"] =
@"You've successfully created an entry @"You've successfully created an entry
for <strong>" + model.EmployeeName + @"</strong>
traveling to <strong>" + model.CityName + @"</strong> traveling to <strong>" + model.CityName + @"</strong>
on <strong>" + model.Date.ToShortDateString() + @"</strong> on <strong>" + model.Date.ToShortDateString() + @"</strong>
in Vehicle Id <strong>" + model.VehicleId + @"</strong> in Vehicle Id <strong>" + model.VehicleId + @"</strong>
@@ -85,13 +83,11 @@ namespace MileageTraker.Web.Controllers
{ {
MileageLogType logType; MileageLogType logType;
Enum.TryParse(GetCookieValue(CookieKeyLogtype), true, out logType); Enum.TryParse(GetCookieValue(CookieKeyLogtype), true, out logType);
var name = GetCookieValue(CookieKeyEmployeename);
var vehicleId = GetCookieValue(CookeNameVehicleid); var vehicleId = GetCookieValue(CookeNameVehicleid);
return new CreateLogViewModel return new CreateLogViewModel
{ {
LogType = logType, LogType = logType,
EmployeeName = name,
VehicleId = vehicleId, VehicleId = vehicleId,
Date = DateTime.Today Date = DateTime.Today
}; };
+7 -7
View File
@@ -186,7 +186,7 @@ namespace MileageTraker.Web.DAL
from log in FilterLogs(_db.Logs, query) from log in FilterLogs(_db.Logs, query)
let previousLog = log.VehiclePreviousLog let previousLog = log.VehiclePreviousLog
select new { log, previousLog, miles = (previousLog != null ? log.EndOdometer - previousLog.EndOdometer : 0) } select new { log, previousLog, miles = (previousLog != null ? log.EndOdometer - previousLog.EndOdometer : 0) }
group l by l.log.EmployeeName group l by l.log.User
into g into g
let miles = g.Sum(l => l.miles) let miles = g.Sum(l => l.miles)
let gasPurchased = g.Sum(l => l.log.GasPurchased) let gasPurchased = g.Sum(l => l.log.GasPurchased)
@@ -198,7 +198,7 @@ namespace MileageTraker.Web.DAL
select select
new new
{ {
EmployeeName = g.Key, User = g.Key,
GasPurchased = gasPurchased, GasPurchased = gasPurchased,
Miles = miles, Miles = miles,
LogPairs = logPairs LogPairs = logPairs
@@ -206,7 +206,7 @@ namespace MileageTraker.Web.DAL
return items.ToList().Select(i => new EmployeeMileageItem return items.ToList().Select(i => new EmployeeMileageItem
{ {
EmployeeName = i.EmployeeName, EmployeeName = i.User.FullName,
GasPurchased = i.GasPurchased, GasPurchased = i.GasPurchased,
Miles = i.Miles, Miles = i.Miles,
LogPairs = i.LogPairs.ToList() LogPairs = i.LogPairs.ToList()
@@ -251,7 +251,7 @@ namespace MileageTraker.Web.DAL
{ {
return return
(from l in _db.Logs (from l in _db.Logs
where l.EmployeeName == employeeName where l.User.FullName == employeeName
orderby l.Created descending orderby l.Created descending
select l) select l)
.Take(3) .Take(3)
@@ -355,7 +355,7 @@ namespace MileageTraker.Web.DAL
String.Format( String.Format(
"Odometer of {0} miles on {1:d} conflicts with other logs for vehicle {2}" + "Odometer of {0} miles on {1:d} conflicts with other logs for vehicle {2}" +
", including an odometer log of {3} miles on {4:d} reported by {5}.", ", including an odometer log of {3} miles on {4:d} reported by {5}.",
odometer, date, vehicleId, conflictingLog.EndOdometer, conflictingLog.Date, conflictingLog.EmployeeName)); odometer, date, vehicleId, conflictingLog.EndOdometer, conflictingLog.Date, conflictingLog.User.FullName));
} }
} }
@@ -406,8 +406,8 @@ namespace MileageTraker.Web.DAL
{ {
var names = _db.Vehicles.Select(v => v.Assigned).Where(n => !String.IsNullOrEmpty(n) && n != "to be sold"); var names = _db.Vehicles.Select(v => v.Assigned).Where(n => !String.IsNullOrEmpty(n) && n != "to be sold");
var logNames = var logNames =
(from l in _db.Logs (from l in _db.Users
select l.EmployeeName); select l.FullName);
return names.Union(logNames).Distinct(); return names.Union(logNames).Distinct();
} }
+13 -13
View File
@@ -42,7 +42,8 @@ namespace MileageTraker.Web.DAL
{ {
context.Cities.Add(city); context.Cities.Add(city);
} }
/* // make some random logs
var random = new Random(10); var random = new Random(10);
foreach (var vehicle in vehicles.Where(v => v.Assigned != null)) foreach (var vehicle in vehicles.Where(v => v.Assigned != null))
{ {
@@ -71,19 +72,18 @@ namespace MileageTraker.Web.DAL
city = cities.OrderBy(c => Guid.NewGuid()).First(); city = cities.OrderBy(c => Guid.NewGuid()).First();
var log = new Log var log = new Log
{ {
CityName = city.Name, CityName = city.Name,
Date = date, Date = date,
EmployeeName = driver, EndOdometer = odom,
EndOdometer = odom, GasPurchased = gas,
GasPurchased = gas,
LogType = logType, LogType = logType,
VehicleId = vehicle.VehicleId, VehicleId = vehicle.VehicleId,
Source = "Autogenerated", Source = "Autogenerated",
UserAgent = "IE", UserAgent = "IE",
UserHostAddress = "127.0.0.1", UserHostAddress = "127.0.0.1",
Created = date Created = date
}; };
context.Logs.Add(log); context.Logs.Add(log);
date += new TimeSpan(random.Next(15), 0, 0, 0); date += new TimeSpan(random.Next(15), 0, 0, 0);
@@ -92,7 +92,7 @@ namespace MileageTraker.Web.DAL
odom += random.Next(25) + 25; odom += random.Next(25) + 25;
} }
} }
context.SaveChanges(); context.SaveChanges(); */
} }
} }
} }
+8 -4
View File
@@ -1,7 +1,6 @@
using System; using System;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Web;
using MileageTraker.Web.DAL; using MileageTraker.Web.DAL;
using MileageTraker.Web.Models; using MileageTraker.Web.Models;
@@ -92,12 +91,11 @@ namespace MileageTraker.Web.Migrations
,'Driver' ,'Driver'
,'Driver')"); ,'Driver')");
//var folder = AppDomain.CurrentDomain.GetData("App_Data").ToString(); var existingUsers = new [] {"dsloan", "ccecil"};
var appDomain = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data"); var appDomain = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data");
var users = UserImporter.Import(Path.Combine(appDomain, "UserEmails.xls")); var users = UserImporter.Import(Path.Combine(appDomain, "UserEmails.xls"));
users = (from u in users users = (from u in users
where u.Username != "dsloan" && where !existingUsers.Contains(u.Username)
u.Username != "ccecil"
select u).ToList(); select u).ToList();
foreach (var user in users) foreach (var user in users)
{ {
@@ -105,6 +103,12 @@ namespace MileageTraker.Web.Migrations
Sql(GetUserInsertSql(user)); Sql(GetUserInsertSql(user));
Sql(GetUserInsertRoleDriverSql(user)); Sql(GetUserInsertRoleDriverSql(user));
} }
Sql(@"UPDATE [Log]
SET [Log].User_UserId = [User].UserId
FROM [Log]
INNER JOIN [User] ON
[User].FullName = [Log].EmployeeName");
} }
public override void Down() public override void Down()
@@ -0,0 +1,24 @@
// <auto-generated />
namespace MileageTraker.Web.Migrations
{
using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;
public sealed partial class UpdateLogUserRequired : IMigrationMetadata
{
string IMigrationMetadata.Id
{
get { return "201301061905425_UpdateLogUserRequired"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return "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"; }
}
}
}
@@ -0,0 +1,25 @@
namespace MileageTraker.Web.Migrations
{
using System.Data.Entity.Migrations;
public partial class UpdateLogUserRequired : DbMigration
{
public override void Up()
{
DropForeignKey("Log", "User_UserId", "User");
DropIndex("Log", new[] { "User_UserId" });
AlterColumn("Log", "User_UserId", c => c.Guid(nullable: false));
AddForeignKey("Log", "User_UserId", "User", "UserId", cascadeDelete: true);
CreateIndex("Log", "User_UserId");
}
public override void Down()
{
DropIndex("Log", new[] { "User_UserId" });
DropForeignKey("Log", "User_UserId", "User");
AlterColumn("Log", "User_UserId", c => c.Guid());
CreateIndex("Log", "User_UserId");
AddForeignKey("Log", "User_UserId", "User", "UserId");
}
}
}
@@ -0,0 +1,24 @@
// <auto-generated />
namespace MileageTraker.Web.Migrations
{
using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;
public sealed partial class DropLogEmployeeName : IMigrationMetadata
{
string IMigrationMetadata.Id
{
get { return "201301061929006_DropLogEmployeeName"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return "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"; }
}
}
}
@@ -0,0 +1,22 @@
namespace MileageTraker.Web.Migrations
{
using System.Data.Entity.Migrations;
public partial class DropLogEmployeeName : DbMigration
{
public override void Up()
{
DropColumn("Log", "EmployeeName");
}
public override void Down()
{
AddColumn("Log", "EmployeeName", c => c.String(nullable: false));
Sql(@"UPDATE [Log]
SET [Log].EmployeeName = [User].FullName
FROM [Log]
INNER JOIN [User] ON
[User].UserId = [Log].User_UserId");
}
}
}
+6 -5
View File
@@ -38,12 +38,13 @@ namespace MileageTraker.Web.Models
[InputSize("medium")] [InputSize("medium")]
public string CityName { get; set; } public string CityName { get; set; }
[Required] //[Required]
[Display(Name = "Employee / Driver")] //[Display(Name = "Employee / Driver")]
[RegularExpression(@"[A-Za-z().]+(\s+[A-Za-z().]+)+", ErrorMessage = "Need complete name")] //[RegularExpression(@"[A-Za-z().]+(\s+[A-Za-z().]+)+", ErrorMessage = "Need complete name")]
[InputSize("medium")] //[InputSize("medium")]
public string EmployeeName { get; set; } //public string EmployeeName { get; set; }
[Required]
[Display(Name = "Employee / Driver")] [Display(Name = "Employee / Driver")]
[HiddenInput(DisplayValue = false)] [HiddenInput(DisplayValue = false)]
public virtual User User { get; set; } public virtual User User { get; set; }
@@ -18,8 +18,7 @@ namespace MileageTraker.Web.ViewModels.CreateLog
static ConfirmCreateLogViewModel() static ConfirmCreateLogViewModel()
{ {
Mapper.CreateMap<CreateLogViewModel, ConfirmCreateLogViewModel>() Mapper.CreateMap<CreateLogViewModel, ConfirmCreateLogViewModel>()
.ForMember(c => c.CityName, opt => opt.AddFormatter(new TitleCaseFormatter())) .ForMember(c => c.CityName, opt => opt.AddFormatter(new TitleCaseFormatter()));
.ForMember(c => c.EmployeeName, opt => opt.AddFormatter(new TitleCaseFormatter()));
} }
public ConfirmCreateLogViewModel(CreateLogViewModel createLogViewModel) public ConfirmCreateLogViewModel(CreateLogViewModel createLogViewModel)
@@ -41,11 +40,6 @@ namespace MileageTraker.Web.ViewModels.CreateLog
Miles = endOdometer - previousLog.EndOdometer; Miles = endOdometer - previousLog.EndOdometer;
} }
var matchingEmployeeName = dataService.GetEmployeeNameCorrected(EmployeeName);
if (!string.IsNullOrEmpty(matchingEmployeeName))
EmployeeName = matchingEmployeeName;
var matchingCity = dataService.GetCitiesCorrected(CityName); var matchingCity = dataService.GetCitiesCorrected(CityName);
if (!string.IsNullOrEmpty(matchingCity)) if (!string.IsNullOrEmpty(matchingCity))
@@ -32,13 +32,7 @@ namespace MileageTraker.Web.ViewModels.CreateLog
[Display(Name = "Type")] [Display(Name = "Type")]
[NoEditLabel] [NoEditLabel]
public MileageLogTypeWrapper LogType { get; set; } public MileageLogTypeWrapper LogType { get; set; }
[Required(ErrorMessage = "Required")]
[Display(Name = "Employee / Driver")]
[RegularExpression(@"[A-Za-z().]+(\s+[A-Za-z().]+)+", ErrorMessage = "Need complete name")]
[InputSize("medium")]
public string EmployeeName { get; set; }
[Required(ErrorMessage = "Required")] [Required(ErrorMessage = "Required")]
[Display(Name = "City Name")] [Display(Name = "City Name")]
[InputSize("medium")] [InputSize("medium")]
-3
View File
@@ -64,9 +64,6 @@
@Html.DisplayFor(model => model.LogType) @Html.DisplayFor(model => model.LogType)
@Html.HiddenFor(model => model.LogType.Value) @Html.HiddenFor(model => model.LogType.Value)
@Html.DisplayFor(model => model.EmployeeName)
@Html.HiddenFor(model => model.EmployeeName)
@Html.DisplayFor(model => model.CityName) @Html.DisplayFor(model => model.CityName)
@Html.HiddenFor(model => model.CityName) @Html.HiddenFor(model => model.CityName)
+8
View File
@@ -144,6 +144,14 @@
<Compile Include="Migrations\201301031939259_AddLogUser.Designer.cs"> <Compile Include="Migrations\201301031939259_AddLogUser.Designer.cs">
<DependentUpon>201301031939259_AddLogUser.cs</DependentUpon> <DependentUpon>201301031939259_AddLogUser.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Migrations\201301061905425_UpdateLogUserRequired.cs" />
<Compile Include="Migrations\201301061905425_UpdateLogUserRequired.Designer.cs">
<DependentUpon>201301061905425_UpdateLogUserRequired.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\201301061929006_DropLogEmployeeName.cs" />
<Compile Include="Migrations\201301061929006_DropLogEmployeeName.Designer.cs">
<DependentUpon>201301061929006_DropLogEmployeeName.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\Configuration.cs" /> <Compile Include="Migrations\Configuration.cs" />
<Compile Include="ViewModels\Account\ResetPasswordViewModel.cs" /> <Compile Include="ViewModels\Account\ResetPasswordViewModel.cs" />
<Compile Include="Models\Role.cs" /> <Compile Include="Models\Role.cs" />