Aplicație Managementul resurselor umane în cadru S.C. AXA ASSISTENCE S.R.L. Profesor coordonator: Cornelia Botezatu Absolvent: Bogdan Niculae Cuprins… [303360]
[anonimizat] S.C. AXA ASSISTENCE S.R.L.
Profesor coordonator:
Cornelia Botezatu
Absolvent: [anonimizat] – S.R.L.
Studiul sistemului de conducere
Studiul sistemului informațional existent în managementul resurselor umane
Direcții de prefecționare ce nu există? Ce ar trebui prelucrat?
TEHNOLOGII / METODE UTILIZATE
M.V.C. (Model – View – Controller)
AngularJS
PHP
HTML
CSS
JavaScript
jQuery
Bootstrap
MySQL
ANALIZA ȘI PROIECTAREA APLICAȚIEI
Modulul Login
Modulul Profil Utilizator
Modulul Projects
Modulul Tasks
Modulul Messages
Modulul Settings
Modulul News
CONCLUZII
BIBLIOGRAFIE
Cap. 1. Prezentarea generală a S.C. Axa Assistance S.R.L.
1.1. Scurt istoric a S.C. Axa Assistance S.R.L.
Societatea comercială S.C. Axa Assistance – S.R.L. și-a început activitatea la data de 28.10.2010 [anonimizat], și având forma de societate cu răspundere limitată. Societatea comercială își desfășoară activitatea în conformitate cu legile și reglementările române în vigoare.
S.C. Axa Assistance – S.R.L. a fost înființată din dorința asociatului său unic de a obține profit ca urmare a dezvoltării unei afaceri pe cont propriu și de a satisface la un nivel cât mai ridicat cerințele clienților de produse ce aparțin domeniului IT. Începând cu anul 2012, firma s-a [anonimizat] +136.182 RON. La finalul anului 2013, societatea comercială a înregistrat un profit de +104.519 RON. Anul 2014 a înregistrat un profit în evidentă scădere în valoare de +17.707 RON. În anul 2015, societatea comercială a înregistrat o pierdere de -40.444 RON. Această continuă scădere se datorează ascensiunii uimitoare a tabletelor dar și a telefoanelor mobile care au zguduit piața calculatoarelor în ultimii ani. [anonimizat].
1.2. Informații generale a S.C. Axa Assistance S.R.L.
[anonimizat] 6, Str. [anonimizat]. 9, Bl. D19, Sc. 5, Et. 2, Ap. 46. [anonimizat]-line cu denumirea “Moka-PC”. [anonimizat], Sector 6, Nr. 84.
Capitalul social inițial al societății este de 200 [anonimizat] 20 de părți sociale, a câte 10 [anonimizat]. Durata de funcționare a societății comerciale este pe o perioadă nelimitată putând fi desființată oricând prin hotărârea asociatului unic.
Domeniul principal de activitate al întreprinderii S.C. Axa Assistance – S.R.L. [anonimizat] 465. Activitatea principală a [anonimizat]-ului, cod CAEN 4651.
[anonimizat], și anume: Acer, Asus, DELL, [anonimizat]lett – Packard, LG, Philips.. Țările din care sunt importate produsele sunt Germania, Austria și Suedia. Clienții societății comerciale sunt atât persoane fizice, cât și juridice cu vârste cuprinse între 18 – 70 ani. Partenerii firmei sunt Microsoft Registered Refurbisher și CEB (Centrul de Evenimente București).
Principalii concurenți ai societății comerciale sunt acele firme care au domeniul de activitate asemănător (comerțul cu produse IT second hand). În principal, aceste firme concurente au sediul central (punctul de lucru) în București, unde, de altfel, își desfășoară activitatea și S.C. Axa Assistance – S.R.L. În următorul tabel sunt prezentate principalele informații referitoare la cei mai importanți concurenți ai S.C. Axa Assistance – S.R.L.
Principalii concurenți ai S.C. Axa Assistance – S.R.L.
Tabel nr. 1.2.1
S.C. Axa Assistance – S.R.L. oferă o gamă variată de produse second hand, și anume: calculatoare, monitoare, laptop-uri și tablete, imprimante, componente calculator (hard disk, memorii, plăci de bază, plăci de sunet, plăci video, procesoare, surse/carcase, unități optice, coolere procesor, TV tunere, placă de bază cu procesor), periferice și accesorii (tastaturi, mouse, boxe, camere web, memorii stick USB, conectica PC), electronice TV, televizoare, sisteme audio, media player, retelistică (switch, modem, router, plăci de rețea, video splitter, accesorii rețea), servere Workstation, software, produse HAMA resigilate, mașină de numărat bani.
De asemenea, S.C. Axa Assistance – S.R.L. pune la dispoziția clientului posibilitatea de a închiria pe bază de contract pentru diverse ocazii (simpozioane, întâlniri) tehnica necesară de calcul care include calculatoare și monitoare cu tastatură și mouse, laptop-uri, video-proiector, retelistică și echipamente audio de dimensiuni medii. Prețul închirierii nu este unul standard, ci poate fi negociat în funcție de cererea și necesitățile clientului. În cazul în care un client dorește o colaborare cu societatea comercială pentru achiziționarea unor cantități mai mari și/sau condiții speciale de plată și livrare, acesta poate trimite un e-mail către firmă pentru a aduce la cunoștință intențiile împreună cu datele de identificare ale entității pe care o reprezintă.
Cele mai vândute produse din anul 2015 au fost următoarele: mouse, tastatură, memorie pentru laptop, mouse optic, unitate centrală optică, boxă Bluetooth rezistentă la apă, monitoare, imprimantă, laptop, mașină de numărat bani.
Publicitatea societății comerciale se face prin intermediul mediului on-line (site, pagină de Facebook, Twitter, Google+), dar și prin intermediul flyer-elor. Un alt element important îl reprezintă și sloganul societății comerciale, și anume: “Calculatoare cu aromă gratuită.”
1.3. Structura organizatorică a S.C. Axa Assistance – S.R.L.
La nivelul întreprinderii, structura organizatorică se regăsește sub forma organizării procesuale și organizării structurale. Organizarea procesuală este reprezentată de funcțiunile financiar-contabilă, comercială și de personal. La nivelul acestei organizări sunt delimitate activitățile ce trebuie a fi realizate de către fiecare salariat în parte. Organizarea structurală este cuprinsă în documentele de formalizare a structurii organizatorice specifice unei întreprinderi, și anume: Regulamentul de Organizare și Funcționare, fișele de post ale fiecărui angajat și organigrama.
S.C. Axa Assistance – S.R.L. dispune în prezent de 32 angajați cu următoarele funcții. Organigrama firmei este prezentată în continuare:
Figura 1.3: Organigrama societății comerciale S.C. Axa Assistance – S.R.L.
Organigrama firmei S.C. Axa Assistance – S.R.L. este una de tip piramidală, specifică structurii organizatorice ierarhic-funcționale. Aceasta evidențiază posturile firmei și legăturile organizatorice ce există între angajații acesteia.
S.C. Axa Assistance S.R.L. are în prezent 32 de salariați a căror atribuții, competențe și responsabilități se regăsesc în cadrul fișelor de post elaborate după modelul clasic. În tabelul de mai jos este prezentată încadrarea cu personal a societății comerciale S.C. Axa Assistance – S.R.L. pe ultimii trei ani, si anume 2013, 2014 și 2015.
Încadrarea cu personal a societății comerciale S.C. Axa Assistance – S.R.L. în perioada 2013-2015
Tabel nr. 1.3.1
1.4 Studiul sistemului de conducere
Compania este structurată pe un număr important de departamente comerciale: Distribution, International și Purchase și, de asemenea, pe o serie completa de departamente necomerciale: Public Relations, Logistics, Warehousing, Tehnical, RMA, Networking & Comunications, Software, Financial, Accounting, Human Resources, Legal, iar toate acestea au ca punct de sprijin departamentul Administrativ.
Din totalul angajatilor, un procent important il reprezinta cei din divizia Retail, datorita necesarului mare de resurse umane in acest domeniu.
Divizia Distribution coordoneaza toate activitatile de distributie ale companiei pe teritoriul Romaniei.
Divizia International coordoneaza activitatile companiei din afara tarii, și anume achiziționarea produselor din Germania și Austria.
Divizia Purchase este formata dintr-o echipa puternica, omogena, avand un suport important din partea departamentelor de Marketing, RMA si Import Logistics.
Divizia Administration asigura baza tuturor activitatilor companiei: coordonarea bugetului, ajustarile care trebuiesc facute, utilitatile, intretinerea si furnizarea tuturor facilitatilor de care este nevoie pentru buna functionare a companiei.
Prin prisma modelului business-ului complex al organizației, aceste divizii reprezinta o cale eficienta de asigura atingerea scopurilor si obiectivelor companiei.
Componenta sistemului de conducere:
A. Manager
Conditii de ocupare:
– Obligatoriu studii superioare de specialitate
– Experienta de minim 3 ani intr-o functie de conducere
– Permis de conducere
Descrierea activitatii: Coordoneaza si urmaresc buna functionare a departamentului pe care il reprezinta, Fiecare divizie isi creeaza propria strategie. De fapt toate aceste strategii si tactici sunt coordonate la nivelul managementului companiei si implementarea lor continua este monitorizată tot de catre Managerii.
B. Manager departament
Conditii de ocupare:
– Studii medii sau superioare
– Stagiul militar satisfacut
– Experienta in activitatea specifica minim 1 an
Descrierea activitatii: Executa ordinele, si duce la indeplinire tacticile si strategiile propuse de Manager, urmareste activitatea subordonatilor (ex. In departamentul Tehnic seful de departament are obligatia sa cunoasca si sa urmareasca permanent activitatea de asamblare a sistemelor de calcul, fiind pus la curent de catre seful de echipa, care coordoneaza echipa de tehniciieni asamblare in realizarea task-urilor ivite.)
1.5 Studiul sistemului informațional existent în managementul resurselor umane
Figura 1.5.1 Întocmirea statului de presonal
Întocmirea statului de personal se face în două exemplare. Documentele necesare sunt documentele privind drepturi salariale, alte drepturi și vechimea în muncă a fiecărui angajat. Termenul este lunar. Un exemplar se depune la Serviciul Financiar – Contabilitate pentru întocmirea statelor de plată a salariațiilor organizației.
Figura 1.5.2 Întocmirea contractului invidividual de muncă
Contractele individuale de muncă se întocmesc în dublu exemplar. Documentele necesare sunt actele personale ale anagajatului, privind identitatea, studiile și vechimea în câmpul muncii. Ele se întocmesc doar la angajarea de personal. Un exemplar se înmanează angajatului iar celălalt se păstrează la dosarul personal.
Figura 1.5.3 Completarea carnetelor de muncă
Completarea carnetelor de muncă se efectuează ori de cate ori este nevoie, se urmărește completarea lor curentă și se păstreaza în cadrul departementului de resurse-umane. Documentele necesare sunt deciziile privind modifcarea drepturilor salariale. Se aplică ori de câte ori intervine modifcări asuprea drepturilor salariale și vechime în muncă.
Figura 1.5.4 Întocmirea documentelor legale pentru încetarea activitații salariațiilor
Întocmirea documentelor legale pentru încetarea activității salariațiilor se face cu ocazia plecării, pensionării sau decesul angajatului. Documentele necesare sunt decizia de încetare activitate și nota de lichidare. Vor fi întocmite în 3 exemplare, un exemplar se înmânează angajatului iar celelalte două exemplare se păstrează în cadrul compartimentului de resurse-umane la dosarul personal care ramăne în cadrul organizației și dosarul în care se păstrează în ordine cronologică evidența acestor documente.
Figura 1.5.5 Registrul general de evidență a salariațiilor
Registrul general de evidență a salariațiilor se întocmesc ori de câte ori intervin modifcări și se păstreaza în cadrul departementului de resurse-umane. Documentele necesare sunt deciziile privind modifcarea datelor personale, majorare salarii, acordare sau retragere sporuri, încetarea activității.
Figura 1.5.6 Deciziile emise de Directorul General
Deciziile emise de Directorul General se întocmesc în trei exemplare ori de câte ori intervin modifcări. Unul se înmânează anagajatului iar celelalte două se păstreaza în cadrul departementului de resurse-umane. Documentele necesare sunt deciziile privind numirea in functii, indexare salarii, acordare sau retragere sporuri, încetarea activității și constituire diverselor comisii din organizatie.
Cap. 2. Tehnologii / Metode utilizate
2.1 M.V.C. (Model – View – Controller)
Vom începe cu a vorbi despre “M.V.C.” deoarece pe baza acestui design pattern este construită întreaga noastră aplicație și tot codul este structurat în așa fel încât metodologia impusă de folosirea acestui pattern să fie respectată.
În dezvoltarea aplicațiilor software, termenul “design pattern” este folosit atunci când pentru o problemă comună, ce apare în mod frecvent, se folosește o soluție generală și repetabilă. Un design pattern nu este o soluție terminată pe care putem să o preluăm pur și simplu în codul nostru ci ne oferă o descriere sau un template prin care noi să întelegem cum se rezolvă acea problemă în cel mai bun și eficient mod posibil. [1]
Model View Controller sau MVC cum este cunoscut în mod normal, este un design pattern orientat către dezvoltarea de aplicații web. O aplicație ce implementează modelul MVC este alcătuită din următoarele componente. [2]
• Model – conține datele cu care aplicația lucrează, aceste date sunt stocate în obiecte (în AngularJs având denumirea de $scope).
• View – Este interfața prin care utilizatorului îi este prezentată informația și cu care acesta interacționează. Sumar spus, view-ul reprezintă toate elementele vizuale la care un utilizator al aplicației are acces.
• Controller – Face legătura dintre model și view și oferă aplicației funcționalitate. Practic el se ocupă de logica aplicației și prelucrarea datelor primite din back-end în așa fel încât view-ul să fie populat cu toate informațiile necesare.
MVC este foarte popular deoarece izolează logica aplicației de ceea ce utilizatorul vede, de asemenea ajută la structurarea întregii aplicații. Controller-ul primește request-uri iar acesta lucrează împreună cu datele din model astfel încât în view-ul utilizatorului să îi fie prezentate datele necesare. MVC poate fi reprezentat grafic ca în imaginea de mai jos.
Figura 2. MVC Design Pattern
2.2 AngularJs
AngularJs a fost creat pentru a fi un framework structural de javascript folosit pentru construirea de aplicații web dinamice. Framework-ul permite folosirea de cod HTML pentru definirea template-urilor și extinde chiar sintaxa HTML-ului pentru a putea exprima componente definite de aplicație. [3]
Deși creat de Google, AngularJS este open-source, așadar o întreagă comunitate de persoane și companii abordează multe dintre provocările întâlnite în dezvoltarea de aplicații one-page. Aceasta își propune să simplifice atât dezvoltarea cât și testarea acestor aplicații prin a crea un framework client-side pe baza arhitecturilor model-view-controller (MVC) și model-view-view-model (MVVM), împreună cu componente frecvent utilizate în aplicațiile web înalt dezvoltate. [4]
Modul prin care AngularJs leagă datele și injectează dependențele în aplicație scade semnificativ mărimea codului scris de către programatori.
Toate aceste lucruri se produc în cadrul browser-ului, făcând acest framework o alegere ideală pentru oricare tehnologie aleasă pentru partea de server.
Angular oferă o soluție completă pentru partea de client-side a aplicației web. Framework-ul se ocupă de tot ceea ce înseamnă manipularea DOM-ului, Ajax și funcționalitate punându-le pe toate într-o structură bine definită.
Una dintre cele mai importante elemente ale Angular-ului sunt directivele. Aceste directive sunt folosite pentru a extinde funcționalitatea elementelor HTML.
Practic, programatorul își poate defini propriile elemente de html pe care apoi să le refolosească.
Directivele sunt definite folosind funcția “directive”. În timp-ul inițializării (bootstrap) framework-ul găsește elementele predefinite și folosind funcția compile() procesează și leagă elementele de DOM de datele din scope-ul directivei.
2.3 PHP
PHP, acronim folosit pentru „PHP: Hipertext Preprocessor” (1997), folosit pentru crearea de script-uri, si având numele originar de Personal Home Page. Limbajul este open source și este în prezent unul dintre limbajele server-side cele mai folosite și cunoscute de către programatori. [5]
Codul PHP nu este executat pe device-ul de pe care s-a făcut request-ul ci de pe server-ul unde aplicația este găzduită. În aplicația noastră PHP este folosit pentru a produce servicii REST prin interogarea bazei de date.
Practic PHP execută query-uri pentru a obține informații din baza de date aceste informații sunt apoi convertite în format JSON și expuse ca și servicii REST .
Aceste servicii sunt apoi apelate prin intermediul AJAX și folosite apoi de către Angular.
De asemenea, PHP-ul a fost folosit în cadrul aplicației pentru managementul sesiunii. Acest lucru înseamnă că odată ce utilizatorul s-a logat în aplicație, se va crea o sesiune în care se va stoca id-ul utilizatorului, nivelul de acces pe care acesta îl are la nivel de aplicație și durata de viață a sesiunii.
În funcție de nivelul de acces pe care un utilizator îl are, acesta poate să efectueze diferite operații în cadrul aplicației. De exemplu, doar un utilizator ce este setat ca și administrator va putea crea un proiect sau un utilizator nou.
După o perioadă predefinită de timp, sesiunea va expira și utilizatorul va fi redirecționat automat înapoi către pagina de login.
2.4 HTML
HyperText Markup Language sau cum este în mod general cunoscut – HTML, este limbajul de marcare standard folosit pentru crearea paginilor web. [6]
Un limbaj de tip mark-up este un limbaj ce formatează conținutul text de pe o pagină web. Acesta combină informațiile extra despre acel text cu textul propriu-zis. Informațiile extra (de exemplu despre alcătuirea sau prezentarea textului) sunt exprimate folosind așa zișii marcatori.
O caracteristică populară a multor limbaje de tip mark-up este combinarea textului cu instrucțiunile de marcare în același fișier.
Exemple de limbaje de marcare: XHTML, HTML, XML și altele.
Codul HTML conține tag-uri și etichete speciale pentru a cosmetiza și stiliza pagina web acest lucru conducând la faptul că limbajul este cunoscut ca unul de marcare și nu de programare. Această răspundere a fost atribuită CSS-ului atunci când acesta a apărut.
Înainte de apariția lui CSS, codul HTML conținea tag-uri și etichete pentru a stiliza parțial pagina web, ceea ce l-a făcut mai mult un limbaj de marcare decât un limbaj de programare.
Browserele interpretează codul HTML, bineînțeles că neafișându-l în pagină, și afișează conținutul rezultat în pagina web în formatul proprietăților de stil din CSS și modificările pe care le poate aduce codul de JavaScript.
HTML a început să fie folosit recent și pentru crearea de aplicații mobile de tip HYBRID.
2.5 CSS
Cascading Style Sheets (CSS) este un limbaj de stilizare și formatare a layout-urilor scrise cu ajutorul limbajelor de tip markup (HTML). [7]
Împreună cu HTML și JavaScript, CSS este o tehnologie esențială folosită de cele mai multe website-uri pentru a crea pagini web care implică în mod vizual utilizatorul, interfețe de utilizator pentru aplicații web și pentru multe aplicații mobile.
CSS-ul are ca și rol principal separarea conținutului documentului de către modul în care acesta este prezentat și afișat (culori, font, așezare).
Acest lucru structurează eficent layout-urile, oferă flexibilitate, și ne ajută să obținem un design unitar pentru paginile aplicației fără să fie nevoie să rescriem mereu aceleași bucăți din cod.
CSS ne permite, de asemenea, să afișăm paginile în funcție de device-ul de pe care acestea sunt încărcate sau în funcție de rezoluția ecranului. De asemenea, aplicația poate fi construită într-o asemenea manieră încât utilizatorii pot opta între diferite teme de stil.
Design-ul grafic al unui document sau chiar a sute de documente poate fi schimbat rapid, prin editarea doar a câteva linii de cod fără să fie nevoie ca programatorul să modifice codul de tip mark-up al fiecărui document în parte.
Specificațiile CSS descriu o schemă ce prioritizează și creează o ierarhie în modul în care stilurile sunt aplicate în cazul în care același element din pagină este stilizat de mai multe “reguli” CSS.
În așa numita cascadă, prioritățile sunt calculate și asignate într-o asemenea manieră încât rezultatele să poată fi anticipate.
O altă proprietate cheie pe care CSS o are este moștenirea. Această funcție face ca atunci când sunt aplicate anumite caracteristici unui element din pagină aceste caracteristici să fie moștenite și de descendenții acestuia.
O parte dintre proprietățile ce pot fi transmise descendenților sunt dimensiunea dintre caractere, culoarea și stilul textului, spațiul dintre rânduri, stilul de afișare al listelor, alinierea textului, vizibilitatea și spațiul între cuvinte.
O interfață prietenoasă și intuitivă este nelipsită de animații și tranziții. Prin intermediul CSS-ului toate aceste animații pot fi create utilizând resurse minime astfel încât aplicația nu va rula sacadat sau necorespunzător.
Tranzițiile pot fi aplicate, de asemenea, și atunci când cu ajutorul sistemului de routing din AngularJs template-urile se schimbă, conținutul HTML fiind schimbat cu unul diferit.
2.6 Javascript
Javascript este un limbaj de scripting cel mai adesea folosit în dezvoltarea web pe partea de client-side. Numele său real este ECMAScript, dar cu toate acestea cel mai frecvent îl numim Javascript. [8]
Javascript este unul din cele 3 limbaje ce stau la baza “World Wide Web” și anume HTML, CSS și JAVASCRIPT, acesta atribuie paginilor și aplicațiilor web funcționalitate și dinamicitate.
Pe baza Javascript-ului au fost dezvoltate ulterior o multitudine de framework-uri menite să diminueze cantitatea de cod și să ofere funcții predefinite dezvoltatorilor.
Ca și la CSS, este recomandat să salvăm codul de JavaScript într-un fișier extern cu extensia .js și apoi inclus în fișierul HTML folosind tagul <script></script>. De obicei, fișierele de Javascript se plasează la sfârșitul paginii astfel încât să scadă timpul necesar de încărcare a părții vizuale și să ofere o experiență mai optimă utilizatorului.
O concepție greșită care este des întâlnită este că JavaScript este similiar sau în strânsă legătură cu limbajul Java. Este adevărat că ambele au sintaxa specifică limbajului C (fiind urmași imediați ai acestuia) dar în realitate diferențele dintre cele două limbaje sunt mai evidente decât asemănările lor. Java are o scriere statică, în timp ce la JavaScript este dinamică. Java este încărcat din cod compilat din biți, pe când JavaScript este încărcat ca un cod sursă ce poate fi citit și înțeles. Obiectele din Java sunt bazate pe clase, în timp ce cele din JavaScript se bazează pe prototipuri. În final, Java nu avea suport pentru programarea funcțională înainte de versiunea Java 8, în timp ce JavaScript a avut încă de la început, fiind influențat de limbajul de programare Scheme.
2.7 jQuery
jQuery este o bibliotecă de JavaScript concepută să simplifice partea de client-side scripting a unei aplicații web. jQuery este cea mai folosită bibliotecă de JavaScript în prezent cu o rată de folosință de 65% în top 10 milioane al aplicațiilor cele mai accesate de pe internet. [9]
jQuery poate fi folosit gratuit, este open-source și este licențiat de către MIT.
Sintaxa jQuery este concepută într-o asemenea manieră încât manipularea elementelor din DOM să fie cât mai facilă, crearea de animații, manevrarea evenimentelor și dezvoltarea de aplicații prin intermediul AJAX devenind mult mai ușoară.
jQuery permite și adăugarea de elemente noi în structura paginii sau ștergerea unora deja existente.
2.8 Bootstrap
Bootstrap este un web framework gratis și open-source licențiat de către Twitter cu ajutorul căruia se pot stiliza pagini și aplicații web. Conține șabloane de design construite în HTML și CSS pentru tipografie, formulare, butoane, meniuri de navigare și alte componente de interfață.
Sistemul de grid-uri al lui Bootstrap este responsive și cele 12 coloane se vor aranja automat în funcție de dimensiunea ecranului. Template-ul paginii este rearanjat pentru a respecta conceptul de responsive. Practic Bootstrap face creare de aplicații responsive mult mai ușoară, dezvoltatorii nefiind nevoiți să scrie cantități mari de cod pentru a adapta aplicația la diversele dispozitive de pe care clienții ar putea-o accesa.
Bootstrap este compatibil cu toate browser-ele principale, tot ceea ce trebuie făcut pentru al folosi fiind adăugarea unei căi către un fișier extern. [10]
2.9 MySQL
MySQL este un sistem de gestionare a bazelor de date relaționale, sistemul este open-source și foarte des dezvoltatorii aleg să îl folosească alături de PHP, totuși acesta merge folosit și alături de alte limbaje de programare server-side. [11]
Chiar începând cu anul 1995, când a fost lansat, MySql a început să crească în popularitate, devenind în scurt timp alegerea multor dezvoltatori. Abrevierea MySql are în construcție două componente. My provine din numele fiicei co-fondatorului Michael Widenius, iar SQL sunt inițialele din limba engleză – Structured Query Language.
MySQL este construit într-o asemenea manieră încât datele sunt salvate în tabele structurate pe linii și coloane pentru ca informația să fie bine organizată, ușor de găsit și de modificat. MySQL este un server de baze de date SQL ce poate fi accesat de mai mulți utilzatori simultan și este multi-thread (mai multe fire de execuție).
MySQL poate rula și pe platforme de cloud computing, un exemplu relevant ar fi platforma celor de la Amazon, denumită Amazon EC2.
MySQL utilizează limbajul de programare SQL, acest limbaj se ocupă atât cu interogări, inserări, ștergeri și modificări a informațiilor dintr-o bază de date, cât și cu gestionarea accesului la o bază de date.
În proiectul meu, interfața grafică a gestiunii bazei de date este cea oferită de phpMyAdmin.
PhpMyAdmin este o soluție gratuită completă și vine odată cu instalarea programului XAMPP. [12]
XAMPP este o platformă open source gratuită care oferă o soluție de server web. Aplicația este dezvoltată sub licența Apache Friends. Aceasta conține pe lângă baza de date și Apache HTTP Server. XAMPP vine cu o versiune de Apache lightweight care face foarte ușor pentru dezvoltatori să creeze un server web local.
Cap. 3. Analiza și proiectarea aplicației
În acest capitol voi prezenta modul în care aplicația creată soluționează problema tratată și anume managementul resurselor umane într-o companie.
3.1 Modulul Login
Prima funcționalitate despre care doresc să vorbesc este login-ul aplicației. Acest modul este responsabil nu doar cu autentificarea utilizatorului dar are și un alt scop vital pentru bunul demers al celorlalte funcționalități ale aplicației, și anume acesta creează o sesiune criptată la care utilizatorul nu are acces și care conține date despre nivelul de acces al angajatului logat.
Figura 3.1 Fereastra de login
Odată ce utilizatorul completează datele de login și apasă pe butonul de login acestea sunt transmise din scope-ul de AngularJs prin intermediul unui call Ajax către serviciul de PHP.
PHP-ul criptează datele de login primite și le compară cu cele salvate în baza de date.
Datele salvate în baza de date sunt criptate cu un algoritm extrem de puternic numit Blow-Fish. Blow-Fish criptează parola într-o asemenea manieră încât orice încercare de a decripta parola, folosind chiar un super computer, ar dura sute sau chiar mii de ani. [17]
Fără un sistem de hashing al parolei, orice parolă stocată în baza de date a aplicației este descifrabilă și poate fi folosită pentru a căpăta acces în sistem în cazul în care cineva a reușit să compromită baza de date și să salveze parolele.
Să luăm ca exemplu parola “test123”, folosind algoritmul nostru de criptare aceasta va fi salvată în baza de date în felul următor:
Figura 3.2 Parola criptată
Dacă în loc de test123 am fi avut ca și parolă test1234, parola generată ar fi fost complet alta.
Codul folosit în aplicație pentru a cripta parola este:
$options = array('cost' => 12);
$new_crypt_Password = password_hash($newPassword, PASSWORD_BCRYPT, $options);
Câmpul cost din variabila $options reprezintă timpul ales în care algoritmul să cripteze parola. Timpul necesar criptării parolei este direct proporțional cu complexitatea acesteia.
3.2 Modulul Profil Utilizator
Primul lucru pe care utilizatorul îl vede atunci când se loghează este profilul lui profesional. Această fereastră funcționează pe post de homepage a aplicației.
Datele despre utilizator sunt aduse din baza de date de către PHP și sunt puse la dispoziția Angular-ului ca serviciu REST sub structura de tip obiect JSON.
Figura 3.3 Fereastra Profil Utilizator
Datele aduse din PHP prin call-ul de AJAX sunt apoi atribuite unui scope din Angular. Scope-ul definit anterior este folosit apoi ca să populăm datele din view. În view, datele din scope sunt accesate folosind ng-model.
Dacă în Angular am definit un scope pentru user și l-am denumit $scope.userData, în view, email-ul va fi afișat în felul următor:
<h3 class="col-xs-12 col-md-6 col-lg-5 user_values">Email: <a ng-href="mailto:{{userData.EMAIL}}" target="_blank" class="user_values_span">{{userData.EMAIL}}</a></h3>
Denumirea subvariabilelor din obiectul user au numele în funcție de mod-ul în care au fost definit atunci când în PHP a fost executat query-ul de SQL.
Mai jos putem observa call-ul de AJAX din Angular și modul în care este definit obiectul nostru user:
Figura 3.4 Codul pentru încărcarea unui user
În partea de jos a ferestrei se poate observa un buton denumit Skills. Apăsând pe acest buton se va expanda o listă ce conține skill-urile pe care utilizatorul le cunoaște.
Apăsând pe un skill se poate edita nivelul acestuia sau se poate șterge. De asemenea, căutând în lista de skill-uri, putem adăuga un nou skill în listă dând click pe acesta.
Figura 3.5 Sub-fereastră adăugare skill
De asemenea, un alt modul important al aplicației și legat de profilul utilizatorului este modulul de filtrare și căutare al angajaților.
Acest modul reprezintă o funcționalitate importantă a aplicației deoarece atunci când Team Lead-ul primește specificații pentru un proiect nou și este nevoit să întemeieze o echipă el poate accesa portalul și filtra angajații în funcție de skill-urile pe care aceștia le știu.
Această fereastră este foarte intuitivă și practică iar utilizatorul trebuie să caute doar skill-urile necesare, să dea click pe ele iar aplicația va returna instantaneu utilizatorii care conțin acea combinație de skill-uri.
Utilizatorii sunt afișați dinamic folosind ng-repeat, practic am definit un template pentru acel box în care fiecare angajat este reprezentat și iterând vectorul ce conține informații despre angajați, creăm pentru fiecare câte un Info Box.
Lista de angajați este filtrată folosind un filtru custom. AngularJs are o serie de filtre predefinite, totuși aici a fost necesară crearea unuia care să se potrivească situației.
Figura 3.6 Filtru custom AngularJs
Ca să creăm filtru a trebuit să folosesc 2 for-uri unul cu care parcurg skill-urile pe care le știe angajatul și unul cu care compar skill-ul respectiv cu vector-ul de skill-uri pe care ar trebui să le știe.
Filtrul primește automat ca și parametru vector-ul de utilizatori și returnează un nou vector cu angajații filtrați conform specificațiilor necesare.
3.3 Modulul Projects
Modulul pentru proiecte are 2 funcționalități principale și anume crearea de proiecte noi și vizualizarea și editarea celor deja existente.
Pentru a putea crea și modifica proiecte utilizatorul trebuie să fie trecut ca și administrator în sistem. Un utilizator normal poate vedea doar proiectele pe care acesta este asignat.
Figura 3.7 Fereastra creare proiect
Fiecare proiect are nevoie de un Team Lead pe lângă toate celelalte date necesare pentru crearea proiectului.
De asemenea, tot în această fereastră se definește echipa proiectului. Echipa poate fi definită în momentul în care proiectul este creat sau ulterior în momentul în care un Team Lead vizualizează profilul unui utilizator poate decide să îl și asigneze pe un proiect.
Înainte ca proiectul să fie salvat în baza de date acesta este validat de către sistem în cazul în care informațiile sunt completate necorespunzător sau Team Leader-ul a uitat să completeze ceva acesta va fi alertat de către sistem.
Țin să menționez că aplicația are 2 moduri de alertarea a utilizatorilor.Primul mod în care aceștia pot fi notificați este folosind librăria de Javascript denumită SweetAlert. Aceasta este folosită în cazul anunțurilor mai importante deoarece va apărea ca și popup.
A doua metodă este folosind un plugin creat special pentru aplicație în care în partea de sus a ferestrei apare un container verde sau roșu, în funcție de tipul mesajului, cu notificarea propriu-zisă.
Figura 3.8 Folosirea unui sweet-alert
Figura 3.9 Folosirea plugin-ului de alertare
Proiectele create pot fi vizualizate și modificate ori din fereastra My Projects sau din fereastra Projects. Această funcție este disponibilă doar pentru TeamLead.
3.4 Modulul Tasks
Task-urile pot fi create și asignate celorlalți doar de către utilizatorii ce sunt asignați în sistem ca Team Leader. Utilizatorul căruia i-au fost asignate task-urile le poate modifica statusul și adăuga comentarii în istoricul task-ului.
Fiecare task creat are setat un nivel de prioritate (low, medium, high, critical) astfel încât utilzatorul să creeze o ierarhie în ordinea rezolvării task-urilor.
Utilizatorii sunt alertați în mod automat printr-un mesaj din partea sistemului atunci când un task le-a fost asignat lor.
Figura 3.10 Crearea unui task
Fiecare task creat trebuie să aibe completat o denumire, un timp estimativ de finalizare, o dată de început, utilizatorul căruia îi este repartizat task-ul și opțional comentarii referitoare la modul de execuție a task-ului.
Fiecare utilizator poate vizualiza task-urile asignate lui selectând opțiunea My Tasks din meniu.
Acestea vor fi afișate angajatului în ordine cronologică. Cele ce au statusul opened vor avea culoarea albastră, cele finalizate vor avea culoarea verde.
Figura 3.11 Meniul Aplicației
3.5 Modulul Messages
Acest modul a fost creat pentru a facilita transferul de informație din cadrul firmei, astfel comunicarea între angajați este mult mai optimă și rapidă.
De asemenea, modulul de mesagerie este folosit și de către sistem pentru a informa angajatul cu privire la diverse scenarii.
Un mesaj poate fi transmis apăsând pe butonul send message atunci când vizualizăm profilul celorlalți colegi sau alegând să dăm reply unui mesaj primit. În funcție de statusul mesajului (viewed, not viewed, etc) sau originea mesajului (system, user) acesta va fi marcat prin culori diferite.
Figura 3.12 Fereastra mesaje
3.6 Modulul Settings
Modulul settings are două funcționalități și anume schimbarea fotografiei de profil și schimbarea parolei.
Pentru o performanță sporită fotografiile sunt salvate pe server și nu în baza de date, astfel viteza de încărcare este semnificativ mai mică. Fotografiile sunt trimise către server printr-un call ajax, atunci când acestea ajung în backend este verificat faptul că fișierele primite sunt într-adevăr fotografii și nu depășesc dimensiunea maximă. Toate fotografiile sunt salvate în format JPG. Dacă pozele sunt în alt format acestea vor fi convertite în back-end în format jpg și denumirea lor va fi schimbată în numele de cont al utilizatorului astfel încât să poată fi asociate cu profilul utilizatorului logat.
Mai jos putem observa funcția folosită pentru a converti pozele:
$imageFileType = pathinfo($_FILES["fileToUpload"]["name"],PATHINFO_EXTENSION);
function png2jpg($originalFile, $outputFile, $quality) {
$image = imagecreatefrompng($originalFile);
imagejpeg($image, $outputFile, $quality);
imagedestroy($image);
}
Angajatul poate vedea și în timp real progresul upload-ului chiar dacă de cele mai multe orice acesta este insesizabil.
Figura 3.13 Fereastra settings
Atunci când angajatul dorește înlocuirea parolei cu una noua, va trebui din motive de securitate să o știe pe cea veche, parola nouă va fi în acest caz criptată și salvată în baza de date.
3.7 Modulul News
Acest modul a fost creat pentru a informa rapid angajații despre noutățile din firmă, postările în portal pot fi făcute doar de către administratori ai aplicației.
Dacă în ziua curentă a fost postată o știre în portal atunci când utilizatorii se vor loga în aplicație aceștia vor primi o notificare din partea sistemului.
Cap. 4 Concluzie
Bibliografie
1. Design Patterns -(https://sourcemaking.com/design_patterns)
2. MVC Framework Microsoft – (https://msdn.microsoft.com/en-us/library/ff649643.aspx)
3. AngularJs, Wikipedia, iunie 2016 – (https://en.wikipedia.org/wiki/AngularJS)
4. AngularJs, Angular Docs – (https://docs.angularjs.org/guide/introduction)
5. PHP, PHP Intro – (http://php.net/manual/en/intro-whatis.php)
6. HTML, The World Wide Web Consortium – (https://www.w3.org/html/)
7. CSS, What Is – (http://html.net/tutorials/css/lesson1.php)
8. Javascript, About – (http://javascript.about.com/od/reference/p/javascript.htm)
9. JQuery, Wikipedia, iunie 2016 – (https://en.wikipedia.org/wiki/JQuery)
10. Bootstrap – (http://getbootstrap.com/about/)
11. MySql – (https://en.wikipedia.org/wiki/MySQL)
12. XAMPP – (https://www.apachefriends.org/about.html)
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Aplicație Managementul resurselor umane în cadru S.C. AXA ASSISTENCE S.R.L. Profesor coordonator: Cornelia Botezatu Absolvent: Bogdan Niculae Cuprins… [303360] (ID: 303360)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
