using EFCore_Kontext;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;

namespace ITVisions.Components
{
 [ViewComponent(Name = "FlugTabelle")]
 public class FlugTabelleController : ViewComponent
 {
  WWWingsContext ctx = new WWWingsContext();
  public FlugTabelleController()
  {
   Debug.WriteLine("FlugTabelleViewComponent instanziiert: Kontextinstanz #" + ctx.ID);
  }

  public async Task<IViewComponentResult> InvokeAsync(string Ort, int Anzahl, int Jahr)
  {
   // Ort merken für den View
   ViewBag.Ort = Ort;

   // Datenbankabfrage
   var q = ctx.Flug
   .Where(f => f.FreiePlaetze > 0);

   if (!String.IsNullOrEmpty(Ort)) q = q.Where(f => f.Abflugort == Ort || f.Zielort == Ort);
   if (Jahr >0) q = q.Where(f => f.Datum.Year == Jahr);
   if (Anzahl > 0) q = q.Take(Anzahl);

   var listeAsync = q.OrderBy(x=>x.Datum).ToListAsync();

   // Daten asynchron abrufen
   var liste = await listeAsync;

   // fallweise einen der beiden Views aufrufen
   if (liste.Count == 0) return View("KeineGefunden", liste);
   return View(liste);
  }
 }
}