Initial
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
using System;
|
||||
using System.Web.Mvc;
|
||||
using MileageTraker.Web.DAL;
|
||||
using MileageTraker.Web.Models;
|
||||
using MileageTraker.Web.Utility;
|
||||
using MileageTraker.Web.ViewModels;
|
||||
|
||||
namespace MileageTraker.Web.Controllers
|
||||
{
|
||||
public class CreateLogController : ControllerBase
|
||||
{
|
||||
private const string CookieKeyEmployeename = "mr_employeeName";
|
||||
private const string CookeNameVehicleid = "mr_vehicleId";
|
||||
private const string CookieKeyLogtype = "mr_logType";
|
||||
private readonly DataService _dataService = new DataService();
|
||||
|
||||
public ViewResult Index()
|
||||
{
|
||||
var createLogModel = NewCreateLogModel();
|
||||
|
||||
return View(createLogModel);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public ActionResult Index(CreateLogViewModel model)
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
ViewBag.updateError = "Create Failure";
|
||||
if (model.LogType == null) // WTF why doesn't the model binder get this
|
||||
model.LogType = new MileageLogTypeWrapper();
|
||||
return View(model);
|
||||
}
|
||||
|
||||
var confirmCreateLogViewModel = new ConfirmCreateLogViewModel(model);
|
||||
|
||||
return View("Confirm", confirmCreateLogViewModel);
|
||||
}
|
||||
|
||||
[HttpParamAction]
|
||||
[HttpPost]
|
||||
public ViewResult Edit(CreateLogViewModel model)
|
||||
{
|
||||
return View("Index", model);
|
||||
}
|
||||
|
||||
[HttpParamAction]
|
||||
[HttpPost]
|
||||
[ActionLog]
|
||||
public ViewResult Confirm(CreateLogViewModel model)
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
SetCookieValue(CookieKeyLogtype, model.LogType.Enum.ToString());
|
||||
SetCookieValue(CookieKeyEmployeename, model.EmployeeName);
|
||||
SetCookieValue(CookeNameVehicleid, model.VehicleId);
|
||||
|
||||
// Save the new log
|
||||
var log = model.GetLog();
|
||||
log.Source = HttpContext.Request.Url.AbsolutePath;
|
||||
log.UserHostAddress = HttpContext.Request.UserHostAddress;
|
||||
log.UserAgent = HttpContext.Request.UserAgent;
|
||||
_dataService.AddLog(log);
|
||||
return View("Success", model);
|
||||
}
|
||||
|
||||
return View("Index", model);
|
||||
}
|
||||
|
||||
public PartialViewResult RecentLogs(string employeeName)
|
||||
{
|
||||
var logs = _dataService.GetRecentLogsByEmployee(employeeName);
|
||||
ViewData["employeeName"] = employeeName;
|
||||
return PartialView(logs);
|
||||
}
|
||||
|
||||
private CreateLogViewModel NewCreateLogModel()
|
||||
{
|
||||
MileageLogType logType;
|
||||
Enum.TryParse(GetCookieValue(CookieKeyLogtype), true, out logType);
|
||||
var name = GetCookieValue(CookieKeyEmployeename);
|
||||
var vehicleId = GetCookieValue(CookeNameVehicleid);
|
||||
|
||||
return new CreateLogViewModel
|
||||
{
|
||||
LogType = logType,
|
||||
EmployeeName = name,
|
||||
VehicleId = vehicleId,
|
||||
Date = DateTime.Today.ToShortDateString()
|
||||
};
|
||||
}
|
||||
|
||||
private string GetCookieValue(string key)
|
||||
{
|
||||
return
|
||||
HttpContext.Request.Cookies[key] != null
|
||||
? HttpContext.Request.Cookies[key].Value
|
||||
: null;
|
||||
}
|
||||
|
||||
private void SetCookieValue(string key, string value)
|
||||
{
|
||||
var cookies = HttpContext.Response.Cookies;
|
||||
cookies[key].Value = value;
|
||||
cookies[key].Expires = DateTime.MaxValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user