eControl system for a client from the public sector

Client details: [confidential] – Polish subject from the public sector

Our job: to create the following modules: Calendar, Private Messages, data converters (which returned read and edition CSV, XLS, DOC, PDF files) and other minor functionalities.

What we did: the eControl project is based on a large database, which along with external systems gave us access to data on which the app was to operate. The whole structure was based on Microsoft tech: ASP.NET MVC5 and MSSQL database. We also used libraries such as Entity Framework, JQuery, Bootstrap, HTML and CSS. The app seems simple, but as the work went on we discovered many additional functionalities and possibilities it has, which complicated the project.

First we had to model the data in a way it would act in accordance with what the technical documentation read.

Calendar module – we were asked to create full office calendar functionality: adding, editing and removing events and importing events from other parts of the system. We used a jQuery library with Bootstrap add-ons (datetimepicker, colorpicker). The whole module worked based on jQuery plugin: FullCalendar 2.0.

All calendar entries stored in the database were divided to individual, group and common entries. The calendar in the app was divided in the same way. The user who entered the module could choose from different bookmarks: individual reminders, group reminders or all reminders they currently had access to.

Each entry had its beginning & end time, short title, longer description (visible after clicking on the title) and tag (group, individual). It also had the option of importing data from other parts of the system.

Private messages – we were asked to design a module for simple communication between the users. Although it seemed simple in the beginning, we quickly realized the fact our client asked to create groups of users made it more complicated in the process.

“Groups of users” could count any number of users to which one message could be sent. Bearing in mind it had to be intuitive, we designed it in a way a message to the whole group could be sent by choosing the group, not the individuals (e.g. if one wanted to communicate the “HR” group counting 20 people, they could do it with 1 click instead of choosing all 20 of them individually).

This however created a challenge for our programmers: they had to come up with a way to block sending to people who have been chosen already to receive the message. Let’s assume they want to send a message to 3 groups, and in each group there’s the same individual. We wanted the message to be sent to them only once, not 3 times.
We also added a function of deleting messages in bulk (first to the trash folder, then permanently) – however the message was still in the database in case it needed to be restored. We also implemented the functionality of draft messages.

Data converters – that part of the app was working entirely on the server side, so we didn’t use any of the front-end technologies. The whole converters were based on generic classes because of the client’s requirements. We had to design them in a way they would handle any type of data inside the system. It didn’t matter whether it was a list of objects or more complex structures, it had to be converted and returned in 4 different formats. 3 formats (CSV, DOC/DOCX and XLS/XLSX) were editable, one (PDF) was not. Each one was to look as similar to others as possible.

What the client gained: thanks to our collaboration the company got a full set of app modules they required.

What we gained: the client was very pleased with our work. We gained another important experience in a different field and satisfaction from a job well done!