import 'dart:math';
import 'package:Emma_home/utils/data.dart';
import 'package:flutter/material.dart';

String shortenText(String text, int maxLength) {
  // Wenn der Text kürzer als die maximale Länge ist, gib den Text unverändert zurück
  if (text.length <= maxLength) {
    return text;
  }

  // Den Text bis zur maximalen Länge abschneiden
  String shortened = text.substring(0, maxLength);

  // Überprüfen, ob das Zeichen nach der abgeschnittenen Länge ein Leerzeichen ist
  // Wenn nicht, das letzte vollständige Wort suchen und entfernen
  int lastSpace = shortened.lastIndexOf(' ');
  if (lastSpace != -1) {
    shortened = shortened.substring(0, lastSpace);
  }

  // Drei Punkte hinzufügen
  return '$shortened ...';
}

String extractTime24h(String timestamp) {
  try {
    DateTime dateTime = DateTime.parse(timestamp);
    String hours = dateTime.hour.toString().padLeft(2, '0');
    String minutes = dateTime.minute.toString().padLeft(2, '0');
    return '$hours:$minutes';
  } catch (e) {
    print('Error parsing timestamp: $e');
    return '--:--'; // or some other error indicator
  }
}

//TODO: Color muss anhand der Categorie entschieden werden
// Also herauslesen welche Category das Event hat
// Dann den richtigen Eintrag in Data identifizieren udn die Farbe auswählen
Color extractColor(String categoryID) {
  var singleCategories = Categories.instance;
  final result = singleCategories.categories
      .where((recipe) => recipe.category == categoryID)
      .firstOrNull;
  Color categorieColor = const Color.fromARGB(255, 255, 255, 255);
  if (result != null) {
    categorieColor = result.color;
  }
  return categorieColor;
}

class ScaleSize {
  static double textScaleFactor(BuildContext context,
      {double maxTextScaleFactor = 2}) {
    final width = MediaQuery.of(context).size.width;
    double val = (width / 1400) * maxTextScaleFactor;
    return max(1, min(val, maxTextScaleFactor));
  }
}
