package online.wesal.wesal.dto;

import java.time.LocalDateTime;

public class InvitationResponse {
    
    private Long id;
    private String title;
    private String description;
    private LocalDateTime dateTime;
    private String location;
    private Integer maxParticipants;
    private Integer currentAttendees;
    private TagDto tag;
    private UserDto creator;
    private LocalDateTime createdAt;
    private java.util.List<AttendeeDto> attendees;
    
    public InvitationResponse() {}
    
    public Long getId() {
        return id;
    }
    
    public void setId(Long id) {
        this.id = id;
    }
    
    public String getTitle() {
        return title;
    }
    
    public void setTitle(String title) {
        this.title = title;
    }
    
    public String getDescription() {
        return description;
    }
    
    public void setDescription(String description) {
        this.description = description;
    }
    
    public LocalDateTime getDateTime() {
        return dateTime;
    }
    
    public void setDateTime(LocalDateTime dateTime) {
        this.dateTime = dateTime;
    }
    
    public String getLocation() {
        return location;
    }
    
    public void setLocation(String location) {
        this.location = location;
    }
    
    public Integer getMaxParticipants() {
        return maxParticipants;
    }
    
    public void setMaxParticipants(Integer maxParticipants) {
        this.maxParticipants = maxParticipants;
    }
    
    public Integer getCurrentAttendees() {
        return currentAttendees;
    }
    
    public void setCurrentAttendees(Integer currentAttendees) {
        this.currentAttendees = currentAttendees;
    }
    
    public TagDto getTag() {
        return tag;
    }
    
    public void setTag(TagDto tag) {
        this.tag = tag;
    }
    
    public UserDto getCreator() {
        return creator;
    }
    
    public void setCreator(UserDto creator) {
        this.creator = creator;
    }
    
    public LocalDateTime getCreatedAt() {
        return createdAt;
    }
    
    public void setCreatedAt(LocalDateTime createdAt) {
        this.createdAt = createdAt;
    }
    
    public java.util.List<AttendeeDto> getAttendees() {
        return attendees;
    }
    
    public void setAttendees(java.util.List<AttendeeDto> attendees) {
        this.attendees = attendees;
    }
    
    public static class TagDto {
        private Long id;
        private String name;
        private String colorHex;
        private String iconName;
        
        public TagDto() {}
        
        public Long getId() {
            return id;
        }
        
        public void setId(Long id) {
            this.id = id;
        }
        
        public String getName() {
            return name;
        }
        
        public void setName(String name) {
            this.name = name;
        }
        
        public String getColorHex() {
            return colorHex;
        }
        
        public void setColorHex(String colorHex) {
            this.colorHex = colorHex;
        }
        
        public String getIconName() {
            return iconName;
        }
        
        public void setIconName(String iconName) {
            this.iconName = iconName;
        }
    }
    
    public static class UserDto {
        private Long id;
        private String displayName;
        private String avatar;
        
        public UserDto() {}
        
        public Long getId() {
            return id;
        }
        
        public void setId(Long id) {
            this.id = id;
        }
        
        public String getDisplayName() {
            return displayName;
        }
        
        public void setDisplayName(String displayName) {
            this.displayName = displayName;
        }
        
        public String getAvatar() {
            return avatar;
        }
        
        public void setAvatar(String avatar) {
            this.avatar = avatar;
        }
    }
    
    public static class AttendeeDto {
        private Long id;
        private String displayName;
        private String avatar;
        private LocalDateTime joinedAt;
        
        public AttendeeDto() {}
        
        public Long getId() {
            return id;
        }
        
        public void setId(Long id) {
            this.id = id;
        }
        
        public String getDisplayName() {
            return displayName;
        }
        
        public void setDisplayName(String displayName) {
            this.displayName = displayName;
        }
        
        public String getAvatar() {
            return avatar;
        }
        
        public void setAvatar(String avatar) {
            this.avatar = avatar;
        }
        
        public LocalDateTime getJoinedAt() {
            return joinedAt;
        }
        
        public void setJoinedAt(LocalDateTime joinedAt) {
            this.joinedAt = joinedAt;
        }
    }
}