package com.hpay.hpay_mobile_api.DTO;

import jakarta.validation.constraints.*;
import lombok.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SochitelRequest {

    @NotNull
    private Integer idclients;

    private Integer idcompte;

    @NotNull
    private Float montant;

    @NotNull
    private Float frais;

    @NotNull
    private Float total;

    @NotNull
    private Float montantDebite;

    @Size(max = 3)
    private String deviseDebite;

    private Float gainClient;
    private Float gainParrain;
    private Float gainFranchise;
    private Float gainHpay;

    private Integer operatorId;

    @Size(max = 45)
    private String operatorName;

    private Float operatorAmount;

    @Size(max = 200)
    private String operatorReference;

    @Size(max = 3)
    private String operatorCurrency;

    private Integer countryId;

    @Size(max = 45)
    private String countryName;

    private Float userAmount;
    @Size(max = 3) private String userCurrency;
    @Size(max = 45) private String userReference;

    private Integer productId;
    @Size(max = 45) private String productType;
    @Size(max = 45) private String productTypeName;

    @Size(max = 45) private String reference;
    @Size(max = 20) private String timestamp;

    @Size(max = 45) private String voucherPinNumber;
    @Size(max = 45) private String voucherPinSerial;
    private String voucherPinInstruction;

    @Size(max = 45)
    private String commande;

    private Float balanceInitial;
    private Float transactionAmount;
    private Float transactionCommission;
    private Float transactionCommissionPercentage;
    private Float balanceFinal;
    private Float balanceCurrency;

    private LocalDateTime dateEff;

    @NotBlank @Size(max = 1)
    private String statut; // "1" par défaut côté client si souhaité

    @Size(max = 45) private String beneficiaire;
    private Integer idagence;

    // Infos Client
    private Integer clientId;
    private String clientCode;
    private String nom;
    private String prenoms;
    private String telephone;
    private String email;
    private String urlPhoto;


    // Infos Compte
    private int compteId;
    private String numCompte;;
    private String devise;

}
