package de.votian.services.dto;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

public class GroupwareAppointmentDto {

    private Long id;
    private Long headquartersId;
    private Long authorUserId;
    private String authorName;
    private Long customerId;
    private String customerEid;
    private String customerName;
    private Integer category1;
    private Integer category2;
    private Integer category3;
    private Integer category4;
    private String category1Label;
    private String category2Label;
    private String category3Label;
    private String category4Label;
    private String text;
    private LocalDateTime startTime;
    private LocalDateTime endTime;
    private boolean reminderActive;
    private boolean finished;
    private List<Long> participantUserIds = new ArrayList<>();
    private List<AppointmentParticipantStateDto> participants = new ArrayList<>();

    public Long getId() {
        return id;
    }

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

    public Long getHeadquartersId() {
        return headquartersId;
    }

    public void setHeadquartersId(Long headquartersId) {
        this.headquartersId = headquartersId;
    }

    public Long getAuthorUserId() {
        return authorUserId;
    }

    public void setAuthorUserId(Long authorUserId) {
        this.authorUserId = authorUserId;
    }

    public String getAuthorName() {
        return authorName;
    }

    public void setAuthorName(String authorName) {
        this.authorName = authorName;
    }

    public Long getCustomerId() {
        return customerId;
    }

    public void setCustomerId(Long customerId) {
        this.customerId = customerId;
    }

    public String getCustomerEid() {
        return customerEid;
    }

    public void setCustomerEid(String customerEid) {
        this.customerEid = customerEid;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public Integer getCategory1() {
        return category1;
    }

    public void setCategory1(Integer category1) {
        this.category1 = category1;
    }

    public Integer getCategory2() {
        return category2;
    }

    public void setCategory2(Integer category2) {
        this.category2 = category2;
    }

    public Integer getCategory3() {
        return category3;
    }

    public void setCategory3(Integer category3) {
        this.category3 = category3;
    }

    public Integer getCategory4() {
        return category4;
    }

    public void setCategory4(Integer category4) {
        this.category4 = category4;
    }

    public String getCategory1Label() {
        return category1Label;
    }

    public void setCategory1Label(String category1Label) {
        this.category1Label = category1Label;
    }

    public String getCategory2Label() {
        return category2Label;
    }

    public void setCategory2Label(String category2Label) {
        this.category2Label = category2Label;
    }

    public String getCategory3Label() {
        return category3Label;
    }

    public void setCategory3Label(String category3Label) {
        this.category3Label = category3Label;
    }

    public String getCategory4Label() {
        return category4Label;
    }

    public void setCategory4Label(String category4Label) {
        this.category4Label = category4Label;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public LocalDateTime getStartTime() {
        return startTime;
    }

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

    public LocalDateTime getEndTime() {
        return endTime;
    }

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

    public boolean isReminderActive() {
        return reminderActive;
    }

    public void setReminderActive(boolean reminderActive) {
        this.reminderActive = reminderActive;
    }

    public boolean isFinished() {
        return finished;
    }

    public void setFinished(boolean finished) {
        this.finished = finished;
    }

    public List<Long> getParticipantUserIds() {
        return participantUserIds;
    }

    public void setParticipantUserIds(List<Long> participantUserIds) {
        this.participantUserIds = participantUserIds != null ? new ArrayList<>(participantUserIds) : new ArrayList<>();
    }

    public List<AppointmentParticipantStateDto> getParticipants() {
        return participants;
    }

    public void setParticipants(List<AppointmentParticipantStateDto> participants) {
        this.participants = participants != null ? new ArrayList<>(participants) : new ArrayList<>();
    }
}
