1+ '''
2+ EJERCICIO
3+ '''
4+
5+ # Incorrecto
6+
7+ class User :
8+
9+ def __init__ (self , name , email ) -> None :
10+ self .name = name
11+ self .email = email
12+
13+ def save_to_database (self ):
14+ pass
15+
16+ def send_email (self ):
17+ pass
18+
19+
20+ # Correcto
21+
22+ class User :
23+
24+ def __init__ (self , name , email ) -> None :
25+ self .name = name
26+ self .email = email
27+
28+ class UserService :
29+
30+ def save_to_database (self , user ):
31+ pass
32+
33+ class EmailService :
34+
35+ def send_email (self , email , message ):
36+ pass
37+
38+ '''
39+ EXTRA
40+ '''
41+
42+ # Incorrecto
43+
44+ class Library :
45+ def __init__ (self ) -> None :
46+ self .books = []
47+ self .users = []
48+ self .loans = []
49+
50+ def add_book (self , title , author , copies ):
51+ self .books .append ({"title" : title , "author" : author , "copies" : copies })
52+
53+ def add_user (self , name , id , email ):
54+ self .users .append ({"id" : id , "name" : name , "email" : email })
55+
56+ def loan_book (self , user_id , book_title ):
57+ for book in self .books :
58+ if book ["title" ] == book_title and book ["copies" ] > 0 :
59+ book ["copies" ] -= 1
60+ self .loans .append (
61+ {"user_id" : user_id , "book_title" : book_title })
62+ return True
63+ return False
64+
65+ def return_book (self , user_id , book_title ):
66+ for loan in self .loans :
67+ if loan ["user_id" ] == user_id and loan ["book_title" ] == book_title :
68+ self .loans .remove (loan )
69+ for book in self .books :
70+ if book ["title" ] == book_title :
71+ book ["copies" ] += 1
72+ return True
73+ return False
74+
75+ # Correcto
76+
77+ class Book :
78+
79+ def __init__ (self , title , author , copies ):
80+ self .title = title
81+ self .author = author
82+ self .copies = copies
83+
84+ class User :
85+
86+ def __init__ (self , name , id , email ):
87+ self .name = name
88+ self .id = id
89+ self .email = email
90+
91+ class Loan :
92+
93+ def __init__ (self ):
94+ self .loans = []
95+
96+ def loan_bool (self , user , book ):
97+ if book .copies > 0 :
98+ book .copies -= 1
99+ self .loans .append (
100+ {"user_id" : user .id , "book_title" : book .title })
101+ return True
102+ return False
103+
104+ def return_book (self , user , book ):
105+ for loan in self .loans :
106+ if loan ["user_id" ] == user .id and loan ["book_title" ] == book .title :
107+ self .loans .remove (loan )
108+ book .copies += 1
109+ return True
110+ return False
111+
112+ class Library :
113+
114+ def __init__ (self ) -> None :
115+ self .books = []
116+ self .users = []
117+ self .loans_service = Loan ()
118+
119+ def add_book (self , book ):
120+ self .books .append (book )
121+
122+ def add_user (self , user ):
123+ self .users .append (user )
124+
125+ def loan_book (self , user_id , book_title ):
126+ user = next ((u for u in self .users if u .id == user_id ), None )
127+ book = next ((b for b in self .books if b .title == book_title ), None )
128+ if user and book :
129+ return self .loans_service .loan_book (user , book )
130+ return False
131+
132+ def return_book (self , user_id , book_title ):
133+ user = next ((u for u in self .users if u .id == user_id ), None )
134+ book = next ((b for b in self .books if b .title == book_title ), None )
135+ if user and book :
136+ return self .loans_service .return_book (user , book )
137+ return False
0 commit comments