package com.dedicatedcode.reitti.dto;

import com.dedicatedcode.reitti.model.geo.SignificantPlace;
import com.dedicatedcode.reitti.model.geo.TransportMode;

import java.time.Instant;
import java.time.ZoneId;

/**
 * Inner class to represent timeline entries for the template
 */
public class TimelineEntry {


    public enum Type {VISIT, TRIP;}

    private String id;
    private Long resourceId;
    private Type type;
    private SignificantPlace place;
    private String path;
    private Instant startTime;
    private ZoneId startTimezone;
    private Instant endTime;
    private ZoneId endTimezone;
    private String formattedTimeRange;
    private String formattedLocalTimeRange;
    private String formattedDuration;
    private Double distanceMeters;
    private String formattedDistance;
    private TransportMode transportMode;

    // Getters and setters
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public Long getResourceId() {
        return resourceId;
    }

    public void setResourceId(Long resourceId) {
        this.resourceId = resourceId;
    }

    public Type getType() {
        return type;
    }

    public void setType(Type type) {
        this.type = type;
    }

    public SignificantPlace getPlace() {
        return place;
    }

    public void setPlace(SignificantPlace place) {
        this.place = place;
    }

    public Instant getStartTime() {
        return startTime;
    }

    public void setStartTime(Instant startTime) {
        this.startTime = startTime;
    }

    public Instant getEndTime() {
        return endTime;
    }

    public void setEndTime(Instant endTime) {
        this.endTime = endTime;
    }

    public ZoneId getStartTimezone() {
        return startTimezone;
    }

    public void setStartTimezone(ZoneId startTimezone) {
        this.startTimezone = startTimezone;
    }

    public ZoneId getEndTimezone() {
        return endTimezone;
    }

    public void setEndTimezone(ZoneId endTimezone) {
        this.endTimezone = endTimezone;
    }

    public String getFormattedTimeRange() {
        return formattedTimeRange;
    }

    public void setFormattedTimeRange(String formattedTimeRange) {
        this.formattedTimeRange = formattedTimeRange;
    }

    public String getFormattedLocalTimeRange() {
        return formattedLocalTimeRange;
    }

    public void setFormattedLocalTimeRange(String formattedLocalTimeRange) {
        this.formattedLocalTimeRange = formattedLocalTimeRange;
    }

    public String getFormattedDuration() {
        return formattedDuration;
    }

    public void setFormattedDuration(String formattedDuration) {
        this.formattedDuration = formattedDuration;
    }

    public Double getDistanceMeters() {
        return distanceMeters;
    }

    public void setDistanceMeters(Double distanceMeters) {
        this.distanceMeters = distanceMeters;
    }

    public String getFormattedDistance() {
        return formattedDistance;
    }

    public void setFormattedDistance(String formattedDistance) {
        this.formattedDistance = formattedDistance;
    }

    public TransportMode getTransportMode() {
        return transportMode;
    }

    public void setTransportMode(TransportMode transportMode) {
        this.transportMode = transportMode;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

}
