Editing Purpose from LogController works
This commit is contained in:
@@ -75,5 +75,11 @@ namespace MileageTraker.Web.Controllers
|
||||
DataService.UpdateUser(user);
|
||||
return url;
|
||||
}
|
||||
|
||||
protected SelectList GetPurposeTypesSelectList()
|
||||
{
|
||||
var selectList = new SelectList(DataService.GetPurposeTypes(), "PurposeTypeId", "Purpose");
|
||||
return selectList;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -109,11 +109,5 @@ namespace MileageTraker.Web.Controllers
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private SelectList GetPurposeTypesSelectList()
|
||||
{
|
||||
var selectList = new SelectList(DataService.GetPurposeTypes(), "PurposeTypeId", "Purpose");
|
||||
return selectList;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -89,7 +89,10 @@ namespace MileageTraker.Web.Controllers
|
||||
public ViewResult Details(int id)
|
||||
{
|
||||
var log = DataService.GetLog(id);
|
||||
var viewModel = new LogViewModel(log);
|
||||
var viewModel = new LogViewModel(log)
|
||||
{
|
||||
Purpose = {Available = GetPurposeTypesSelectList()}
|
||||
};
|
||||
return View(viewModel);
|
||||
}
|
||||
|
||||
@@ -131,7 +134,8 @@ namespace MileageTraker.Web.Controllers
|
||||
var viewModel = new LogViewModel
|
||||
{
|
||||
Date = DateTime.Today,
|
||||
VehicleId = vehicleId
|
||||
VehicleId = vehicleId,
|
||||
Purpose = {Available = GetPurposeTypesSelectList()},
|
||||
};
|
||||
|
||||
return View(viewModel);
|
||||
@@ -149,20 +153,29 @@ namespace MileageTraker.Web.Controllers
|
||||
log.UserHostAddress = HttpContext.Request.UserHostAddress;
|
||||
log.UserAgent = HttpContext.Request.UserAgent;
|
||||
|
||||
if (viewModel.Purpose != null)
|
||||
log.Purpose =
|
||||
DataService.GetPurposeTypes()
|
||||
.First(pt => pt.PurposeTypeId == viewModel.Purpose.Selected);
|
||||
|
||||
DataService.AddLog(log);
|
||||
|
||||
TempData["StatusMessage"] = "Log created";
|
||||
return RedirectToAction("Index");
|
||||
}
|
||||
|
||||
viewModel.Purpose.Available = GetPurposeTypesSelectList();
|
||||
return View(viewModel);
|
||||
}
|
||||
|
||||
public ActionResult Edit(int id)
|
||||
{
|
||||
var log = DataService.GetLog(id);
|
||||
var logViewModel = new LogViewModel(log);
|
||||
return View(logViewModel);
|
||||
var viewModel = new LogViewModel(log)
|
||||
{
|
||||
Purpose = {Available = GetPurposeTypesSelectList()}
|
||||
};
|
||||
return View(viewModel);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
@@ -175,18 +188,28 @@ namespace MileageTraker.Web.Controllers
|
||||
viewModel.SetProperties(log);
|
||||
log.User = DataService.FindUserByFullName(viewModel.UserFullName);
|
||||
|
||||
if (viewModel.Purpose != null)
|
||||
log.Purpose =
|
||||
DataService.GetPurposeTypes()
|
||||
.First(pt => pt.PurposeTypeId == viewModel.Purpose.Selected);
|
||||
|
||||
DataService.UpdateLog(log);
|
||||
|
||||
TempData["StatusMessage"] = "Log updated";
|
||||
return RedirectToAction("Details", new{id = log.LogId});
|
||||
}
|
||||
|
||||
viewModel.Purpose.Available = GetPurposeTypesSelectList();
|
||||
return View(viewModel);
|
||||
}
|
||||
|
||||
public ActionResult Delete(int id)
|
||||
{
|
||||
var log = DataService.GetLog(id);
|
||||
var viewModel = new LogViewModel(log);
|
||||
var viewModel = new LogViewModel(log)
|
||||
{
|
||||
Purpose = {Available = GetPurposeTypesSelectList()}
|
||||
};
|
||||
return View(viewModel);
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace MileageTraker.Web.ViewModels.Log
|
||||
[Display(Name = "City Name")]
|
||||
public string CityName { get; set; }
|
||||
|
||||
[Display(Name = "Trip Purpose")]
|
||||
[Display(Name = "Purpose")]
|
||||
public string PurposePurpose { get; set; }
|
||||
|
||||
[Display(Name = "Driver Name")]
|
||||
|
||||
@@ -25,6 +25,9 @@ namespace MileageTraker.Web.ViewModels.Log
|
||||
[Display(Name = "Driver")]
|
||||
public string UserFullName { get; set; }
|
||||
|
||||
[Display(Name = "Purpose")]
|
||||
public string PurposePurpose { get; set; }
|
||||
|
||||
[DisplayFormat(DataFormatString = "{0:0.000}", ApplyFormatInEditMode = true)]
|
||||
public double GasPurchased { get; set; }
|
||||
|
||||
|
||||
@@ -49,6 +49,12 @@ namespace MileageTraker.Web.ViewModels.Log
|
||||
[StringLength(64, MinimumLength = 3, ErrorMessage = "Minimum 3 characters")]
|
||||
public string CityName { get; set; }
|
||||
|
||||
[Display(Name = "Purpose")]
|
||||
public SelectListViewModel Purpose { get; set; }
|
||||
|
||||
[InputSize("large")]
|
||||
public string Notes { get; set; }
|
||||
|
||||
[Display(Name = "Gas Purchased")]
|
||||
[DisplayFormat(DataFormatString = "{0:0.000}", ApplyFormatInEditMode = true)]
|
||||
[Units("Gallons")]
|
||||
@@ -74,20 +80,25 @@ namespace MileageTraker.Web.ViewModels.Log
|
||||
Mapper.CreateMap<string, int>().ConvertUsing(Convert.ToInt32);
|
||||
Mapper.CreateMap<string, double>().ConvertUsing(Convert.ToDouble);
|
||||
Mapper.CreateMap<string, DateTime>().ConvertUsing(new DateTimeTypeConverter());
|
||||
Mapper.CreateMap<LogViewModel, Models.Log>();
|
||||
Mapper.CreateMap<LogViewModel, Models.Log>()
|
||||
.ForMember(u => u.Purpose, opt => opt.Ignore());
|
||||
Mapper.CreateMap<Models.Log, LogViewModel>()
|
||||
.ForMember(vm => vm.Date, opt => opt.MapFrom(m => m.Date.ToString("d")));
|
||||
.ForMember(vm => vm.Date, opt => opt.MapFrom(m => m.Date.ToString("d")))
|
||||
.ForMember(u => u.Purpose, opt => opt.Ignore());
|
||||
}
|
||||
|
||||
public LogViewModel()
|
||||
{
|
||||
// view will crash if this isn't instantiated
|
||||
LogType = new MileageLogTypeWrapper();
|
||||
Purpose = new SelectListViewModel();
|
||||
}
|
||||
|
||||
public LogViewModel(Models.Log log)
|
||||
public LogViewModel(Models.Log log) : this()
|
||||
{
|
||||
Mapper.Map(log, this);
|
||||
if (log.Purpose != null)
|
||||
Purpose.Selected = log.Purpose.PurposeTypeId;
|
||||
}
|
||||
|
||||
public Models.Log GetLog()
|
||||
|
||||
Reference in New Issue
Block a user