1+ class Asignacion :
2+ """Clase para crear la asignacion de proyecto, con las validaciones"""
3+
4+ def __init__ (self , id , id_tarea , id_empleado , horas = 0.0 ):
5+ if not isinstance (id , int ) or id <= 0 :
6+ raise ValueError ("El ID de la asignación debe ser un entero positivo." )
7+ if not isinstance (id_tarea , int ) or id_tarea <= 0 :
8+ raise ValueError ("El ID de tarea debe ser un entero positivo." )
9+ if not isinstance (id_empleado , int ) or id_empleado <= 0 :
10+ raise ValueError ("El ID de empleado debe ser un entero positivo." )
11+ if not isinstance (horas , (int , float )):
12+ raise ValueError ("Las horas deben ser un número." )
13+
14+ self .id = id
15+ self .id_tarea = id_tarea
16+ self .id_empleado = id_empleado
17+ self .horas = float (horas )
18+
19+ def to_dict (self ):
20+ """Método para guardar los datos en JSON"""
21+
22+ return {
23+ "id" : self .id ,
24+ "id_tarea" : self .id_tarea ,
25+ "id_empleado" : self .id_empleado ,
26+ "horas" : self .horas ,
27+ }
28+
29+ @classmethod
30+ def from_dict (cls , data ):
31+ """Método de clase para traer una asigancion"""
32+
33+ return cls (
34+ id = data ["id" ],
35+ id_tarea = data ["id_tarea" ],
36+ id_empleado = data ["id_empleado" ],
37+ horas = data .get ("horas" , 0.0 ),
38+ )
39+
40+ def __str__ (self ):
41+ """Método para imprimir los atributos de la asignacion"""
42+
43+ return (
44+ f"Asignacion(id={ self .id } , id_tarea={ self .id_tarea } , "
45+ f"id_empleado={ self .id_empleado } , horas={ self .horas } )"
46+ )
0 commit comments