using System.Diagnostics; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using turf_tasker.Data; using turf_tasker.Models; namespace turf_tasker.Controllers; public class HomeController : Controller { private readonly ApplicationDbContext _context; public HomeController(ApplicationDbContext context) { _context = context; } public async Task Index() { var lastMowEvent = await _context.LawnCareEvents .Where(e => e.EventType == LawnCareEventType.Mowing) .OrderByDescending(e => e.EventDate) .FirstOrDefaultAsync(); var lastWaterDate = await _context.LawnCareEvents .Where(e => e.EventType == LawnCareEventType.Watering) .OrderByDescending(e => e.EventDate) .Select(e => (DateTime?)e.EventDate) // Select just the date .FirstOrDefaultAsync(); var lastFertilizeDate = await _context.LawnCareEvents .Where(e => e.EventType == LawnCareEventType.Fertilizing) .OrderByDescending(e => e.EventDate) .Select(e => (DateTime?)e.EventDate) .FirstOrDefaultAsync(); var lastAerationDate = await _context.LawnCareEvents .Where(e => e.EventType == LawnCareEventType.Aeration) .OrderByDescending(e => e.EventDate) .Select(e => (DateTime?)e.EventDate) .FirstOrDefaultAsync(); // Determine the next mowing pattern MowingPattern? nextPattern = MowingPattern.Vertical; // Default if (lastMowEvent?.MowingPattern != null) { // This logic cycles through the enum values int currentPatternValue = (int)lastMowEvent.MowingPattern; int nextPatternValue = (currentPatternValue + 1) % 4; // 4 patterns total nextPattern = (MowingPattern)nextPatternValue; } var viewModel = new DashboardViewModel { LastMowDate = lastMowEvent?.EventDate, LastWaterDate = lastWaterDate, LastFertilizeDate = lastFertilizeDate, LastAerationDate = lastAerationDate, NextMowingPattern = nextPattern }; return View(viewModel); } public IActionResult Privacy() { return View(); } [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); } }