Replace Log.EmployeeName with Log.User, drop from database
This commit is contained in:
@@ -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.
@@ -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
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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(); */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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
@@ -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")]
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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" />
|
||||||
|
|||||||
Reference in New Issue
Block a user