# PocketBook - Louis DUFOUR ## Informations projet Application développer sous android API 28 pour ma part. ### Documentation Vous avez des débuts de schéma, mais cela reste encore en cour de construction. TODO : ajout screenshot de sonar, car vous n'êtes pas disponible dans l'ajout de permission ### Cas d'erreur connus #### Vu principale - Button + *(TODO)* - Button modifier *(TODO)* #### Vu Tous - Image par défaut *(TODO prévoire une image pardéfaut)* - Button Tri *(TODO)* - Button + *(TODO)* #### Vu Detail - Button: - Déplacer Livre *(TODO)* - Ajouter à la liste à lire plustard *(TODO)* - Changer le status *(Marche sur le detail, mais se met pas à jour dans la groupCollection)* - préter le livre *(TODO)* #### Vu Emprunt - logic du switch button *(TODO)* - Button tri *(TODO)* - Button + *(TODO)* #### Vu Filtre - Peut être mieux optimiser je pense ### L'accès au code noté - Projet ToolKitt - Projet VMWrapper - Projet BookApp Dossier ViewModel, UseCase, Composants, Pages ## Modèle ```mermaid classDiagram direction LR class Book { +Id : string +Title : string +Publishers : List~string~ +PublishDate : DateTime +ISBN13 : string +Series : List~string~ +NbPages : int +Format : string +ImageSmall : string +ImageMedium : string +ImageLarge : string } class Languages { <> Unknown, French, } class Work { +Id : string +Description : string +Title : string +Subjects : List~string~ } class Contributor { +Name : string +Role : string } class Author { +Id : string +Name : string +ImageSmall : string +ImageMedium : string +ImageLarge : string +Bio : string +AlternateNames : List~string~ +BirthDate : DateTime? +DeathDate : DateTime? } class Link { +Title : string +Url : string } class Ratings { +Average : float +Count : int } Book --> "1" Languages : Language Book --> "*" Contributor : Contributors Author --> "*" Link : Links Work --> "*" Author : Authors Work --> "1" Ratings : Ratings Book --> "*" Author : Authors Book --> "*" Work : Works class Status { <> Unknown, Finished, Reading, NotRead, ToBeRead } class Contact{ +string Id; +string FirstName; +string LastName; } ``` ## Services & Interfaces ```mermaid classDiagram direction LR Book --> "1" Languages : Language Book --> "*" Contributor : Contributors Author --> "*" Link : Links Work --> "1" Ratings : Ratings Work --> "*" Author : Authors Book --> "*" Work : Works Book --> "*" Author : Authors class IUserLibraryManager { <> +AddBook(Book book) : Task +AddBook(string id) : Task +AddBookByIsbn(string isbn) : Task +RemoveBook(Book book) : Task +RemoveBook(string id) : Task +RemoveBook(string id) : Task +AddToFavorites(Book book) : Task +AddToFavorites(string bookId) : Task +RemoveFromFavorites(Book book) : Task +RemoveFromFavorites(string bookId) : Task +UpdateBook(Book updatedBook) : Task +AddContact(Contact contact) : Task +RemoveContact(Contact contact) : Task +LendBook(Book book, Contact contact, DateTime? loanDate) : Task +GetBackBook(Book book, DateTime? returnedDate) : Task +BorrowBook(Book book, Contact owner, DateTime? borrowedDate) : Task +GiveBackBook(Book book, DateTime? returnedDate) : Task +GetCurrentLoans(int index, int count) +GetPastLoans(int index, int count) +GetCurrentBorrowings(int index, int count) +GetPastBorrowings(int index, int count) +GetContacts(int index, int count) } class ILibraryManager { <> +GetBookById(string id) +GetBookByIsbn(string isbn) +GetBooksByTitle(string title, int index, int count, string sort) +GetBooksByAuthorId(string authorId, int index, int count, string sort) +GetBooksByAuthor(string author, int index, int count, string sort) +GetAuthorById(string id) +GetAuthorsByName(string substring, int index, int count, string sort) } class Status { <> } IUserLibraryManager ..|> ILibraryManager IUserLibraryManager ..> Status IUserLibraryManager ..> Contact IUserLibraryManager ..> Book ILibraryManager ..> Book ILibraryManager ..> Author ``` ## Ressources - [Doc officielle MAUI](https://learn.microsoft.com/en-us/dotnet/maui/) - [MAUI Community Toolkit](https://learn.microsoft.com/en-us/dotnet/communitytoolkit/maui/) - [SF Symbols 5.0 (format SVG et PNG)](https://www.figma.com/file/7ATqS05m0VqE905x1NKS0D/SF-Symbols-5.0---5296-SVG-Icons-(Community)?type=design&node-id=5-1670&mode=design&t=75VRROmRWJsStAIv-0) - [SF Symbols 5.0 (PNG only)](https://github.com/andrewtavis/sf-symbols-online/tree/master/glyphs) ## Voici les captures d'écran réalisées sur iPhone. ### Page Bibliothèque - Un clic sur "Tous" permet de naviguer vers la page affichant tous les livres de notre bibliothèque, - Un clic sur "En prêt" permet de voir à qui on a prêté un livre et à qui on a emprunté un livre - Un clic sur "À lire plus tard" affiche tous les livres de la bibliothèque marqués comme "à lire plus tard" - Un clic sur Statut de lecture permet de regrouper les livres en trois catégories : "Lu", "À lire", "Non lu" - Un clic sur "Favoris" affiche seulement les livres préférés de notre bibliothèque - Finalement, ... vous pouvez oublier "Étiquettes" - Un clic sur "Auteur" permet de filtrer les livres par auteur (cf. plus bas) - Un clic sur "Date de publication" permet de filtrer les livres par année de publication (cf. plus bas) - Un clic sur "Note" permet de trier les livres par notes (données par la communauté) - Le bouton "Modifier" ne sera pas utilisé - Le bouton "+" permet de rentrer de nouveaux livres (cf. plus bas). ### Affichage de la liste de livres - Le bouton "+" permet de scanner un nouveau livre (cf. plus bas). - Le bouton avec les deux flèches permet de changer l'ordre de présentation des livres. - Note : les livres sont regroupés par auteur ### Affichage d'un livre ### Filtrage par auteur Lorsqu'on clique sur un le filtre "Auteur" de la page "Mes Livres", on navigue vers la page suivante : Un clic sur un de ces auteurs permet d'aller sur la même page que celle qui affiche la liste des livres, mais seuls les livres de cet auteur apparaitront. ### Filtrage par date de publication Lorsqu'on clique sur un le filtre "Date de publication" de la page "Mes Livres", on navigue vers la page suivante : Un clic sur une de ces années permet d'aller sur la même page que celle qui affiche la liste des livres, mais seuls les livres publiée cette année apparaitront. ### Emprunts / Prêts Lorsqu'on clique sur le menu "En prêt" sur la page d'accueil, on peut voir la liste de nos emprunts et de nos prêts répartis par contacts. Par exemple : Le switch permet de voir les livres qu'on a prêtés regroupés par contacts, ou les livres qu'on a empruntés regroupés par prêteurs. ### Le fameux bouton "+" Un clic sur le bouton "+" fait apparaître un sous-menu permettant d'ajouter un livre à la bibliothèque : - en scannant un code-barres (cf. plus bas) - en scannant plusieurs code-barres - en recherchant en ligne (par titre ou par auteur), - en saisissant l'ISBN ### Le scan La page Scan pourra être réalisée plus tard.