# Wishurgift Android

L'application Android Wishurgift, dans le cadre du projet du second semestre de l'année 2019-2020 du M2 ILI à l'université d'Artois.

Les membres du groupe sont :
- Arthur Brandao
- Maxence Bacquet
- Ouahab Fenniche
- Aymeric Vandewoorde
 
## Le serveur

Pour fonctionner l'application à besoins d'une API mise à disposition par un serveur. [Le serveur de l'application est disponoble ici](https://gitlab.univ-artois.fr/arthur_brandao/wishurgift-server).
L'API est décrite dans le documentation du serveur. Il existe aussi un faux serveur ([disponible ici](https://gitlab.univ-artois.fr/arthur_brandao/wishurgift-mock-server)) dans le but de ne pas bloquer le développement de l'application. 
Il implemente la même API mais retourne des données factices.

## L'application

Wishurgift est une application de liste de souhait communautaire. Elle permet de créer des listes de souhaits et de les partager à ces contacts et de réserver des cadeaux dans les listes des autres.
Elle dispose de fonction communautaire comme un système de commentaire et permet la création de liste privée (partageable à ces certains contacts) ou plublique (visible par tous le monde).

Pour faciliter le développement le serveur a été mis en ligne à l'adresse http://wishurgift.loquico.me, cependant pour éviter de payer le serveur, il a été coupé le 29 avril. 

## Fonctionnalité

Description de chaque fonctionnalité majeure de l'application.

### Gestion des listes

- [x] Écran affichant toutes les listes de l'utilisateurs
- [x] Ajouter une nouvelle liste
- [x] Modifier une liste existante
- [x] Supprimer une liste existante
- [x] Partager une liste existante via l'application aux différents contacts de l'utilisateur
- [x] Gérer les droits d'une liste (qui peut voir ma liste) pour pouvoir supprimer ou ajouter des utilisateurs

### Création / Modification d'une liste

- [x] Nommer / Renommer la liste
- [x] Ajouter des éléments
- [x] Retirer des éléments
- [x] Modifier des éléments
- [x] Possibilité de choisir état par défaut de la liste (publique: tous mes contacts peuvent la voir, privé : uniquement les contacts choisit peuvent la voir)

### Édition d'un élément

- [x] Nom de l'élément
- [x] Possibilité d'ajouter un lien
- [x] Possibilité d'ajouter des coordonnées GPS (via une adresse) pour indiquer ou trouver le produit
- [x] Prix
- [x] État de l'élément (idea, crush, reserved, purchased)
- [x] Description / Notes

### Connexion à un compte 

- [x] Création compte
- [x] Connexion à un compte existant 
- [x] Déconnexion si connecté

### Profil

- [x] Nom de l'utilisateur
- [x] Consultation de l'email
- [x] modification de l'email
- [x] modification du mot de passe
- [x] modification du nom d'utilisateur 
- [x] Consultation avatar (Gravatar)
- [x] Identifiant unique (soit le nom d'utilisateur qui doit être unique, soit un code, soit un tag après le pseudo comme discord ou battle.net)
- [x] Profil publique ou privée pour savoir si il apparait dans les recherches de contact

### Liste de contact

- [x] Ajouter un contact : via son identifiant unique ou  système de recherche
- [x] Supprimer un contact
- [x] Décliner une demande d'un contact
- [x] Voir les détails d'un contact et ses statistiques
- [x] Voir les listes d'un contacts

### Liste appartenant a un contact

- [x] Changer d'état un élément (pour indiquer que l'on va ou que l'a acheté)
- [x] Commenter (un élément ou la liste)

### Paramètre

- [x] Changer la couleur de l'appli
- [ ] Mode clair / sombre 
- [ ] Possibilité de verrouiller l'application au demarage

### Zone Notification

- [x] Demande de contact

## Technologie

Voici les principales technologies et framework utilisé dans le projet :
- Java 8 : Langage de programmation
- GSON : Parser JSON
- Volley : Requete  HTTP
- Glide : Gestion des images
- Saripaar : Validation données 

## Paramètrage du serveur

L'url du serveur doit être précisé dans la classe [Constants](https://gitlab.univ-artois.fr/arthur_brandao/wishurgift/-/blob/master/app/src/main/java/com/androiddev/project/ili/wishurgift/util/Constants.java), il suffit de modifier la constante API_URL

## Autre projet Wishurgift

Voici la liste des differents projets Wishurgift :
- [Le serveur](https://gitlab.univ-artois.fr/arthur_brandao/wishurgift-server)
- [Le mock server](https://gitlab.univ-artois.fr/arthur_brandao/wishurgift-mock-server)
