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);
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)
{
var log = DataService.GetLog(id);
var viewModel = new LogViewModel(log);
var viewModel = new LogViewModel(log)
{
Purpose = {Available = GetPurposeTypesSelectList()}
};
return View(viewModel);
}
@@ -130,8 +133,9 @@ namespace MileageTraker.Web.Controllers
{
var viewModel = new LogViewModel
{
Date = DateTime.Today,
VehicleId = vehicleId
Date = DateTime.Today,
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);
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";
return RedirectToAction("Details", new{id = log.LogId});
}
return View(viewModel);
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);
}
+1 -1
View File
@@ -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")]
+3
View File
@@ -24,6 +24,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; }
+15 -4
View File
@@ -42,13 +42,19 @@ namespace MileageTraker.Web.ViewModels.Log
[Display(Name = "Driver Name")]
[InputSize("medium")]
public string UserFullName { get; set; }
[Required(ErrorMessage = "Required")]
[Display(Name = "City Name")]
[InputSize("medium")]
[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()