68 lines
1.8 KiB
C#
68 lines
1.8 KiB
C#
|
using Microsoft.AspNetCore.Mvc;
|
|||
|
using RecordMyRuck.Models;
|
|||
|
|
|||
|
namespace RecordMyRuck.Controllers
|
|||
|
{
|
|||
|
public class RuckController : Controller
|
|||
|
{
|
|||
|
private const string DateTimeFormat = "u";
|
|||
|
|
|||
|
private readonly IRuckRepository _ruckRepository;
|
|||
|
|
|||
|
public RuckController(IRuckRepository ruckRepository)
|
|||
|
{
|
|||
|
_ruckRepository = ruckRepository;
|
|||
|
}
|
|||
|
|
|||
|
public IActionResult Index()
|
|||
|
{
|
|||
|
return View();
|
|||
|
}
|
|||
|
|
|||
|
public IActionResult New()
|
|||
|
{
|
|||
|
return View();
|
|||
|
}
|
|||
|
|
|||
|
[HttpPost]
|
|||
|
public IActionResult New(RuckUpload ruckUpload)
|
|||
|
{
|
|||
|
if (!ModelState.IsValid)
|
|||
|
{
|
|||
|
return View(ruckUpload);
|
|||
|
}
|
|||
|
|
|||
|
var gpxStream = ruckUpload.Route.OpenReadStream();
|
|||
|
var reader = new StreamReader(gpxStream);
|
|||
|
var gpxData = reader.ReadToEnd();
|
|||
|
_ruckRepository.CreateRuck(new Ruck
|
|||
|
{
|
|||
|
DateTime = ruckUpload.DateTime,
|
|||
|
Route = gpxData,
|
|||
|
WeightPounds = ruckUpload.WeightPounds,
|
|||
|
Notes = ruckUpload.Notes ?? "",
|
|||
|
});
|
|||
|
return RedirectToAction("Edit", new { dateTimeString = ruckUpload.DateTime.ToString(DateTimeFormat) });
|
|||
|
}
|
|||
|
|
|||
|
public IActionResult Edit(string dateTimeString)
|
|||
|
{
|
|||
|
DateTime dateTime;
|
|||
|
try
|
|||
|
{
|
|||
|
dateTime = DateTime.ParseExact(dateTimeString, DateTimeFormat, null);
|
|||
|
}
|
|||
|
catch
|
|||
|
{
|
|||
|
return NotFound();
|
|||
|
}
|
|||
|
var ruck = _ruckRepository.Get(dateTime);
|
|||
|
if (ruck == null)
|
|||
|
{
|
|||
|
return NotFound();
|
|||
|
}
|
|||
|
return View(ruck);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|