package model;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import model.persistance.Storable;

public class UpdateTime implements Storable {
	private static final long serialVersionUID = -2661614718820065199L;
	public static final String DEFAULT_VALUE = "Letzte Aktualisierung: -";
	private LocalDateTime lastUpdateTime;

	public UpdateTime() {
		this.lastUpdateTime = LocalDateTime.now();
	}

	@Override
	public String toString() {
		if (this.lastUpdateTime == null) {
			return DEFAULT_VALUE;
		}

		final LocalDate today = LocalDate.now();
		final LocalDate lastUpdateDay = LocalDate.from(this.lastUpdateTime);

		String prefix = "";
		String pattern = "HH:mm";

		final boolean lastUpdateWasToday = today.isEqual(lastUpdateDay);
		final boolean lastUpdateWasYesterday = today.minusDays(1).isEqual(lastUpdateDay);

		if (lastUpdateWasToday) {
			prefix = "Heute, ";
		} else if (lastUpdateWasYesterday) {
			prefix = "Gestern, ";
		} else {
			pattern = "EEEE d. MMMM, HH:mm";
		}

		String formattedTime = this.lastUpdateTime.format(DateTimeFormatter.ofPattern(pattern));
		return "Letzte Aktualisierung: " + prefix + formattedTime;
	}

	@Override
	public String getStorageFileName() {
		return "time.ser";
	}
}