Aplicatie de Management de Documente In Mediul Onlinedocx
=== Aplicatie de management de documente in mediul online ===
Introducere
Societatea informațională secolului XXI impune un ritm alert în preluarea, stocarea si utilizarea informației. Astfel, instrumentele folosite în aceste procese trebuie să respecte cele mai înalte standarde în ceea ce privește calitatea informației oferite și, în același timp, în cantitatea acesteia, furnizată în cel mai scurt timp cu putință.
Începând cu ultimele două decenii ale secolului XX, a început proiectarea și dezvoltarea unor programe utilizate pentru pentru managementul de documente, numite DMS, capabile să înregistreze un număr însemnat de înscrieri și putând fi atât accesate, cât și modificate de diferiți utilizatori.
În lucrarea de față, este prezentată în detaliu o aplicație de management a documentelor in mediul online, care vizează creșterea randamenului obținut prin realizarea activităților trecute în revistă mai sus, într-un timp scurt și cu mijloace puține.
Aplicația, numită AMDO, propune eficientizarea procesului de stocare și de descarcăre a documentelor prin implementarea unor principii de funcționare care ajută utilizatorul să evolueze în activitatea sa, câstigând timp și resurse în procesul de management.
Cu un design interactiv și o modalitate de utilizare intuitivă, orice persoană poate opta pentru un plus de organizare la nivelul stocării și prelucrării materiei prime utilizate, și anume informația, atât pe suport hârtie, cât și pe suport electronic.
Aplicația poate fi utilizată, în pricipal, la nivelul unei firme, utilizând rețeaua de intranet și poate fi accesată de 2 tipuri de utilizatori. Pe de o parte este utilizatorul, cel ce poate vizualiza, adăuga, modifica și șterge orice document, drepturi ce se extind și asupra altor categorii prelucrate în timpul accesarii programului, spre exemplu, clienții cărora le aparțin documentele. Pe de altă parte, al doilea personaj este cel care monitorizează întreaga activitate și anume administratorul. Suplimentar atribuțiilor utilizatorului, preluate automat, cel din urmă are posibilitatea de a crea sau șterge un utilizator, de a oferi drepturi acestuia și de a soluționa toate situațiile întâmpinate, transmise prin formularele de contact.
Mijloacele folosite în vederea creării aplicației de management al documentelor in mediul online sunt reprezentate de două programe principale: Microsoft Visual Web Developer 2010, cu ajutorul căruia s-a creat interfața acesteia și SQL Server Management 2012, în care au fost create bazele de date cu rolul de suport aplicației in cauză.
În cele ce urmează, vom trece in revistă principalele caracteristici ale aplicatiei. S-a folosit un caz particular pentru a prezenta funcționalitatea AMDO. Astfel, s-a preluat nevoia de business in acest domeniu a unei instituții de credit, ce dorește un management optim al documentelor ce face subiectul activității sale.
Capitolul 1. Aspecte teoretice
În acest capitol, vom trece în revistă elementele folosite în această lucrare. Începând cu definiții și clasificări, continuând cu explicarea modului de funcționare și finalizând cu avantajele și îmbunătățile aduse, fiecare concept este dezvoltat cu scopul înțelegerii complete a procesului de crearea a unei aplicații web.
1.1. .NET Framework
După cum îi spune și numele, .Net Framework reprezintă un cadru de dezvoltare software unitară folosit în vederea realizării, distribuirii și rulării aplicațiilor de tip web-site și nu numai. Presupune îmbinarea a mai multe tehnologii și limbaje de programare.
Popularitatea acestei componente se redată, în primul rând, de portabilitatea codului utilizat între diferite stații de lucru, cu condiția să existe un sistem de operare Windows și, în al doilea rând, de capacitatea oferită în vederea reutilizării codului în programe, neținându-se cont de limbajul de programare folosit. Un alt aspect ce nu trebuie neglijat este capacitatea acestuia de a permite realizarea de desene și alte elemente grafice, utilizatorul având ocazia să personalizeze rezultatul dorit. Nu în ultimul rând, studiile relevă o scădere a timpul utilizat în programare datorită existenței unor clase care efectuează majoritatea sarcinilor uzuale.
Pentru a avea posibilitatea dezvoltării unor aplicații pe platforma .NET Framework, sunt necesare 3 componente primordiale:
un set de limbaje de programare, în caz particular fiind utilizat C#;
un set de medii de dezvoltare, spre exemplu Microsoft Visual Web Developer 2010;
o bibliotecă de clase pentru crearea aplicațiilor web.
Obiectivele acestei platforme sunt:
Punerea la dispoziție a unui model de programare orientat-obiect consistent, indiferent dacă codul obiect este stocat și executat local, distribuit prin internet și executat local, sau executat remote;
Oferirea unui mediu de execuție care minimizează deployment-ul și conflictul între versiuni;
Oferirea unui mediu de execuție sigur pentru codul generat de terți necunoscuți sau semi-cunoscuți;
Oferirea unei experiențe consistente pe o gamă largă de modele de aplicații, fie ele windows sau web;
Oferirea unor modele de comunicare conforme cu standardele industriei și care să asigure integrarea platformei .NET cu alte surse.
Aplicația AMDO are la bază .NET Framework 4.0, ce a apărut pe piață pe data de 29 septembrie 2008.
1.2. Limbajul C#
Încă de la apariția programării ca și disciplină, a început o căutare a limbajului perfect, a unui limbaj capabil să satisfacă toate nevoile programatorului, acceptând complexitatea oricărei aplicații și totuși fiind ușor de folosit.
Astfel, Microsoft vine în întâmpinarea acestei căutări. În luna iulie a anului 2000, este lansat limbajul de programare C#, purtând semnătura lui Anders Hejlsberg (de asemenea, dezvoltatorul Turbo Pascal și Delphi), Scott Wiltamuth și Peter Golde.. Creat cu scopul de a deveni un instrument de dezvoltare pentru arhitectura .Net Framework, C# este un limbaj orientat pe obiect, ce oferă modalități facile și eficiente de a scrie programe pentru modul modern de dezvoltare.
Ca și punct de pornire, putem deduce că C# provine din limbajele cu cel mai mare succes din istoria programării, mai exact C și C++. De asemenea, se poate susține o asemănare cu limbajul Java. De la C, sunt preluate sintaxa, multe din cuvintele-cheie și operatorii. De la C++, C# folosește modelul de obiecte. În ceea ce privește legătura cu Java, putem afirma că C# nu derivă din acesta, ci amândouă provin din C si C++, de unde reiese existența unei serii de aspecte comune, dar și de deosebiri însemnate, dintre care enumerăm poate cea mai importantă facilitate și anume posibilitatea de a lucra într-un limbaj mixt.
1.3. Relația dintre C# și arhitectura .NET
Cu toate că limbajul C# poate fi utilizat drept un limbaj de sine stătător, există o strânsă legatură între acesta și mediul său de rulare, și anume arhitectura .NET. Afirmația are la bază 2 explicații:
Scopul dezvoltării limbajului C# de către Microsoft a fost pentru crearea codului pentru arhitectura .NET;
Bibiliotecile utilizate de C# sunt cele definite de arhitectura .NET.
1.4. ASP.NET
ASP.NET reprezintă un set de tehnologii al cărui scop este crearea unor aplicații web. Dezvoltarea unei astfel de metode de programare orientate pe obiect a avut la bază necesitatea de realizare a acestor tipuri de aplicații într-un timp redus.
Astfel, se evidențiază un set de avantaje ASP.NET:
Propune un limbaj de programare simplist de tipul C# sau Visual Basic;
Deține o colecție îmbelșugată de biblioteci de clase și, în egală măsură, de controale .NET, cu rolul de a oferi o mai bună funcționalitate ”out of the box”.
De asemenea, ASP.NET este perfect capabil să susțină atât aplicațiile mici, care de obicei reprezintă o interfață pentru o bază de date, cât și aplicații foarte complexe. Această maleabilitate este dată de modelul OOP, respectiv de separarea logicii aplicației de interfața acestuia.
Un altă latură de neneglijat legat de ASP.NET care îl plasează între locurile fruntașe în ceea ce privește preferințele programatorilor în acest domeniu este cantitatea minimă utilă pentru dezvoltarea tehnologiilor necesare în vederea creării unei aplicații web. După cum am menționat anterior, limbajele de programare necesare ASP.NET sunt C# și Visual Basic, deși prezintă 2 caracteristici importante: sunt suportate de platforma .NET și au fost create special ca fiind orientate pe obiecte, de unde se poate deduce că ”Totul din .NET, și evident din ASP.NET, este un obiect.”
Următorul aspect pe care îl vom trece în revistă este locația aplicațiilor ASP.NET. Acestea trebuie să fie găzduite pe un server, astfel încât să poată fi utilizate, iar server-ul, evident, trebuie să fie conectat la un browser, folosit pentru rulare. Fără o comunicare eficientă între cele două menționate anterior, aplicațiile web în discuție nu pot fi realizate. În vederea obținerii unui randament maxim, este necesară urmarea a 8 pași. Aceștia sunt:
Pasul 1: Browserul web crează o cerere a unei resurse cãtre server-ul web în discuție;
Pasul 2: Cererea în cauză este trimisã către server-ul web, folosind protocolul HTTP;
Pasul 3: Server-ul web proceseazã cererea;
Pasul 4: Server-ul web trimite un rãspuns browserului, folosind același protocol;
Pasul 5: Browser-ul proceseazã rãspunsul în format HTML, afișând astfel pagina web;
Pasul 6: Utilizatorul are posibilitatea de a acționa (prin adăugare, modificare, ștergere ș.a.m.d.) asupra datelor; ulterior, selectând intrumentul necesar executării (spre exemplu, un buton), trimite datele către server;
Pasul 7: Server-ul web proceseazã noile date.
Pasul 8: Se reia acțiunea descrisă la pasul 4.
1.6. Microsoft Web Developer 2010
Microsoft Web Developer 2010 reprezintă un mediu de lucru dezolvat de Microsoft, având ca specializare realizarea site-urilor. Acesta conține instrumente de dezvoltare moderne, ușor de manevrat, de dimensiuni mici spre medii, cu interfețe de lucru simplificate.
Instrumentul acesta de creare aplicațiilor web propune utilizatorilor săi o interfață WYSIWYG, în care permite vizualizarea a ceva similar în ceea ce privește viitorul design, chiar în momentul creării acestuia. De asemenea, se utilizează opțiunea de „drag-and-drop” pentru o manevrare ușoară a datelor în cauză. Limbajul de programare folosit este C#, iar partea vizuală se realizează cu ajutorul limbajului HTML.
Avantajele Microsoft Wev Developer implică existența unui editor vizual și a unui cod C#/HTML, oferirea de suport pentru depanarea aplicațiilor web, prin opțiunea de „debug”. De asemenea, conține un Web Server propriu ce poate rula paginile web create și are integrat SQL Server Express, ce reprezintă un mediu vizual pentru editarea bazelor de date.
Modul de obținere al acestui program este accesarea paginii: http://blogs.msdn.com/b/danielfe/archive/2009/10/21/download-visual-studio-2010-express-editions.aspx și descărcarea acestuia direct de la sursă.
În momentul accesării acestui program, pe prima pagina aparută vor fi prezente toate panourile necesare activității de creare a unei aplicații web (Figura 1.6.1):
Toolbox, ce reprezintă colecția de instrumente ce pot fi folosite în aplicație. Este alcătuită din controale server web, orientate pe obiect, care permit legarea la diferite surse de date, identifică automat browser-ul și optimizează returnarea datelor ținând cont de capacitățile acestuia. Există mai multe tipuri de controale, printre care putem aminti:
Standard Controls: Label, TextBox, Button, LinkButton, ImageButton, CheckBox, CheckBoxList, RadioButton, RadioButtonList, DropDownList, HyperLink, FileUpload ș.a.
Data Controls: DetailsView, FormView, GridView ș.a.
ValidationControls: CompareValidator, RequiredFieldValidator ș.a.
Login Controls: Login, LoginName, LoginStatus, LoginView, ChangePassword, CreateUserWizard ș.a.
Design Surface, meniul de lucru unde are loc manipularea datelor și a instrumentelor folosite în vederea obținerii rezultatului dorit;
Solution Explorer, lista cu componentele aplicației, organizată sub formă de foldere;
Database Explorer, lista cu toate bazele de date afiliate aplicației în discuție;
Proprieties, ce cuprinde totalitatea caracteristicilor obiectului sau paginii selectate;
Error List, adică lista cu toate erorile ce pot apărea în timpul rulării programului.
Figura 1.6.1. Mediul de lucru oferit de Microsoft Visual Web Developer
1.7. ADO.NET
Reprezintă o parte importantă a .NET Framework, cu rol în conectarea aplicațiilor web la baze date, permițând astfel adăugarea și manipularea datelor.
Un aspect demn de trecut în revistă despre ADO.NET este permisivitatea acestuia în lucrul cu baza de date atât în mod conectat, cât și în mod deconectat, aplicațiile fiind nevoite să se conecteze la server doar dacă este necesare extragerea sau actualizarea datelor. Astfel, se obține reduce numărul de conexiuni deschise și, implicit, timpul de răspuns la comezile utilizatorilor.
Când vorbim de componență, putem afirma că fiecare furizor de date ADO.NET prezintă 4 membri:
Clase Connection, utilizate pentru a marca o conexiune cu baza de date dorită. La rândul lor, sunt alcătuite din date specifice conexiunii, de exemplu locația sursei de date.
Clase Command, folosite pentru a impune executarea anumitor comenzi în baza de date. Acestea permit scrierea de interogări SQL și executarea acestora.
Clase DataReader, ce permit navigarea de tip „read only” și sunt obținute doar prin apelul metodei „ExecuteReader()”. Avantajul acestora constă în opținerea unui rezultat într-un timp foarte scurt, folosind un minimum de resurse.
Clase DataAdapter, ce conțin obiecte de tip Connection și au capacitatea de deschide sau închide singure conexiunea cu baza de date . De asemenea, permit efectuarea comenzilor de selectare, ștergere, modificare sau adăugare la baza de date.
1.8. Microsoft SQL Server Management
Reprezintă un sistem relațional de management al bazelor de date. Pricipala caracteristică al acestui software este capacitatea de stocare și punere la dispoziție a datelor solicitate de alte aplicații. Acestea din urmă pot rula concomitent cu Microsoft SQL Server, lucru care reprezintă un avantaj important pentru un utilizator.
Versiunea utilizată în lucrarea de față este Microsoft SQL Server Management 2012, lansată la data de 6 martie 2012.
Capitolul 2. modelarea aplicației
În cadrul acestui capitol, vom trece în revistă modul de funcționare a aplicației de management de documente în mediul online. Pentru o analiză cât se poate exactă, expusă într-un limbaj universal, am utilizat diagramele UML.
2.1. Aspecte teoretice
Limbajul UML are scopul de a analiza și de a proiecta programul realizat de către utilizator. Caracterizat drept un limbaj vizual de modelare cu aplicații în domeniul software, acesta, acesta face referire la vizualizarea, specificarea, construirea și documentarea sistemelor de aplicații. O caracteristică importantă a acestuia este capacitatea de a descrie însușirile, atât cele structurale, cât și cele dinamice ale unui sistem software, unde sistemul software reprezintă o bază de date sau un modul de cod, în general.
Pentru o descriere exhaustivă a unui program, se folosesc diagrame UML, ce pot fi clasificate, după tipul de descriere aplicat, în trei categorii.
Prima face referire la descrierea structurală a programului prezentat, practic punând în evidență compomenentele sistemului modelat. Această categorie se poate exemplifica prin diagrame precum: cele de clase (Class Diagram), de obiecte (Object Diagram) sau cele de componente (Component Diagram).
În ceea ce privește cel de-al doilea tip, intră in discuție descrierea comportamentală,cu alte cuvinte la ce acțiuni să se aștepte utilizatorul din partea sistemului modelat. Ilustrarea acestei categorii se realizează cu ajutorul diagramelor de cazuri (Use Case Diagram), de activități (Activity Diagram) și, nu in ultimul rând, a celor de stare (State Diagram).
Ultima, însă nu cea din urmă categorie de diagrame utilizate în modelarea unui sistem este reprezentată de diagramele de interacțiune. Acestea sunt, la origine, diagrame de comportament, însă aduc nou capacitatea de evidențiere a modului în care circulă datele, generând astfel un transfer de control în sistemul modelat. Un exemplu elocvent în acest caz este diagrama de secvență (Sequence Diagram), care descrie într-un mod acurat felul în care obiectele ce alcătuiesc modelul analizat comunică între ele din punct de vedere al secvențierii mesajelor.
În cele ce urmează, vom trece în revistă atât modul de funcționare a aplicației de management al documentelor in mediul online, cât și structura acesteia, cu ajutorul diagramelor UML amintite mai sus.
Realizarea fiecărei diagrame a fost efectuată cu ajutorul programului “Visual Paradigm”, versiunea 12.1, obținut de la adresa: http://www.visual-paradigm.com/download/.
2.2. Diagrama cazurilor de utilizare
O diagramă a cazurilor de utilizare are ca principale scopuri oferirea unei descrieri generale a modului în care va fi utilizat sistemul și furnizarea unei imagini de ansamblu a funcționalităților urmărite. De asemenea, un rol important al acestui tip reprezintă atingerea obiectivului propus.
Componentele unei astfel de diagrame sunt următoarele: actorii, cazurile de utilizare și relațiile dintre acesția.
2.2.1. Descrierea actorilor
După cum a fost menționat încă de la începutul prezentei lucrări, aplicația AMDO are la bază acțiunea a doi actori: utilizatorul și administratorul
Utilizatorul poate aduce orice modificare documentelor din baza de date. După autentificarea solicitată încă din prima pagină a aplicației, acesta poate vizualiza, adăuga, modifica, șterge orice document. În plus, i se oferă și capacitatea de a acționa în același mod asupra bazei de clienți.
Administratorul are drepturi totale în ceea ce privește activitatea în această aplicație. Acesta se poate comporta asemenea unui utilizator, având însă și capacități suplimentare în ceea ce privește coordonarea activității întreprinse în mod regulat. Cel mai important atribut al său este dreptul de a adăuga sau a șterge un utilizator, controlând astfel drepturile fiecărei persoane care încearcă accesarea datelor. De asemenea, i se oferă posibilitatea de a primi și de a răspunde tuturor solicitărilor transmise cu ajutorul formularelor de contact. Nu în ultimul rând, i se permite colectarea feed-back-ului primit de la utilizatori prin recepționarea sesizărilor și sugestiilor acestora.
2.2.2. Descrierea cazurilor de utilizare
AdministrareDocument. Fiecare document are anumite caracteristici cu ajutorul cărora poate fi manipulat. Administrarea acestuia presupune adăugarea, vizualizarea, descărcarea, editarea și, în ultimă instanță, ștergerea acestuia. Între acest caz și cele de mai jos, se regăsește o relație de generalizare.
AdăugareDocument. Orice document poate fi adăugat în baza de date prin accesarea unui WebForm dedicat acestei acțiuni. Pentru o evidență exactă, este solicitată completarea unei serii de informații, cu rolul de a aduce în atenția utilizatorului caracteristicile noului ocupant al bazei de date.
VizualizareDocument. Aplicația pune la dispoziție o gamă variată de modalități de vizualizare, ținându-se cont de diverse condiții impuse automat sau selectate de utilizator. Se pot examina documentele în funcție de tipul acestora sau de clientul cărora aparțin. De asemenea, și forma de vizualizare poate diferi, în sensul că se poate observa fie un singur document, împreună cu toate atributele sale, fie o listă de documente cu cel puțin o însușire comună.
DescărcareDocument. Orice document poate fi descărcat pentru a putea fi prelucrat ulterior. Această operațiune se realizează cu ajutorului unui LinkButton introdus în GridView-ul folosit pentru vizualizarea documentelor.
EditareDocument. Posibilitatea de a edita caracteristicile unui document este dată de caracteristicile aceluiași GridView amintit mai sus. Se pot modifica toate câmpurile, iar toate modificările vor fi înregistrate în baza de date.
ȘtergereDocument.
AdministrarePortofoliuClienți.
AdăugareClient. Utilizatorul are posibilitatea de a adăuga un client în baza de date folosind
CăutareClient. Este posibilă datorită unui TextBox, unde va fi introdusă o valoare reprezentând Codul Numeric Personal (număr unic pentru fiecare client).
VizualizareClient. Are loc folosind un GridView, unde se poatea vedea lista completă a clienților sau cu ajutorul unui DetailsView, unde fiecare dintre aceștia poate fi vizualizat.
EditareClient. Utilizatorul poate actualiza oricând datele clientului pentru o bună evidență a acestora. Se realizează în urma vizualizării, folosindu-se aceleași instrumente descrise la VizualizareClient.
Autentificare. Acțiune obligatorie pentru a putea accesa orice parte din aplicație, autentificarea se realizează cu ajutorul unui nume de utilizator unic și a unei parole alfa-numerice ce cuprinde cel puțin un caracter non-alfa-numeric.
Deconectare. Acest use case descrie încetarea activității unui utilizator, fiind folosit și în momentul în care se dorește logarea drept administrator sau drept un alt utilizator.
2.2.3. Descrierea relațiilor
În cadrul diagramelor a cazurilor de utilizare, au fost folosite toate cele trei tipuri de relații existente.
a. Relațiile de asociere, ce prezintă interacțiunea dintre elementele componente. După cum se observă și mai jos , pot avea loc astfel de legături, atât între 2 sau mai multe cazuri de utilizare (Figura 2.2.1), cât și între un actor și un astfel de caz (Figura 2.2.2).
Figura 2.2.1. Reprezentarea unei relații de asociere între 2 cazuri de utilizare
Figura 2.2.2. Reprezentarea unei relații de asociere între un actori și un caz de utilizare
b. Relațiile de dependență. Pot fi de 2 tipuri:
dependență de tip include, unde cazul de utilizare principal include comportamentul cazului de utilizare secundar, fără acesta din urmă primul neavând loc. Luând exemplu Figura 2.2.3, se deduce că “PreiaCriterii” este un caz de utilizare necesar și suficient pentru “CăutareClient”, cel din urmă neputând să își atingă scopul în lipsa primului.
Figura 2.2.3. Reprezentarea unei relații de dependență de tip include.
dependență de tip extend, care relevă inserarea unui caz de utilizare într-un altul, doar în anumite condiții, în rest acestea fiind independente. În Figura 2.2.4, se observă “Autentificare”. Atât timp cât datele necesare realizării comenzii sunt corecte, cazul de utilizare în discuție acționează fără a depinde de un altul. În momentul în care această condiție este încălcată, are loc automat executarea cazului “Afișare mesaj”.
Figura 2.2.4. Reprezentarea unei relații de dependență de tip extend
c. Relații de generalizare, în care este prezentat modul de obținere a caracteristicilor comportamentale a unui caz de utilizare de către altul, având loc în egală măsură o rafinare a ultimului . În Figura 2.2.5, cele 5 cazuri reprezintă specializări ale cazului de utilizare principal și anume “AdministrareDocument”.
Figura 2.2.5. Reprezentarea unei relații de generalizare
2.2.4. Exemplificarea diagramelor
Figura 2.2.6. Diagrama cazurilor de utilizare
Diagrama reprezentată în Figura 2.2.6, este prezintă întrega acțiune de administrare al portofoliului de clienți de către un utilizator, aceasta fiind pricipalul caz de utilizare, fiind alcătuit din mai multe acțiuni, precum editarea, ștergerea, adăugarea, vizualizarea sau căutarea unui client. ”AdmininistrarePortofoliuClienti” împrutumă pe rând toate caracteristicile cazurilor enumerate anterior, deci deducem o relație de generalizare.
Următorul aspect ce se impune a fi analizat are în prim plan cazul de utilizare ”CautareClient”. După cum se observă din reprezentarea grafică, există 2 relații de dependență. Prima de tip include impune îndeplinirea cazului ”PreiaCriterii”, astfel încât să aibă loc realizarea căutării clienților, iar cea de-a doua, de tip extend, presupune execuția unui nou caz de utilizare, numit ”Afișare mesaj”, în cazul în care căutarea, deși a fost efectuată cu succes, nu a returnat niciun rezultat.
2.3. Diagrama de clase
Diagrama de clase propune descrierea structurii interne, acest lucru având loc prin identificarea unor clase, a atributelor și a operațiilor acestora și, nu în ultimul rând, a relațiilor existente.
În limbajul UML, clasele sunt reprezentate sub forma unor dreptunghiuri compartimentate în 3 secțiuni individuale, unde sunt prezentate elementele unei clase:
Numele clasei, reprezentat de o valoare unică;
Atributele clasei, ce trec în revistă proprietățile acesteia;
Operațiile sau metodele, ce reprezintă implementări ale unor servicii care pot fi solicitate oricărui obiect al clasei în discuție.
Observând Figura 2.2.7, sunt identificate cele 3 elemente amintite mai sus și anume: “Utilizator” reprezintă numele clasei în discuție, iar toate noțiunile de la “ID_utilizator” la “Observatii” reprezintă atributele acesteia. Pentru acest caz particular, nu se regăsesc nicio operație sau metodă impusă. Pe lângă acestea, se remarcă și simbolul “-”, aflat la începutul fiecărui atribut. Acesta poartă numele de specificator de vizibilitate și are semnificația următoare: doar clasa dată poate folosi atributul însoțit de acest simbol. În caz general, mai există specificatorii “+” și “#”, neutilizabili pentru modelarea aplicației de management al documentelor în mediul online.
Figura 2.2.7. Reprezentarea diagramei de clase, cu componentele standard
De asemenea, la fel ca în cazul diagramelor cazurilor de utilizare, și diagramele de clase presupun existența unor asocieri sau relații. O clasificare generală a acestora presupune enumerarea relațiilor de tip asociere, agregare, generalizare, dependență și realizare.
Ținând cont de cerințele aplicației ADMO, ne vom opri asupra relației de asociere, ilustrată în Figura 2.2.8. Ceea ce este reprezentat grafic printr-o linie având la un capăt grupul de simboluri “1..*” și la celălalt, simbolul “1”, se traduce astfel: unui client din baza de date a aplicației de management îi pot aparține mai multe documente.
Figura 2.2.8. Reprezentarea unei diagrame alcătuite din 2 clase, fiecare având componentele sale, iar între ele existând o relație de asociere “unul la mai mulți”.
Figura 2.2.9. Legătura din baza de date, pe baza căreia se conectează cele 2 clase
2.4. Diagrama de obiecte
O diagramă de obiecte reprezintă o instanță a unei diagrame de clase la un moment dat sau partea statică a unei diagrame de interacțiune. Cu alte cuvinte, acest tip de diagramă are ca scop redarea unui set de obiecte cu asocierile dintre ele, într-un anumit cadru temporal. Continuând analiza asemănărilor cu diagramele prezentate la punctul 2.3, observăm că reprezintă structura statică a sistemului modelat, iar reprezentarea grafică derivă din diagramele de clase.
Principala caracteristică a acestora este capacitatea de a arăta un context, fiind astfel utilizate pentru o înțelegere mai aprofundată a structurilor de date cu care se lucrează. Un exemplu elocvent în acest caz este reprezentat în Figura 2.2.10.
Figura 2.2.10. Reprezentarea unei diagrame de obiecte, ce suprinde elementele existente și relațiile dintre ele
2.5. Diagrama de activități
Diagrama de activitate reprezintă o modalitate de modelare vizuală a fluxurilor. Cu ajutorul acesteia pot fi modelate foarte bine use case-urile, dar în aceeași măsură, aceste diagrame pot fi folosite pentru modelarea proceselor de business.
Scopul creării unei astfel de diagrame este de a evidenția controlul execuției de la o activitate la alta și este realizat cu ajutorul elementelor componente, enumerate în continuare:
stări acțiune, definite ca fiind task-urile ce trebuie realizate pentru atingerea scopului propus, purtând numele de “activity states”;
stări activitate, ce fac referire la ansamblu total de acțiuni modelate de diagrame;
tranziții, ce reprezintă relațiile între 2 stări și indică terminarea primei activități, continuându-se automat cu cea de-a doua;
obiecte, ce pot fi explicate drept entitățile asupra cărora acționează acțiunile;
bare de sincronizare
ramificații, care sunt utilizate în momentul în care acțiunea întreprinsă descrisă de diagramă depinde de o expresie booleană.
Pentru o exemplificare a celor descrise mai sus, propunem analiza diagramei prezentate în Figura 2.2.11. Activitatea descrisă este logarea în aplicație. Se începe prin introducerea numelui de utilizator, ulterior a parolei. Se selectează butonul de logare. Astfel se obțin două cazuri. Dacă datele introduse anterior sunt corecte, atunci presupunem că autentificarea a avut loc cu succes, activitatea urmărită ajungând la final. În cazul în care există o neconcordanță în ceea ce privește corectitudinea datelor, atunci logarea eșuează și accesul este interzis, utilizatorul fiind obligat să completeze din nou câmpurile respective. Cu alte cuvinte, activitatea nu a avut loc cu succes.
Figura 2.2.11. Reprezentarea unei diagrame de activități
capitolul 3. prezentarea aplicației
În acest capitol, vom trece în revistă toate elementele componente ale aplicației de management de documente în mediul online, generic numită AMDO. Vom avea în vedere atât aspectele structurale, cât și cele funcționale.
Din punct de vedere structural, AMDO este alcătuită din 4 părți:
MasterPage-ul;
Secțiunea ce se ocupă de logare, compusă din 2 pagini:
„Login.aspx”;
„Register.aspx”;
„ChangePassword.aspx”;
Paginile dedicate utilizatorului, ce se regăsesc în folderul ”Pagini” și cuprind:
„A_FirstPage.aspx”;
„A_Adauga.aspx”;
„A_Acte_de_identitate.aspx”;
„A_Contracte-cadru de servicii bancare.aspx”;
„A_Contracte_de _economisire.aspx”;
„A_Contracte_de_creditare.aspx”;
„A_Colectie_de_documente.aspx”;
„A_Altele.aspx”;
„A_DocPerClient.aspx”;
„A_Contact.aspx”;
„A_ContactP1.aspx”;
„A_ContactP2.aspx”;
„A_Portofoliu.aspx”;
„A_Specimen_de_semnatura.aspx”;
Paginile dedicate administratorului, grupate în folderul ”Administrator”:
„ADM_Page1.aspx”;
„ADM_Page2.aspx”;
„ADM_QnA.aspx”;
„ADM_ManagementQnA.aspx”;
„ADM_Rapoarte.aspx”.
3.1. MasterPage
MasterPage-ul reprezintă un șablon creat special pentru uniformizarea aspectului vizual al aplicației. Acest lucru se realizează prin crearea unui template ce va seta un comportament standard pentru viitoarele pagini create.
Acest instrument folosit în crearea site-urilor web presupune existența a două părți distincte: template-ul amintit anterior și pagina ce se dorește a fi afișată. Este necesară mențiunea că un MasterPage nu poate fi accesat de sine stătător, ci cu doar cu ajutorul paginii principale, aceasta din urmă “moștenind” aspectul visual al obiectului în discuție.
Printre avantajele existenței unui MasterPage, se numără:
Centralizarea tuturor aspectelor comune paginilor utilizate într-un singur loc;
Timpul redus pentru crearea interfeței aplicației;
Existența unui aspect vizual identic, ce crează un effect echilibrat și armonios.
Pașii urmați pentru crearea unui MasterPage sunt: Add new item – MasterPage, precum în Figura 3.1.1:
Figura 3.1.1. Crearea unui MasterPage, utilizând Microsoft Visual Web Developer 2010
În particular, denumirea atribuită MasterPage-ului pentru aplicația prezentată este ”MasterPageV1.master”, compus din numele ales ” MasterPageV1” și terminația ”.master” care relevă tipul instrumentului folosit.
Template-ul utilizat pentru aplicația în discuție cuprinde 4 secțiuni, numite după cum urmează: “banner”, “menu”, “ContentPlaceHolder1” și “footer” . Delimitarea a avut loc cu ajutorul tag-ului <div>…</div>. Codul utilizat pentru secționare este cel prezentat mai jos, cu mențiunea că acesta reprezintă varianta originală, brută, căruia pe parcursul personalizării MasterPage-ului, i s-au adus numeroase adăugiri, cum ar fi adăugarea unor poze, a unui MenuTool. Despre toate acestea, vom discuta punctual în cele ce urmează.
<body>
<form id="form1" runat="server">
<div id="wrapper" style="background-color: #FFFFFF">
<div id="banner">
</div>
<div id="menu">
</div>
<div>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
<div id="footer"
</div>
</form>
</body>
A. “banner”
Reprezintă partea superioară a MasterPage-ului și este alcătuit dintr-o singură imagine (Figura 3.1.3), numită ”Aplicatie.jpg” și regasită în Folderul ”Imagini”. Editarea acesteia a avut loc cu ajutorul programului PhotoScape 3.6.2, prin selectarea unui fundal pe care a fost aplicat textul dorit. Inserarea imaginii în pagina web s-a efectuat cu ajutorul Standard Tool-ului ”Image”, regăsit în ToolBox.
Figura 3.1.3. Imaginea folosită drept banner pentru aplicația AMDO
Personalizarea acestei secțiuni s-a realizat utilizând proprietatea ”Style”, conform Figurii 3.1.4.
Figura 3.1.4. Proprietățile secțiunii ”banner” din MasterPage
B. ”menu”
După cum îi spune și numele, această secțiune este alcătuită, în principal, din meniul utilizat de către utilizator pentru a naviga pe paginile site-ului web.
Meniul propriu-zis a fost creat cu ajutorul Navigation Tool-ului din Toolbox, numit Menu. Acesta a permis adăugarea tuturor specificațiilor necesare accesării oricărei pagini, ce trezește interesul utilizatorului.
Figura 3.1.5. Proprietățile meniului
După cum se observă în Figura 3.1.5, meniul are 2 componente principale:
Lista componentelor, ce reprezintă o trecere în revistă a tuturor paginilor ce pot fi accesate cu ajutorul acestui instrument, după cum se observă în partea din stânga a figurii analizate.
Se observă 2 tipuri de elemente: elementele principale, ce prezintă un comportament static, rămânând în atenția utilizatorului pe tot parcursul accesării paginii, și elementele secundare, reprezentând opțiuni de alegere pentru primele amintite. Acestea din urmă sunt elemente dinamice.
Proprietățile componentelor. Fiecare pagină înscrisă în meniu prezintă anumite caracteristici. Cele care au impactat MasterPage-ul aplicației AMDO sunt:
Enabled, capacitatea de vizualizare a obiectului în discuție, setat drept ”True”;
NavigateUrl, indicând pagina ce va fi accesată în momentul selectării elementrului în discuție;
Text, menționând denumirea sub care va prezentată pagina în meniu.
În secțiunea ”menu” a MasterPage-ului, mai este folosit un Navigation Tool, tot de forma Menu, unde sunt prezentate opțiunile de logare. Acesta a fost creat prin setarea unui singur element static, numit ”Opțiuni” și a unui element dinamic, care a fost personalizat selectând ”Edit Templates” – DynamicItem Template. În momentul accesării pașilor menționați, s-a acordat acces către o fereastră precum cea din Figura 3.1.6, unde au fost adăugate elementele componente:
LoginView;
HyperLink, care redirecționeză utilizatorul către o altă pagină;
LoginStatus.
Ultima componentă a acestei secțiuni este reprezentată de un LoginName, preluat din ToolBox, fiind un LoginTool. Acesta afișează întotdeauna numele utilizatorului ce acceseaza pagina. Pe lângă acesta, a fost adăugat și mesajul ””Bine ai venit, ”.
În ultimă instant, trebuie menționat că, din punct de vedere structural, această parte component MasterPage conține un tabel, format din 1 rând și 3 coloane, ce înglobează elementele de mai sus. Motivul acestei decizii este unul pur estetic, întrucât s-a dorit armonizarea în pagină a 2 Navigation Tools de tip Menu și a Login Tool-ului în discuție. Rezultatul final poate fi observant în Figura 3.1.6.
Figura 3.1.6. Meniul aplicației AMDO
C. ”ContentPlaceHolder1”
Reprezintă secțiunea MasterPage-ului prin care se poate lega ce celelate pagini din aplicație. Este o componentă care pune accentul pe conținul ce se doreste a fi oferit utilizatorului. .
Conectarea unei pagini standard din aplicație la MasterPage se realizează, ținându-se cont de codul descris în cele 2 bucăți de cod. Prima reliefează locația unde se va insera conținul dorit și este notată în codul-sursă al paginii-șablon, pe când în ce-a de-a doua este prezentat codul aferent paginii vizualizate în acest mod.
<div>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
PlaceHolder>
</div>
<%@ Page Title="" Language="C#" MasterPageFile="../MasterPageV1.master" AutoEventWireup="true" CodeFile="A_Contact.aspx.cs" Inherits="Contact" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
</asp:Content>
D. “footer”
Ultima parte componentă ce descrie design-ul general al aplicației de management de documente în mediul online este realizată în același mod precum secțiunea ”banner”.
Luându-se în considerare toate cele menționate mai sus, aspectul MasterPage-ului utilizat este cel prezentat în Figura 3.1.10. Chenarul roșu din acea imagine reprezintă locul unde se vor vizualiza detaliile paginilor accesate.
Figura 3.1.10. MasterPage
3.2. Style Sheet
Style Sheet-urile reprezintă modalități de personalizare a paginilor web și de îmbunățire a aspectului acestora. Astfel, s-a creat un folder nou în proiectul în discuție, numit “Stiluri”, unde s-a adăugat o pagină nouă de tip Style Sheet (Add New Item – Style Sheet), conform imaginii de mai jos:
Figura 3.2.1. Adăugarea unui StyleSheet în aplicația web
Codul care face legătura între noua pagină creată și MasterPage este următorul: <link rel="StyleSheet" type="text/css" href="Styles/StyleSheet.css" />, notat în partea superioară a codului-sursă a celui din urmă, în interiorul tag-ului <head>…</head>. Style Sheet –ul are forma unui fișier CSS ce conține clasele utilizate în paginile web deja definite .
body
{
background-color: #FFF8DC;
text-align: left;
}
#wrapper
{
width: 1080px;
margin: 0 auto;
padding: 10 px;
border: 5px solid #02243C;
background-color: #B0C4DE;
}
#banner
{
height: 200px;
}
Mai sus, se observă o parte din codul utilizat pentru personalizarea MasterPage-ului. Pentru a analiza componența și modul de funcționare al acestuia, ne vom opri asupra id-ului (de exemplu, “#footer”). Acesta relevă componenta pentru căreia i se atribuie toate atributele notate între paranteze. De asemenea, cu ajutorul acestuia se inserează toate acestea în codul-sursă inițial.
Printre avantajele unei astfel de metode se numără:
Ușurința reutilizării. Fiind notate într-o pagină distinctă, codurile devin universal valabile pentru orice altă întrebuințare atât timp cât se folosește id-ul.
Independența de un anumit limbaj. În aceste pagini, pot fi utilizate o gamă largă de limbaje, fiind restricționat doar la limbajul HTML. De exemplu, în aplicația AMD, s-a utilizat cu preponderență, limbajul CSS.
Alternanța stilurilor. Oferă utilizatorului posibilitatea de a utiliza mai multe stiluri în aceeași pagină.
3.3. Pagina de logare
O aplicație de management a documentelor presupune o evidență clară a persoanelor care au dreptul de a accesa informațiile prezentate. Securitatea datelor confidențiale ce fac obiectul înregistărilor impune ca fiecare utilizator să fi fost înregistat în prealabil, să i se fi oferit mijloace de autentificare și, nu în ultimul rând, să fi primit drepturile necesare realizării acțiunilor dorite.
Acest lucru se realizează cu ajutorul unei pagini de logare care, pe de o parte împiedică accesul persoanelor neautorizate, iar pe de altă parte, oferă drepturi specifice, în funcție de datele introduse.
Una din modalitățile utilizate pentru a crea o pagină de logare în Microsoft Visual Web Developer este accesarea unui LoginControl din Toolbox, secțiunea Login (Figura 3.2.1) .
Figura 3.3.1. Login Control din Login Toolbox
Scopul acestui instrument este de a prelua datele introduse (numele de utilizator și parola) și a le transmite către secțiunea ASP.NET care se ocupă cu verificarea drepturilor setate, pentru a fi verificate corespunzator. Dacă detaliile menționate de utilizator sunt cele corecte, atunci se efectuează trecerea către următoarea pagină. În caz contrar, se blochează accesul până la introducerea datelor corecte.
Principala componentă a paginii de logare “Login.aspx” este LoginControl. Prin adăugarea acestuia în pagina dorită, apare imediat un template cu toate datele necesare autentificării.
Figura 3.3.3. LoginControl – varianta standard oferită de aplicație (partea superioară) și varianta personalizată (partea inferioară)
Din punct de vedere structural și al design-ului, acesta poate fi personalizat prin modificarea proprietăților, urmărindu-se armonizarea acestei pagini cu restul celor create. Astfel, urmărind Figura 3.3.3, observăm în partea superioară varianta clasică, propusă de Microsoft Web Developer, pe când partea inferioară a aceiași figuri, a fost realizată cu ajutorul următorului cod :
<asp:Login ID="Login1" runat="server" PasswordLabelText="Parolă:"
UserNameLabelText="Nume Utilizator:"
DestinationPageUrl="~/Pagini/A_FirstPage.aspx"
FailureText="Autentificare nereușită! Vă rugăm să reîncercați!"
LoginButtonText="Autentificare!"
PasswordRequiredErrorMessage="Vă rugăm să introduceți parola corectă!"
RememberMeText="Salvează datele introduse."
TitleText="Vă rugăm să vă autentificați!"
UserNameRequiredErrorMessage="Vă rugăm să introduceți numele de utilizator!"
Font-Bold="True" ForeColor="#02243C" Width="473px">
<LoginButtonStyle BackColor="#02243C" Font-Bold="True" ForeColor="White" />
<TextBoxStyle Width="180px" />
<TitleTextStyle Height="62px" />
</asp:Login>
Din punct de vedere funcțional, menționăm că în momentul introducerii datelor se accesează o bază SQL Server Management, creată automat în momentul înregistrării utilizatorilor în cauză. Odată introduse toate datele, se determină dacă acea combinație (nume de utilizator – parolă) este corectă. Dacă da, se accesează automat următoarea pagină (“A_FirstPage.aspx”), lucru realizat prin modificarea secțiunii de proprietăți a paginii de logare, astfel: la DestinationPageUrl se notează calea paginii-destinație și anume ”~/Pagini/A_FirstPage.aspx”. În caz contrar, apare mesajul ” Autentificare nereușită! Vă rugăm să reîncercați!”, utilizatorul fiind astfel nevoit să reîntroducă datele.
Însă doar completarea câmpurilor din LoginControl nu este suficientă pentru accesarea tuturor paginilor aplicației. După cum am menționat încă de la începutul subcapitolului, sunt impuse reguri de securitate și confidențialitate a datelor. Așadar, un utilizator poate accesa celelalte pagini doar în cazul în care i s-a oferit acest drept, altfel nu va reuși să treacă de pagina de logare.
Pentru a controla toate aspectele de securitate a utilizatorilor aplicației de management a documentelor în mediul online, se accesează meniul Website din bara de navigație, ulterior secțiunea ASP.NET Configuration. Astfel se va deschide pagina de administrare a securității aplicației (Figura 3.3.5), care oferă următoarele posibilități:
Crearea a unui utilizator nou („Create user”);
Administrarea utilizatorilor („Manage user”);
Setarea tipului de autentificare („Select authentification type”);
Setarea rolurilor special pentru fiecare personaj în parte („Enable roles”);
Crearea regulilor de acces („Create access rules”);
Administrarea regulilor de acces („Manage access rules”).
Figura 3.3.5. Pagina de administrare a aplicației AMDO
Ne vom focaliza atenția asupra oferirii drepturilor de acces de către administrator, realizate prin selectarea paginii „Manage access rules”. Aici se identifică paginile pe care un anumit utilizator le poate accesa, blocând accesul la toate celelalte. Un exemplu elocvent se regăsește în Figura 3.3.6, unde la punctul a) se identifică paginile ce vor fi accesate exclusiv de către administrator, iar la punctul b) sunt exeplificate paginile ce pot fi folosite de utilizatorii agreați.
Figura 3.3.6. Managementul drepturilor în aplicația AMDO
În concluzie, în momentul în care este accesată aplicația AMDO, apare instantaneu pagina de logare , al cărui design este descris în Figura 3.3.7.
Figura 3.3.7. Design-ul paginii de logare utilizate in aplicația de management de documente în mediul online
3.4. Pagina de înregistrare și cea de schimbare a parolei
Înregistrarea unui nou utilizator poate avea loc prin 2 metode:
Folosind pagina de administrare a securității aplicației, descrisă la subcapitolul 3.3.2;
Folosind un CreateUserWizard Control din Login Toolbox.
Întrucât ne interesează ca un utilizator să își creeze singur profilul, ne vom opri asupra celei de-a doua metodă amintită mai sus.
CreateUserWizard Control este un instrument special creat pentru această operațiune. Se accesează tot din Toolbox, secțiunea Login ( vezi Figura 3.2.1). Implică crearea unui profil al unui utilizator nou și presupune completarea următoarelor date:
Nume de utilizator;
Parolă;
Confirmarea parolei;
Adresă de e-mail;
Întrebare de securitate;
Răspuns pentru întrebarea setată anterior.
În ceea ce privește schimbarea unei parole deja stabilite în momentul creării profilului, această operațiune este posibilă datorită unui ChangePassword Control, ce se obține exact din același loc precum Login Control și CreateUserWizard Control. Elementele componente ale acestui instrument sunt:
Nume utilizator;
Parolă veche;
Parola nouă;
Confirmarea noii parole.
Pagina de înregistrare poartă numele de „Register.aspx” și poate fi accesată direct din MasterPage, din meniul Opțiuni. S-a folosit un LoginView care returnează 2 valori: “Înregistrare”, dacă nu există niciun utilizator logat sau ”Administrare”, dacă există un utilizator logat, iar acesta este administratorul.
După cum îi spune și numele, opțiunea de care avem nevoie este prima amintită. Pentru a face trecerea la pagina de înregistrare, s-a utilizat un Hyperlink care va permite această trecere, ori de câte ori va fi accesat.
Principala componentă a paginii în discuție este un CreateUserWizard Control.
Din punct de vedere structural, acest instrument este alcătuit dintr-o serie de Label-uri (sau etichete), TextBox-uri și Button-uri (sau butoane), ce sunt unite într-un singur Control. Acestea permit ca toate datele introduse în TextBox-uri să fie salvate în momentul apăsării pe butonul „Creare utilizator nou”.
La fel ca și în cazul Login Control-ului, se poate vorbi de o variantă standard (Figura 3.4.1, punctul a)) , pusă la dispoziție automat de Microsoft Web Developer. Însă, cu ajutorul proprietăților, se poate modifica, prin schimbarea numelui etichetelor și al butoanelor, plus dimensiunile și fondurile acestora, obținându-se astfel o variantă proprie, potrivită cu aplicația prezentă (Figura 3.4.1, punctul b)).
Figura 3.4.1. CreateUserWizard Control, atât varianta standard, cât și cea personalizată
Din punct de vedere funcțional, este imperativ de menționat că simpla înregistrare a unui utilizator este insuficientă pentru a garanta accesul la celelalte pagini ale aplicației. Această pagină asigură exclusiv adăugarea în baza de date a utilizatorilor un nou element. Însă cea mai importantă parte a procesului de înregistrare este acordarea drepturilor de către administrator, aspect dezbătut în subcapitolul 3.3.2.
Schimbarea parolei are loc prin accesarea paginii „ChangePassword.aspx”. Acest lucru se realizează tot din MasterPage, din meniul „Opțiuni”, cu ajutorul Hyperlink-ului “Schimbare parolă”.
Pagina accesată va cuprinde un ChangePassword Control care va permite, în baza introducerii numelui de utilizator și a parolei deja existente, sporirea securității datelor prin alegerea unei noi parole de acces.
Figura 3.4.2. ChangePassword Control, atât varianta standard, cât și cea personalizată
În figura 3.4.2, se observă design-ul acestiu instrument în ambele ipostaze.
Rezultatul final în urma instrumentelor accesate din Login Toolbox se regăsește în Figura 3.4.3, în cazul paginii de înregistrare, respectiv în Figura 3.4.4, pentru pagina de schimbare a parolei.
Figura 3.4.3. Pagina de înregistrare – varianta finală
Figura 3.4.4. Pagina de schimbare a parolei – varianta finală
În procesul de creare al aplicației au mai fost folosite diverse instrumente de tip Login Control. Majoritatea au fost inserate în meniul „Opțiuni” din MasterPage, după se observă în Figura 3.4.1.
Figura 3.4.1. Locația a 3 dintre Login Constrols
Un exemplu în acest sens îl reprezintă LoginView Control-ul amintit în descrierea paginii de înregistrare. Acesta detectează în mod automat rolul obținut în urma autentificării , precum și pașii ce pot urmați în continuare, în funcție de cele de mai sus. Din punct de vedere structural, este alcătuit din 2 template-uri:
Anonymous Template: este afișat când nu există niciun utilizator logat. În aplicația AMDO, am utilizat un Hyperlink, numit “Înregistrare”, care face legătura cu pagina cu același nume. Astfel, dacă o persoană care nu este încă utilizator dorește să acceseze paginile site-ului web, aceasta va putea să se înregistreze.
LoggedIn Template: apare în momentul în care este logat unul din utilizatori. Această opțiune are următoarele efecte:
Dacă persoana logată este administrator, atunci va fi redirecționată către o pagină dedicată acestuia;
Dacă persoana logată este utilizator, atunci va fi delogată și se va impune autentificarea administratorului.
Un alt instrument folosit este LoginStatus Control. Scopul acestuia este de a detecta automat dacă un utilizator este logat. Returnează 2 rezultate: „Login” sau „Logout”, în caz particular fiind setat să afișeze „Logare”, respectiv „Delogare”.
LoginStatus acționează în 2 feluri:
Dacă nu există niciun utilizator logat, atunci apare opțiunea “Logare”;
Dacă există un utilizator logat, atunci rezultatul LoginStatus-ului este “Delogare”, iar prin selectarea acestuia, i se permite persoanei în cauză să se delogheze.
Ultimul LoginTool folosit este LoginName-ul, a cărui funcție principală este să afișeze numele utilizatorul logat în aplicație. . Locația acestuia este în stânga meniului “Opțiuni” din MasterPage și este însoțit de mențiunea ”Bine ai venit,”.
Figura 3.4.2. LoginName-ul în cele 3 ipostaze
În Figura 3.4.2, sunt prezentate cele 3 ipostaze în care poate apărea LoginName-ul, și anume când nu e niciun utilizator logat (punctul a)), când este logat administratorul (punctul b)) sau când este logat utilizatorul (punctul c)) .
3.5. Prima pagină
Prima pagină a acestei aplicații web se numește „A_FirstPage.aspx” și se regăsește în folder-ul „Pagini” al acesteia. A fost creată prin apăsarea butonului drept al mouse-ului pe folder-ul aminitit anterior și selectarea opțiunii „Add New Item”. Ulterior, s-a deschis fereastra cu lista tuturor paginilor ce pot fi inserate în acest web site, de unde a fost selectată varianta „Web Form”, limbajul folosit și anume Visual C# și numele noii pagini. De asemenea, s-a selectat și opțiunea „Select Master Page”, astfel încât să fie utilizat acel template de care am discutat în subcapitolul 3.1.
Figura 3.5.1. Crearea unei pagini în Microsoft Visual Web Developer
În Figura 3.5.1, se regăsește modalitatea în care trebuie să fi setate toate aspectele prezentate mai sus.
Un alt aspect important este modalitatea prin care o pagină capătă atributul de „principală”. Pașii ce trebuie urmați în vederea obținerii acestui lucru sunt următorii: în primul rând, se apasă click dreapta, folosind mouse-ul poziționat pe pagina în discuție, iar în al doilea rând, se selectează varianta „Set as Start Page”, exact ca în Figura 3.5.2.
Figura 3.5.2. Stabilirea paginii principale
Nu în ultimul rând, trebuie menționat că prima pagină a aplicației AMDO poate fi accesată oricând atât de către utilizator, cât și de către administrator, din meniul principal, selecând „Acasă”.
„A_FirstPage.aspx” reprezintă cea mai simplă pagină a aplicației, din punct de vedere structural, fiind compusă dintr-un Panel, o imagine și un tabel care adăpostește 3 paragrafe. Acestea se regăsesc în Toolbox.
Vom începe o trecere sumară în revistă a celor 3 elemente, oprindu-ne cu predilecție asupra rolului îndeplinit de acestea în pagina în cauză.
a. Panel-ul a fost folosit pentru a stabili încă de la început dimensiunile paginii. Întrucât a fost folosit un MasterPage, iar tot codul-sursă este notat între tag-urile <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">, respectiv </asp:Content>, ne dorim dimensiuni aproximativ egale între pagini, indiferent de elementele folosite în acesta. Așa că a fost adăugat acest Tool, căruia i s-a stabilit o înălțime de 300px și o lățime de 1080 px, permițând astfel o paginare eficientă și armonioasă.
b. Imaginea folosită are, de asemenea, un rol pur decorativ, în sensul că aceasta reprezintă titlul paginii în discuție.
c. Tabelul folosit demonstrează capacitatea acestui instrument de a controla elementele din cadrul acestei prime pagini, oferind astfel avantaje importante precum: claritate, posibilitate de comparare și sistematizare.
Acesta cuprinde 2 rânduri și o coloană, în care sunt notate 3 paragrafe privind aspectele generale ale aplicației. Fiecare mențiune a fost adăugată, prezentând-se o atenție sporită la așezarea în pagină.
Figura 3.5.3. Prima pagină a aplicației AMDO
3.6. Pagina de adăugarea a unui document
Pagina de adăugare a unui document se regăsește în folderul „Pagini” și poartă numele de „A_Adauga.aspx”. Are ca scop încărcarea în baza de date a fișierelor ce fac obiectul activității utilizatorului. Mai exact, prin intermendiul acesteia, documentele în discuție sunt salvate în aplicație, într-un folder special, numit „Documente” (aflat la rândul lui, în folderul „Pagini”), iar calea de acces la acestea, împreună cu toate celelalte detalii specificate de utilizator sunt salvată în baza de date SQL „Aplicatie_APMDIMO”, tabela „UploadDoc”.
Datele obligatoriu de introdus pentru un management corect al documentelor sunt: denumirea și tipul acestuia, clientul căruia îi aparține (se va nota doar ID-ul acestuia), data când înregistrarea nu va mai fi valabilă (data expirării) și clasificarea acțiunii întreprinse. Pentru o utilizare lipsită de disconfort, s-a pus la dispoziția utilizatorului posibilitatea de a obține datele necesare despre client, chiar din pagina în discuție.
Această pagină este compusă dintr-un tabel cu ajutorul căruia a fost alcătuit un formular. Structura acestuia este de 11 rânduri și 2 coloane. Pe prima coloană, este notată câte o caracteristică a documentului ce urmează a fi salvat, în total 6, iar pe ce-a de-a doua coloană sunt salvate mijloacele necesare înregistrării.
Astfel, fiecărei caracteristici necesare a fi completate i s-a adăugat un instrument din Toolbox. S-au utilizat:
a. TextBox-uri, în vederea introducerii următoarelor câmpuri în baza de date: „Denumire”, „ID Client” și „Descriere”. Printre proprietățile ce au fost modificate, se numără:
Height: 25px;
Width: 250px;
TextMode: SingleLine;
ForeColor: #02243C.
Trebuie menționat că TextBox-ul aferent adăugării unei descrieri a documentului (TextBox3) este setat ca având un TextMode de tip Multiline, astfel încât să permită înregistrarea unui volum mai însemnat de date.
Tot un TextBox (TextBox4) a fost utilizat și pentru a facilita introducerea CNP-ului clientului, în vederea obținerii ID-ului acestuia.
b. Label-uri, ce au capacitatea de a returna mesajele setate cu ajutorul limbajului C#. În pagina de adăugare a documentelor, s-au folosit 2 etichete:
Label1 – returnează un mesaj în care se confirmă sau infirmă încărcărea cu succes a documentului dorit;
Label2 – returnează ID-ul clientului, dacă a fost introdus un cod numeric potrivit.
c. RadioButtonList, cu 2 elemente pentru înregistrarea ultimei acțiuni întreprinse asupra documentului în cauză: „Adăugarea documentului” și „Completarea unui document deja existent”. Acesta permite selectarea unei singure variante, ce va fi ulterior introdusă în baza de date.
Pentru a se prelucra forma brută a acestui instrument, se selectează opțiunea „Edit Items…”, ce apare în momentul selectării săgeții ce atrage atenția asupra caracteristilor RadioButtonList-ului. Astfel, se deschide fereastra prezentată în Figura 3.6.1, unde se adaugă mențiunile dorite.
Figura 3.6.1. Editarea RadioButtonList-ului
d. DropDownList, ce reprezintă o listă derulantă din care utilizatorul poate alege tipul documentului ce va fi încărcat în baza de date. La fel ca și în cazul de mai sus, ne-am folosit de proprietățile sale pentru a adăuga câmpurile necesare (Figura 3.6.2).
Figura 3.6.2. Editarea DropDownList-ului
e. FileUpload, obligatoriu pentru orice pagină care presupune încărcarea unui document.
Poate cele mai importante componente ale acestei pagini sunt cele 2 butoane (Buttons). Cu ajutorul acestora, se execută comezile dorite și anume de returnare a ID-ului clientului (Button2) și de încărcare în baza de date a înregistrărilor (Button1). Pentru utilizarea acestora, este necesar un simplu „Drag-and-Drop” din ToolBox, însă imediat după ce se apasă de 2 ori consecutiv pe acestea, se deschide fișierul-cod („A_Adauga.aspx.cs”), unde au loc adevăratele modificări. Pentru a se studia codul ce determină acțiunile descrise mai sus, este necesară accesarea Anexei 1, de la finalul acestei lucrări.
După cum am menționat anterior, pagina de adăugarea a unui document poate fi împărțită în 2 fragmente, cel în care se caută informația dorită despre client, descrisă în Figura 3.6.3, și cel în care are loc salvarea unui document (Figura 3.6.4).
Figura 3.6.3. Partea superioară a paginii de încărcare
Figura 3.6.4. Partea inferioară a paginii de încărcare
3.7. Paginile de vizualizare a documentelor ținând cont de tipul acestora
În această categorie, intră 6 pagini, salvate în folderul „Pagini”, care au fost concepute după același mod de lucru. Pentru o trecere corectă în revistă a carcteristicilor acestora, vom alege pentru analiză pagina dedicată actelor de identitate, prima de altfel, din cele de mai jos:
”A_Acte_de_identitate.aspx”;
”A_Contracte-cadru de servicii bancare.aspx”;
”A_Contracte_de _economisire.aspx”;
”A_Contracte_de_creditare.aspx”;
”A_Colectie_de_documente.aspx”;
”A_Altele.aspx”.
Pagina „Acte de identitate” presupune vizualizarea tuturor documentelor de acest tip. Ulterior, acestea pot fi descărcate, modificate sau șterse. Toate aceste modificări vor fi contabilizate și în baza de date, pentru aceasta setându-se o conexiune cu aceasta. În continuare, vom trece în revistă aspectele structurale și funcționale ale acestei pagini.
Principala componentă a paginii de afișare a actelor de identitate este GridView-ul. Acest Data Control presupune afișarea înregistrărilor dintr-o bază de date, în caz particular de tip SQL, sub forma unui tabel. Pentru a fi posibil acest lucru, este necesară stabilirea sursei de unde provin aceste date, acțiune realizată tot cu ajutorul unui intrument de tip Data, numit SqlDataSource.
Adăugarea unui GridView în pagină a avut loc tot prin mult-folositul „Drag-and-Drop”. Forma originală a fost modificată prin selectarea stil deja salvat (opțiunea „Auto Format”), numit „Professional”. În acest mod, s-a stabilit design-ul acestuia.
Următorul aspect obligatoriu de parcurs este stabilirea sursei, ce a avut loc prin urmărirea următorilor pași:
1. Selectarea conexiunii cu baza de date dorite, în cazul de față se utilizează „Aplicatie APMDIMOConnectionString” (Figura 3.7.1, partea stângă);
2. Identificarea tabelei din baza de date, împreună cu coloanele ce se doresc a fi afișate (Figura 3.7.1, partea dreaptă)
Figura 3.7.1. Stabilierea conexiunii cu baza de date SQL Server Management (prima parte)
3. Selectarea opțiunii „WHERE…” din ecranul prezentat la pasul anterior și completarea cu condiția impusă afișajului: Tip = „Act de identitate” (Figura 3.7.2, partea stângă);
4. Selectarea opțiunii „Advanced….” de la punctul 2 și bifarea ambelor opțiuni (Figura 3.7.2, partea dreaptă). Astfel, se va permite inserarea, modificarea și ștergerea elementelor din baza de date direct din GridView.
Figura 3.7.2. Stabilierea conexiunii cu baza de date SQL Server Management (partea a II-a)
5. Finalizarea tuturor detaliilor și stabilirea sursei dorite (Figura 3.7.3)
Figura 3.7.3. Stabilierea conexiunii cu baza de date SQL Server Management (partea a II-a)
Următorul lucru pe ordine de zi este editarea coloanelor GridView-ului. Odată stabilită sursa, acesta va lua forma dorită, însă mai sunt necesare date suplimentare în vederea îndeplinirii tuturor task-urilor propuse.
Prima coloană ce va fi adăugată este „Șterge”. După cum îi spune și numele, scopul acesteia este de a elimina o înregistrare din baza de date. Modalitatea de adăugare a coloanei este simplă, în prisma faptului că ne este pusă la dispoziție de GridView și am menționat deja când am creat sursa faptul că se dorește această posibilitate (vezi Figura 3.7.2, partea dreaptă). Practic, se apasă butonul-săgeată a controlului amintit și se selectează „Enable Deleting”.
A doua coloană creată este reprezentată de un HyperLink, o legătură către o altă pagină (A_Modify.aspx) ce va permite modificarea datelor documentului (mai multe detalii în subcapitolul 3.8). Pentru a introduce un astfel de instrument într-un Data Control, este necesară adăugarea unui TemplateField, precum în Figura 3.7.4. Ulterior, se selectează „Edit Templates”, unde se adaugă HyperLink-ul amintit anterior. În ultima instanță, se identifică în zona proprietăților opțiunea NavigateUrl, unde se notează adresa „~/Pagini/A_Modify.aspx”.
Figura 3.7.4. Adăugarea unui TemplateField în GridView
Ultima coloană inserată în GridView este tot un TemplateField, doar că de data asta s-a utilizat un LinkButton Control, numit „Descarcă”. În spatele acestui buton, stă un fișier-cod care permite identificarea documentului respectiv prin prisma locației salvate în baza de date și descărcarea acestuia în calculator. Acest lucru este posibil, datorită următoarelor 2 aspecte:
A. Codul folosit pentru identificarea înregistrării dorite și realizarea celor menționate mai sus. Astfel, se identifică următoarele etape:
Adăugarea bibliotecilor corespunzătoare bazelor de date:
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
Declararea variabilelor id, filename, type, path, care vor sta la baza acestui proces:
string id = ((LinkButton)sender).CommandArgument;
string filename, type, path;
Identificarea conexiunii cu baza de date și accesarea acesteia:
string constr = ConfigurationManager.ConnectionStrings["Aplicatie APMDIMOConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
Colectarea din baza de date a datelor necesare:
cmd.CommandText = "Select Name, Path, Type from UploadDoc where ID_Document=@Id";
cmd.Parameters.AddWithValue("@Id", id);
cmd.Connection = con;
Citirea datelor și descărcarea acestora:
using (SqlDataReader sdr = cmd.ExecuteReader())
{
sdr.Read();
path = sdr["Path"].ToString();
type = sdr["Type"].ToString();
filename = sdr["Name"].ToString();
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = type;
Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename);
Response.TransmitFile(path);
Response.Flush();
Response.End();
}
B. Funcția „Eval”, utilizată pentru transforma o variabilă din biblioteca System.Web.UI într-o variabilă dinamică, cu alte cuvinte se setează o variabilă care va avea valoarea unui șir, permițând astfel descărcarea documentului în baza ID-ului. Pentru a fi posibil atunci lucru, se va nota în codul GridView-ului, în dreptul TemplateField-ului ce conține LinkButton-ul „Descarcă”, următoarea secvență:
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" Text="Descarcă"
onclick="LinkButton1_Click" CommandArgument='<%# Eval("ID_Document") %>'>
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
Nu în ultimul rând, trebuie menționată prezența unui Panel Control în pagină, în care a fost poziționat GridView-ul. Scopul acestuia este pur estetic. Dovada importanței acestuia din punct de vedere al design-ului îl reprezintă Figura 3.7.5.
Figura 3.7.5. Influența Panel-ului asupra aspectului aplicației
Analizân imaginea, descoperim că, în partea superioară a acesteia apare GridView-ul fără Panel. Se observă cum primul se extinde în afara granițelor impuse de aplicație, creând astfel un aspect dezechilibrat. Pe de altă parte, în partea inferioară, intervine influența Panel-ului. Fiind setate Scroll Bars de tip Horizontal, aspectul aplicației este necompromis.
Spuneam anterior că aceeași modalitate de lucru este folosită și pentru crearea paginilor ce afișează celelalte tipuri de documente. Aspectul ce va fi modificat este condiția impusă în momentul în care se creează sursa pentru GridView-urile respective. Astfel, în loc de Tip = „Act de identitate”, se va înlocui cu tipul de document urmărit.
Pagina care permite afișarea, descărcarea și intermediază drumul spre pagina de modificare a documentelor este prezentată în Figura 3.7.6.
Figura 3.7.6. Pagina „Acte de identitate”
3.8. Pagina de modificare a unui document
Orice înregistrare din baza de date are posibilitatea de a fi modificată, în vederea unei actualizări corecte, efectuate în timp real. Deși GridView Control-ul în care sunt afișate documentele pune la dispoziția utilizatorului posibilitatea de a updata acele înregistrări, s-a decis ca această operațiune să fie realizată cu ajutorului unui formular nou, situat pe pagina „A_Modify.aspx”. Motivul care a stat la baza acestei hotărâri este următorul: se dorește ca toate moficările aduse bazei de date să fie contabilizate într-o tabelă diferită, la care va avea acces doar administratorul (vezi subcapitolul 3…).
Pagina dedicată actualizării documentelor poate fi accesată doar din GridView-urile utilizate pentru vizualizarea acestora, legătura dintre pagini fiind realizată cu ajutorul unui HyperLink.
Pagina este alcătuită din 2 părți, cea unde se identifică documentul ce se dorește a fi modificat și partea în care are loc acest proces.
Pentru identificarea documentului s-au folosit următoarele instrumente:
Un TextBox Control, în care se introduce ID-ul documentului dorit;
Un Button Control, care prelucrează informația introdusă conform celor de mai sus. Astfel, se preiau datele documentului cu ID-ul respectiv din tabela UploadDoc și se afișează cu ajutorul următorului cod:
using (SqlDataReader read = xp.ExecuteReader())
{
while (read.Read())
{
Label1.Visible = true;
Label1.Text = (read["ID_Document"].ToString());
Label2.Visible = true;
Label2.Text = (read["ID_client"].ToString());
Label3.Visible = true;
Label3.Text = (read["Denumire"].ToString());
Label4.Visible = true;
Label4.Text = (read["Tip"].ToString());
Label5.Visible = true;
Label5.Text = (read["Data_crearii"].ToString());
Label6.Visible = true;
Label6.Text = (read["Creat_de"].ToString());
Label8.Visible = true;
Label8.Text = (read["Path"].ToString());
TextBox1.Visible = true;
TextBox1.Text = (read["Descriere"].ToString());
TextBox5.Visible = true;
TextBox5.Text = (read["Data_expirarii"].ToString());
}
}
În ceea ce privește modificarea datelor, se pornește de la detaliile deja introduse, dându-i posibilitatea utilizatorului de a conserva ceea ce a fost notat sau să schimbe total valoarea introdusă.
Salvarea eventualelor schimbări are loc prin apăsarea butonului „Modifică”. Suplimentar acestei operații, deține un rol activ în contabilizarea acestora, acela de a salva în tabela „EvidentaModif” toate modificările aduse unui document, indiferent de numărul sau data la care au fost efectuate. Pentru o exemplicare amănunțită a modalității prin care acest lucru a fost posibil, este necesară accesarea Anexei 2 a acestei lucrări.
Un exemplu elocvent, atât pentru structura, cât și pentru modul de funcționare al acestei pagini, se regăsește în Figura 3.7.7. Se observă că utilizatorul a căutat inițial documentul cu ID = 43, iar rezultatul căutării a fost completarea datelor valorile din tabela utilizată. Cânpurile ce pot fi modificate afișează valorile inițiale, însă rămâne la latitudinea utilizatorului să decidă care dintre acestea vor suferi modificări.
Figura 3.7.7. Pagina de modificare a unui document
3.9. Pagina de management a clienților
Fiecare document aparține unui client, de unde deducem că este obligatorie existența unui management al acestora. Portofoliu clienților poate fi vizualizat, îmbogățit și actualizat cu ajutorul paginii cu același nume.
În vederea realizării acțiunilor enumerate, s-au folosit 2 tipuri de Data Controls și anume, un GridView și un DetailsView.
GridView Control acționează după același principiu precum cel ce afișează documentele, descris în subcapitolul 3.7. Diferențele între cele 2 sunt:
În cazul de față, sursa conexiunii la baza de date are în vedere tabela „Clienti”;
S-au selectat opțiunile de modificare și de ștergere a înregistrărilor direct din acesta, fără a apela la o altă pagină;
Nu apar TemplateFields, coloanele GridView-ului corespunzând cu coloanele tabelei mai sus menționate.
În ceea ce privește DetailsView-ul, acesta are un rol major în adăugarea unui client în baza de date, folosind o metodă simplă, fără adaosuri de cod. Practic, se selectează LinkButton-ul „Înregistrare nouă” ce face parte din configurația Date Control-ului și se completează câmpurile respectiv cu datele solicitate. Se selectează „Adăugarea noii înregistrări” (Figura 3.9.1). Imediat ce se finalizează acest proces, rezultatul va apărea în lista clienților.
Figura 3.9.1. Adăugarea unui client nou
3.10. Pagina de vizualizare a documentelor în funcție de clientul ce le deține
Această pagină poartă numele de „A_DocPerClient.aspx” și se regăsește, de asemenea, în folder-ul „Pagini”. Pune la dispoziția utilizatorului toate elementele necesare trecerii în revistă atât a clienților, cât și a documentelor deținute.
Vizualizarea documentelor în funcție de clientul căruia le aparțin se bazează pe 3 acțiuni principale: căutarea clientului dorit, vizualizarea datelor despre acesta și afișarea tuturor documentelor ce îi aparțin.
Căutarea clientului se va realiza în baza codului numeric personal ce va fi trecut în TextBox Control. Ulterior, prin apăsarea butonului „Căutare”, vor avea loc 2 acțiuni:
Se va completa automat Label2 cu ID-ul clientului, cu ajutorul următorului bloc de cod:
using (SqlDataReader read = xp.ExecuteReader())
{
while (read.Read())
{
Label2.Visible = true;
Label2.Text = (read["ID_client"].ToString());
}
}
În baza ID-ului, se vor afișa datele despre client în DetailsView Control, cu alte cuvinte, cea de-a doua acțiune enumerată.
Ceea ce trebuie menționat este modalitate de conectare a acestui Data Control cu baza de date. Dacă până acum, toate conexiunile au fost realizate cu ajutorul unui SqlDataSource, de data aceasta,totul a fost realizat exclusiv cu ajutorul codului de mai jos. Astfel, în prima partea a acestuia, se stabilește conexiunea, ulterior se noteazî comanda de selectare a tuturor coloanelor din tabela „Client”, atât timp cât sunt introduse date în TextBox1, iar acestea corespund cu CNP-ul subiectului dorit. Imediat de se deschide conexiunea inițializată anterior, se realizează crearea sursei DetailsView-ului, adică îndeplinirea scopului propus. Ulterior, conexiunea se poate închide.
SqlConnection vid = new SqlConnection(@"Data Source=ANDREEA\SQLEXPRESS;Initial Catalog=Aplicatie APMDIMO;Integrated Security=True");
protected void Button1_Click(object sender, EventArgs e)
{
string str = "Select * from Client where (CNP like '%' + @search + '%') ";
SqlCommand xp = new SqlCommand(str, vid);
xp.Parameters.Add("@search", SqlDbType.NVarChar).Value = TextBox1.Text;
vid.Open();
xp.ExecuteNonQuery();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = xp;
DataSet ds = new DataSet();
da.Fill(ds, "CNP");
DetailsView1.DataSource = ds;
DetailsView1.DataBind();
vid.Close();
}
Ultimul aspect ce trebuie analizat este afișarea documentelor ce aparțin clientului identificat mai sus. Afirmam anterior că aceasta se va realiza cu ajutorul unui GridView. Principiul de creare al acestuia rămâne neschimbat cu cel prezentat la subcapitolul 3.7, diferențele fiind următoarele:
Căutarea documentului se va realiza după ID-ul clientului, afișat în Label2, nu după tipul acestuia
Va exista doar o singură coloană suplimentară și anume, cea de modificarea a înregistrărilor;
Nu va exista posibilitatea de ștergere sau de descărcare a documentului de pe această pagină.
Figura 3.10.1. Pagina de vizualizare a documentelor
Rezultatul final al celor de mai sus se poate observa în Figura 3.10.1, în care apare interfața paginii de vizualiza a documentelor ce aparțin clientului cu ID=101 și CNP=123456 (datele sunt pur orientative, folosite exclusiv strict în mediul de test).
3.11. Pagina de contact
Aplicația AMDO presupune o pagină care vine în ajutorul utilizatorului pentru orice tip de problemă întâmpinată. De la o sugestie de îmbunătățire a acesteia până la solicitarea de suport în utilizarea aplicației, toate pot fi transmise la adresa de e-mail dedicată, astfel încât să poată întra în atenția administratorului.
Pagina de contact este alcătuită din 2 iframe-uri, adică din 2 cadre interne ce definesc 2 arii rectangulare în interiorul paginii, locații în care vor fi afișate alte pagini web diferite.
Practic, pagina prezentă, numită „A_Contact.aspx”, are în componența ei 2 alte pagini: „A_ContactP1.aspx” și „A_ContactP2.aspx”. Legătura ultimelor cu prima are loc prin următorul cod, introdus în codul-sursă al paginii principale:
<iframe src="A_ContactP1.aspx" width="100%" align="middle" frameborder="0"
height="600px" scrolling="auto"></iframe><br />
<iframe src="A_ContactP2.aspx" width="100%" align="middle" frameborder="0"
height="770px"></iframe>
a. „A_ContactP1.aspx” reprezintă formularul de suport. Dacă un utilizator întâmpină vreo eroare în ceea ce privește utilizarea aplicației, atunci are posibilitea să transmită spre verificări. Tot ce trebuie să facă este să completeze câmpurile cu toate detaliile necesare și, obligatoriu, să atașeze o captură de ecran.
Figura 3.11.1. Formularul de suport
b. „A_ContactP2.aspx” este utilizat pentru depunerea unei sesizări sau transmiterea unei sugestii de îmbunătățire a aplicației. Toate câmpurile sunt completate, iar datele sunt transmise mai departe, la adresa menționată în codul-sursă. Figura 3.11.2 relevă interfața acestui cadru din pagina de contact.
Figura 3.11.2. Formularul de sugestii și sesizări
Modalitatea de realizare a acestor formulare corespunde, în ceea ce privește componența cu pagina de adăugare a unui document, în sensul că s-au utilizat Label, TextBox Controls, Button Controls (care au determinat acțiunea dorită) și, în cazul primului cadru, un FileUpload Control pentru atașarea documentului dorit. Codul din spatele butoanelor diferă însă, deoarece se adaugă detalii suplimentare care permit transmiterea unui e-mail direct din aplicația web. Astfel, componentele standard ale unui e-mail (From:, To:, CC:, Subiect:, Mesaj:) se completează cu ajutorul codului de mai jos:
MailMessage msg = new MailMessage();
msg.From = new MailAddress(txtSuportMail.Text);
msg.To.Add("[anonimizat]");
msg.Subject = RadioButtonList1.Text;
msg.Body = "<br><b> Tip Solicitare: </b>" + RadioButtonList1.Text + "<br><b> Nume: </b>" + txtSuportNume.Text + "<br><b> Adresă de e-mail: </b>" + txtSuportMail.Text + "<br><b> Subiect: </b>" + txtSuportSubiect.Text + "<br><b> Detalii: </b>" + txtSuportDetalii.Text + "<br><b> Detaliile suplimentare se regăsesc în documentul atașat. </b>";
msg.IsBodyHtml = true;
Transmiterea datelor se va face către o adresă de e-mail, setată automat în aplicație: [anonimizat], iar codul ce face posibil acest lucru este:
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.mail.yahoo.com";
smtp.Credentials = new NetworkCredential(txtSuportMail.Text, txtSuportParola.Text);
Pentru o explificare a celor menționate mai sus, a fost atașată Anexa 3, în care este descris intregul bloc de cod pentru acest formular, cât și o figură unde este prezentat, în partea de sus, e-mailul compus în aplicație, iar în partea de jos, e-mailul primit la adresa menționată.
concluzie
Aplicația de management al documentelor în mediul online, numită de-a lungul lucrării AMDO propune o modalitate eficientă de culegere, memorare și prelucrare a unui volum de informații, sub forma de imagini și documente de orice format, într-un timp scurt și utilizând mijloace puține, satisfăcând astfel nevoia de business a utilizatorilor săi.
Anexa 1
Cuprinde codul utilizat pentru căutarea unui client în baza codului numeric personal și încărcarea unui document ce îi aparține:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Configuration;
public partial class Pagini_A_Adauga : System.Web.UI.Page
{
SqlConnection con = new SqlConnection(@"Data Source=ANDREEA\SQLEXPRESS;Initial Catalog=Aplicatie APMDIMO;Integrated Security=True");
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
try
{
string filename = Path.GetFileName(FileUpload1.PostedFile.FileName);
string filetype = FileUpload1.PostedFile.ContentType;
string str = FileUpload1.FileName;
FileUpload1.PostedFile.SaveAs(Server.MapPath(".") + "//Documente//" + str);
string path = "~//Pagini/Documente//" + str.ToString();
con.Open();
SqlCommand cmd = new SqlCommand("Insert into UploadDoc (Name, type, Denumire, ID_client, Tip, Data_crearii, Data_expirarii, Descriere, Creat_de, Actiune, Path) values(@Name, @Type, @Denumire, @ID_Client, @Tip, @Data_crearii, @Data_expirarii, @Descriere, @Creat_de, @Actiune, @Path)", con);
cmd.Parameters.AddWithValue("@Name", filename);
cmd.Parameters.AddWithValue("@Type", filetype);
cmd.Parameters.AddWithValue("@Actiune", RadioButtonList1.Text);
cmd.Parameters.AddWithValue("@Denumire", TextBox1.Text);
cmd.Parameters.AddWithValue("@ID_client", TextBox5.Text);
cmd.Parameters.AddWithValue("@Tip", DropDownList1.Text);
cmd.Parameters.AddWithValue("@Data_crearii", DateTime.Now);
cmd.Parameters.AddWithValue("@Data_expirarii", Calendar2.SelectedDate);
cmd.Parameters.AddWithValue("@Descriere", TextBox3.Text);
cmd.Parameters.AddWithValue("@Creat_de", User.Identity.Name);
cmd.Parameters.AddWithValue("@Path", path);
cmd.ExecuteNonQuery();
con.Close();
Label1.Visible = true;
Label1.Text = "Documentul a fost salvat cu succes!";
con.Open();
SqlCommand cmd2 = new SqlCommand("Insert into EvidentaModif ( ID_client, Denumire, Tip, Data_crearii, Data_expirarii, Descriere, Creat_de, Actiune, Path) values ( @ID_client, @Denumire, @Tip, @Data_crearii, @Data_expirarii, @Descriere, @Creat_de, @Actiune, @Path)", con);
cmd2.Parameters.AddWithValue("@ID_client", TextBox5.Text);
cmd2.Parameters.AddWithValue("@Denumire", TextBox1.Text);
cmd2.Parameters.AddWithValue("@Tip", DropDownList1.Text);
cmd2.Parameters.AddWithValue("@Data_crearii", DateTime.Now);
cmd2.Parameters.AddWithValue("@Data_expirarii", Calendar2.SelectedDate);
cmd2.Parameters.AddWithValue("@Descriere", TextBox3.Text);
cmd2.Parameters.AddWithValue("@Creat_de", User.Identity.Name);
cmd2.Parameters.AddWithValue("@Actiune", RadioButtonList1.Text);
cmd2.Parameters.AddWithValue("@Path", path);
cmd2.ExecuteNonQuery();
con.Close();
}
catch
{
Label1.ForeColor = System.Drawing.Color.Red;
Label1.Text = "Incarcare fara succes… Vă rugăm să reîncercați!";
}
}
else
{
Label1.Text = "Documentul nu a fost salvat! Vă rugăm să verificați corectitudinea datelor introduse.";
}
}
protected void Button2_Click(object sender, EventArgs e)
{
string str = "Select * from Client where (CNP like '%' + @search + '%') ";
SqlCommand xp = new SqlCommand(str, con);
xp.Parameters.Add("@search", SqlDbType.NVarChar).Value = TextBox4.Text;
con.Open();
xp.ExecuteNonQuery();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = xp;
DataSet ds = new DataSet();
da.Fill(ds, "CNP");
using (SqlDataReader read = xp.ExecuteReader())
{
while (read.Read())
{
Label2.Visible = true;
Label2.Text = (read["ID_client"].ToString());
}
}
con.Close();
}
}
Anexa 2
Prezintă modalitatea prin care un document poate fi actulizat și, in egală măsură, înregistrează într-o tabelă distinctă, numită „EvidentaModif” această înregistrare.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Configuration;
public partial class Pagini_A_Modify : System.Web.UI.Page
{
SqlConnection con = new SqlConnection(@"Data Source=ANDREEA\SQLEXPRESS;Initial Catalog=Aplicatie APMDIMO;Integrated Security=True");
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlDataAdapter ada = new SqlDataAdapter("Update UploadDoc set Data_expirarii= '" + TextBox5.Text + "', Actiune= '" + RadioButtonList1.Text + "', Data_modif = '" + DateTime.Now + "', User_modif = '" + User.Identity.Name + "', Descriere = '" + TextBox1.Text + "' where ID_Document = '" + TextBox4.Text + "'", con);
DataSet ds = new DataSet();
ada.Fill(ds);
Label7.Visible = true;
Label7.Text = "Documentul a fost modificat cu succes salvat!";
con.Open();
SqlCommand cmd = new SqlCommand("Insert into EvidentaModif (ID_Document, ID_client, Denumire, Tip, Data_crearii, Data_expirarii, Descriere, Creat_de, Actiune, Data_modif, User_modif, Path) values (@ID_Document, @ID_client, @Denumire, @Tip, @Data_crearii, @Data_expirarii, @Descriere, @Creat_de, @Actiune, @Data_modif, @User_modif, @Path)", con);
cmd.Parameters.AddWithValue("@ID_Document", Label1.Text);
cmd.Parameters.AddWithValue("@ID_client", Label2.Text);
cmd.Parameters.AddWithValue("@Denumire", Label3.Text);
cmd.Parameters.AddWithValue("@Tip", Label4.Text);
cmd.Parameters.AddWithValue("@Data_crearii", Label5.Text);
cmd.Parameters.AddWithValue("@Data_expirarii", TextBox5.Text);
cmd.Parameters.AddWithValue("@Descriere", TextBox1.Text);
cmd.Parameters.AddWithValue("@Creat_de", Label6.Text);
cmd.Parameters.AddWithValue("@Actiune", RadioButtonList1.Text);
cmd.Parameters.AddWithValue("@Data_modif", DateTime.Now);
cmd.Parameters.AddWithValue("@User_modif", User.Identity.Name);
cmd.Parameters.AddWithValue("@Path", Label8.Text);
cmd.ExecuteNonQuery();
con.Close();
}
protected void Button2_Click(object sender, EventArgs e)
{
string str = "Select * from UploadDoc where (ID_Document like '%' + @search + '%') ";
SqlCommand xp = new SqlCommand(str, con);
xp.Parameters.Add("@search", SqlDbType.NVarChar).Value = TextBox4.Text;
con.Open();
xp.ExecuteNonQuery();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = xp;
DataSet ds = new DataSet();
da.Fill(ds, "ID_Document");
using (SqlDataReader read = xp.ExecuteReader())
{
while (read.Read())
{
Label1.Visible = true;
Label1.Text = (read["ID_Document"].ToString());
Label2.Visible = true;
Label2.Text = (read["ID_client"].ToString());
Label3.Visible = true;
Label3.Text = (read["Denumire"].ToString());
Label4.Visible = true;
Label4.Text = (read["Tip"].ToString());
Label5.Visible = true;
Label5.Text = (read["Data_crearii"].ToString());
Label6.Visible = true;
Label6.Text = (read["Creat_de"].ToString());
Label8.Visible = true;
Label8.Text = (read["Path"].ToString());
TextBox1.Visible = true;
TextBox1.Text = (read["Descriere"].ToString());
TextBox5.Visible = true;
TextBox5.Text = (read["Data_expirarii"].ToString());
}
}
Anexa 3
Prezintă modul prin care este transmis un formular de suport, plus o imagine în care este prezentat, în partea de sus, e-mailul compus în aplicație, iar în partea de jos, e-mailul primit la adresa menționată.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.Net.Mail;
public partial class Pagini_A_ContactP1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSuportSent_Click(object sender, EventArgs e)
{
MailMessage msg = new MailMessage();
msg.From = new MailAddress(txtSuportMail.Text);
msg.To.Add("[anonimizat]");
msg.Subject = RadioButtonList1.Text;
msg.Body = "<br><b> Tip Solicitare: </b>" + RadioButtonList1.Text + "<br><b> Nume: </b>" + txtSuportNume.Text + "<br><b> Adresă de e-mail: </b>" + txtSuportMail.Text + "<br><b> Subiect: </b>" + txtSuportSubiect.Text + "<br><b> Detalii: </b>" + txtSuportDetalii.Text + "<br><b> Detaliile suplimentare se regăsesc în documentul atașat. </b>";
msg.IsBodyHtml = true;
if (FileUpload1.HasFile)
{
msg.Attachments.Add(new Attachment(FileUpload1.PostedFile.InputStream, FileUpload1.FileName));
}
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.mail.yahoo.com";
smtp.Credentials = new NetworkCredential(txtSuportMail.Text, txtSuportParola.Text);
lblSuportRezultat.Visible = true;
smtp.EnableSsl = true;
try
{
smtp.Send(msg);
lblSuportRezultat.Text = "Solicitarea dumnevoastră a fost luată în considerare și veți primi un răspuns în maxim 24 de ore. Vă mulțumim!";
}
catch (Exception ex)
{
lblSuportRezultat.Text = ex.Message;
}
}
}
Figura A.1. Rezultatul final al completării unui formular de suport
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: Aplicatie de Management de Documente In Mediul Onlinedocx (ID: 109926)
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.
