@@ -293,6 +293,15 @@ public function addBook(Books $book){
293293 public function getBooks (){
294294 return $ this ->books ;
295295 }
296+
297+ public function findBookByTitle ($ title ){
298+ foreach ($ this ->books as $ book ) {
299+ if ($ book ->getTitle () === $ title ) {
300+ return $ book ;
301+ }
302+ }
303+ return null ;
304+ }
296305}
297306
298307class UserManager{
@@ -305,6 +314,15 @@ public function addUser(UsersLibrary $user){
305314 public function getUsers (){
306315 return $ this ->users ;
307316 }
317+
318+ public function findUserById ($ id ){
319+ foreach ($ this ->users as $ user ) {
320+ if ($ user ->getId () === $ id ) {
321+ return $ user ;
322+ }
323+ }
324+ return null ;
325+ }
308326}
309327
310328class LoanManager{
@@ -320,6 +338,7 @@ public function returnBook(UsersLibrary $user, Books $book){
320338 foreach ($ this ->loans as $ key => $ loan ) {
321339 if ($ loan ->getUserId () === $ user ->getId () && $ loan ->getBookTitle () === $ book ->getTitle ()) {
322340 unset($ this ->loans [$ key ]);
341+ break ;
323342 }
324343 }
325344 }
@@ -332,3 +351,79 @@ public function getLoans(){
332351$ myBookManager = new BookManager ();
333352$ myUserManager = new UserManager ();
334353$ myLoanManager = new LoanManager ();
354+
355+ do {
356+ echo "\n\nVamos a mostrar un ejemplo de una clase que no cumple el SRP. En este caso es una clase que gestiona una biblioteca \n\n" ;
357+ echo "" ;
358+ echo "1. Añadir libro \n" ;
359+ echo "2. Añadir usuario \n" ;
360+ echo "3. Prestar libro \n" ;
361+ echo "4. Devolver libro \n" ;
362+ echo "5. Mostrar libros \n" ;
363+ echo "6. Mostrar usuarios \n" ;
364+ echo "7. Mostrar préstamos \n" ;
365+ echo "8. Salir \n" ;
366+ echo "" ;
367+ echo "Elija una opción: " ;
368+
369+ $ option = readline ();
370+ echo "" ;
371+
372+ switch ($ option ) {
373+ case 1 :
374+ echo "Título: " ;
375+ $ title = readline ();
376+ echo "Autor: " ;
377+ $ author = readline ();
378+ echo "Copias: " ;
379+ $ copies = readline ();
380+ $ myBookManager ->addBook (new Books ($ title , $ author , $ copies ));
381+ break ;
382+ case 2 :
383+ echo "Nombre: " ;
384+ $ name = readline ();
385+ echo "ID: " ;
386+ $ id = readline ();
387+ echo "Email: " ;
388+ $ email = readline ();
389+ $ myUserManager ->addUser (new UsersLibrary ($ name , $ id , $ email ));
390+ break ;
391+ case 3 :
392+ echo "ID del usuario: " ;
393+ $ userId = readline ();
394+ echo "Título del libro: " ;
395+ $ bookTitle = readline ();
396+ $ user = $ myUserManager ->findUserById ($ userId );
397+ $ book = $ myBookManager ->findBookByTitle ($ bookTitle );
398+ if ($ user && $ book ) {
399+ $ myLoanManager ->loanBook ($ user , $ book );
400+ } else {
401+ echo "Usuario o libro no encontrado. \n" ;
402+ }
403+ break ;
404+ case 4 :
405+ echo "ID del usuario: " ;
406+ $ userId = readline ();
407+ echo "Título del libro: " ;
408+ $ bookTitle = readline ();
409+ $ user = $ myUserManager ->findUserById ($ userId );
410+ $ book = $ myBookManager ->findBookByTitle ($ bookTitle );
411+ if ($ user && $ book ) {
412+ $ myLoanManager ->returnBook ($ user , $ book );
413+ } else {
414+ echo "Usuario o libro no encontrado. \n" ;
415+ }
416+ break ;
417+ case 5 :
418+ print_r ($ myBookManager ->getBooks ());
419+ break ;
420+ case 6 :
421+ print_r ($ myUserManager ->getUsers ());
422+ break ;
423+ case 7 :
424+ print_r ($ myLoanManager ->getLoans ());
425+ break ;
426+ }
427+
428+ } while (($ option != 8 ));
429+
0 commit comments