Postulante.java 4.44 KB
Newer Older
1 2
package com.roshka.modelo;

3
import javax.persistence.*;
4
import javax.validation.constraints.*;
5

willgonzz committed
6
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
7
import com.fasterxml.jackson.annotation.JsonIgnore;
8
import com.fasterxml.jackson.annotation.JsonManagedReference;
willgonzz committed
9
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
10
import com.roshka.utils.Helper;
11

12 13
import lombok.Data;

14
import java.util.ArrayList;
15
import java.util.Date;
16
import java.util.List;
17

18 19 20

@Entity
@Table(name="postulante")
willgonzz committed
21
@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property="@UUID")
22
@Data
23
public class Postulante {
24
    @Id
25
    @GeneratedValue(strategy = GenerationType.IDENTITY)
26
    @Column(name="id") 
27 28
    private long id;

29
    @Column(name="nombre")
30
    @NotBlank(message = "Este campo no puede estar vacio")
31
    @Size(max = 255)
32 33
    private String nombre;

34
    @Column(name = "apellido")
35
    @NotBlank(message = "Este campo no puede estar vacio")
36
    @Size(max = 255)
37

38 39
    private String apellido;

40
    @Column(name = "nro_document")
41
    @NotBlank(message = "Este campo no puede estar vacio")
42
    @Size(max = 120)
43

44
    private String nroDocument;
45

46
    @Column(name = "correo")
47
    @NotBlank(message = "Este campo no puede estar vacio")
48
    @Email(message = "Formato incorrecto de correo")
49

50 51
    private String correo;

52 53 54 55 56
    @ManyToOne(targetEntity = Ciudad.class,fetch = FetchType.EAGER)
    @JoinColumn(name="ciudad_id",insertable = false, updatable = false)
    private Ciudad ciudad;
    @Column(name="ciudad_id")
    private Long ciudadId;
57

58
    @Column(name = "telefono")
59
    @NotBlank(message = "Este campo no puede estar vacio")
60 61
    private String telefono;

62
    @Column(name = "fecha_nacimiento")
63 64
    @NotNull(message = "Este campo no puede estar vacio")
    @Past(message = "Este campo no puede estar en el futuro")
65 66
    private Date fechaNacimiento;

67 68
    @Column(name = "direccion")
    private String direccion;
69

70
    @Column(name = "nivel_ingles")
71 72
    @Min(value = 1)
    @Max(value = 5)
73
    private Long nivelIngles;
74 75


willgonzz committed
76
    @Column(name="estado_civil")
77
    @NotNull
78
    private EstadoCivil estadoCivil;
79 80 81

    @Column(name="estado_postulante")
    @NotNull
82
    private EstadoPostulante estadoPostulante;
83 84 85
    @Column(name="comentario_rrhh")
    private String comentarioRRHH;    

86 87
   
    @Column(name="nacionalidad", length = 2)
88
    @NotNull
89
    private Nacionalidad nacionalidad;
90

91 92 93
    @Column(name = "tipo_documento",length = 3)
    @NotNull
    private TipoDocumento tipoDocumento;
94

95

96 97
    @Column(name = "disponibilidad", length = 2)
    private Disponibilidad disponibilidad;
98

99
    @JsonManagedReference(value = "postulantetecnologia-postulante")
100
    @OneToMany(mappedBy = "postulante",cascade = CascadeType.ALL)
101 102
    private List<PostulanteTecnologia> tecnologias;
    
103
    @JsonManagedReference(value = "experiencia-postulante")
104
    @OneToMany(mappedBy = "postulante",cascade = CascadeType.ALL)
105
    private List<Experiencia> experiencias = new ArrayList<>();
106

107
    @JsonManagedReference(value = "estudio-postulante")
108
    @OneToMany(mappedBy = "postulante",cascade = CascadeType.ALL)
109 110
    private List<Estudio> estudios;

111 112 113 114
    @JsonManagedReference
    @OneToMany(mappedBy = "postulante",cascade = CascadeType.ALL)
    private List<ReferenciaPersonal> referencias;

115
    @ManyToMany()
116 117 118 119 120 121
    @JoinTable(uniqueConstraints = @UniqueConstraint(columnNames = {"postulante_id","convocatoria_cargo_id"}),
                joinColumns = @JoinColumn(name="postulante_id", referencedColumnName="id"),
                inverseJoinColumns= @JoinColumn(name="convocatoria_cargo_id", referencedColumnName="id")
    )
    private List<ConvocatoriaCargo> postulaciones;

122 123 124 125
    @OneToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
    @JoinColumn(name = "cvfile_id",referencedColumnName = "id")
    @JsonIgnore
    private DBFile cvFile;
126
   
127 128
    @Column(name = "fecha_creacion")
    private Date fechaCreacion;
129

130 131 132 133 134
    @Column(name = "fecha_actualizacion")
    private Date fechaActualizacion;

    @Column(name = "fecha_contratado")
    private Date fechaContratado;
135
    
136
    public void setFechaNacimiento(String fechaNacimiento) {
137
        this.fechaNacimiento = Helper.convertirFecha(fechaNacimiento);
138
    }
139 140 141

    @PrePersist
    public void precargarFechas(){
142 143
        this.fechaCreacion = new Date();
        this.fechaActualizacion = this.fechaCreacion;
144 145 146 147 148
        this.estadoPostulante = EstadoPostulante.NUEVO;
        this.comentarioRRHH = null;
    }
    @PreUpdate
    public void actualizarFecha(){
149
        this.fechaActualizacion= new Date();
150
    }
151
  
152
   
153
}