package com.hepl.tunefortwo.dto;

import java.time.LocalDate;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.hepl.tunefortwo.config.jackson.ForceStringDeserializer;

import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema.AccessMode;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class ContactDto {
	    @NotBlank(message = "{validation.user.usernameCannotBeEmpty}")
	    @Size(max = 60, message = "{validation.user.usernameMustBeMaximumOf_60Characters}")
	    @Pattern(regexp = "^[a-zA-Z0-9\\s]*$", message = "{validation.user.usernameCannotContainSpecialCharacters}")
	    @Schema(accessMode = AccessMode.READ_WRITE)
		private String name;
	    @Schema(accessMode = AccessMode.READ_WRITE)
	    @Size(min = 0, max = 750,  message = "{validation.user.usercommentsMustBeMaximumOf_750Characters}")
		private String message;
	    @NotBlank(message = "{validation.user.mobileCannotBeEmpty}")
	    @Schema(requiredMode = Schema.RequiredMode.REQUIRED,accessMode = AccessMode.READ_WRITE, description = "Encrypt data using AES/GCM", example = "+128484444545")
	    @JsonDeserialize(using = ForceStringDeserializer.class)
		private String mobileNumber;
	    @Schema(requiredMode = Schema.RequiredMode.REQUIRED,accessMode = AccessMode.READ_WRITE)
	    @Pattern(regexp = "^[a-z0-9]{1,25}(?:[._+][a-z0-9]+)*@[a-z0-9.-]+\\.[a-z]{2,}$", message = "{validation.user.emailIsInvalid}")
		private String email;
	   
}
