package org.egl_cepgl.pm.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.egl_cepgl.pm.model.Applicant;
import org.egl_cepgl.pm.model.Country;

import javax.persistence.Column;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import java.util.List;
import java.util.stream.Collectors;

@Data
@Builder
public class ApplicantDto
{
    private Long id;

    private String id_kcloak;

    private String first_name;

    private String last_name;

    private String email;

    private String phone;

    private String address;

    private String gender;

    private CountryDto country;

    private String organization;

    private ApplicantQualificationDto qualification;

    private Integer experience;

    private List<FileDto> files;

    private Boolean status;

    public static ApplicantDto fromEntity(Applicant obj)
    {
        if(obj == null){
            return null;
        }
        return ApplicantDto.builder()
            .id(obj.getId())
            .email(obj.getEmail())
            .first_name(obj.getFirst_name())
            .last_name(obj.getLast_name())
            .phone(obj.getPhone())
            .address(obj.getAddress())
            .gender(obj.getGender())
            .country(CountryDto.fromEntity(obj.getCountry()))
            .organization(obj.getOrganization())
            .experience(obj.getExperience())
            .qualification(ApplicantQualificationDto.fromEntity(obj.getQualification()))
            .files(obj.getFiles().stream().map(FileDto::fromEntity).collect(Collectors.toList()))
            .status(obj.getStatus())
            .build();
    }
}

