System eKontrola dla Klienta z sektora publicznego

Informacje o Kliencie:
***Informacja poufna***

Nasze zadanie:
Projekt eKontrola opierał się sporej bazie danych, która w połączeniu z zewnętrznymi systemami dawała nam dostęp do danych, na których miała pracować aplikacja.
Cały system został oparty o technologie Microsoftu, czyli ASP.NET MVC5 oraz bazę danych MSSQL.
Dodatkowo w projekcie, zostały wykorzystane biblioteki takie jak Entity Framework, JQuery, Bootstrap oraz w szczególności HTML oraz CSS.

Początkowo należało zająć się modelowaniem danych tak, aby odpowiadały wszystkiemu co zostało opracowane w dokumentacji technicznej przez projektantów.
Naszym zadaniem było stworzenie modułów „Kalendarz”, „Wiadomości prywatne”, konwerterów danych, które zwracały pliki możliwe do odczytu i/lub edycji (CSV, XLS, DOC, PDF) [3] oraz innych, pomniejszych funkcjonalności.

Aplikacja sprawia wrażenie prostej i nieskomplikowanej, jednak po głębszym zapoznaniu się z jej funkcjonalnością użytkownik zdaje sobie sprawę z jej wielozadaniowości i możliwości jakie oferuje.

Realizacja zadania:

Moduł Kalendarza
W module kalendarza naszym zadaniem było stworzenie pełnej funkcjonalności typowego kalendarza biurowego z możliwością dodawania, edycji, usuwania oraz importu wydarzeń z innych części systemu. Wykorzystana została tutaj biblioteka jQuery z dodatkami do Bootstrapa (datetimepicker, colorpicker). Całość została oparta również o plugin do jQuery – FullCalendar w wersji 2.0

Wszystkie wpisy kalendarza przechowywane w bazie były podzielone na wydarzenia indywidualne, grupowe oraz ogólne. Kalendarz na stronie również został podzielony w ten sam sposób. Użytkownik po wejściu w zakładkę z modułem, ma do dyspozycji kolejne trzy zakładki, z różnymi rodzajami kalendarza: indywidualne i grupowe przypomnienia, lub jeden kalendarz ze wszystkimi przypomnieniami, do których dany użytkownik ma aktualnie dostęp.

Do każdego z wydarzeń możemy dodać jego czas rozpoczęcia, zakończenia, krótki tytuł (który będzie pokazywał się na pasku w kalendarzu) dłuższy opis wyświetlający się po kliknięciu w link, kolor wydarzenia oraz jego rodzaj (grupowy, indywidualny). Mamy tutaj również możliwość importu informacji z innej części systemu.

Moduł wiadomości prywatnych
Celem modułu wiadomości była możliwość prostej komunikacji między użytkownikami systemu. Zasadniczo rzecz bardzo prosta, jednak wprowadzony tutaj system grup odbiorców, utrudnia nieco postawione przed nami zadanie.

„Grupy odbiorców” skupiały dowolną ilość użytkowników systemu, do których można było wysłać wiadomość wybierając tylko grupę, a nie pojedynczych użytkowników, co pozwala zaoszczędzić sporo czasu, kiedy musimy wysłać wiadomość np. do 40 osób na raz, wybierając jedną pozycję z menu „Do:” zamiast czterdziestu pojedynczych rekordów.
Postawiło to jednak przed naszymi programistami nie małe wyzwanie, którym było zablokowanie możliwości wysłania i nawet wybrania osób, które zostały już wybrane.
Załóżmy sytuację, gdzie mamy 3 grupy odbiorców i w każdej z nich występuje ta sama osoba.
W momencie, kiedy chcemy wysłać wiadomość – musi ona dotrzeć do każdego odbiorcy tylko raz.

Moduł w końcowej wersji posiada możliwość usuwania dużej ilości wiadomości na raz, najpierw do „Kosza”, a dopiero potem z niego, możemy usunąć wiadomość całkowicie (znika ona z systemu, jednak w razie potrzeby nadal pozostaje w bazie). Jest również zaimplementowany system wiadomości roboczych, gdzie, jeżeli w trakcie edycji wiadomości musimy na chwilę zapisać naszą pracę, wystarczy wybrać odpowiedni przycisk i wiadomość będzie na nas czekać w „Wersjach Roboczych”.

Konwertery Danych
Ta część aplikacji działa w całości po stronie serwera, więc nie wykorzystano tutaj żadnej z technologii Front-Endowych.

Całość konwerterów została oparta o klasy generyczne, ze względu na wymagania klienta, aby były w stanie „przełknąć” każdy z przekazanych im rodzaju danych z wewnątrz programu. Nie było istotne czy była to lista obiektów, czy bardziej złożone struktury – musiało to zostać przekonwertowane i zwrócone w czterech różnych formatach.

Trzy formaty edytowalne – CSV, DOC(X), XLS(X) oraz jeden nieedytowalny – PDF.
Każdy z nich miał wyglądać jak na najbardziej zbliżony do siebie.

Co zyskał klient?
Dzięki naszej współpracy, firma uzyskała kompletny zestaw modułów aplikacji, których wymagał Klient.

Co zyskaliśmy my?
Klient był bardzo zadowolony z naszej współpracy. Kolejne, ważne doświadczenia w innej niż wszystkie dziedzinie pracy oraz satysfakcję z wykonanej przez nas pracy.