# Logbook ## 19.04.2021 ### 8h05 Entretiens avec M. Garcia ### 9h05 Copie de mon disque pour Gawen ### 9h20 Création du git ### 9h30 je réfléchi à ce par quoi je vais commencer j'hésite entre commencé entre le site web ou les téléchargement ### 9h40 Modélisation de la BDD ![alt text](images/bdd_tableau.jpg "base de données") ### 10h30 Installation de laragon ### 10h40 Création de la base de données ### 12h40 Création de la structure du site web ### 14h35 Création des différente pages et mise en place de bootstrap ### résumé j'ai créer la base de donnée et le site web -------- ## 20.04.2021 ### 8h05 je continue à créer le site web je crée les formulaires pour la connexion ### 15h20 J'ai impliqué la création de compte et la connexion, le mail doit être unique et le username aussi. j'ai selon les indication de M. Schmid utilisé les fonctions password_hash et password_verify de php. ### 15h30 j'ajoute des donnée a la main dans la bdd ### 15h56 aide de M.Schmid pour du sql ----------- ## 21.04.2021 ### 8h10 Modification de la structure du site et ajout de l'update de mots de passe ### 13h00 l'affichage des jeux est disponible ainsi qu'une recherche sur les jeux grâce à leurs noms. ### 13h20 Ajout de champs dans la table game - description - imageName ### 15h00 l'affichage de la recherche et du détail d'un jeu fonctionne mais n'est pas beau. ------------ ## 22.04.2021 ### 8h05 Ajout de l'affichage des catégories de chaque jeu ### 9h00 Affichage des jeux qui appartiennent à une catégorie. ### 10h20 modification de l'interface de recherche ### notes personnelles - je dois ajouter une table pour savoir le nombre d'heure de jeu de chaque utilisateurs - je dois ajouter une gestion des messages d'erreurs. - je peux ajouter une photo de profil ### 11h0 modification de l'interface de connexion et de d'inscription ### 11h50 suppression de la page de création de compte ### 12h40 Ajout d'un jeux en favoris ### 15h00 suppression d'un jeu en favoris ### a faire demain - l'affichage des card dans le dashboard n'est pas bon -------- ## 23.04.2021 ### 8h05 modification de la l'interface du Dashboard ### 8h40 Ajout d'un champ dans la table utilisateur pour spécifier si l'utilisateur est privé ou non si l'utilisateur n'est pas privé tout le monde va pouvoir voir son profils ### 9h30 la modification du paramètre pour savoir si le compte est privé ou non ### 12h20 test de Git Hook ### 13h30 modification de l'interface theme blanc -> dark ### 15h20 Création de la page de téléchargement et mise en place de du téléchargement de Caiman depuis le site ### notes pour la prochaine fois - Je dois créer la partie Administrateur du site - Je dois créer un une fonctionnalité qui me permet de gérer les messages d'erreurs - Je dois sécuriser l'accès au pages - je dois sécuriser les différents formulaires - je dois je dois me renseigner comment uploader des gros fichier depuis un poste clients - je dois changer de navbar ---------- ## 26.04.2021 ### 8h05 notes personnelles: - je dois ajouter la possibilité d'afficher la page d'un utilisateur - je dois corriger mon script d'export de base de données ### 8h10 Création de la page dédiée aux administrateurs. ### 8h30 Ajout de catégorie ### 9h00 Ajout de jeu ### notes personnels j'ai regardé plusieurs méthodes pour envoyer un fichier depuis un formulaire en php. Pour l'instant j'utilise les fonctions de base de php et elle fonctionne donc je vais faire des tests une fois le site uploadé sur le Bunker. ### 11h00 le fichier .iso est uploadé avec le bon nom mais pas encore dans la base de données ### 15h00 Le jeu est bien ajouté avec le bon nom ainsi que la bonne image. ### 15h45 il est maintenant possible de mettre à jour le nom, la description ou la console d'un jeu. ### 15h50 modification de la structure du git ----- ## 27.04.2021 ### 8h05 ajout/ suppression de catégories a un jeu ### 9h20 modification mineur de l'interface ### 10h05 recherche d'un profil utilisateur ### 12h15 la recherche et l'affichage d'un profil utilisateur est fonctionnel ### 13h00 modification de l'interface pour que les jeux s'affiche correctement ### 13h30 Le site est fonctionnel mais il manque des détail comme les message d'erreur et les droit sur les pages ### notes personnelles pour finir le site il me reste les choses suivante a faire: - Sécuriser les pages - afficher des messages d'erreur - suppression de catégories - suppression de jeu - mot de passe oublié - commenter mon code - pagination pour les recherches ### 13h40 documentation ------ ## 28.04.2021 ### 8h05 documentation ### 10h40 correction d'un bogue sur le nombre d'heure de jeu et riage des jeux par heure de jeu ### 11h00 gestion des droit d'accès au page ### 13h10 modification de la navbar ### 14h00 gestion des erreurs de du login ---------- ## 29.04.2021 ### 8h30 Documentation ### 10h20 Mr. Garcia m'a aidé à mettre en place ma documentation doxygen ### 11h00 documentation --------- ## 30.04.2021 ### 8h05 Correction du logbook ### 8h20 supression de code inutile sur le site et mis a jour de la doccumentation ### 9h30 ajout de contrainte dans la base de données ### 10h45 Création du planning effectif ### 13h00 Configuration de debian user tfp : FTPdiplomant password ftp : SuperCfpt@ J’ai pus installer apache, php, et mysql mais je n’arrive pas à me connecter en ftp. A la connexion je bloque sur l’erreur : “Impossible de récupérer le contenu du dossier”. Malgré l’aide de Mr.Schmidt je n’ai toujours pas réussi. ### 15h20 Je n'arrive toujours pas a me connecter au ftp, je ne sais pas si le probléme viens de ma configuration ou du firewall ## notes pour le premier rendu J’ai durant ces deux premières semaines, créé le site internet de Caiman. Le site n’est pas fini à 100% mais les fonctionnalités de base sont toutes implémentées. Les fonctionnalités actuelles permettent de faire toutes les choses nécessaires au fonctionnement de l'application. J’ai pris plus de temps que prévu à réaliser le site mais durant la création de mon planning prévisionnel j’ai fait des erreurs, j’ai par exemple oublié de planifier la création des fonctionnalités d’administration ( Ajout de jeux, ajout de catégories, assignation de catégories à un jeu, upload de jeux, etc ). La documentation du site n’est pas forcément touffue mais le site n’est pas particulièrement complexe, il m’a pris du temps dû au nombre de tables à gérer. Il reste à mettre en place la récupération de mot de passe mais j’ai décidé de passer à l'interface graphique de l'application C# dès la semaine prochaine. Étant donné que le projet est la partie la plus importante de l'application, je ne vais pas configurer la récupération de mot de passe maintenant. -------- ## 03.05.2021 ### 8h10 Réflexion sur l’interface graphique et création du projet ### 8h15 Importation de la classe XboxController.cs que j’ai créé précédemment. ![alt text](images/schema-form.jpg "Schéma de base de la form") La table MainForm contient un XboxController() cette classe permet de connaître les manettes connectés au pc et de recevoir leur inputs. Elle contient aussi une liste de form, ces formes sont les différentes fenêtres de l’application (si possible j’aimerai faire que seul une fenêtre soit active). Je fais des test avec les usercontrols ### 10h00 je n’arrive pas a afficher dynamiquement quand une action est faite. ### 12h00 Mon problème venait du fait que je n’initialisait pas l 'usercontrol. ### 13h00 Je vais essayer de me baser sur la structure des div en html pour gérer le contenu de l’affichage. ![alt text](images/schema-div.jpeg "Schéma de base de la form") ### 14h00 FInalisation de la configuration du serveur ------ ## 04.05.2021 ### 8h05 Je continue à faire des test pour pouvoir bouger le focus d’une “div” a une autre ### 11h00 Je continue à faire des test mais j’ai apporté des modifications: le MainForm ne contient pas une liste de list de control, ce n’est pas nécessaire sachant que le lien entre les control est seulement connu des sous contrôle dorénavant chaque sous control possède une liste de listes de control pour pouvoir se déplacer. quand on déplace la position maximum dans un sous control il y a deux possibilité.: un control est disponible dans la direction souhaité rien n’est disponible Si un control est disponible alors la main form est informée qu'elle doit changer d’activeForm pour pouvoir se déplacer dans de bonne condition. ### 12h05 Le déplacement dans chaque form fonctionne et l’on peut passer d’une form à une autre. ------- ## 05.05.2021 ### 8h05 Je continue à améliorer le fonctionnement de l’interface. J’ai décidé de diviser l’interface en 3 “partie” la navbar la sidebar le main contenu ![alt text](images/schema-home-page.jpeg "Schéma de base de la form") ### 10h50 J’ai créé une nouvelle classe ButtonContext.cs, elle contient les paramètres qui doivent être passer a la forme pour quel sache l’action à exécuter. Il est maintenant possible de cliquer sur un bouton et la manette va reprendre la ou l'utilisateur a cliqué. ### 12h40 Je permet le déplacement grâce au joystick gauche ### 13h00 J’essaie de faire en sorte que je puisse revenir en arrière dans les fenétre ### 15h00 J’ai essayé de sauver dans une liste les choses précédemment affichée mais j’ai des soucis avec les liens entre les différents panel. Je vais essayer de recréer les anciens panel a chaque fois au lieu de les recharger. ------ ## 06.05.2021 ### 8h05 Je continue a faire en sorte que je puisse retourner en arrière grâce à la touche “B” ### 9h00 Il est maintenant possible de revenir en arrière dans la navigation ### 10h00 si il y a des “trou” dans la navigation le curseur le contourne ### 10h40 J’essaie d'afficher des images dans l'application ### 13h00 J’ai discuté avec Mr Maréchal de mon git. Pour pouvoir appliquer correctement mon gitignore j’ai dus supprimer les fichier du git ### 14h00 J’ai fais des recherche sur la publication de projet et j’ai corrigé des bugs ------- ## 07.05.2021 ### 8h05 J’ai essayé le paquet “Microsoft Visual Studio Installer Projects” que m’a conseillé M. Schmid. L’installation marche mais certains dossiers de PCSX2 et de Dolphin ne sont pas inclus dans l'installation. ### 10h00 Je commente les classe que j’ai créé et je supprimer les fonctions qui ne sont pas utilisé ### 12h40 documentation + Création d’une release pour pouvoir essayer l’interface Je déplace la documentation du projet web au projet desktop la seul documentation qui reste dans le projet web est celle qui concern son propre code (doxygen) ### notes personnelles Je dois modifier la connexion a la base de données pour passer des fonctions de cryptographie de PHP au mds. Le problème ce que je ne peux pas me connecter depuis le c# avec les fonctions de cryptographie de php. ### 15h30 J’ai mis à jour ma documentation du projet. J’ai essayé d’ajouter des tâches à mon git mais j’ai eu des soucis pour la signature du projet donc je remet ça à plus tard. -------- ## 10.05.2021 ### 8h05 Je modifie la création de mot de passe et la connexion pour qu'un utilisateur puisse se connecter depuis le site web et Caiman. J'utilisais les fonctions de php (password_hash et password_verify) mais je passe a du md5 + salt. La raison est que je ne pouvais pas utiliser ces fonctions pour me connecter depuis l’application c#. ### 10h10 je vais essayer de créer un login en C# Pour ce faire, je commence par créer une classe “AccessDatabase.cs” pour communiquer avec la base. Pour stocker la la connexionString je l’ai mise dans les settings de l’application. ### 10h45 Pour pouvoir me connecter a la base de donnée je dois passer par le port 1433 mais il est fermé dans le firewall du coup je dois essayer de me connecter par le port 433 ### 13h30 Je commence à créer la “vrai” interface je commence par les menu de configurations et le menu pour quitter l’application. ### 14h00 Après une discussion avec M. Scmid j’ai décidé de faire une api. ### 14h30 J’ai demandé à M.Borel de l’aide pour la structure de mon api, il a pu m’indiquer une structure correcte mais elle est très verbeuse donc je vais surement avoir pour minimum 3 jours a faire mon API. -------- ## 11.05.2021 ### 8h00 Je continue mon api, je commence par essayer la structure de M.Borel sur une seule table pour essayer puis je vais faire les autres. ### 11h40 Je peux maintenant faire des requêtes mais j’ai un souci avec les headers. Le hearder Autorization n’est pas correctement recu Je pense que vu le temps que faire une API prend je fais faire en sorte que l’API ne soit que faite pour Caiman. Je vais donc seulement créer les requêtes nécessaires ### 13h00 Je vais lister les requêtes qui me seront potentiellement utile pour Caiman liste des jeux recherche de jeu affichage des informations d’un jeu recherche des informations d’un utilisateur recherche des jeux avec un nombre qui ont été joué par un utilisateur particulier recherche d’un jeu selon sa catégorie jeux favoris d’un utilisateur recherche des jeux qui ont été joué connexion d’un utilisateur Création de compte réception d’un fichier de sauvegarde réception d’un fichier de configuration ### 13h40 Je fais un test d’appel a l’API depuis Caiman ### 14h20 Pour pouvoir utiliser correctement les appels à l'api je dois utiliser des objets que je je rempli avec chaque appel. Par exemple, si je veux recevoir les informations d’un jeu je créer un objet jeu a qui je vais attribuer les données que je viens de recevoir. Il me faut donc créer une classe pour l'utilisateur et une classe pour les jeux. ### 15h50 je dois aussi pouvoir connaître la liste des catégories grâce à l’API ### 16h00 Il est maintenant possible de récupérer les catégories ------ ## 12.05.2021 ### 8h05 Documentation et suppression de code inutile ### 13h00 J’ai discuté avec M.Smid il m’a donner des conseil sur pour mon api ### 14h30 J’ai changé les routes de mon api exemple: /games/userFavorites/8 => /games/?byUserFavorites=8 ### 15h30 J’ai essayé de mettre l’api en ligne mais quand j’arrive sur une page j’ai une erreur 500. ------ ## 13.05.2021 ### 11h00 L’erreur 500 que j’avais était liée à une version de PHP, le serveur avait une version de php 7.3 alors que mon API a besoin d’une version PHP minimum en 7.4. J’ai donc mis à jour la version présente sur le serveur. ### 12h00 J’ai corrigé différentes erreurs liées à l’api par exemple quand on envoyait que le username et pas de password pour se connecter une erreur apparaissait. ### 13h00 J’ai une erreur sur le serveur quand je veux faire une requête d'utilisateur avec sa clé d’API j’ai une erreur 404. Je vais peut etre passer la recherche d’api en POST et non en GET ## 14.05.2021 ### 8h00 J’ai toujours une erreur quand je veux récupérer les informations d’un utilisateur grâce à son apitoken, l’erreur n’est présente que sur le caiman.cfpt.info. Pour corriger l’erreur je vais passer par du post pour éviter de perdre trop de temps. ### 09h22 j’ai push sur le serveur une version de l’API qui fonctionne bien, je vais maintenant continuer ma documentation ### 09h30 je me rend compte qu j'ai une requête qui ne marche pas ### 11h30 J’ai dû modifier le .htaccess pour pouvoir appliquer les rewriteRules. Le fichier n'était pas pris en compte sur le serveur je l’ai donc mis dans le dossier ou point le virtual host. ### 12h00 documentation ------ ## 17.05.2021 ### 8h05 Création d’une ébauche de diagram de classe sur le tableau. J’ai repris en grande partie le diagramme de mon POC en y ajoutant une gestion des sauvegardes et des téléchagement. ### 9h00 Création du schéma sous UMLetino Première version du diagramme de la logique de Caiman. ### 13h20 J’essaie de réfléchir à la manière de télécharger les sauvegardes et la façon dont je dois stocker les jeux que l’utilisateur a téléchargé. Je pense que je vais faire en sorte de vérifier si les jeux qui devraient être présents sur le disque de l'utilisateur le sont réellement. Je vais faire en sorte que l'utilisateur ait la possibilité de pouvoir télécharger les jeux dans un dossier spécifique. Il va devoir au premier lancement de l’application spécifier ou l'installation doit se faire. (c’est peut etre contraire a mon but de faire une application simple d’utilisation). Je dois aussi savoir si le disque de l’utilisateur n’a pas la place requise pour télécharger le jeu demandé. ### 14h35 Discussion avec M.Maréchal ## 18.05.2021 ### 8h05 Je vais créer une page de connexion pour l'utilisateur ### 10h00 La connection marche, je vais maintenant télécharger les images des jeux ### 12h00 Je commence a faire en sorte que quand un nouveau jeu est reçu depuis l’API son image est automatiquement télécharger et mise dans le dossier %appdata% de l’application ### 13h30 J’affiche dans la sidebar le nom des catégories ### 15h00 Quand je clique sur une catégorie les jeux de la catégorie choisie sont afficher. ----- ## 19.05.2021 ### 8h05 je fais en sorte d’afficher tous les jeux quand je lance l’application. ### 9h00 je vais maintenant faire en sorte de pouvoir voir les détails d’un jeu. ### 9h30 J’ai un problème avec les image bouton le clic n’est pas pris en compte ### 11h00 j’ai corriger le soucis des boutons et je modifie un petit peu l’interface ### 13h00 je commence l'affichage des détails d’un jeu ### 14h00 je fais des recherche sur la façon de télécharger un jeu -------- ## 20.05.2021 ### 8h05 Je crée une route pour pouvoir recevoir le lien de téléchargement d’un jeu. ### 09h15 Je me rend compte que pour créer la route de téléchargement je dois: Avoir le lien du site Avoir le lien pour la console avoir le nom du fichier Pour avec ces différents éléments je dois modifier mon API pour pouvoir faire tout ça. ### 11h00 J’arrive à créer l’URL mais le fichier n’est pas accessible en dehors du serveur donc je ne sais pas vraiment quoi faire ### 12h50 Correction d’un problème où l’on pouvait se déplacer dans une case qui n’existe pas donc l’application plantait. ### 14h00 Je commence a faire en sorte que je puisse créer la route pour télécharger le fichier des jeux ------ ## 21.05.2021 ### 9h00 Je voulais télécharger un jeu en passant par le webClient en C# mais ma route est en POST dans mon API. Malheureusement je ne peux pas fournir de paramètres en POST avec la fonction downloadFileAsync donc je dois passer ma route en GET ### 11h00 j’ai changé ma route et j’en ai ajouté pour pouvoir connaître les dossiers ou je dois stocker les jeux et le nom du fichier d’un jeu. ### 16h00 J’ai réussi à afficher la liste des téléchargements et maintenant je suis en train de faire en sorte de pouvoir ajouter un jeu au favoris. j’ai réglé des soucis de droit d'accès au fichier qui sont en cours de lecture. ------- ## 24.05.2021 ### 15h15 les téléchargement se font maintenant l’un après l’autre ### 16h35 Affichage des jeux téléchargé ------- ## 25.05.2021 ### 8h10 je dois modifier l’API pour pouvoir manipuler les jeux favoris des utilisateur ### 10h25 il est maintenant possible d’ajouter et de supprimer un jeu des favoris. je vais maintenant faire en sorte de pouvoir exécuter des jeux depuis caiman. ### 10h30 Je regarde le code que j’ai fais pour le poc pour voir si je peux reprendre des parties de codes. ### 14h00 J’ai un soucis avec le lancement des jeux de PS2 ### 14h25 Le problème venait des paramètres j’avais oublié une espace entre le nom du fichier à exécuter et les paramètres ### 15h50 J’ai pus ajouter les émulateurs et appliquer certains paramètres graphique. ----- ## 26.05.2021 ### 8h05 Je dois modifier mon api pour pouvoir générer un token à chaque connexion pour ne pas avoir à se connecter à chaque lancement de l’application. ### 10h30 J’ai modifié l’API, je vais maintenant passer a Caiman. ### 11h00 Il est maintenant possible de se connecter automatiquement , je vais maintenant modifier un petit peu l’aspect graphique de Caiman. ### 13h00 je veux afficher le jeux qui est actuellement utilisé par l’utilisateur ### 15h30 Il est possible de voir le jeu actuellement lancé par l’utilisateur et peut importe comment l’utilisateur quite le jeu Caiman va étre au courant ### 18h00 Affichage du temps de jeu de la session ### 21h00 Le nombre de minutes de jeu a comptabilisé ------- ## 27.05.2021 ### 8h10 J’ai remarqué que je ne pouvais pas upload de jeu actuellement je vais essayer de comprendre pouquoi. ### 09h00 J’ai résolu le problème je devais ajouter les droit d'écriture dans mon debian Par contre hier soir j’ai oublié de push donc je ne peux pas continuer Caiman ce matin ### 10h05 Je profite de ne pas pouvoir coder pour faire des tests, ajouter des jeux et faire de la doc ### 23h30 J’ai réussi à scanner un dossier pour savoir si il a y eu une modification. ------ ## 28.05.2021 ### 9h30 j’ai reussi a faire en sorte que les sauvegardes de l'utilisateur qui se connecte sont déplacé dans le dossier des sauvegardes des émulateurs. ### 10h00 Je réfléchi à comment faire pour synchroniser les sauvegardes des utilisateurs. J’ai eu l'idée de créer un sous répertoire pour chaque utilisateur sur le serveur ###10h30 J’ai réfléchi et finalement je pense envoyer des fichier zip contenant toutes les sauvegardes d’un utilisateur et cela pour chaque console. Cela a l’avantage de réduire la taille des fichier et de simplifier l’upload et le téléchargement ### 14h00 J’ai eu un bogue ou les sauvegarde n’était pas envoyé dans le bon dossier ### 14h35 Documentation -------- ## 30.05.2021 ### 13h30 Modification de l’API pour pouvoir télécharger un fichier de sauvegarde ### 16h12 Je fais en sorte que les sauvegardes se synchronisent sur caiman ### 19h43 j’ai ENFIN réussi à synchroniser les sauvegardes de Gamecube mais j’ai un soucis avec celle de ps2 --------- ## 31.05.2021 ### 8h05 Je commente le code de Caiman ### 14h00 Discussion avec M.Maréchal et ajout de tests pour la classe GameTimer ------ ## 01.06.2021 ### 8h05 Ajout de tests pour la classe TimeInGame ### 8h20 Je veux faire en sorte que Caiman s’exécute sur l’écran principale du pc de l’utilisateur ### 8h30 J’ai désactiver le .gitIgnore par ce que cela créait des soucis avec les dossier des émulateurs -------- ## 02.06.2021 ### 8h05 Commentaire du code de l’API ### 10h30 documentation ### 15h30 J’ai corrigé le fait que un compte pouvait être créé sans remplir tous les champ ---------- ## 03.06.2021 ### 8h10 J’ai eu un problème de conflit avec mon git j’ai du re télécharger tout le projet mais maintenant c’est bon. ### 8h34 Je continue la documentation ------- ## 04.06.2021 ### 8h05 Documentation ### 13h15 La documentation avance bien je vais donc créer les diagrammes de classe pour le C#. -------- ## 07.06.2021 ### 8h10 Recherche sur comment exporter ma documentation en pdf et je continue ma doc. ### 11h20 Je vais essayer d’installer un certificat ssl sur le serveur debian ### 13h30 Je n'arrive pas a installer certbot donc je laisse ca en attente ### 14h00 Documentation ------ ## 08.06.2021 ### 8h10 Documentation ------- ## 09.06.2021 ### 8h10 Documentation --------- ## 10.06.2021 ### 8h10 Export des fichiers sources en pdf et vérification global