package de.rwth.idsg.bikeman.app.dto;
import com.fasterxml.jackson.annotation.JsonView;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.joda.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.joda.ser.LocalDateSerializer;
import lombok.*;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotBlank;
import org.joda.time.LocalDate;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;
import javax.validation.constraints.Pattern;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString(includeFieldNames = true)
public class CreateCustomerDTO {
public interface View {};
@NotBlank
@Email
@JsonView(View.class)
private String login;
private String password;
@NotNull
@Pattern(regexp = "^([0-9]{4})$")
private String cardPin;
@NotBlank
@JsonView(View.class)
private String firstname;
@NotBlank
@JsonView(View.class)
private String lastname;
@Past
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
@JsonView(View.class)
private LocalDate birthday;
@Valid
@JsonView(View.class)
private CreateAddressDTO address;
@Valid
@JsonView(View.class)
private BankAccountDTO bankAccount;
}