package de.tsschulz.timeclock.data.api

import kotlinx.serialization.Serializable

@Serializable
data class ProfileDto(
    val id: String? = null,
    val fullName: String = "",
    val email: String? = null,
    val stateId: String? = null,
    val stateName: String? = null,
    val weekWorkdays: Int? = null,
    val dailyHours: Double? = null,
    val preferredTitleType: Int? = null,
)

@Serializable
data class StateDto(
    val id: String,
    val name: String,
)

@Serializable
data class ProfileUpdateRequest(
    val fullName: String,
    val stateId: String? = null,
    val weekWorkdays: Int,
    val dailyHours: Double,
    val preferredTitleType: Int,
)

@Serializable
data class PasswordChangeRequest(
    val oldPassword: String,
    val newPassword: String,
    val confirmPassword: String,
)

@Serializable
data class TimewishDto(
    val id: String,
    val day: Int,
    val dayName: String? = null,
    val wishtype: Int,
    val wishtypeName: String? = null,
    val hours: Double? = null,
    val startDate: String? = null,
    val endDate: String? = null,
)

@Serializable
data class TimewishCreateRequest(
    val day: Int,
    val wishtype: Int,
    val hours: Double? = null,
    val startDate: String,
    val endDate: String? = null,
)

@Serializable
data class InvitationDto(
    val id: String,
    val email: String,
    val createdAt: String? = null,
    val expiresAt: String? = null,
    val status: String? = null,
    val isExpired: Boolean = false,
    val token: String? = null,
)

@Serializable
data class InviteRequest(
    val email: String,
)

@Serializable
data class WatcherDto(
    val id: String,
    val email: String,
    val createdAt: String? = null,
)

@Serializable
data class WatcherRequest(
    val email: String,
)
