Internship 2018

The weekly digest

Week 1

The first days of the internship are approaching, when I enter the office, a desk with computer is at my disposal.

They gave me time to set up my work environment. I install the familiar software and setup a linked email account.


So I installed the following tools:

Slack, Skype, Notepad ++, Wampserver 64, SublimeText3, Web-atrio Mail, VisualStudioCode, PHPStorm ...


Steve Ferrero, one of the three founders of the company gives me a short briefing of the project to do, I have to make a route from a URL to a page that will parse a CSV document and transfer the information from it to the database.


A CSV file by definition is a spreadsheet file containing data on each line separated by a separator character, such as a comma.

An interesting project coming from the fact that I have never worked with symfony before, and never parsed documents in PHP.

The difficulty is slightly above my current skills which is a good thing as it will allow me to learn, apply and refine new skills.

The atmosphere here is pleasant, the work environment is relaxed, I was well received by the company.

My desk is part of an openspace with about 10 Other employees, two of whom, Julien and Antoine, are always there to help me when needed, so I'm never stuck on a problem for too long.

I really enjoyed the strong learning curve of the task at hand !


Week 2

During this week, I realized that the difficulty of the newer project is greater than the last one ; Antoine presents to me a project for an insurance broker, which would allow perpetuation of the data for the insurance "Hueber Assurances"..

The project is to create a platform allowing Call advisors to put a salesperson in touch with a prospect.

Definitions from the web :

The Call Advisor :

The call advisor manages "incoming" calls at a steady pace and is a "telefactor" who does not issue any calls to prospects, unlike the telemarketer or the tele-investigator.

He is not in charge of technical support, which is the responsibility of the "technician hotline" (or "tele-assistant").

Prospect :

A prospect is a potential client for the company. An action of prospection is to contact individuals or legal persons who are not yet clients of the company, but who can become so.

Salesperson :

He regularly meets the company's customers, analyzes their problems and their needs in terms of product, price and services.

He must also prospect: that is, meet and present his products to potential future customers. "Knowing your product is essential, we only sell what we like."

The platform will keep a record of appointments, where as before the realization of the platform, appointments where made on paper and got lost quite often.

The project is divided into several parts that will take care of me in the coming weeks.

    - The existence of several types of administrative users.
    - Contracts, Appointments and Commercial Reports.
    - Appointment Creation Form
    - Managers ability to edit or delete appointments.
    - Creation of appointment reports, each appointment has a report that the salesperson can edit.
    - Sales people can only view and edit their own appointments.
    - Managers can search for appointments by a selected salesperson.

Not having enough information for the types of contracts I leave this aside for the moment and concentrate on the first parts of the project: The creation of types of users and the object rendez-vous. cf: progress of the project.


Week 3

This week during the project I encountered quite a few challenging obstacles, obstacles that pushed me to discover the different functionalities of EasyAdminBundle, Twig of symfony, especially Twig in more detail.


In order to be able to display the name of the call advisor on their screen in the form when they create a new appointment, you must link the "CallAdviser" object (the information of the call advisor) to that of the "Appointment " form.

Two users can see and create appointments; the call advisor and the Manager (admin)

We had to override the methods (functions) of the controller (see MVC Template ) to define a new link when creating the form so that the field in which appears the caller is filled and not editable as well as the merchant associated with it.

In the use case where the production manager would create the appointment, he should have the ability to choose from a list of advisors.

A difficulty appears when you have to change the behavior of this field according to the role of the user who creates the appointment.


There are three facets to consider :

    The functional aspect: The call advisor must be added or modified inside the appointment field to the current user if he is the one creating the appointement.
    The visual aspect: The admin must be able to choose a call advisor who on his page must not be able to change the field.
    The security aspect: Prevent any change of the field from the address bar if the user doesn't have the adminisrative role.

Week 4

This week was a busy week for everyone, the offices are full so I spend more time to solve some bugs that take a little time to solve, without disturbing my entourage.

I added a new table in the database corresponding to the civility entry (M, Ms ..) in the appointment creation form.


This week Web-Atrio used a caterer for a very festive meal! Several new recruits and trainees presented themselves before settling down to eat a very nice lasagna.


To create the salespersons Appointment Report, I looked for the function that was responsible for sending the form information to the database, so I could use it to automatically create a report on submission of a new appointement, all the salesperson has to do is add a comment to the report.

The salesperson can now view his appointements and add comments to the report of that appointement.


Week 5

This week I fixed some "bugs" that have accumulated along the project such as:

    The creation of a "civility" entity that I associated with the forms with doctrine and made sure to have a dropdown to selct by entity (in the configuration of Easy Admin).
    Limited the amount of characters you can place in the postal code field
    Hiding the GPS coordinates field as it is to be filled automatically
    When an appointment is created, a report is created at the same time

A restaurant outing was held Thursday, ending in fun bowling evening


At the end of the week a special weekend was organized by Web-Atrio at Domaine de Bagard 15 minutes walk from Sauve, hiking, swimming pool, meals prepared by a caterer, gym and two speakers. Everything to be in a good mood on a Monday morning ^^.