PROGRAMUL DE STUDIU: TEHNOLOGIA INFORMAȚIEI FORMA DE ÎNVĂȚĂMÂNT: IF PROIECT DE DIPLOMĂ COORDONATOR ȘTIINȚIFIC Prof. univ. dr. ing. Cornelia Gyorodi… [307926]
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI
TEHNOLOGIA INFORMAȚIEI
PROGRAMUL DE STUDIU: TEHNOLOGIA INFORMAȚIEI
FORMA DE ÎNVĂȚĂMÂNT: IF
PROIECT DE DIPLOMĂ
COORDONATOR ȘTIINȚIFIC
Prof. univ. dr. ing. Cornelia Gyorodi
ABSOLVENT: [anonimizat] 2018
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI
TEHNOLOGIA INFORMAȚIEI
PROGRAMUL DE STUDIU: TEHNOLOGIA INFORMAȚIEI
FORMA DE ÎNVĂȚĂMÂNT: [anonimizat]. univ. dr. ing. Cornelia Gyorodi
ABSOLVENT: [anonimizat] 2016
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI TEHNOLOGIA INFORMAȚIEI
DEPARTAMENTUL CALCULATOARE ȘI TEHNOLOGIA INFORMAȚIEI
TEMA_________
Lucrare de finalizare a studiilor a student: [anonimizat] – [anonimizat]
1). Tema lucrării de finalizare a studiilor:
[anonimizat]
2). Termenul pentru predarea lucrării:
3). Elemente inițiale pentru elaborarea lucrării de finalizare a studiilor
HTML/HTML5, CSS/CSS3, JavaScript, jQuery, PHP, SQL,
4). Conținutul lucrării de finalizare a studiilor: Introducere; [anonimizat], SQL, HTML, CSS, JavaScript; [anonimizat], jQuery,
Bootstrap; [anonimizat], Netbeans IDE; Descrierea aplicației;
Concluzii; Bibliografie.
5). Material grafic:
6). Locul de documentare pentru elaborarea lucrării:
Internet, [anonimizat]
7). Data emiterii temei
Coordonator științific
Prof. univ. dr. ing. Cornelia Gyorodi
Introducere
În această lucrare este prezentată o [anonimizat], și posibilitatea de a a-[anonimizat] , sau posibilitatea de a adăuga o companie chiar dacă nu o deții. [anonimizat], [anonimizat].
Este o [anonimizat], [anonimizat].
Framework-[anonimizat]-[anonimizat], ce urmează a [anonimizat] o performanță ridicată a [anonimizat].
[anonimizat] a folosi arhitectura MVC pe care
acasta o oferă, framework-[anonimizat] o [anonimizat] o serie de avantaje
care vin în ajutorul programatorului.
[anonimizat] a [anonimizat].
[anonimizat]-source,[anonimizat].
Modul în care această aplicație a fost proiectată și construită facilitează procesul de
mentenanță a acesteia, iar extindere ulterioară a [anonimizat]ndere se poate realiza atât pe parte de software, aducând noi elemente în aplicație, dar se
poate face și pe parte de hardware.
Limbaje de programare utilizate
PHP
PHP este un limbaj de programare. Numele PHP provine din limba engleză și este un acronim recursiv și provine de la : Php: Hypertext Preprocessor. Folosit inițial pentru a produce pagini web dinamice, este folosit pe scară largă în dezvoltarea paginilor și aplicațiilor web acaparând aproape toată piața aplicațiilor web [1].
PHP este un limbaj de programare structurat, orientat pe obiecte, open-souce, server-side,
care are versiuni compatibile pentru toate sistemele de operare (UNIX, Windows, etc.) și
pentru majoritatea web serverelor.
Principalele caracteristici ale limbajului PHP sunt urmatoarele:
Familiaritate
Simplitate
Eficiența
Securitate
Flexibilitate
Gratuitate
PHP este simplu de utilizat, fiind un limbaj de programare structurat, ca si C-ul, Perl-ul sau începând de la versiunea 5 chiar Java, sintaxa limbajului fiind o combinație a celor trei. Datorită modularitații sale poate fi folosit și pentru a dezvolta aplicații de sine stătătoare. Scrierea de programe în limbajul PHP este destul de simplă și datorită faptului
că are înglobate sute de funcții și are alte cateva mii care se pot folosi prin intermediul
extensiilor PHP.
Probabil una din cele mai importante facilități ale limbajului este conlucrarea cu majoritatea bazelor de date relaționale, de la MySQL și până la Oracle, trecând prin MS Sql Server. PostgreSQL sau DB2.
Fig. II.1.1 ilustrează cum functionează PHP-ul, codul sursă este compilat de server-ul
web și are ca rezultat Zend Opcode-uri (operation codes) care sunt defapt funcții rezultate în
urma compilării, aceste funcții se execută, iar rezultatul este trimis sub formă de cod HTML
care este vizibil clientului browser-ului.
În aplicație am folosit limbajul PHP pentru realizarea funcționalitățile din partea de
backend și de asemenea pentru conectarea la baza de date și pentru realizarea de operații cu
baza de date.
Fig. II.1.1 Schema de funcționare a PHP-ului
SQL
Limbajul SQL (de la numele englez Structured Query Language) este un limbaj de programare specific pentru manipularea datelor în sisteme de manipulare a bazelor de date relaționale, iar la origine este un limbaj bazat pe algebra relațională. Acesta are ca scop inserarea datelor, interogații, actualizare și ștergere, modificarea și crearea schemelor, precum și controlul accesului la date .
A devenit un standard în domeniu, fiind cel mai popular limbaj de SGBD (Sisteme de Gestiune a Bazelor de Date) relaționale. Pe lănga versiunile standardizate ale limbajului, există o mulțime de dialecte si variante, astfel sistemele de gestiune a bazelor de date sunt prevăzute cu diverse extensii.
Limbajul SQL este divizat în următoarele elemente:
Clauze, ele sunt componente ale instrucțiunilor și interogărilor.
Expresii, al căror efect este producerea de valori scalare sau tabele.
Predicate, pot specifica condiții care sunt evaluate de SQL conform legii ternare sau logicii booleene, în scopul limitării efectelor instrucțiunilor, sau pentru a influența cursul programului.
Interogările, au ca scop regăsirea datelor după criterii specifice.
Instrucțiunile, pot avea un efect persistent asupra datelor sau structurii datelor, sau pot controla tranzacțiile, conexiunile sau cursul programului.
Pentru implementarea limbajului SQL sunt folosite 3 metode de bază:
Apelare directă (Direct Invocation): care permite ca instrucțiunile să fie introduse direct de la prompter.
Încapsulare (Embedded SQL): instrucțiunile sunt încapsulate în codul de program.
JavaScript
JavaScript este un limbaj de programare orientat pe obiecte bazat pe conceptul prototipurilor. Este folosit în general pentru introducerea unor funcționalități în paginile web, codul JavaScript din aceste pagini fiind rulat de către browser. Limbajul este binecunoscut pentru folosirea sa în construirea site-urilor web, dar este folosit și pentru accesul la obiecte încastrate în alte aplicații. Limbajul JavaScript primește tot mai multă atenție în ultimii ani avănd tot mai multe framework-uri și este folosit în tot mai multe aplicații, chiar și aplicații pentru mobil.
Cea mai des întâlnită utilizare a JavaScript este în scriptarea paginilor web . Acesta este
introdus în cadrul paginilor web și contribuie la responsivitatea paginii, la realizarea unei
pagini care interacționează cu utilizatorul.
Browserele rețin în memorie o reprezentare a unei pagini web sub forma unui arbore de
obiecte și pun la dispoziție aceste obiecte script-urilor JavaScript, care le pot citi și manipula.
Arborele de obiecte poartă numele de Document Object Model sau DOM . Există un standard
W3C pentru DOM-ul pe care trebuie să îl pună la dispoziție un browser, ceea ce oferă
posibilitatea scrierii de script-uri portabile , care să funcționeze pe toate browserele. [5]
Pentu a insera JavaScript într-o pagină HTML se foloseste tagul <script></script>.
Limbajul JavaScript este un limbaj foarte puternic, dar și limitat de anumite restricții impuse de navigatoarele Web. Din motive de securitate JavaScript nu poate executa operații in rețea, nu poate scrie, citi sau șterge fișiere de pe hard disc.
Pentru realizarea aceste aplicații am folosit JavaScript pentru manipularea elementelor din DOM.
HTML
Limbajul HTML (HyperText Markup Language) este un limbaj de marcare utilizat pentru
crearea paginilor web ce pot fi afișate intr-un browser, el fiind limbajul care stă la baza
acestor pagini web.
Acest limbaj se folosește de etichete care sunt interpretate de browser, care afișează
rezultatul pe ecran. Etichetele sunt de obicei pereche, o etichetă pentru deschidere <etichetă>
și una pentru închidere </etichetă> sau etichete care nu se închid <etichetă />
În Fig. II.4.1 se poate vedea care este structura de bază a unei pagini HTML, care
contine etichetele cele mai utilizate ale acestui limbaj.
Fig. II.4.1 Structura de bază a unei pagini HTML
Un document html este compus din:
secțiunea head care conține etichetele <head> </head>
secțiunea body cu etichetele <body></body>
Secțiunea head trebuie să conțină titlul paginii inclus între etichetele <title> și <title>,
urmat de descrieri de tip <meta> și de legături către fișiere externe (exemplu: Fișiere de tip
CSS, script-uri sau favicon). Secțiunea header se referă la prima parte a unui site (care de
obicei include meniul) și este recunoscută după eticheta <header></header>, iar secțiunea
footer se referă la ultima parte a site-ului recunoscută după eticheta <footer></footer>.
Evoluția tehnologiei software a introdus versiunea HTML5, bazată pe HTML4, o
versiune de success, HTML5 vine cu elemente și atribute noi și cu o sintaxă mai usoară. Cele
mai folosite etechete noi sunt: header, footer, audio, video.
Fiecare sintaxă HTML5 are nevoie de un doctype pentru a preveni browser-ul că pagina
respectivă trebuie vizualizată într-un anumit mod, asfel declarația doctype a fost simplificată
față de cea veche.
< !Doctype html>
În aplicația prezentată am folosit limbajul HTML versiunea HTML5, deoarece consider
că este cea mai bună versiune pentru a crea structura unei aplicații web la momentul actual.
CSS
CSS (Cascading Style Sheets) este un limbaj care definește layout-ul pentru documentele
HTML. Stilurile se pot atașa elementelor HTML în cadrul documentului prin eticheta <style>
sau prin atributul style sau poate fi incluse prin intermediul unor fișiere externe cu extensia
.css. Codul CSS este editabil cu orice editor de tip text. [7]
<head>
<link rel=”stylesheet” href=”style.css”/>
</head>
Stilurile pentru o pagină web sunt definite de obicei în head, sau în partea de body a
fișierului html sau de asemenea se poate aplica un stil diferit la fiecare tag html în parte.
Un exemplu de CSS, care se aplica etichetei body și ii setează culoarea de fundal albastra,
marimea fontului de 16 pixeli și culoarea fontului rosie :
body{
background-color: blue;
font-size: 16px;
color: red;
}
Actual CSS este la versiunea 3, care a venit cu elemente noi pentru a îmbunătăți designul
unui website. Cateva din elementele noi introduse de CSS3 sunt:
box-shadow – pana la apariția CSS3, crearea unei umbre pe pagina era posibilă
doar cu ajutorul plugin-urilor de JavaScript sau cu ajutorul imaginilor
opacity – pentru a ajusta nivelul opacității
border-radius – pentru a face colțurile rotunjite la o imagine sau la un element
Toate aceste proprietăți enumerate mai sus sau altele introduse noi nu sunt suportate în
toate browserele, de aceea sunt folosite prefixe pentru fiecare browser.
– webkit – : este specific browserelor Google Chrome și Safari
– moz – : specific browserului Mozilla Firefox
– ms – : specific browserului Internet Explorer
– o – : specific browserului Opera
În aplicație am folost CSS pentru a stiliza elementele HTML, deoarece stilul care îl oferă
browser-ul este foarte limitat și nu este deloc atractiv pentru utilizator.
Tehnologii Web utilizate în realizarea aplicației
Laravel
Laravel este un framework PHP, open-source, construit pentru a dezvolta aplicatii web folosing arhitectura MVC(model-view-controller), și este bazat pe framework-ul Symfony.
Laravel vine cu o serie de avantaje în dezvoltarea aplicatiilor web, cum ar fi:
Eloquent ORM (object-relational mapping) – o implementare avansată a unor
metode de lucru cu relațiile dintre obiecte de tipul database, care realizează
legatura cu tabelele din baza de date.
Motorul de templating Blade – permite realizarea de template-uri pentru paginile
aplicației
Migrari – permit crearea sau ștergerea de tabele sau coloane în baza de date din
codul PHP, care apoi este rulat din linie de comandă, iar aceste modificari se vor
putea executa oriunde trebuie instalată aplicația
Clasa autoload – prin intermediul ei toate clasele necesare pentru rularea
Fig. III.1.1 – Modul de funcționare al framework-ului Laravel(MVC)
La crearea aplicației am folosit versiunea 5.3.3 al acestui framework. Acest framework a
fost de mare ajutor în realizarea aplicației deoarece codul este mult mai structurat prin
folosirea arhitecturi MVC și pentru că vine cu multe clase care au metode care sunt
folositoare la implementarea aplicației, o parte din aceste clase care le-am folosit la aplicație
sunt:
Auth – clasa este folosită pentru login, logout și obținerea de informații
despre utilizatorul autentificat
Form – clasa este folosită pentru a genera un formular în view-uri sau pentru a
lucra cu formularele
View – această clasă are metode pentru a încărca un view când se intră pe url-ul
unei pagini din aplicație
Redirect – clasa este folosită pentru a face redirectări din funcțiile din Controller
către o anumită rută, către un link, către pagina anterioară, etc.
Input – permite accesul la datele trimise din view-uri către controller din
formulare prin metoda POST
Session – această clasă ne dă acces la sesiunea framework-ului, pentru a lua
informații din sesiune, a scrie informații acolo sau pentru a le șterge.
jQuery
jQuery este o platformă JavaScript, concepută pentru a îmbunatăți și ușura procese
precum traversarea DOM-ului. Este open-source, a fost lansat în 2006 și este disponibil în
toate versiunile de browser importante.
jQuery este foarte folosit pentru urmatoarele lucruri:
selecții de elemente în arborele DOM
parcurgerea și modificarea arborelui DOM
întregistrarea și modificarea evenimentelor în browser
efecte și animații
cereri AJAX
are multe extresii sau plugin-uri care îi adaugă un plus de functionalitate.
Exemplu de cod jQuery care afișează textul “Buna Ziua!” în elementul body al paginii:
$(document).ready(){
$(“body”).html(”Buna Ziua!”);
});
Bootstrap
Bootstap este un framework de front-end, care este gratis si open-source și este folosit
pentru designul website-urilor și a aplicațiilor web. Conține template-uri de HTML și de CSS
pentru tipografie, formulare, butoane, bară pentru navigare, și alte elemente de interfață și
chiar și extensii optionale de JavaScript.
Este compatibil cu ultimele versiuni ale celor mai folosite browsere, cu ar fi: Google
Chrome, Firefox, Internet Explorer, Opera sau Safari.
De la versiunea 2.0 poate fi folosit și pentru responsive web design. Este cel mai utilizat
framework pentru dezvoltarea interfețelor web și poate fi integrat cu orice fel de aplicație.
Există pachete de interfețe complete și gata de integrat în diverse domenii cum ar fi:
administrare și dashboard, pagini de prezentare, galerii foto sau pagini de business.
O altă facilitate a framework-ului este folosirea unui font care reprezintă icoanele pentru
anumite acțiuni, acest font este numit Font Awesome fiind definit ca și font iconic, dezvoltat
pentru a fi folosit împreună cu framework-ul Bootstrap.
FontAwesome conține câteva sute de icon-uri, care pot fi integrate cu usurință în orice
site putând fi modificate folosind fișierul CSS. Integrarea fontului se face precum un font
obișnuit folosind tagul <link>, rel=”stylesheet” și type=”style/css”. Fontul a fost gândit
special pentru Bootstrap, dar acesta poate fi de folos și independent.
Acest font este foarte utilzat deoarece, oricare este dimensiunea la care trebuie afișat
icon-ul, calitatea se păstrează, în schimb atunci cănd de folosește un icon de tip poză, de
exemplu în formatul PNG, când se dorește afișarea icon-ului la o dimensiune mai mare decât
a pozei, calitatea scade și poza devine pixelată.
În aplicație am folosit versiunea 3.3.4 prin intermediul unei teme de admin, care este
folosită pentru meniul aplicației, afișarea mesajelor de succes sau a celor de
eroare, stilizarea inputurilor și a textului, iar Icon-urile din meniu, de pe bara de navigare sau în majoritatea formularelor se folosește FontAwesome.
FontAwesome conține o mulțime de iconițe care se adaugă în partea de HTML, oriunde prin: <i class=”fa fa-numele_iconiței”>Hello World</i>.
Între Fig. III.2 și Fig. III.3 se poate observa diferența în designul aplicației între versiunea cu
și făra Bootstrap, prin aplicarea CSS-ului de la Bootstrap aplicația devine mult mai user-friendly.
Fig. III.3.1 Aplicația cu Bootstrap inclus
Tipuri de Software utilizate în realizarea aplicației
Xampp
Xampp este un pachet de programe open-source, care consta in Apache HTTP Server, MySQL și interpretoare pentru scripturile scrie în limbaje de programare PHP și Perl. Personal folosind-ul ca și server pentru aplicație, și pentru baza de date.
Netbeans IDE 8.2
NetBeans este un mediu integrat de dezvoltare pentru Java, dar având extensii pentru multiple limbaje cum ar fi PHP, C, C++, HTML 5, Javadoc, JavaScript. Este un mediu bun pentru a dezvolta un proiect, având acces și la plugin-uri create de utilizatori.
Descrierea aplicației
Acest capitol va trata modul în care a fost implementată aplicația destinată
căutarii de job-uri și functionalitățile pe care aceasta le oferă.
Structura bazei de date
Figura Fig. V.1 ilustrează structura bazei de date care este folosită în aplicație, care conține 13 tabele și relațiile care există între aceste tabelele.
Fig. . – Structura bazei de date
Aceasta conține 13 tabele:
admin_password_resets – păstrează informații pentru resetarea parolei utilizatorului admin
admin_users – conține useri care au acces la partea de backend , adică la managementul aplicației
boroughs – conține orașe pentru API – ul care importă companii
companies – conține companiile, adăugate manual de useri sau cele importate cu API
industries – conține industrii pentru API – ul care importă companii.
jobs – conține joburile adăugate de companii sau de utilizatori
job_applies – aici găsim aplicările utilizatorilor la job-urile companiilor
password_resets – păstrează informații despre useri care îsi reseteaza parola, după ce introduc email-ul în formul de resetare.
pending_users_for_companies – conține informații despre useri care urmează sau nu urmează sa fie acceptați de user-ul admin
reviews – păstrează informații despre review-urile lăsate companiilor
review_votes – păstrează informații despre like-uri sau dislike-uri ale reviewurilor
users – conține datele personale ale userilor
migrations – această tabelă este creată de Laravel când migrăm tabelele din aplicație
Datele din aceste tabele vor fi manipulate cu ajutorul instrucțiunilor SQL scrise în PHP cu
ajutorul ORM-ului Eloquent ofertit de Laravel. Pentru a crea conexiunea cu baza de date este
folosit fișierul de configurare env care se afla în directorul root al aplicației,
unde prin mai multe variabile sunt definite datele de conexiune la baza de date, cum ar fi numele bazei de date, numele utilizatorului și parola acestuia:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=license
DB_USERNAME=root
Instalarea framework-ului Laravel
Înainte de instalare, trebuie să ne asigurăm că server-ul unde va fi rulată aplicația
îndeplinește o cerință foarte importantă, adică versiunea minima de PHP, care în cazul
versiuni 5.3.3 a Laravel-ului, PHP trebuie să aibă minim versiunea 5.6.4 pentru a rula făra
probleme.
Cea mai ușoară metodă de instalare este cu ajutorul Composer-ului, care este un
instrument pentru management in PHP și care o dată instalat se poate folosi din linia de
comandă. Pentru a instala framework-ul este nevoie doar de urmatoarea comandă:
composer create-project laravel/laravel {directory} 5.3.3 –prefer-dist
{directory} trebuie doar înlocuit cu calea locală unde proiectul va fi instalat.
Configurările aplicației
Pe langă configurarea bazei de date, prin intermediul framework-ului Laravel se mai pot
configura și alte aspecte ale aplicației, cele mai importante fiind următoarele:
Timezone-ul, url-ul, limba aplicației sau dacă aplicația este sau nu în debug mode în
app.php
'debug' => true,
'url' => 'http://localhost',
'timezone' => 'UTC',
'locale' => 'en',
Tabela din baza de date folosită pentru useri si modelul Eloquent folosit pentru
această tabelă în auth.php
'model' => 'User',
'table' => 'users',
Server-ul folosit pentru email in mail.php
'driver' => 'smtp',
'host' => 'smtp.mailgun.org',
'port' => 587,
'from' => array('address' => null, 'name' => null),
În Fig. 4.2 se poate observa unde sunt localizate toate fișierele de config pe care le conține aplicația.
Fig. V.3.1 Structura folder-ului config al aplicației
Structura generală a proiectului
În Fig. V.3.1 se poate vedea structura generală a proiectului, structura este cea a
framework-ului Laravel. Acest framework are patru directoare principale.
Directorul app – conține partea de cod care este adăugată de programator, cum ar fi
controllerele, modelele, view-urile, conține de asemenea și partea de configurare a aplicației.
Tot în acest director sunt salvate și anumite resurse tempotare, adică: fișierele de cache,
fișierele de log sau fișierele care păstrază datele din sesiune, Laravel avănd o sesiune proprie,
nu folosește sesiunea browser-ului.
Directorul bootstrap conține câteva fișiere care se ocupă de configurarea autoloading-ului
framework-ului.
Directorul public conține toate resursele adăugate aplicației, dar care nu reprezintă
modele, view-uri sau controllere, aceste fișiere pot să fie imagini, librarii JavaScript, fișiere
CSS, etc.
Directorul vendor conține toate pachetele sau librariile PHP pe care le are aplicația, o
parte din acestea sunt instalate o dată cu framework-ul, iar restul sunt adăugate ulterior, în
funcție de cerințele aplicației.
De asemenea aplicația conține și alte fișiere, în directorul principal al proiectului, cum ar fi:
.gitignore – unde dacă proiectul este încarcat într-un Git repository (în cazul acestei aplicații este), se specifică de care fișiere să nu țină cont repository-ul
composer.json – Laravel folosește Composer, un tool PHP de management al
dependințelor, care permite să se declare librăriile folosite în proiect, Composer
ocupându-se apoi de managementul acestora (install sau update) când este rulată
comanda “composer update”
Fig. V.4.1 Structura proiectului
Structura generală a aplicației
Fig. V.5.1 Structura aplicației
Structura aplicației a fost gândită să faciliteze accesul utilizatorului cât mai ușor la
funcționalitățile ei, aplicația este împărțită, după cum se poate vedea și în schema din Fig. V.5.1
, în șapte părți importante, care sunt evidențiate în meniul aplicației, aceste părți sunt:
Secțiunea Login – această secțiune se folosește la autentificare, ea având două părți, una pentru autentificare ca utilizator simplu, iar cealaltă pentru autentificarea ca utilizator de companie
Homepage-ul – unde utilizatorul poate să vadă un formular de căutare ori pentru job-uri ori pentru companii fără a fii nevoie de autentificare.
Secțiunea Jobs – aici utilizatorul poate sa vadă joburile existente plus un formular de câutare, pe partea stângă se gasește și un sidebar care conține top 5 cele mai revizuite companii plus un buton de adăugare job, care poate fi folosit doar în cazul autentificarii
Secțiune de adăugare companie – aici se află un formular de adăugare companie,pentru a accesa secțiunea aceasta e nevoie de autentificare, aici este prezent și sidebarul cu companiile revizuite
Secțiunea contact – aici găsim un formular de contact prin care utilizatorul poate să trimită email-uri către administrator.
Secțiunea contul meu – aici vom găsi informații despre contul nostru, unde putem sa edităm numele și email-ul sau putem să ne delogăm
Importarea de companii printr-un API – această funcționalitate este folosită pentru a importa companii printr-un API din Statele Unite ale Americii.
Secțiunea admin – secțiunea aceasta este mai specială ea fiind separată de restul aplicației dar totodată și foarte importantă, este dedicată special pentru utilizatorii admin, de aici admin-ul aprobă sau șterge companii și poate să vadă și să șteargă useri care aparțin de aceea companie
Rutarea în aplicațe
Una dintre cele mai importante facilități a framework-ul Laravel este sistemul de rutare,
adică rutele care definesc ce se întâmplă când este apelat un url sau cand este facut un
request. Aceste rule pot să definească mai multe tipuri de request-uri, cum ar fi de tipul:
POST, GET, PUT, DELETE,PATCH.
Rutele sunt definite în fișierul routes.php care se află in folder-ul routes, unde mai găsim încă două foldere, unul pentru partea de admin și celalat pentru partea de interfața, fiecare dintre ele conținând doua fișiere web.php unde sunt definite rutile. Rutele pot să
apeleze o funcție dintr-un controller sau să se definească o funcție unde este definită ruta, de
exemplu:
Route::get('/', function(){
return 'Hello World';
});
În aplicația JobSeeker sunt folosite rute care apelează funcții din controller cum ar fi:
Route::get('login/{type}', 'Auth\LoginController@showLoginForm');
Route::post('login/{type}', 'Auth\LoginController@login');Route::group(array('before' => 'auth'), function(){
Route::group(['middleware' => 'auth'], function () {
Route::get('my-company', 'CompanyController@edit');
Route::post('company/update', 'CompanyController@update');
Route::group(['middleware' => 'checkOwner'], function () {
Route::get('job/edit/{id}', 'JobController@edit');
Route::post('job/update/{id}', 'JobController@update');
});
Route::post('job/store/{id}', 'JobController@store');
});
……………
});
După cum se poate vedea în codul de mai sus, rutele pot să fie grupate dacă au ceva în
comun, în aplicația descrisă, majoritatea rutelor au în comun faptul că definesc pagini sau
acțiuni ce nu se pot realiza fără a fi autentificat, lucru realizat prin faptul rutării unui group de rute cu 'middleware' => 'auth', acest lucru semnifică faptul că aceste rute nu pot fi apelate/folosite fără a fi autentificat. Pagina de login și partea unde utilizatorul poate să caute joburi sau companii nu face parte din această categorie.
Modul de definire al rutelor este foarte ușor, metoda de apelare este definită și ca metodă
a clasei Route, metodă care are doi parametrii, primul parametru un string și este url-ul apelat,
dacă url-ul aplicatiei este http://job-seeker , atunci url-ul paginii de login este http://job-seeker/login . Aldoilea parametru este tot un string, care defineste numele Controllerului și funcția apelată, fiind de forma ExempluController@funțieApelată
Url-ul poate să conțină și parametri, care sunt încadrați în paranteze acoladă și care pot fi
accesați din controller:
Route::post('/job /update{id}', 'JobController@update));
parametrul este id, și funcția update din controller-ul JobController este apelată
astfel pentru a avea acces la parametru, valoarea din url a lui id va fi folosită în funcție prin
intermediul variabilei $id:
public function update($id){
…
}
Funcționalitațile aplicației
Secțiunea Login
Pagina de login este folosită pentru autentificare, aici fiind două variante, autentificarea ca și utilizator normal sau ca și utilizator de companie.
La apelarea url-ului paginii de login în Laravel este apelată funcția showLoginForm care
returnează un view, adică conținutul unei pagini, clasa View este o clasă a framework-ului
care se ocupă de paginile aplicației, returnând în funcție parametrul view cu destinația pagini rezultă deschiderea login.blade.php care se află in folder-ul /resources/views, după cum putem observa mai jos:
public function showLoginForm(){
return view ('auth.userLogin');
//sau
return view('auth.companyLogin');
}
În Fig. V.7.1 se poate vedea cum arată pagina folosită pentru autentificare, care este rezulatul returnării fișierului login.blade.php.
Fig. . – Secțiunea Login
Pe lângă alte elemente HTML, pagina conține un formular, generat prin clasa Form a
framework-ului Laravel, care conține două input-uri, unul pentru email și unul pentru
parolă, adică datele folosite de user pentru a intra în aplicație și un buton de tipul submit care
actionează trimiterea datelor din formular.
<form action="{{ action('Auth\LoginController@login', 'user') }}" method="post">
Funcția login preia datele trimise din formular, aplicația folosind aceași funcție de login și pentru companii și pentru userii normali, formularul validează și încearcă să autentifice
utilizatorul cu ajutorul clasei Auth, dacă validarea sau autentificarea nu sunt facute cu succes,
se revine înapoi la pagina de login cu mesaj de eroare, iar dacă autentificare de face cu
succes, utilizatorul este redirecționat pe pagina Home.
Sub formular găsim de asemenea și un link către o pagină de recuperare a parolei, după accesarea acestui link suntem redirectați către un alt formular care conține doar un câmp email, după completarea câmpului și apăsarea butonului de send, user-ul cu acel email va primi un mail care va conține un buton de resetare a parolei, acest buton redirectând userul spre o pagină cu un formular care conține două câmpuri pentru parola nouă, această pagină se poate vedea și în Fig. V.7.2.
Fig. V.7.2 Pagina de resetare a parolei
Secțiunea de login conține și un link către crearea unui cont, accesând link-ul vom fi redirecționați către un formular unde vom introduce datele necesare, după crearea contului utilizatorul va primi un email cu un mesaj de bine ați venit.
Secțiunea Register
Această secțiune se folosește pentru înregistrarea utilizatorilor în aplicație. Aici avem două părți, înregistrarea ca și utilizator simplu și înregistrarea ca utilizator de companie. Pentru ca utilizatorul să poată să se înregistreze trebuie să aleagă cum, în Fig. V.7.3 vedem cum utilizatorul alege tipul de înregistrare din meniul de navigație al aplicației.
Fig. V.7.3 Tipul de înregistrare
În cazul în care utilizatorul alege înregistrarea ca utilizator de companie, formularul de înregistrare va fi diferit de cel normal cum putem vedea în Fig. V.7.4, aici utilizatorul își va adăuga propria companie și va fi nevoit să aștepte ca un utilizator admin să aprobe compania sau să o respingă, adminul primind un email cu noua companie.
Fig. V.7.4 – Formular de înregistrare pentru utilizatorul de companie
Secțiunea Homepage
În Fig. V.7.5 se poate vedea pagina de Homepage, unde utilizatorul ajunge la accesarea url-ului aplicației, această pagină contine un formular de căutare, unde utilizatorul poate căuta job-uri sau companii existente în baza de date, formularul de căutare având două butoane, unul pentru job-uri și unul pentru companii, cuvinte cheie, o listă cu industrii și o listă cu state. După ce utilizatorul va apăsa butonul de search aplicația va redirecționa utilizatorul pe pagina de Jobs unde vor apărea rezultatele căutarii, în cazul în care nu sunt rezultate un mesaj cu 0 rezultate va fi afișat.
Fig. V.7.5 Pagina Home
Secțiunea Jobs
Această secțiune conține toate job-urile existente în baza de date, un formular de căutare care funcționează la fel ca și cel de la pagina homepage și o regăsim în Fig. V.7.6.
Fig. V.7.6 Secțiunea Jobs
În stânga formularului de căutare găsim și un buton de adăugare job. Pentru adăugare unui job este nevoie ca utilizatorul să fie autentificat ca și user de companie, în cazul în care utilizatorul nu este autentificat el va fi redirecționat către o pagină de autentificare pentru companii, în cazul în care utilizatorul este autentificat ca și utilizator de companie el va fi redirecționat către o pagină de adăugare job unde vom găsi un formular, după adăugarea unui job, utilizatorul de companie poate să editeze sau să șteargă job-ul adăugat. Pentru a vedea sau găsi job-ul adăugat utilizatorul va intra la secțiunea contul meu, la editarea companiei unde va putea accesa detaliile tuturor job-urilor adăugate dar și dacă alți utilizatori simpli au aplicat pentru un job al companiei.
În această pagină găsim de asemenea și un sidebar cu top cinci cele mai revizuite companii fiecare având un link cu detalii care redirecționează utilizatorul pe o pagină cu detalii ale acelei companii.
Job-urile listate din baza de date conțin imaginea(în cazul în care există, dacă nu există o imagine goală va apărea), titlul job-ului și compania de care aparține dar și un link de detalii care redirecționează utilizatorul pe o pagină unde se vor afișa detaliile job-ului și în cazul în care utilizatorul este autentificat și job-ul nu este adăugat de el atunci în partea dreaptă găsim un buton prin care utilizatorul poate aplica pentru acel job, apăsând acel buton se va deschide un modal unde utilizatorul va introduce emailul, o descriere și va putea încărca un CV( Curriculum Vitae), în cazul în care utilizatorul nu este autentificat un mesaj(“Applying for a job requires authetification!”) va fi afișat în partea dreaptă.
În cazul în care utilizatorul de companie găsește job-ul adăugat de el, job-ul va avea o iconiță cu un coș de gunoi în colțul din dreapta sus, la apăsare job-ul fiind șters din baza de date, același caz se aplică și în cazul în care utilizatorul intră la detaliile acelui job, îi vor apărea două butoane, unul pentru a edita și unul pentru a șterge job-ul.
Secțiunea Add Employer
În această secțiune găsim un formular, Fig. V.7.7, acest formular conține input-uri pentru numele companiei, industria din care face parte, statul, mărimea companiei, website-ul și adresa, adresa fiind importantă deoarece pe pagina de detalii a unei companii vom avea și o hartă de la Google Maps cu locația selectată în funcție de adresa adăugată de utilizator.
Fig. V.7.7 Secțiunea Add Employer
În cazul adăugarii unei companii contul de utilizator devine utilizator de companie având după acces la adăugare job-uri și editarea lor și profilului de companie, unde compania poate să fie editată și în cazul în care un utilizator sau mai mulți aplică la unele din job-urile companiei, el va putea vedea toate aplicăriile.
După adăugarea cu succes a unei companii, utilizatorul va vedea un mesaj cum că compania trebuie să fie acceptată, admin-ul site-ului va primi un mail cu detaliile companiei și va putea să accepte sau să respingă compania ștergând-o din baza de date, acest lucru îl decide admin-ul după ce s-a documentat și utilizatorul care a adăugat compania este cu adevărat un angajat al ei. În secțiunea de admin, admin-ul poate la fel ca și în mail să respingă sau să adauge compania.
Secțiunea Contact
În Fig. V.7.8 găsim un formular de contact, care va trimite un mail cu informațiile oferite către admin-ul site-ului, aceast formular poate fi folosit și de utilizatori care nu sunt autentificați.
Această este o secțiune importantă deoarece utilizatori care nu sunt autentificați pot să pună întrebări admin-ului despre anumite detalii pe care îi intereseaza dar și pentru cei autentificați, ei putând semnala anumite probleme pe care le au sau anumite întrebări.
Fig. V.7.8 Secțiunea Contact
Secțiunea My Account
Această secțiune este dedicată utilizatorului conectat cu un cont, ea fiind accesibilă doar dacă utilizatorul este autentificat. Pentru a accesa această secțiune utilizatorul va apăsa butonul My Account, la apăsarea butonului se va deschide o listă după cum putem vedea și în Fig. V.7.9, în această figura vedem lista utilizatorului simplu iar în Fig. V.7.10 vedem lista utilizatorului de companie. Conturile utilizatorilor fiind de două tipuri, conțin și funcționalități diferite cum ar fi:
Utilizatorul simplu – ca utilizator simplu în listă se afișează “Edit my account” și “Sign out”, apăsarea butonului “Edit my account” va trimite utilizatorul la un formular unde va putea să își editeze detaliile contului cum ar fi numele, email-ul. Apăsarea butonului “Sign out” va deautentifica utilizatorul din aplicație.
Fig. . – Listă utilizator de companie
Utilizatorul de companie – ca utilizator de companie în listă vom găsi un buton în plus “Edit my company”, restul de butoane având aceași funcționalitate ca utilizatorul simplu. Apăsarea butonului “Edit my company” va deschide o pagină nouă cu un formular în care găsim detaliile companiei și o hartă de la Google cu adresa companiei, utilizatorul poate edita detaliile companiei cum ar fi numele, schimbarea pozei, adresei, etc., după ce utilizatorul va schimba anumite detalii despre companie va trebui să apese un buton “Save” care va salva formularul. Sub acest formular găsim listate job-urile companiei, precum și un buton de adăugare job, utilizatorul poate să șteargă job-urile sau în cazul în care vrea să editeze anumite detalii ale job-ului el poate să intre la detaliile job-ului dorit prin apăsare butonului “See details” prezent la fiecare job, apăsând acest buton utilizatorul va fi redireționat către detaliile job-ului unde va avea un buton de editare job. Deasupra formularului în cazul în care compania are aplicări la job-uri găsim un buton “You have job applications”, dacă compania nu are aplicări la niciunul din job-uri butonul va fi dezactivat și textul va fi “You have no job applications”. Dacă compania are aplicarii apăsarea acestui buton va deschide o căsuță de dialog conținând listate toate aplicariile, cum putem vedea și în figura FIGURA, fiecare aplicare conține numele job-ului la care utilizatorii au aplicat, email-ul, un mesaj și atașat un Curriculum Vitae. Utilizatorul de companie poate să descarce fișierul încarcat de aplicant precum și ștergerea aplicării.
Importare de companii printr-un API
Această funcționalitate se folosește pentru a încărca baza de date cu companii existente și adevărate din anumite State ale Americi.
API-ul este un set de subrutine pentru definiții, protocoale și unelte pentru construirea aplicațiilor. În termeni generali, este un set de metode definite de comunicație între o variație de componente software. API-ul este folosit în aplicații web deoarece este ușor să dezvolți o aplicație avînd datele necesare, care sunt puse cap la cap de un programator.
În această aplicație am folosit API-ul de la Yelp pentru a importa companii cu toate detaliile prezente. Yelp este o companie care se ocupă cu furnizarea datelor despre companii locale, având un website unde poți găsi toate companiile locale în apropierea San Francisco, California cu comentarii și note la fiecare în parte, ei mai dispun și de o aplicație pentru telefoane inteligente care conține tot aceleași date ca și website-ul. Yelp Fusion este API-ul de la Yelp el conținând toate aplicațiile pe care compania le are în baza de date. Pentru a folosi acest API ai nevoie de un cont și va fi nevoie să îți construiești o aplicație pentru a avea acces la datele lor, această aplicație oferinduți un id de client și o cheie de API, acestea se folosesc pentru a te autentifica la API când vei trimite din aplicație ta cereri către Yelp Fusion, fără acestea API-ul îți va returna o eroare.
Pentru importarea de companii avem o funcție import(), care se folosește de tabelele următoare:
Industries – această tabelă conține o mulțime de industrii încărcate în baza de date prealabil cu industriile pe care le-am dorit de la Yelp.
Boroughs – această tabelă conține statele din care vrem să importăm companii, deasemenea fiind încărcate în prealabil cu statele pe care le-am dorit.
Funcția de importare se găsește mai jos:
public function import()
{
$cities = Borough::all();
$industries = Industry::all();
$companies = Company::all();
$companiesNames = [];
$totalImported = 0;
foreach ($companies as $company) {
$companiesNames[] = $company->name;
}
foreach ($cities as $city) {
foreach ($industries as $industry) {
$countBusinesses = 0;
$businesses = json_decode(
self::search(
$industry->name,
$city->name
)
);
while(!empty($businesses->businesses)) {
if ($countBusinesses > 100) {
break;
}
foreach ($businesses->businesses as $business) {
$exist = array_search(
$business->name,
$companiesNames
);
if ($exist == false) {
$countBusinesses++;
$totalImported++;
$companyAddress = "";
foreach ($business->location->display_address as $address) {
if ($address == end($business->location->display_address)) {
$companyAddress .= $address;
} else {
$companyAddress .= $address.", ";
}
}
$company = new Company;
if (isset($business->name)) {
$company->name = $business->name;
$company->adress = $companyAddress;
$company->logo = isset($business->snippet_image_url) ?
$business->snippet_image_url : "";
$company->borough_id = $city->id;
$company->industry_id = $industry->id;
$company->approved = 1;
$company->save();
}
}
}
$businesses = json_decode(
self::search(
$industry->name,
$city->name
)
);
}
}
}
echo 'Total imported companies: '.$totalImported.'<br/>';
exit('DONE');
}
Această funcție este folosită pentru a importa companiile prin API, ea folosindu-se de alte funcții pentru asta. Pentru început se iau datele din cele două tabele menționate după care se parcurg pentru început toate statele găsite în baza de date și pentru fiecare stat se parcurg toate industriile, în această parcurgere se apelează o altă funcție numită search() în care se trimit doi parametrii, industriile și statele.
Funcția de căutare a parametriilor în API:
public function search($term, $location)
{
$url_params = array();
$url_params['term'] = $term ? : "";
$url_params['location'] = $location?: env('YELP_DEFAULT_LOCATION');
$url_params['limit'] = 2;
$req = self::request(env('YELP_API_HOST'),env('YELP_SEARCH_PATH'), $url_params);
return $req;
}
Această funcție acceptă cei doi parametri trimiși de funcția de importare și creează o mulțime din ei, această mulțime împreuna cu încă doi parametri, url-ul api-ului de la Yelp și calea către căutarea de companii în API, sunt trimiși către o altă funcție request() pe care o regăsim mai jos.
public function request($host, $path,$url_params = array())
{
try {
$curl = curl_init();
if (FALSE === $curl)
throw new Exception('Failed to initialize');
$url = $host . $path . "?" . http_build_query($url_params);
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true, // Capturare răspuns.
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"authorization: Bearer " . env('YELP_API_KEY'),
"cache-control: no-cache",
),
));
$response = curl_exec($curl);
if (FALSE === $response)
throw new Exception(curl_error($curl), curl_errno($curl));
$http_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if (200 != $http_status)
throw new Exception($response, $http_status);
curl_close($curl);
} catch(Exception $e) {
trigger_error(sprintf(
'Curl failed with error #%d: %s',
$e->getCode(), $e->getMessage()),
E_USER_ERROR);
}
return $response;
}
În această funcție se face autentificarea la API și cererea companiilor. Acest lucru se face prin curl, curl fiind o librărie prin care se face conectarea la diferite servere cu diferite protocoale, funcția de request() conectându-se la Yelp folosindu-se de toți parametri trimiși de noi de la funcția search().
În acest curl se face și autentificarea, pentru autentificare se trimite un parametru cu cheia pe care am primit-o când am facut aplicația în Yelp Fusion, cheia funcționând ca o parolă și o trimitem în header. În cazul în care autentificarea nu a avut succes se va returna eroarea în consolă. Dacă autentificarea a fost cu succes, API-ul va răspunde înapoi cu companiile găsite în funcție de parametrii trimiși de funcția de import, adică statul și industria, răspunsul fiind returnat înapoi. După returnarea răspunsului înapoi funcției de importare, funcția va prelua datele primite și după ce le va verifica le va salva în baza de date, importarea fiind cu succes.
Această funcție este o funcționalitate importantă deoarece aplicația se folosește de acest API pentru a popula baza de date și implicit aplicația cu companii existente care pot fi descoperite chiar de proprii angajații.
Trimiterea de mail-uri
Trimiterea de mail-uri se face prin Laravel, pentru fiecare tipuri de mail pe care vrem să le folosim se crează o clasă “mailable”, aceste clase se crează prin comanda:
php artisan make:mail NumeleClasei
Această clasă va conține o funcție “build()” care va fi apelată în aplicație când se dorește trimiterea de mail.
public function build()
{
return $this->from( „Adresa de la cine se trimite mail-ul” ), „Titlul”)
->subject(„Subiectul”)
->view('emails.acceptedUser'); // Aici se trimite calea către view
}
View-ul apelat de această funcție reprezintă mesajul în sine pentru acel mail pe care dorim sa îl trimitem, un view pentru mail este scris în html și poate să aibă parametri trimiși din funcția cu care se apelează view-ul, acei parametri pot fi luați din baza de date.
Pentru trimiterea de mail într-o funcție vom folosi următoarea linie de cod:
Mail::to(‘Destinatar’)->send(new NumeleClasei(parametru1,parametru2));
În această linie de cod se apelează clasa Mail (aceasta fiind implementată de Laravel), care are nevoie de destinatar și de clasa creată pentru trimiterea de mail, aici se pot trimite și parametri, acești parametri fiind folosiți în view-ul cu pricina.
Secțiunea Admin
Această parte a aplicației este o pagină separată de restul aplicației fiind dedicată utilizatorilor admin. Secțiunea admin o regăsim în FIGURA , ea conține o secțiune de autentificare care redirectează utilizatorul admin pe o pagină construită cu modulul AdminLTE. Acest modul este o temă construită cu ajutorul Bootstrap și este folosită în special pentru secțiunile de admin, pentru tabloul de bord și tema panoului de control după cum se poate vedea și în Fig. V.7.11.
Fig. . – Secțiunea Admin
În această secțiune se găsesc toate companiile afișate printr-un modul numit DataTables, acest modul este folosit prin jQuery, rolul lui fiind de a spori accesabilitatea datelor în tabelele HTML. Funcționalitatea acestui modul se folosește prin a instala modulul prin Composer sau prin a include două fișiere unul pentru parte de afișaj(CSS) și unul pentru funcționalitate(JavaScript). În View-ul din poză găsim o funcție Ajax care apelează o funcție din Controller-ul de companii când pagina se încarcă și creează acest DataTable. Ruta apelată prin Ajax duce la o funcție din Controller-ul de companii care face select pe tabela companies din baza de date, după select funcția returnează variabila(“$companies”) care conține toate companiile din acea tabelă în felul următor:
return Datatables::of($companies)
->addColumn('show', '{{ action("CompanyController@show", "$id") }}')
->make(true);
În acestă returnare se creează DataTabel-ul și se apelează o altă funcție “show” din acest Controller care adaugă o coloană în plus DataTabel-ului. Această coloană nu este vizibilă dar se folosește pentru a apela alt View la apăsarea numelui unei companii, acest View conține un alt DataTable cu utilizatorul care aparține de această companie, companiile pot să nu fie asociate cu nici un utilizator, în acest caz se va returna un DataTable gol.
În pagina principală în care afișăm toate companiile regăsim în acel DataTabel numele companiilor, numele utilizatorilor (dacă există), numele utilizatorilor care așteaptă aprobare (dacă există), starea companiei (în așteptare sau aprobată), și o coloană cu acțiuni. Aceea coloană cu acțiuni conține trei butoane care sunt afișate după anumite condiții, dacă compania a fost deja aprobată coloanal va conține un singur buton de ștergere a companiei, dacă compania nu a fost aprobată coloana va conține două butoane, unul pentru aprobarea și unul pentru respingerea companiei.
Când un utilizator înregistrat își adaugă propria companie sau aplică pentru deținerea unei compani existente care nu are deja un utilizator utilizatorii admin primesc un email cu cererea. În cazul în care utilizatorul a adăugat o companie nouă, utilizatorul admin va trebui să decidă dacă aprobă sau respinge această companie prin butoanele găsite în coloana de acțiuni sau direct din acel email primit, în acel email având două butoane unul pentru respingere și unul pentru aprobare, în oricare dintre cazuri utilizatorul va primi un email cu aprobarea/respingerea companiei. Dacă utilizatorul aplică pentru deținerea unei compani existente fără utilizator, utilizatorul admin va primi un mail cu cererea acelui utilizator, în acel mail având din nou două butoane pentru aprobare/respingere a utilizatorului, la fel utilizatorul admin poate să aprobe/respingă acel utilizator din secțiunea de admin, acea companie având un utilizator în așteptare, pentru a aproba/respinge utilizatorul, admin-ul va apăsa pe numele companiei, acest lucru redirecționând-ul la pagina care conține DataTabel-ul cu utilizatorul în așteptare, acolo având butoane pentru aprobare/respingere.
Dacă o companie are deja un utilizator existent, utilizatorul admin poate să șteargă acest utilizator din DataTabel printr-un buton dedicate acestui lucru.
DataTabel-ul companiei are o bară de căutare prin care se poate căuta oricare din companiile existente în baza de date făra ca pagina să își facă refresh.
Rolul utilizatorului admin este de a decide dacă utilizatori care adaugă sau aplică pentru o companie, sunt deținătorii acelor companii, în funcție de asta admin-ul aprobă sau respinge cererile utilizatorilor.
Extinderea Aplicației
Extinderea acestei aplicații ar putea avea multe direcții în special pe partea de software, posibilele extinderi ar putea fi:
Pentru ca aplicația să atragă mulți mai mulți utilizatori s-ar putea adăuga mai multe funcționalitați de tipul importării de companii, adică adăugarea mai multor API de tipul acela, cele mai bune API-uri ar fi cele care importă companiile cu tot cu job-urile deja existente, acest lucru încărcând aplicația cu foarte multe job-uri deja existente fără ca utilizatori de companie să fie necesari pentru această aplicație.
Pe parte de software adăugarea unei funcționalități de autentificare cu conturi sociale cum ar fi: facebook, twitter, linkedin, etc., utilizatori autentificații în acest fel vor putea distribui job-urile sau companiile pe paginile sociale, atrăgând tot mai mulți utilizatori.
O funcționalitate multilanguage ar propulsa aplicația pe plan internațional.
Pe parte de hardware ar fi nevoie de o îmbunătațire după ce baza de date a aplicație va deține multe informații, va fi nevoie de un server capabil să susțină un număr mare de utilizatori și o bază de date încărcată, fără această îmbunătățire aplicația va pierde utilizatori pe termen lung.
Concluzii
Aplicația prezentată în acestă lucrare poate fi utilizată cu succes în căutarea job-urilor pe care companiile le adaugă în vederea recrutării de angajați, din această cauza aplicația poate să aibă mare succes cu destulă implicare și cu extinderea ei pe termen lung.
Aplicația este implementată folosind tehnologii de ultimă generație, atât pe partea de frontend cât și pe partea de backend, în acest fel am reușit să dobândesc și să aprofundez cunoștiințe noi în ceea ce privește tehnologiile de ultimă generație.
Pentru realizare aplicației am utilizat framework-ul Laravel, deoarece prezintă un mare avantaj în implementarea multor funcționalități.
Aplicația este user-friendly, adică este ușor de utilizat, ea putând fii accesată de pe mai multe device-uri din orice browser. Pentru a putea folosi aplicația mai mult decât local, va fi necesar instalarea ei pe un server cu un domeniu dedicat.
Aplicația poate fi folosită de orice utilizator, dar pentru funcționalitațile importante utilizatorul va fi nevoit să își înregistreze un cont.
Avantajul acestei aplicații față de alte aplicații similare este API-ul de importare a companiilor, acest API face posibil adăugarea de companii existente fără a fi nevoie de a le adăuga manual, iar companiile fiind adevărate ele pot fi găsite chiar de deținătorii lor, în acel caz ei având acces la adăugarea de job-uri.
Bibiliografie
[1] The Joy of PHP – Autor: Alan Forbes – publicată în 2015.12.04 – accesat în data de 14.04.2018
[2] https://www.quora.com/How-does-PHP-work – accesat în data de 14.04.2018
[3] Baze de date relaționale. Teorie și aplicații în Oracle – Autori: Győrödi Cornelia, Pecherle George – accesat în data de 21.04.2018
[4] JavaScript Step by Step 2nd Edition – Autor: Steve Suehring – editura: O’Reilly Media, Inc. – publicată în – 22.12.20120 – accesat în data de 21.04.2018
[5] HTML: A Beginner’s Guide 4th Edition – Autor: Wendy Willard – editura Osborn/Mcgraw Hil;Inc. – publicată în 23.06.2009- accesat în data de 23.04.2018
[6] https://sites.google.com/site/labinfosc/Home/baze-web-design/elemente-html – accesat în data de 23.04.2018
[7] https://www.learnenough.com/css-and-layout-tutorial/css/introduction – Autori: Lee Donahoe, Michael Hartl – accesat în data de 24.04.2018
[8] https://laravel.com/docs/5.3 – accesat în data de 24.04.2018
[9] https://medium.com/@dannyhuang_75970/learning-laravel-controllers-101-ad28d2bb5569 – Autor: Danny Huang – accesat în data de 05.05.2018
[10] Learning jQuery 4th Edition – editura: Packt Publishing Ltd. -publicată în 06.2013 -Autori: Jonathan Chaffer, Karl Swedberg – accesat în data de 06.05.2018
[11] Learning Bootstrap – editura: Packt Publishing Ltd. -publicată în 12.2014 – Autori: Aravind Shenoy, Ulrich Sossou – accesat în data de 10.05.2018
[12] https://www.wpblogx.com/what-is-xampp/ Autor: Prabhu Ganesan – accesat în data de 11.05.2018
[13] https://netbeans.org/about/ – accesat în data de 11.05.2018
DECLARAȚIE DE AUTENTICITATE A
LUCRĂRII DE FINALIZARE A STUDIILOR
Titlul lucrării
APLICAȚIE WEB PENTRU CĂUTARE DE JOB-URI
Autorul lucrării
MOZA BOGDAN GEORGE
Lucrarea de finalizare a studiilor este elaborată în vederea susținerii
examenului de finalizare a studiilor organizat de către Facultatea Inginerie
Electrică și Tehologia Informației din cadrul Universității din Oradea, sesiunea
iulie a anului universitar 2017-2018.
Prin prezenta, subsemnatul Moza Bogdan-George, CNP 1940809055124,
declar pe proprie răspundere că această lucrare a fost scrisă de către mine, fără
nici un ajutor neautorizat și că nici o parte a lucrării nu conține aplicații sau
studii de caz publicate de alți autori.
Declar, de asemenea, că în lucrare nu există idei, tabele, grafice, hărți sau
alte surse folosite fără respectarea legii române și a convențiilor internaționale
privind drepturile de autor.
Oradea,
DATA Semnătura
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: PROGRAMUL DE STUDIU: TEHNOLOGIA INFORMAȚIEI FORMA DE ÎNVĂȚĂMÂNT: IF PROIECT DE DIPLOMĂ COORDONATOR ȘTIINȚIFIC Prof. univ. dr. ing. Cornelia Gyorodi… [307926] (ID: 307926)
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.
