liturgy function

LiturgyModel? liturgy(
  1. DateTime date,
  2. bool isEpiphanyOn6thJan
)

Calculate liturgy of the date day, using the isEpiphanyOn6thJan flag.

Implementation

LiturgyModel? liturgy(DateTime date, bool isEpiphanyOn6thJan) {
  DateTime dateCleaned = DateUtilities.cleanDate(date);
  int? lentWeekNumber = LiturgyFunctions.lentWeek(dateCleaned);
  if (lentWeekNumber != null && DateUtilities.isSunday(dateCleaned)) {
    return LiturgyModel(
        category: LiturgyEnum.lent, number: lentWeekNumber, isFeast: true);
  }
  bool ashResult = LiturgyFunctions.ash(dateCleaned);
  if (ashResult && dateCleaned.weekday == DateTime.wednesday) {
    return LiturgyModel(
        category: LiturgyEnum.ash,
        dayOfWeek: dateCleaned.weekday,
        isFeast: true);
  }
  int? holyWeekNumber = LiturgyFunctions.holyWeek(dateCleaned);
  if (holyWeekNumber != null) {
    return LiturgyModel(
        category: LiturgyEnum.holyWeek,
        dayOfWeek: holyWeekNumber,
        isFeast: holyWeekNumber >= DateTime.thursday &&
            holyWeekNumber <= DateTime.saturday);
  }
  LiturgyEnum? solemnityAfterEasterCategory =
      LiturgyFunctions.solemnityAfterEaster(dateCleaned);
  if (solemnityAfterEasterCategory != null) {
    return LiturgyModel(category: solemnityAfterEasterCategory, isFeast: true);
  }
  int? sundayEasterNumber = LiturgyFunctions.easterWeek(dateCleaned);
  if (sundayEasterNumber != null && DateUtilities.isSunday(dateCleaned)) {
    return LiturgyModel(
        category: LiturgyEnum.easter,
        number: sundayEasterNumber,
        isFeast: true);
  }
  int? sundayAdventNumber = LiturgyFunctions.sundayAdvent(dateCleaned);
  if (sundayAdventNumber != null) {
    return LiturgyModel(
        category: LiturgyEnum.advent,
        number: sundayAdventNumber,
        isFeast: true);
  }
  LiturgyEnum? solemnityCalculatedCategory =
      LiturgyFunctions.solemnityCalculated(dateCleaned, isEpiphanyOn6thJan);
  if (solemnityCalculatedCategory != null) {
    return LiturgyModel(category: solemnityCalculatedCategory, isFeast: true);
  }
  LiturgyModel? feastLiturgy = LiturgyFunctions.feast(dateCleaned);
  if (feastLiturgy != null) {
    return feastLiturgy;
  }
  LiturgyModel? ferialLiturgy =
      LiturgyFunctions.ferial(dateCleaned, isEpiphanyOn6thJan);
  if (ferialLiturgy != null) {
    return ferialLiturgy;
  }
  return null;
}