Sanofi - Gestion de Compte-Rendu

Présentation du projet :

Dans ce projet réalisé en groupe durant mes études, je fais partie d’un groupe étant une ESN factice choisie par Sanofi
Sanofi est une multinationale française dont les activités incluent la pharmacie (notamment des médicaments de prescription dans les domaines du diabète, des maladies rares, de l’oncologie, de la sclérose en plaque, mais aussi des produits de santé grand public ainsi que des génériques. Ayant un désir d’évolution de leur Système d’Information. Notre ESN a été choisie par Sanofi pour l’accompagner. La multinationale Sanofi est découpé en plusieurs services. Nous allons nous intéresser au visiteur qui permet de gérer les visites ainsi que les comptes rendus. L’application web, aux personnes travaillant dans le service visiteur de voir l’ensemble de ses propres visites mais aussi ses comptes rendus, ainsi qu’une page d’informations personnelles. Le visiteur, peut indiquer une visite comme étant terminée (réalisée). Par la suite, il pourra créer un compte rendu associé à cette visite, et le modifier si cela est nécessaire. Il peut également voir les informations de son compte sur la page de profil. En somme, Sanofi souhaite que l’on développe une application web utilisant une API. L’ensemble des informations concernant les visites et comptes rendus sont enregistrées dans une de données.

Situation professionnelle :

J’ai eu la mission de réaliser un client léger (application web) pour gérer les comptes-rendus des visiteurs. En effet, les visiteurs, via cette application web, doivent pouvoir lister leurs prochaines visites et réaliser des comptes-rendus. Pour que cette application web fonctionne, on a également réalisé une API qui permettra de récupérer, ajouter, modifier et supprimer des données provenant de la base de données de SANOFI.

Objectifs :

  • Lister les visites à faire
  • Indiquer comme visite réalisée ou non
  • Créer un compte-rendu lié à une visite
  • Modifier un compte-rendu
  • Afficher les informations sur le profil du visiteur

Application web

Langages et technologies utilisées :

  • AngularJS
  • Materialize
  • LocalForage
  • SweetAlert

Exemple de code :

Ce code permet, lorsque l’utilisateur arrive sur le site, de le reconnecter automatiquement et de récupérer ses informations, à la condition que le token enregistré en local storage est toujours valable.
var getAccount = function (callback) {
    $localForage.getItem('token').then(token => {
        $rootScope.token = token;
        var data = {token: token, emp: false}

        if (null == token) callback(data)

        Request.get($rootScope.API_URI+ '/employes/compte', token).then(res => {

            if (res.success) {
                $rootScope.emp = res.data

                // overwrite emp (false) with data of emp
                data.emp = res.data
            }

            callback(data)
        }, error => {
            console.log(error)
            if (error.data.status.ref == 'bad_token') {
                delete $rootScope.token
                $localForage.removeItem('token')

                callback(data)
            }
        })
    });
}

$rootScope.$on('$routeChangeSuccess', function (event, current) {
    // If use if logged : callback the token and the employee
    if (!$rootScope.logged) {
        getAccount(function (data) {
            $rootScope.logged = Utils.checkLogin(current.$$route.needLogin, data.token, data.emp)

            $rootScope.loading = false; // Stop loading page
        })
    }
});

API RESTful

Langages et technologies utilisées :

  • Lightwork-API v2
  • PHP
  • SQL
  • JSON

Exemple de code :

Ce code permet de créer un token si l’utilisateur envoie un identifiant et un mot de passe valide. Ce token permet à l’utilisateur, d’utiliser les autres routes de l’API.
/**
 * Login and get token if data matches with User
 */
public static function index()
{
    $emp = Employe::check($_POST['username'], $_POST['password']);

    if ($emp) {
        // create token here
        $token = self::_createToken();
        $auth = new \Models\Auth();
        $auth->token   = $token;
        $auth->date    = time();
        $auth->emp_id  = $emp->id;
        $auth->insert();

        self::_render(200, [
            'token'     => $token,
            'id'        => $emp->id,
            'lastname'  => $emp->nom,
            'firstname' => $emp->prenom,
            'username'  => $emp->identifiant
        ]);
    }
    self::_render(401, null, false, "bad_authentication", "Bad authentication");
}

Compétences acquises

  • A 1.1.1 : Analyse du cahier des charges d'un service à produire
  • A 1.1.3 : Étude des exigences liées à la qualité attendue d'un service
  • A 1.2.1 : Élaboration et présentation d'un dossier de choix de solution technique
  • A 1.2.2 : Rédaction des spécifications techniques de la solution retenue
  • A 1.2.3 : Évaluation des risques liés à l'utilisation d'un service
  • A 1.3.1 : Test d'intégration et d'acceptation d'un service
  • A 1.3.3 : Accompagnement de la mise en place d'un nouveau service
  • A 1.3.4 : Déploiement d'un service
  • A 1.4.1 : Participation à un projet
  • A 1.4.2 : Évaluation des indicateurs de suivi d'un projet et justification des écarts
  • A 1.4.3 : Gestion des ressources
  • A 2.1.2 : Évaluation et maintien de la qualité d'un service
  • A 2.2.1 : Suivi et résolution d'incidents
  • A 2.3.1 : Identification, qualification et évaluation d'un problème
  • A 2.3.2 : Proposition d'amélioration d'un service
  • A 4.1.1 : Proposition d'une solution applicative
  • A 4.1.2 : Conception ou adaptation de l'interface utilisateur d'une solution applicative
  • A 4.1.3 : Conception ou adaptation d'une base de données
  • A 4.1.4 : Définition des caractéristiques d'une solution applicative
  • A 4.1.5 : Prototypage de composants logiciels
  • A 4.1.7 : Développement, utilisation ou adaptation de composants logiciels
  • A 4.1.9 : Rédaction d'une documentation technique
  • A 4.1.10 : Rédaction d'une documentation d'utilisation
  • A 4.2.4 : Mise à jour d'une documentation technique
  • A 5.2.3 : Repérage des compléments de formation ou d'auto-formation ...