﻿namespace Grundlagen_3_Hotel {
  internal class Program {
    static void Main(string[] args) {

      Console.OutputEncoding = System.Text.Encoding.UTF8;

      // Aktuellen Zimmerpreis ermitteln
      int[] saisonPreise = new int[12];
      saisonPreise = [60, 60, 60,   // Frühling
                      70, 70, 70,   // Sommer
                      80, 80, 80,   // Herbst
                      65, 65, 65];  // Winter
      int aktuellerMontat = DateTime.Now.Month;
      int aktuellerPreis = saisonPreise[aktuellerMontat + 1];

      const int MWST = 19;

      double nettopreis  = 0;
      double bruttopreis = 0;

      int personenAnzahl  = 0;
      int[] personenAlter = new int[0];
      int dauerAufenthalt = 0;
      int kategorieKunde  = 1;

      Console.WriteLine("Für wie viele Personen möchten Sie buchen?");
      personenAnzahl = Convert.ToInt32(Console.ReadLine());

      personenAlter = new int[personenAnzahl];

      for (int i = 0; i < personenAnzahl; i++) {
        Console.WriteLine("Wie alt ist Person " + (i + 1) + "?");
        personenAlter[i] = Convert.ToInt32(Console.ReadLine());
      }

      Console.WriteLine("Wie viele Nächte möchten Sie bleiben?");
      dauerAufenthalt = Convert.ToInt32(Console.ReadLine());

      Console.WriteLine("Buchen Sie als...?\n" +
                        "Neukunde    (1) Stammkunde (2)\n" +
                        "Firmenkunde (3) Reisebüro  (4)");
      kategorieKunde = Convert.ToInt32(Console.ReadLine());

      /* Rabbat nach Alter
       0 -  6 Jahre: 100%
       7 - 10 Jahre:  70%
      11 - 17 Jahre:  30%
         > 17 Jahre:   0% */
      for (int i = 0; i < personenAnzahl; i++) {
        switch (personenAlter[i]) {
          case int n when (7 <= n & n <= 10):
            nettopreis += aktuellerPreis * 0.3;
            break;
          case int n when (11 <= n & n <= 17):
            nettopreis += aktuellerPreis * 0.7;
            break;
          default:
            nettopreis += aktuellerPreis;
            break;
        }
      }

      /* Rabbat nach Kundenkategorie
       Neukunde     (1): 0%
       Stammkunden  (2): 2%
       Firmenkunden (3): 4%
       Reisebüro    (4): 6% */
      switch (kategorieKunde) {
        case 2:
          nettopreis *= 0.98;
          break;
        case 3:
          nettopreis *= 0.96;
          break;
        case 4:
          nettopreis *= 0.94;
          break;
      }

      nettopreis *= dauerAufenthalt;

      bruttopreis = nettopreis * (100 + MWST)/100;

      Console.WriteLine("Der Preis beträgt: €" + bruttopreis.ToString("N2") + ".");
    }
  }
}
