from dataclasses import dataclass

from ..amount import Amount

from .tipo_contrato import *
from .tipo_documento import *
from .lugar_trabajo import *
from .tipo_trabajador import *
from .sub_tipo_trabajador import *



@dataclass
class Trabajador:
    tipo_contrato: TipoContrato
    tipo_documento: TipoDocumento
    numero_documento: str

    primer_apellido: str
    segundo_apellido: str
    primer_nombre: str

    lugar_trabajo: LugarTrabajo
    alto_riesgo: bool
    salario_integral: bool
    sueldo: Amount

    tipo: TipoTrabajador

    codigo_trabajador: str = None
    otros_nombres: str = None
    sub_tipo: SubTipoTrabajador = SubTipoTrabajador(code='00')

    def apply(self, fragment):
        fragment.set_attributes('./Trabajador',
                                # NIE041
                                TipoTrabajador = self.tipo.code,
                                # NIE042
                                SubTipoTrabajador = self.sub_tipo.code,
                                # NIE043
                                AltoRiesgoPension = str(self.alto_riesgo).lower(),
                                # NIE044
                                TipoDocumento = self.tipo_documento.code,
                                # NIE045
                                NumeroDocumento = self.numero_documento,
                                # NIE046
                                PrimerApellido = self.primer_apellido,
                                # NIE047
                                SegundoApellido = self.segundo_apellido,
                                # NIE048
                                PrimerNombre = self.primer_nombre,
                                # NIE049
                                OtrosNombres = self.otros_nombres,
                                # NIE050
                                LugarTrabajoPais = self.lugar_trabajo.pais.code,

                                # NIE051
                                LugarTrabajoDepartamentoEstado = self.lugar_trabajo.departamento.code,

                                # NIE052
                                LugarTrabajoMunicipioCiudad = self.lugar_trabajo.municipio.code,

                                # NIE053
                                LugarTrabajoDireccion = self.lugar_trabajo.direccion,
                                # NIE056
                                SalarioIntegral = str(self.salario_integral).lower(),
                                # NIE061
                                TipoContrato = self.tipo_contrato.code,
                                # NIE062
                                Sueldo = str(self.sueldo),
                                # NIE063
                                CodigoTrabajador = self.codigo_trabajador
                                )