package org.egl_cepgl.pm.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.hibernate.annotations.DynamicUpdate;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;

@Data
@Entity
@ToString
@Table(name="enterprise", schema = "egl_pm_db")
@AllArgsConstructor
@NoArgsConstructor
@DynamicUpdate
public class Enterprise extends AbstractEntity
{
    @Column(name="namep", length = 30)
    private String namep;

    @Column(name="email", length = 50)
    private String email;

    @Column(name="phone", length = 20)
    private String phone;

    @Column(name="address", length = 300)
    private String address;

    @ManyToOne(targetEntity = Country.class)
    @JoinColumn(name="nationality")
    private Country country;

    @Column(name="experience")
    private Integer experience;

    @ManyToOne(targetEntity = EnterpriseQualification.class)
    @JoinColumn(name="qualification")
    private EnterpriseQualification qualification;

    @ManyToMany(mappedBy = "enterprises", targetEntity = Procurement.class)
    private Set<Procurement> procurements;

    @OneToMany(
            cascade = CascadeType.REMOVE,
            orphanRemoval = true,
            fetch = FetchType.EAGER)
    @JoinColumn(name = "enterprise_id")
    List<File> files = new ArrayList<>();

    @Column(name="status")
    private Boolean status;
}
