25
Vauchel-Durel Morgane BTS 1SIO Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a été confié. Actuellement en période de stage du 20 Mai 2019 au 21 Juin 2019, je suis dans l’entreprise Caisse d’épargne Normandie se situant à Bois-Guillaume. 20/05/2019 : Je suis arrivée le Lundi 20 Mai 2019 à 8h15 du matin pour rencontrer l’équipe et découvrir l’agencement de la Caisse d’épargne. Caroline SCHMIED, ma responsable de stage m’a bien accueillie, elle m’a fait visiter les locaux. Pendant une heure dans son bureau, elle m’a présenté le fonctionnement général de la Caisse d’Epargne. Voici le schéma que j’ai créé pour expliquer au mieux. Je vais travailler sur un WorkFlow (c’est un outil qui permet à une population A de parler à une population B selon certains critères de façon informatique). J’ai fait la connaissance de toute l’équipe DDO et je travaille dans le compartiment SI dans le Développement Interne avec Enzo LALLOUETTE (mon tuteur de stage), Hubert LEVASSEUR et John TROSZYNSKI. Ensuite, j’ai eu un point avec Enzo et Lydie LE GALL qui nous demande justement une Application à développer. Aris est un outil national permettant aux agences de suivre des procédures particulières ou des imprimés particuliers. Cependant, les agences n’ont pas encore la possibilité de demander aux gérants des procédures, des renseignements, de poser des questions ou même de faire des remarques comme par exemple que telle procédure n’est plus d’actualité.

Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

Vauchel-Durel Morgane BTS 1SIO

Compte Rendu Semaine 1 : STAGE BTS SIO1 :

Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a été

confié. Actuellement en période de stage du 20 Mai 2019 au 21 Juin 2019, je suis dans l’entreprise

Caisse d’épargne Normandie se situant à Bois-Guillaume.

20/05/2019 :

Je suis arrivée le Lundi 20 Mai 2019 à 8h15 du matin pour rencontrer l’équipe et découvrir

l’agencement de la Caisse d’épargne. Caroline SCHMIED, ma responsable de stage m’a bien accueillie,

elle m’a fait visiter les locaux. Pendant une heure dans son bureau, elle m’a présenté le

fonctionnement général de la Caisse d’Epargne.

Voici le schéma que j’ai créé pour expliquer au mieux.

Je vais travailler sur un WorkFlow (c’est un outil qui permet à une population A de parler à une

population B selon certains critères de façon informatique).

J’ai fait la connaissance de toute l’équipe DDO et je travaille dans le compartiment SI dans le

Développement Interne avec Enzo LALLOUETTE (mon tuteur de stage), Hubert LEVASSEUR et John

TROSZYNSKI.

Ensuite, j’ai eu un point avec Enzo et Lydie LE GALL qui nous demande justement une Application à

développer. Aris est un outil national permettant aux agences de suivre des procédures particulières

ou des imprimés particuliers. Cependant, les agences n’ont pas encore la possibilité de demander aux

gérants des procédures, des renseignements, de poser des questions ou même de faire des remarques

comme par exemple que telle procédure n’est plus d’actualité.

Page 2: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

Le but étant de faire une application où quand :

- On va directement sur l’application, on va cliquer sur une petite tuile de l’accueil, qui envoie

l’utilisateur sur un formulaire vide dont il devra remplir les champs « référence de la

procédure », « nom de la procédure », « est-ce un imprimé ? », et un champ pour le

commentaire à faire sur cette procédure particulière.

- L’utilisateur clique sur un petit bouton à côté de la procédure. Ce bouton renvoie sur le

formulaire avec des champs pré-remplis dont le nom, la référence de la procédure mais

également si c’est un imprimé ou non. L’utilisateur devra alors remplir juste le commentaire.

Dans ces deux cas, des messages d’erreurs apparaîtront si les champs nom, référence et

commentaire ne sont pas remplis.

Ensuite, cette demande sera envoyée au rédacteur ou à plusieurs rédacteurs (en copie) qui

s’occupe de cette procédure/cet imprimé. Si la référence n’est pas trouvée ou qu’il n’y a pas de

rédacteur, le mail sera envoyé d’office à Lydie LE GALL.

Après, il faut réussir à faire l’import des données du tableau excel et que Lydie réussisse à faire des

imports sur cette base de données qui remplacera son document Excel, elle ne veut pas de double

saisie (on ne sait pas encore si ce sera possible). Il faudrait qu’elle puisse également ajouter,

supprimer ou modifier une procédure.

Après le point, voici un mail récapitulatif avec des documents.

Page 3: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

Voici un modèle de procédure basique.

Voici le tableau excel avec les procédures d’Aris. (Il y en a 765).

Page 4: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

Le diaporama résume ce qu’il y a à réaliser, toutes les fonctionnalités de cette Application.

Page 5: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

La caisse d’épargne Normandie applique également les méthodes agiles avec un WhiteBoard

Planner par exemple. Pour me connecter à mon ordinateur, j’ai reçu une carte à puce et j’ai dû l’activer.

Je travaille sur l’environnement test, recette pour effectuer des tests et pouvoir faire une application

correcte sans erreurs. Avant de commencer à travailler, je me suis un peu habituée à l’environnement

de travail, j’ai souvent besoin de Visual Studio avec Entity Framework, de SQL Server Management

Studio.

J’ai dû m’adapter assez rapidement du nouvel environnement de développement, je développe

actuellement en MVC (Modèle Vue Contrôleur), pour m’aider à comprendre j’ai été autonome et j’ai

fait beaucoup de recherche internet et surtout le site OpenClassRoom mais c’est assez complexe

Page 6: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

comme nouveau language (malgré que ce soit en C#, c’est assez particulier). J’ai lu le cours de

OpenClassRoom. Voici ce que j’en ai compris :

MVC => Modèle Vue Contrôleur => c’est la séparation de l’affichage des informations, des actions de

l’utilisateur et l’accès aux données.

Modèle :

C’est l’état de l’application, cela permet d’accéder à la base de donnée par un ensemble de classe, on

accède aux classes par des méthodes qui cherche des informations dans la base de donnée.

Vue :

Ce que l’on voit à l’écran dans le navigateur web (HTML + CSS), cela présente sans changer les données

du Modèle. Une vue est une unique page.

Contrôleur :

C’est le lien entre les vues et le modèle. Cela gère les interactions avec l’utilisateur + les traitements

pour une action. Les contrôleurs utilisent les données du modèle, traitent et envoient à la vue pour

afficher. Contrôlent aussi l’action faite via une URL.

La route => url : Controleur/Action/Identifiant

BLL => Business Logic Layer (ici permet les requêtes Insert, Update, Delete).

DAL => Data Access Layer => Met à disposition des méthodes => Ajout, mise à jour, lire, supprimer un

enregistrement.

Metadata relié à PartialClasses.

BAL => couche métier

Page 7: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

ORM => entity framework

.edmx => diagramme des classes

En soit, ce cours est plus compréhensif quand on fait les choses.

J’ai d’abord commencé par créer une base de donnée que j’ai nommé Procedure (pour l’instant on n’a

pas encore de nom d’application), j’ai crée une table Request afin d’enregistrer les valeurs du

formulaire rempli par l’utilisateur.

Voici comment je voyais le formulaire au départ (c’est à peu près ça par la suite mais en plus beau), je

l’ai fait vite fait sur Pencil.

Page 8: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

Pour la base de donnée Procédure dans ssms (Microsoft SQL Server Management Studio) :

- Une table Request (toujours les noms en anglais) pour la demande des agences.

- La vuePersonnel de l’utilisateur (tout le monde a la même vue du formulaire).

- Dans la base de donnée, rajout de la vuepersonnel qui est déjà prête car il y a déjà une

vuepersonnel. Donc création d’une nouvelle vue, transfert de la vuePersonnel de Cooptation

(une autre application qui m’a permis de comprendre un peu tout ce qui était MVC, je prenais

un peu appuie dessus, c’était comme un modèle).

- Création d’un utilisateur pour la connexion à cette base de donnée (AppProcédure), on a

généré un mot de passe grace à Keepass -> outils -> générer un nouveau mot de passe. On

définit les paramètres du mot de passe (quels caractères + longueur) et on les génère et il y a

une petite liste de mot de passe qui se crée.

- Ensuite, on a donné le mot de passe aux utilisateurs et on a mis des droits publics, et owner

(car c’est sa connexion, il en est propriétaire).

Création d’un modèle avec entity framework en générant la base de donnée procédure. Mise à jour

de entity framework + Dans le DAL (tout ce qui est proche de la base de donnée), clic droit, add -> new

item -> « ProcedureEntities » -> ADO.NET Entity Data Model -> EF Designer from database

Page 9: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

(Serveur de test pour avoir le bon environnement de recette et développer dessus en test). J’ai

démarré sous Visual Studio un EmptyProjectMVC (un projet vide) mais qui possède déjà des

répertoires.

Connexion au serveur Microsoft SQL avec le bon nom de la base de donnée « Procedure » et le nom

de l’utilisateur « AppProcedure » et son mot de passe.

Page 10: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

Protection des données sensibles + transfert des différentes tables et vues

Ma table « Request » et ma vue « vuePersonnel » apparaît comme un diagramme de classe.

21/05/2019 :

J’ai regardé un peu ce que contenait le EmptyProjectMVC comme répertoire (généré de base et que

j’ai crée ensuite), j’ai déjà un peu expliqué l’architecture du MVC plus haut mais la compréhension se

fera vraiment par la suite.

BLL :

Page 11: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

DAL :

WEB :

La couche web comporte :

- App_Start : Bundle + la route, en

l’occurrence ici la route va vers la

méthode Index du Contrôleur Home.

- Content : CSS + Bootstraps (aider à

l’affichier de la vue pour l’utilisateur)

- Controllers : Errors, Home, les

contrôleurs que je ferai avec leurs

méthodes + des instanciations d’objets.

Les méthodes des contrôleurs peuvent

retourner des views.

- Helpers : Fonctions toutes prêtes

permettant moins de code.

- Models : Accès à la BDD par des

méthodes des classes

- Scripts : Tout ce qui est javascript, Jquery

- Views : Affichage sur l’écran de

l’utilisateur

- Layout : début de page (bandeau tout prêt)

Page 12: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

Dans le web config pour la connexion de l’utilisateur, rajout d’une ligne, pour la connectionString.

<connectionStrings> <add name="ErrorLog" connectionString="MultipleActiveResultSets=True; Data Source=PRDNOR6V1304\PPRICEN003;Initial Catalog=Elmah;Persist Security Info=True;User ID=AppElmah;Password=hjmvfe456/°4" providerName="System.Data.SqlClient" /> <add name="ProcedureEntities" connectionString="metadata=res://*/Procedure.csdl|res://*/Procedure.ssdl|res://*/Procedure.msl;provider=System.Data.SqlClient;provider connection string='data source=PRDNOR6V1304\PPRICEN003;initial catalog=Procedure;persist security info=True;user id=AppProcedure;password=&quot;FP7M$V9bMDR=&quot;;MultipleActiveResultSets=True;App=EntityFramework'" providerName="System.Data.EntityClient" /> </connectionStrings>

Pour commencer à voir si l’application se démarre, il fallait aller sur Web -> clic droit > set as startup

project pour démarrer le projet car sinon il y avait une erreur.

Ensuite, rajouter le .git + dossier bin du projet pour que cela fonctionne dans EmptyProjectMVC.

Puis on peut faire start et cela montre au moins déjà la première page avec la charte graphique de

base.

Idée de début de formulaire pour la demande :

<form action= "create" method= "get">

<label> Référence de la procédure </label>

<input id="refpro" type="text" />

<label>Nom de la procédure </label>

<input id="nompro" type="text" />

<label> Est-ce un imprimé ? </label>

<select id="imprime">

<option value="O">Oui</option>

Page 13: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

<option value="N">Non</option>

</select>

<label> Vous avez une remarque, une question sur cette procédure ? Complétez le champ ci-contre :

</label>

<textarea id="commentaire"> </textarea>

<input type="submit" value="Envoyer la demande" />

</form>

Pour le formulaire, il y a une manière plus rapide de le faire en s’aidant des fonctions avec des helpers.

@{ ViewBag.Title = "Create"; => nom de la vue Layout = "~/Views/Shared/_Layout.cshtml"; } @model DAL.Request => fait appel au model et donc aux données de Request. <h1 class="section-title">Formulaire de la Demande</h1> <div class="panel panel-primary" id="pnlOffer"> <div class="panel-heading panel-actif"> <h2 class="panel-title">Informations sur la Demande</h2> </div> <div class="panel-body"> <div class="row vcenter"> <div class="col-md-2 text-align-right">@Html.LabelFor(x => x.REQ_Reference, new { @class = "required" })</div> <div class="col-md-3"> @Html.TextBoxFor(x => x.REQ_Reference, new { @class = "mw-textbox" }) </div> </div> <div class="row vcenter"> <div class="col-md-2 text-align-right">@Html.LabelFor(x => x.REQ_ProcessName, new { @class = "required" })</div> <div class="col-md-3"> @Html.TextBoxFor(x => x.REQ_ProcessName, new { @class = "mw-textbox" }) </div> </div> <div class="row vcenter"> <div class="col-md-2 text-align-right">@Html.LabelFor(x => x.REQ_Printed, new { @class = "required" })</div> <div class="col-md-3"> @Html.CheckBoxFor(x => x.REQ_Printed, new { @class = "mv-checkbox" }) </div> </div> <div class="row vcenter"> <div class="col-md-2 text-align-right">@Html.LabelFor(x => x.REQ_Comment, new { @class = "required" })</div> <div class="col-md-offset-2 col-md-8"> @Html.TextAreaFor(x => x.REQ_Comment, new { @class = "mw-textarea", style = "width:100%; height:200px;" }) </div> </div> <div class="row"> <div class="col-md-offset-9 col-md-3"> <input type="submit" id="btnValidation" class="btn btn-primary mw-button principal" style="margin-left: 15px;" value="Envoyer la demande" /> </div>

Page 14: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

</div> </div> </div>

@Html.TextBoxFor ou autre pour mettre dans un objet, l’attribut de la table qui lui correspondrait +

des classes boostraps et la charte graphique de base.

@model DAL.request => pour avoir les fonctions et mettre dans le modèle de request appartenant à

DAL.

Layout = "~/Views/Shared/_Layout.cshtml"; => pour avoir les mêmes entêtes sur les pages. Dans la vue index.cshtml du répertoire Home dans View => affichage de la page d’accueil avec une petite tuile proposant un formulaire et qui renvoie sur la page du formulaire avec une action du request controller. <div class="menu-Tuile"> @Html.Partial("_Tile", new ViewDataDictionary { { "action", "Index" }, { "controller", "Request" }, { "title", "Proposer une requête" }, {"icon", "fab fa-wpforms"} }) </div>

Fab fa-wpforms => Site font awesome pour avoir une petite icône dans la tuile.

Dans ce formulaire pour obliger les utilisateurs à remplir les cases. Il a fallu mettre des messages d’erreurs si ces champs en particulier n’étaient pas rempli. Pour que required et display fonctionnent j’ai du rajouté la bibliothèque using System.ComponentModel.DataAnnotations. Metadata using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.ComponentModel.DataAnnotations; namespace DAL { class RequestMetadata { [Required(ErrorMessage = "Ce champ est requis")] [Display(Name = "Référence de la procédure")] public string REQ_Reference;

Page 15: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

[Required(ErrorMessage = "Ce champ est requis")] [Display(Name = "Nom de la procédure")] public string REQ_ProcessName; [Display(Name = "Est-ce un imprimé ? ")] public bool REQ_Printed; [Required(ErrorMessage = "Ce champ est requis")] [Display(Name = "Vous avez une remarque, une question sur cette procédure ? Complétez le champ ci-contre : ")] public string REQ_Comment; } }

Cela permettait aussi que les labels soient bien reconnus. Required => des messages d’erreurs sont appelés par ValidationMessageFor dans la vue. Display => Mettre des noms pour les labels. PartialClasses using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.ComponentModel.DataAnnotations; namespace DAL { class PartialClasses { [MetadataType(typeof(RequestMetadata))] public partial class Request { } } }

Une classe partielle est une particularité de C #. Il offre une possibilité spéciale d'implémenter la fonctionnalité d'une classe unique dans plusieurs fichiers et tous ces fichiers sont combinés dans un fichier classe unique lors de la compilation de l'application. Une classe partielle est créée à l'aide d'un mot clé partiel. 22/05/2019 :

Request BLL Pour avoir les requêtes de base, (BaseDal<Request> est rattaché à la connectionString faite avant pour faire la connexion à la base de données). + On met dans un objet, une variable les requêtes possible insertion, mise à jour, supprimer par l’id et récupérer l’id (récupération de l’id pour passer en paramètre). Et une fois que le using et fait et fermer, la requête est finie. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using DAL;

Page 16: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

using System.Data.Entity; namespace BLL { Public class RequestBLL { public static Request Insert(Request request) { using (var db = new BaseDAL<Request>()) { return db.Insert(request); } } public static Request Update(Request request) { using (var db = new BaseDAL<Request>()) { return db.Update(request); } } public static Request GetRequestById(int requestId) { using (var db = new BaseDAL<Request>()) { return db.GetAllWithDep().Where(e => e.REQ_Id == requestId).FirstOrDefault(); } } public static bool DeleteRequestById(int requestId) { using (var db = new BaseDAL<Request>()) { return db.DeleteById(requestId); } } } }

Pour avoir un accès sur l’id de request, rajout dans la DAL dans BaseDAL. public IQueryable<T> GetAllWithDep() { try { var lstBase = bdd.Set<T>(); DbQuery<T> lst = null; foreach (var p in typeof(T).GetProperties()) { if (bdd.GetType().GetProperty(p.Name) != null) { if (lst == null) lst = lstBase.Include(p.Name); else lst = lst.Include(p.Name); } } if (lst == null) return lstBase.AsQueryable(); else return lst.AsQueryable(); } catch (Exception e) { LogExeption(e, MethodBase.GetCurrentMethod().Name); throw e;

Page 17: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

} } private void LogExeption(Exception e, string methodName) { //using (var exDal = new BaseDA<zz_Logs>()) //{ // if (exDal.bdd.Database.Connection.State == System.Data.ConnectionState.Open) // { // exDal.Insert(new zz_Logs // { // DATE = DateTime.Now, // PAGE = "BaseDAL/" + methodName, // UTILISATEUR = "Application", // MESSAGE = e.Message, // INNER_MESSAGE = e.InnerException.Message, // TRACE = e.StackTrace // }); // } //} }

J’ai crée le Contrôleur de Request et des méthodes.

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using BLL; using DAL; namespace Web.Controllers { public class RequestController : Controller { // GET: Request public ActionResult Index() { return View(); } public ActionResult Create() { Request request = new Request(); return View(request);

} Clic sur la tuile qui envoie direct sur le formulaire : @Html.Partial("_Tile", new ViewDataDictionary { { "action", "Create" }, { "controller", "Request" }, { "title", "Proposer une requête" }, { "icon", "fab fa-wpforms" } })

- Affichage du formulaire

Page 18: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

- Rajout de message d’erreurs lorsqu’il y a un champ non rempli dans la vue Create.

@{ ViewBag.Title = "Proposition d'une demande"; Layout = "~/Views/Shared/_Layout.cshtml"; } @model DAL.Request <div class="zone-travail col-lg-12 col-md-12 col-sm-12 col-offset-200 content-menu"> <section class="inside" id="contentSection"> @using (Html.BeginForm("SendRequest", "Request", FormMethod.Post)) { <h1 class="section-title">Formulaire de la Demande</h1> <div class="panel panel-primary"> <div class="panel-heading panel-actif"> <h2 class="panel-title">Informations sur la Demande</h2> </div> <div class="panel-body"> <div class="alert alert-warning" role="alert"> Merci d'argumenter et d'être le plus précis possible dans votre demande. </div> <div class="row vcenter"> <div class="col-md-3 text-align-right">@Html.LabelFor(x => x.REQ_Reference, new { @class = "required" })</div> <div class="col-md-3"> @Html.TextBoxFor(x => x.REQ_Reference, new { @class = "mw-textbox" }) </div> </div> <div class="row"> <div class="col-md-offset-2 col-md-3"> @Html.ValidationMessageFor(x => x.REQ_Reference) </div> </div> <div class="row vcenter"> <div class="col-md-3 text-align-right">@Html.LabelFor(x => x.REQ_ProcessName, new { @class = "required" })</div> <div class="col-md-3"> @Html.TextBoxFor(x => x.REQ_ProcessName, new { @class = "mw-textbox" }) </div>

Page 19: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

</div> <div class="row"> <div class="col-md-offset-2 col-md-3"> @Html.ValidationMessageFor(x => x.REQ_ProcessName) </div> </div> <div class="row vcenter"> <div class="col-md-3 text-align-right">@Html.LabelFor(x => x.REQ_Printed, new { @class = "required" })</div> <div class="col-md-3"> @Html.CheckBoxFor(x => x.REQ_Printed, new { @class = "mw-checkbox" }) </div> </div> <div class="row vcenter"> <div class="col-md-3 text-align-right">@Html.LabelFor(x => x.REQ_Comment, new { @class = "required" })</div> <div class="col-md-offset-3 col-md-8"> @Html.TextAreaFor(x => x.REQ_Comment, new { @class = "mw-textarea", style = "width:100%; height:200px;" }) </div> </div> <div class="row"> <div class="col-md-offset-2 col-md-3"> @Html.ValidationMessageFor(x => x.REQ_Comment) </div> </div> <div class="row"> <div class="offset-md-9 col-md-3"> <input type="submit" id="btnValidation" class="btn btn-primary mw-button principal" style="margin-left: 15px;" value="Envoyer la demande" /> </div> </div> </div> </div> } </section> </div>

Gros problème avec les packages :

Il manquait entity framework dans le webConfig du coup rajout mais un des packages demandait une

autre version (plus améliorée), on a recherché la version de ce package mais on ne pouvait pas mettre

cette version-là du coup on a refait un emptyprojectmvc et on a tout rebasculé sur celui-ci avec du

copier-coller et on a remédié aux erreurs avant pour que tout soit cohérent.

Ensuite, il y a bien l’affichage des messages d’erreurs dans le formulaire lorsque des champs requis ne

sont pas rempli.

Mais une nouvelle erreur est apparue : EntityValidationErrors.

Page 20: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

23/05/2019 :

- Réunion de la direction au Dominion de 9h30-13h

- 10h-10h30 : Petit Ice Breaker avec une pelotte de laine, on se la passait en disant quelle était

notre humeur du jour, et qui était la personne pour nous quand on lui donnait la pelotte de

laine tout en gardant un bout, c’était assez amusant, ludique et ça permet de mieux se

connaître et de retrouver le côté humain de l’entreprise.

- 10h30-13h : Réunion où ils présentaient les rôles, les missions de chacun ainsi que les projets

réalisés / en cours / futurs pour le prochain semestre.

- 13h-15h : Repas au Dominion

- 15h30 : Retour à la caisse d’épargne + Brief d’une petite heure jusqu’à 16h45.

Le brief se fait tous les jeudis toutes les semaines pendant au moins une heure ou une heure et demie.

Cela permet de se retrouver dans les projets en cours et à venir, de faire un tour de table, et de donner

les informations générales, de direction, de service ainsi que les plans d’actions.

Après j’ai enfin réussi à traiter l’erreur entityvalidationerrors.

public ActionResult Create(Request form) { if (!ModelState.IsValid) { return View(form); } else { RequestBLL.Insert(form); return RedirectToAction("Index", "Home"); } }

Il vérifie donc si le formulaire est bien valide s’il ne l’est pas il envoie les messages d’erreurs et s’il l’est

il insère la demande de l’utilisateur dans la base de donnée.

24/05/2019 :

- Connexion à Yammer le réseau de la caisse d’épargne

- Problème rencontré : les messages d’erreurs pour le formulaire apparaissent en même temps

que le formulaire pour pallier à ce problème : Il fallait mettre une autre méthode dans

RequestController

public ActionResult Index() { Request form = new Request(); return View("Create",form);

}

- Un autre lien dans la tuile au lieu de faire le lien jusqu’à la méthode create il fallait faire le lien

vers la méthode index de requestController.

@using Web.Helpers @{ Layout = "~/Views/Shared/_Layout.cshtml"; ViewBag.Title = "Application"; }

Page 21: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

<div class="menu-Tuile"> @Html.Partial("_Tile", new ViewDataDictionary { { "action", "Index" }, { "controller", "Request" }, { "title", "Proposer une requête" }, { "icon", "fab fa-wpforms" } }) </div>

Et quand on clique sans rien remplir voici ce que ça renvoie. Cela met bien les messages d’erreurs

comme quoi les champs doivent être remplis.

Page 22: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

Ensuite, quand on crée une demande voici ce que cela fait, cela renvoie vers la page d’accueil avec la

tuile (il faut aussi mettre un message comme quoi ça a bien été mis dans la base de donnée, que ça a

bien été pris en compte et que ça a bien été envoyé ou juste le renvoyer sur la page d’accueil si on

veut faire le moins de code possible).

Pour vérifier si cela s’est bien mis dans la base de donnée, je vais sur SSMS et effectivement la requête

a bien été enregistrée.

Page 23: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

- CSS et javascript pour faire des messages d’erreurs plus présentable comme pour Cooptation

(l’application modèle qui m’aide un peu)

J’ai mis du CSS dans myway-cen.css et j’ai enlevé ce qu’il y avait dans global.css pour que le css des

messages d’erreurs marche.

J’ai ajouté ceci :

.field-validation-error { margin-top: 0px; } .field-validation-error::before { font-variant: normal; text-transform: none; line-height: 1; speak: none; } .field-validation-error { background-color: #fff4e9; color: #9f4f01; position: relative; top: 1px; bottom: 26px; padding: 5px 15px 3px 10px; font-size: .9em; margin-top: 5px; z-index: 98; min-height: 30px; } .field-validation-error::before { font-size: 1.125em; font-style: normal; font-weight: 400; color: #f89122; content: "\e60e"; padding-right: 10px; padding-left: 0; } .field-validation-error::after { border: solid; border-color: #fff4e9 transparent; border-width: 0 6px 6px 6px; bottom: 100%; content: ""; left: 5%; position: absolute; z-index: 99; } .field-validation-error::before { font-family: icoMyWay; } .input-validation-error, .input-validation-error:focus, .input-validation-error:hover { border: 2px solid #f89122; }

Page 24: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

Et ensuite, pour que mes messages d’erreurs soient bien en parallèle avec mes champs, j’ai dû me

servir de bootstrap (version 4 de bootstrap):

Par exemple :

<div class="row vcenter"> <div class="offset-md-3 col-md-3"> @Html.ValidationMessageFor(x => x.REQ_ProcessName) </div>

Et cela donne ça :

Au cours de cette première semaine de stage, j’ai abordé les compétences :

- Participation à un projet d’évolution d’un SI (solution applicative et d’infrastructure portant

prioritairement sur le domaine de spécialité du candidat) ;

- Productions relatives à la mise en place d’un dispositif de veille technologique et à l’étude

d’une technologie, d’un composant, d’un outil ou d’une méthode ;

- A1.1.1 , Analyse du cahier des charges d'un service à produire ;

- A1.1.3 , Étude des exigences liées à la qualité attendue d'un service ;

- A1.2.2 , Rédaction des spécifications techniques de la solution retenue ;

- A1.2.4 , Détermination des tests nécessaires à la validation d'un service ;

- A1.2.5 , Définition des niveaux d'habilitation associés à un service ;

- A1.4.1 , Participation à un projet ;

- A1.4.2 , Évaluation des indicateurs de suivi d'un projet et justification des écarts ;

- A2.3.1 , Identification, qualification et évaluation d'un problème ;

- A3.2.2 , Remplacement ou mise à jour d'éléments défectueux ou obsolètes ;

- A4.1.1 , Proposition d'une solution applicative ;

- A4.1.2 , Conception ou adaptation de l'interface utilisateur d'une solution applicative ;

- A4.1.3 , Conception ou adaptation d'une base de données ;

- A4.1.4 , Définition des caractéristiques d'une solution applicative ;

- A4.1.6 , Gestion d'environnements de développement et de test ;

Page 25: Compte Rendu Semaine 1 : STAGE BTS SIO1 : …...Compte Rendu Semaine 1 : STAGE BTS SIO1 : Au cours de cette première année de BTS SIO, un stage de 5 semaines en entreprise nous a

- A4.1.7 , Développement, utilisation ou adaptation de composants logiciels ;

- A4.1.8 , Réalisation des tests nécessaires à la validation d'éléments adaptés ou développés ;

- A5.2.1 , Exploitation des référentiels, normes et standards adoptés par le prestataire ;

- A5.2.2 , Veille technologique ;

- A5.2.3 , Repérage des compléments de formation ou d'auto-formation ... ;

- A5.2.4 , Étude d’une technologie, d'un composant, d'un outil ou d'une méthode.