Editing Purpose from LogController works

This commit is contained in:
2013-03-05 13:22:00 -05:00
parent 76cb768fa9
commit 47a60965fe
6 changed files with 56 additions and 19 deletions
+6
View File
@@ -75,5 +75,11 @@ namespace MileageTraker.Web.Controllers
DataService.UpdateUser(user); DataService.UpdateUser(user);
return url; return url;
} }
protected SelectList GetPurposeTypesSelectList()
{
var selectList = new SelectList(DataService.GetPurposeTypes(), "PurposeTypeId", "Purpose");
return selectList;
}
} }
} }
-6
View File
@@ -109,11 +109,5 @@ namespace MileageTraker.Web.Controllers
} }
}; };
} }
private SelectList GetPurposeTypesSelectList()
{
var selectList = new SelectList(DataService.GetPurposeTypes(), "PurposeTypeId", "Purpose");
return selectList;
}
} }
} }
+31 -8
View File
@@ -89,7 +89,10 @@ namespace MileageTraker.Web.Controllers
public ViewResult Details(int id) public ViewResult Details(int id)
{ {
var log = DataService.GetLog(id); var log = DataService.GetLog(id);
var viewModel = new LogViewModel(log); var viewModel = new LogViewModel(log)
{
Purpose = {Available = GetPurposeTypesSelectList()}
};
return View(viewModel); return View(viewModel);
} }
@@ -130,8 +133,9 @@ namespace MileageTraker.Web.Controllers
{ {
var viewModel = new LogViewModel var viewModel = new LogViewModel
{ {
Date = DateTime.Today, Date = DateTime.Today,
VehicleId = vehicleId VehicleId = vehicleId,
Purpose = {Available = GetPurposeTypesSelectList()},
}; };
return View(viewModel); return View(viewModel);
@@ -149,20 +153,29 @@ namespace MileageTraker.Web.Controllers
log.UserHostAddress = HttpContext.Request.UserHostAddress; log.UserHostAddress = HttpContext.Request.UserHostAddress;
log.UserAgent = HttpContext.Request.UserAgent; log.UserAgent = HttpContext.Request.UserAgent;
if (viewModel.Purpose != null)
log.Purpose =
DataService.GetPurposeTypes()
.First(pt => pt.PurposeTypeId == viewModel.Purpose.Selected);
DataService.AddLog(log); DataService.AddLog(log);
TempData["StatusMessage"] = "Log created"; TempData["StatusMessage"] = "Log created";
return RedirectToAction("Index"); return RedirectToAction("Index");
} }
viewModel.Purpose.Available = GetPurposeTypesSelectList();
return View(viewModel); return View(viewModel);
} }
public ActionResult Edit(int id) public ActionResult Edit(int id)
{ {
var log = DataService.GetLog(id); var log = DataService.GetLog(id);
var logViewModel = new LogViewModel(log); var viewModel = new LogViewModel(log)
return View(logViewModel); {
Purpose = {Available = GetPurposeTypesSelectList()}
};
return View(viewModel);
} }
[HttpPost] [HttpPost]
@@ -175,18 +188,28 @@ namespace MileageTraker.Web.Controllers
viewModel.SetProperties(log); viewModel.SetProperties(log);
log.User = DataService.FindUserByFullName(viewModel.UserFullName); log.User = DataService.FindUserByFullName(viewModel.UserFullName);
DataService.UpdateLog(log); if (viewModel.Purpose != null)
log.Purpose =
DataService.GetPurposeTypes()
.First(pt => pt.PurposeTypeId == viewModel.Purpose.Selected);
DataService.UpdateLog(log);
TempData["StatusMessage"] = "Log updated"; TempData["StatusMessage"] = "Log updated";
return RedirectToAction("Details", new{id = log.LogId}); return RedirectToAction("Details", new{id = log.LogId});
} }
return View(viewModel);
viewModel.Purpose.Available = GetPurposeTypesSelectList();
return View(viewModel);
} }
public ActionResult Delete(int id) public ActionResult Delete(int id)
{ {
var log = DataService.GetLog(id); var log = DataService.GetLog(id);
var viewModel = new LogViewModel(log); var viewModel = new LogViewModel(log)
{
Purpose = {Available = GetPurposeTypesSelectList()}
};
return View(viewModel); return View(viewModel);
} }
+1 -1
View File
@@ -26,7 +26,7 @@ namespace MileageTraker.Web.ViewModels.Log
[Display(Name = "City Name")] [Display(Name = "City Name")]
public string CityName { get; set; } public string CityName { get; set; }
[Display(Name = "Trip Purpose")] [Display(Name = "Purpose")]
public string PurposePurpose { get; set; } public string PurposePurpose { get; set; }
[Display(Name = "Driver Name")] [Display(Name = "Driver Name")]
+3
View File
@@ -24,6 +24,9 @@ namespace MileageTraker.Web.ViewModels.Log
[Display(Name = "Driver")] [Display(Name = "Driver")]
public string UserFullName { get; set; } public string UserFullName { get; set; }
[Display(Name = "Purpose")]
public string PurposePurpose { get; set; }
[DisplayFormat(DataFormatString = "{0:0.000}", ApplyFormatInEditMode = true)] [DisplayFormat(DataFormatString = "{0:0.000}", ApplyFormatInEditMode = true)]
public double GasPurchased { get; set; } public double GasPurchased { get; set; }
+15 -4
View File
@@ -42,13 +42,19 @@ namespace MileageTraker.Web.ViewModels.Log
[Display(Name = "Driver Name")] [Display(Name = "Driver Name")]
[InputSize("medium")] [InputSize("medium")]
public string UserFullName { get; set; } public string UserFullName { get; set; }
[Required(ErrorMessage = "Required")] [Required(ErrorMessage = "Required")]
[Display(Name = "City Name")] [Display(Name = "City Name")]
[InputSize("medium")] [InputSize("medium")]
[StringLength(64, MinimumLength = 3, ErrorMessage = "Minimum 3 characters")] [StringLength(64, MinimumLength = 3, ErrorMessage = "Minimum 3 characters")]
public string CityName { get; set; } public string CityName { get; set; }
[Display(Name = "Purpose")]
public SelectListViewModel Purpose { get; set; }
[InputSize("large")]
public string Notes { get; set; }
[Display(Name = "Gas Purchased")] [Display(Name = "Gas Purchased")]
[DisplayFormat(DataFormatString = "{0:0.000}", ApplyFormatInEditMode = true)] [DisplayFormat(DataFormatString = "{0:0.000}", ApplyFormatInEditMode = true)]
[Units("Gallons")] [Units("Gallons")]
@@ -74,20 +80,25 @@ namespace MileageTraker.Web.ViewModels.Log
Mapper.CreateMap<string, int>().ConvertUsing(Convert.ToInt32); Mapper.CreateMap<string, int>().ConvertUsing(Convert.ToInt32);
Mapper.CreateMap<string, double>().ConvertUsing(Convert.ToDouble); Mapper.CreateMap<string, double>().ConvertUsing(Convert.ToDouble);
Mapper.CreateMap<string, DateTime>().ConvertUsing(new DateTimeTypeConverter()); 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>() 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() public LogViewModel()
{ {
// view will crash if this isn't instantiated // view will crash if this isn't instantiated
LogType = new MileageLogTypeWrapper(); LogType = new MileageLogTypeWrapper();
Purpose = new SelectListViewModel();
} }
public LogViewModel(Models.Log log) public LogViewModel(Models.Log log) : this()
{ {
Mapper.Map(log, this); Mapper.Map(log, this);
if (log.Purpose != null)
Purpose.Selected = log.Purpose.PurposeTypeId;
} }
public Models.Log GetLog() public Models.Log GetLog()