import 'package:flutter/material.dart';

extension IsSameDay on DateTime {
  bool isSameDay(DateTime other) {
    return year == other.year && month == other.month && day == other.day;
  }

  DateTime nextWeekday(int day) {
    return add(Duration(days: (day - weekday) % DateTime.daysPerWeek));
  }

  DateTime withTime(TimeOfDay time) {
    return copyWith(hour: time.hour, minute: time.minute);
  }

  TimeOfDay toTimeOfDay() {
    return TimeOfDay(hour: hour, minute: minute);
  }

  bool isSameDateTime(DateTime other) {
    bool isSameDay = this.isSameDay(other);
    bool isSameTimeOfDay = (toTimeOfDay() == other.toTimeOfDay());

    return isSameDay && isSameTimeOfDay;
  }

  bool isSameOrAfter(DateTime other) {
    return isSameDateTime(other) || isAfter(other);
  }
}