class Text {
  constructor(
    readonly $de: string,
    readonly $en: string
  ) {}
}

class Feature {
  readonly label: Text | string

  constructor(
    readonly icon: string,
    readonly de: string,
    readonly en?: string
  ) {
    this.label = en ? new Text(de, en) : de
  }
}

const features = [
  new Feature('lucide:shower-head', 'Badezimmer mit Dusche', 'Bathroom with shower'),
  new Feature('lucide:toilet', 'Bad und WC getrennt', 'Bathroom and toilet in separate rooms'),
  new Feature('lucide:wifi', 'Schnelles WLAN', 'High-speed WiFi'),
  new Feature('lucide:tv', 'Fernseher', 'TV'),
  new Feature('lucide:microwave', 'Mikrowelle', 'Microwave'),
  new Feature('lucide:microwave', 'Backrohr', 'Oven'),
  new Feature('lucide:bubbles', 'Geschirrspüler', 'Dishwasher'),
  new Feature('lucide:coffee', 'Kaffeemaschine', 'Coffee maker'),
  new Feature('lucide:coffee', 'Wasserkocher', 'Electric water boiler'),
  new Feature('lucide:bed', 'Bettwäsche', 'Bed sheets'),
  new Feature('lucide:layers', 'Handtücher', 'Towels'),
  new Feature('lucide:wind', 'Haarföhn', 'Hairdryer'),
]

class Apartment {
  readonly title: string
  readonly subtitle: Text
  readonly features: Feature[]

  constructor(
    index: number,
    readonly de: string,
    readonly en: string,
    specifics: Feature[],
    readonly images: string[]
  ) {
    this.title = '${apartments[' + index.toString() + '].title}'
    this.subtitle = new Text(de, en)

    this.features = [
      new Feature('lucide:coins', '${apartments[' + index.toString() + '].price.text}'),
      new Feature('lucide:users', '${apartments[' + index.toString() + '].capacity.text}'),
      new Feature('lucide:scaling', '${apartments[' + index.toString() + '].size} m²'),
      ...specifics,
      ...features,
    ]
  }
}

export default {
  list: [
    new Apartment(
      0,
      '${apartments[0].size} m² Urlaubsvergnügen! Dieses gemütliche Appartement bietet Ihnen Platz für bis zu ${apartments[0].capacity.to} Personen. Freuen Sie sich auf 1 Schlafzimmer, eine Wohnküche mit ausziehbarer Couch, Badezimmer, eine kleine Terrasse und ein getrenntes WC.',
      '${apartments[0].size} m² of holiday comfort! This cozy apartment comfortably accommodates up to ${apartments[0].capacity.to} guests. It features one bedroom, an open-plan kitchen and living area with a pull-out sofa, a bathroom, a small terrace, and a separate toilet.',
      [
        new Feature(
          'lucide:mountain',
          'Terrasse mit idyllischem Ausblick',
          'Terrace with idyllic view'
        ),
        new Feature('lucide:bed-double', 'Schlafzimmer mit Doppelbett', 'Bedroom with double bed'),
        new Feature(
          'lucide:sofa',
          'Wohnküche mit ausziehbarem Schlafsofa',
          'Living/kitchen area with sofa bed'
        ),
      ],
      [
        '/apartments/1/1.webp',
        '/apartments/1/2.webp',
        '/apartments/1/3.webp',
        '/apartments/1/4.webp',
        '/apartments/1/5.webp',
        '/apartments/1/6.webp',
        '/apartments/1/7.webp',
        '/apartments/1/8.webp',
        '/apartments/1/9.webp',
        '/apartments/1/10.webp',
        '/apartments/1/11.webp',
      ]
    ),
    new Apartment(
      1,
      'Wohnkomfort auf ${apartments[1].size} m²! Dieses großzügige Appartement bietet Ihnen Platz für bis zu ${apartments[1].capacity.to} Personen und bietet 2 Schlafzimmer, eine Wohnküche, Badezimmer, einen Balkon und ein getrenntes WC.',
      'Enjoy ${apartments[1].size} m² of comfortable living! This large apartment sleeps up to ${apartments[1].capacity.to} people and includes 2 bedrooms, a combined kitchen and living room, a bathroom, a balcony, and a separate toilet.',
      [
        new Feature(
          'lucide:mountain',
          'Balkon mit idyllischem Ausblick',
          'Balcony with idyllic view'
        ),
        new Feature(
          'lucide:bed-double',
          'Schlafzimmer 1 mit Doppelbett',
          'Bedroom 1 with double bed'
        ),
        new Feature(
          'lucide:bed-double',
          'Schlafzimmer 2 mit Doppelbett & Schlafsofa',
          'Bedroom 2 with double bed & sofa bed'
        ),
        new Feature('lucide:sofa', 'Wohnküche', 'Living/kitchen area'),
      ],
      [
        '/apartments/2/1.webp',
        '/apartments/2/2.webp',
        '/apartments/2/3.webp',
        '/apartments/2/4.webp',
        '/apartments/2/5.webp',
        '/apartments/2/6.webp',
        '/apartments/2/7.webp',
        '/apartments/2/8.webp',
        '/apartments/2/9.webp',
        '/apartments/2/10.webp',
        '/apartments/2/11.webp',
        '/apartments/2/12.webp',
        '/apartments/2/13.webp',
      ]
    ),
    new Apartment(
      2,
      'Wohlfühlen auf ${apartments[2].size} m²! Dieses geräumige Appartement bietet Ihnen Platz für bis zu ${apartments[2].capacity.to} Personen und bietet 2 Schlafzimmer, eine Wohnküche, Badezimmer, einen Balkon und ein getrenntes WC.',
      'Spacious ${apartments[2].size} m² apartment for up to ${apartments[2].capacity.to} guests, with 2 bedrooms, a living kitchen, bathroom, balcony, and separate toilet.',
      [
        new Feature(
          'lucide:mountain',
          'Balkon mit idyllischem Ausblick',
          'Balcony with idyllic view'
        ),
        new Feature(
          'lucide:bed-double',
          'Schlafzimmer 1 mit Doppelbett',
          'Bedroom 1 with double bed'
        ),
        new Feature(
          'lucide:bed-double',
          'Schlafzimmer 2 mit Doppelbett & Schlafsofa',
          'Bedroom 2 with double bed & sofa bed'
        ),
        new Feature('lucide:sofa', 'Wohnküche', 'Living/kitchen area'),
      ],
      [
        '/apartments/3/1.webp',
        '/apartments/3/2.webp',
        '/apartments/3/3.webp',
        '/apartments/3/4.webp',
        '/apartments/3/5.webp',
        '/apartments/3/6.webp',
        '/apartments/3/7.webp',
        '/apartments/3/8.webp',
        '/apartments/3/9.webp',
        '/apartments/3/10.webp',
        '/apartments/3/11.webp',
        '/apartments/3/12.webp',
        '/apartments/3/13.webp',
        '/apartments/3/14.webp',
      ]
    ),
  ],
}
