package com.social.media.application.user.command;

import com.social.media.domain.shared.enums.UserType;
import com.social.media.domain.user.valueobject.UserId;
import com.social.media.domain.company.valueobject.CompanyId;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;

/**
 * Command to create a new user
 */
public record CreateUserCommand(
    @NotBlank(message = "User name is required")
    @Size(max = 100, message = "User name must not exceed 100 characters")
    String name,
    
    @NotBlank(message = "Email is required")
    @Email(message = "Invalid email format")
    String email,
    
    @NotBlank(message = "Password is required")
    @Size(min = 8, message = "Password must be at least 8 characters")
    String password,
    
    @NotNull(message = "User type is required")
    UserType type,
    
    CompanyId companyId,
    
    @Size(max = 14, message = "CPF must not exceed 14 characters")
    String cpf,
    
    @Size(max = 20, message = "Phone must not exceed 20 characters")
    String phone,
    
    @Size(max = 100, message = "Position must not exceed 100 characters")
    String position,
    
    @Size(max = 100, message = "Department must not exceed 100 characters")
    String department,
    
    boolean whatsappEnabled,
    
    // ID of the user creating this user (for validation purposes)
    UserId createdBy
) {}

