Documente Academic
Documente Profesional
Documente Cultură
LUCRARE DE LICEN
DEZVOLTAREA UNUI SISTEM INFORMATIC DE CONTACT CENTER
BUCURETI - 2010 -
CUPRINS
INTRODUCERE ........................................................................................ 4 Capitolul 1. Descrierea problemei economice ........................................ 6
1.1. Prezentarea companiei ING Asigurri de Via...................................... 6 1.2. Compartimentele companiei .............................................................. 8 1.3. Activitile firmei............................................................................. 10 1.4. Prezentarea activitii care va fi informatizat ..................................... 11 Capitolul 2. Tehnologii informatice utilizate ........................................ 14
2.1. Programare orientat pe obiecte ....................................................... 14 2.1.1. Introducere n .NET ................................................................... 14 2.1.2. Arhitectura .NET Framework ....................................................... 15 2.1.3. De ce am alege .NET? ................................................................ 16 2.2. Introducere n limbajul C# ............................................................... 16 2.3. Introducere n limbajul SQL .............................................................. 17 2.4. SQL Server 2008 - inovaii n domeniul securitate ............................... 17 2.5. Accesarea i prelucrarea datelor cu ajutorul obiectelor ADO.NET........... 20 2.5.1. Arhitectura ADO.NET ................................................................. 21 2.5.2. Furnizori de date (Data Providers) ............................................... 22 2.5.3. Conectare................................................................................. 22 2.5.4. Accesul direct la date prin intermediul ADO.NET ............................ 23 2.6. Modelul client - server ..................................................................... 24 2.6.1. Prezentarea arhitecturii .............................................................. 24 2.6.2. Utilizarea socket-urilor pentru comunicarea n timp real .................. 26 Capitolul 3. Analiza i proiectarea sistemului informatic ..................... 28
3.1. Specificarea cerinelor sistemului informatic ....................................... 28 3.2. Analiza sistemului existent ............................................................... 29 3.2.1. Identificarea entitilor i a caracteristicilor acestora ...................... 30
Dezvoltarea unui sistem informatic de Contact Center 3.2.2. Identificarea procedurilor necesare .............................................. 32 3.3. Proiectarea noului sistem: ................................................................ 33 3.3.1. Proiectarea schemelor bazei de date. ........................................... 33 Capitolul 4. Realizarea aplicaiei informatice....................................... 38
4.1. Implementarea aplicaiei .................................................................. 38 4.1.1. Aplicaia operatorului ................................................................ 38 4.1.2. Aplicaia dispecerului ................................................................. 43 4.1.3. Serverul ................................................................................... 43 4.2. Prezentarea aplicaiei ...................................................................... 44 4.2.1. Aplicaia operatorului ................................................................. 44 4.2.2. Aplicaia de la Dispecerat ........................................................... 53 4.2.3. Serverul ................................................................................... 57 CONCLUZII ........................................................................................... 61 BIBLIOGRAFIE ...................................................................................... 62 ANEXE ................................................................................................... 63
INTRODUCERE
Denumirea generic de Call Center sau Contact Center creeaz de multe ori confuzii. Uzual, denumirea este folosit pentru a indica serviciile pe care o companie le furnizeaz clienilor si i anume acelea de preluare - i soluionare/distribuire apeluri n numele lor (proces denumit generic INBOUND) i iniializare apeluri n numele clienilor (proces denumit generic OUTBOUND). Ca s existe o imagine generic, lum ca exemplu o sal mare cu zeci sau chiar sute de persoane cu cti pe cap i calculator n fa care nu fac altceva dect s vorbeasc la telefon. Funcional, un Call Center se compune dintr-un sistem telefonic interconectat la o aplicaie software ce permite 2 funcii importante: rutarea inteligent a apelurilor (dac ar fi s enumerm numai cteva: redirecionarea apelurilor ctre grupuri de ageni n funcie de disponibilitate, de nivelul lor de pricepere, gradul de ncrcare, etc.) i mai ales generarea de STATISTICI. De ce sunt att de importante statisticile? Pentru c pe baza lor se genereaz rapoarte de activitate pentru toi agenii i pe baz crora se identific, de exemplu, dac o campanie de OUTBOUND comandat de un client, care dorete s vnd un produs prin acest serviciu, i-a atins inta sau nu. Aadar mecanismele unui Call Center sunt foarte complexe i pot fi modificate n funcie de anumite cerine specifice. Un alt exemplu, ar fi posibilitatea integrrii cu aplicaii software care permit interaciunea agenilor cu clienii prin e-mail sau portaluri web. Aplicaia realizat poate fi utilizat ntr-un Call Center pentru: Stocarea informaiilor despre clieni; Stocarea informaiilor oferite fiecrui client despre produsele companiei ING Asigurri de Via; Generarea de mesaje alert ctre beneficiar n anumite situaii; Gestiunea alertelor legate de solicitrile clienilor; Raportri periodice despre situaia apelurilor efectuate de clieni; Raportri periodice despre informaiile stocate n baza de date: studii de marketing i alte analize.
Prima tehnologie folosit este .NET care este un cadru (Framework) de dezvoltare software unitar ce permite realizarea, distribuirea i rularea aplicaiilor desktop Windows i aplicaiilor WEB. Tehnologia .NET pune laolalt mai multe tehnologii (ASP, XML, OOP, SOAP, WDSL, UDDI) i limbaje de programare (VB, C++, C#, J#) asigurnd, totodat, att portabilitatea codului compilat ntre diferite calculatoare cu sistem Windows, ct i reutilizarea codului n programe, indiferent de limbajul de programare utilizat. Aplicaia realizat are nevoie de un sistem complet de gestionare a bazelor de date (RDBMS) pentru care am folosit SQL Server 2008, care s asigure gestionarea infrastructurii, performan i fiabilitate. Un astfel de sistem poate furniza date pentru mai muli utilizatori simultan, elimin datele incorecte i poate executa la un moment dat un grup de comenzi care sunt vzute ca o singur unitate. Pentru conexiunea la baza de date, accesarea i prelucrarea datelor am folosit ADO.NET (ActiveX Data Objects) care reprezint o parte component a nucleului .NET Framework ce permite conectarea la surse de date diverse, extragerea, manipularea i actualizarea datelor..
ING Asigurri de Via este parte integrant a Grupului ING, cel mai mare grup financiar olandez i una dintre primele zece instituii financiare din lume. nfiinat n ianuarie 1997, sub numele de Nederlanden Asigurri de Via Romnia, compania i-a nceput activitatea cu cinci agenii i un numr de 200 de consultani. Apariia Nederlanden Asigurri de Via reprezint consecina fireasc a unui amplu proces de evaluare a pieei financiare romneti, realizat de grupul ING. La acea dat, primul pas al dezvoltrii Grupului ING n Romnia fusese deja realizat, prin lansarea n 1994 a ING BANK, prima banc strin care a intrat n Romnia. n anul 1999 ING Nederlanden devine lider pe piaa romneasc a asigurrilor de via, poziie pe care o deine i n prezent. n anul 2001, ca o consecin a procesului global de schimbare a numelui, multe companii independente naionale i internaionale, membre ala Grupului, i-au adugat la denumirea lor oficial particula ING. Acelai lucru s-a ntmplat i cu Nederlanden Asigurri de Via. n Romnia procesul s-a ncheiat n 2004 cnd s-a renunat la denumirea de NEDERLANDEN i numele companiei a devenit: ING ASIGURRI DE VIA. ING Asigurri de Via este cea mai puternic capitalizat companie de pe piaa asigurrilor, ocupnd primul loc i din punctul de vedere al atragerii de noi clieni. ING Asigurri de Via ofer clienilor si persoane fizice i companii - produse i servicii de asigurri la cele mai nalte standarde de calitate i profesionalism, n conformitate cu exigenele stabilite la nivelul grupului ING, pe baza bunei cunoateri a pieei locale, precum i a tradiiei i forei sale financiare internaionale. Activitatea n domeniul asigurrilor n Romnia nseamn n acest moment: 14 tipuri de asigurri de via pentru persoane fizice i 9 tipuri de asigurri de grup pentru persoane juridice prima societate de asigurri care a introdus n Romnia produse de tip Unit Liked (1998) prima instituie financiar care a lansat asigurri de via cu component de pensie (2002) primul asigurtor romn care ofer clienilor accesul la polie att on-line (Partener on-line), ct i prin intermediul Serviciului Vocal Interactiv
10
Divizia CONTACT CENTER a devenit o parte din departamentul Operaiuni n martie 2005, ca urmare a realocrii activitilor care fuseser anterior gestionate de ctre departamentul Direct Channels. Aceasta este o echip dinamic responsabil cu formularea complet i corect a feedback-ului, soluionarea i oferirea de consultan agenilor de asigurare i cererilor clienilor, fie prin telefon, fax, e-mail i coresponden scris sau chiar ntlniri personale. Specialitii CONTACT CENTER coopereaz cu departamente specializate pentru a oferi soluia optim pentru nevoile clientului. Ei sporesc loialitatea clienilor prin abiliti excelente de comunicare i atitudine pozitiv. Exist dou categorii de contacte n aceast divizie, n funcie de direcia contactului: Inbound: Clienii i consultanii contacteaz sediul central. Outbound: persoanele din sediul central contacteaz clienii. 11
Echipa Inbound Activiti principale Activiti legate de apelarea telefonic toate apelurile primite de la clieni folosind servicii diverse: Overdue SMS Line clienii primesc memento-uri prin intermediul acestui canal i apeleaz serviciul sunt informai cu privire la plile datorate, sumele rmase disponibile i modalitile de contactare a consultanilor ING. Info Sales Force InfoCAV - consultanii au acces la informaii automatizate cu privire la contractele de asigurare din portofoliul su (starea de plat, statusul contractului, urmtoarea dat aniversar, valoarea de rscumprare, ultima rscumprare parial, suma maxim disponibil pentru rscumprare parial), precum i informaii generale (preurile unit-urilor ING, rata de schimb BNR, etc.); n funcie de fiecare situaie i n conformitate cu procedurile operatorii pot solicita sprijin de la alte departamente, cum ar fi Investigaii & Reclamaii, Claims, Policy Services sau Underwriting. My'Line - clientul are acces la informaii automatizate cu privire la contractele sale de asigurare (starea de plat, statusul contractului, urmtoarea dat aniversar, valoarea de rscumprare, ultima rscumprare parial, suma maxim disponibil pentru rscumprarea parial), precum i informaii bancare sau generale (preurile uniturilor ING, rata de schimb BNR etc.). Campaign Line -- linie gratuit n sprijinul campaniilor de marketing, oferind informaii despre produsele de asigurare ING potenialilor clieni. Rspunsuri n scris la cererea clienilor ( prin pot sau adresa de e-mail) - a devenit o parte foarte important a activitii Customer Services: Diferite tipuri de cereri de la clieni sau de la oameni care sunt interesai de produsele i serviciile companiei primesc un rspuns adecvat de la specialitii / operatorii Customer Services. Operatorii i specialitii furnizeaz declaraii de plat, dovezi istorice ale contului / contractului pentru a face informaiile nelese clar de ctre clieni i consultani. Specialitii de la Customer Services pot solicita sprijin din partea departamentelor Juridic, Financiar sau primite de la clieni. Clienii pot primi de asemenea prin e-mail informaii generale cu privire la produse i pot trimite, de asemenea, informaii cu privire la modificrile datelor cu caracter personal ale acestora. Specialitii / operatorii pot apela, de asemenea, clientul pentru identificare, confirmare sau pentru a obine alte informaii. 12 Investigaii & Sesizri cu privire la problemele complexe
Echipa Outbound - principalele activiti Activiti telefonice - includ toate contactele telefonice iniiate de operatori. Apelurile cele mai importante sunt: Apel pentru clienii noi ING Asigurri: aceste apeluri sunt iniiate de ctre operatori tuturor clienilor care au frecven de plat lunar sau trimestrial (trei apeluri nainte de ieirea din baza de date). Operatorii contacteaz proprietarii acestor contracte doar ca s-i felicite pentru noul lor contract i s identifice orice problem care poate a avut loc n vnzarea de noi contracte. Ei amintesc pe scurt clienilor avantajele, drepturile i obligaiile n ceea ce privete noile politici de asigurare. Acetia promoveaz, de asemenea, imaginea ING i servicii noi. Apeluri de ntiinare privind depirea scadenei n cazul polielor de asigurare girate n favoarea instituiilor financiare, precum bncile: Dup de 30 de zile ntrziere, operatorii contacteaz clienii pentru a le reaminti despre termenul limit i s i informeze de obligaia companiei de a notifica banca printr-o scrisoare, despre orice ntrziere de plat. Apeluri de felicitare aniversare pentru beneficiarii produsului Debut 18: operatorii contacteaz proprietarii de contract, pentru a-i felicita (n legtura cu ziua de natere a beneficiarului) i s le mulumeasc pentru ncrederea investit n ING. SMS-uri de depire a scadenei: trimise pentru a informa clienii data scadenei primei de asigurare. Acesta este trimis n cazul n care clientul ajunge la o restan de 15 zile. Alte apeluri: echipa outbound poate, de asemenea, s iniieze apeluri telefonice, n scopul de a identifica un client, pentru a verifica o adres de coresponden ori de cte ori un mail se ntoarce la sediul central, s informeze clientul cu privire la modificrile operate de ctre echipa outbound, sau pentru a solicita permisiunea pentru efectuarea unor modificri la contract.
13
14
.NET Framework Componenta .NET Framework st la baza tehnologiei .NET, este ultima interfa ntre aplicaiile .NET i sistemul de operare i actualmente conine: Limbajele C#, VB.NET, C++ i J#. Pentru a fi integrate n platforma .NET, toate aceste limbaje respect nite specificaii OOP numite Common Type System (CTS). Ele au ca elemente de baz: clase, interfee, delegri, tipuri valoare i referin, iar ca mecanisme: motenire, polimorfism i tratarea excepiilor. Platforma comun de executare a programelor numit Common Language Runtime (CLR), utilizat de toate cele 4 limbaje. CTS face parte din CLR. Ansamblul de biblioteci necesare n realizarea aplicaiilor desktop sau Web, numit Framework Class Library (FCL).
Figura 2.1 Arhitectura .NET Framework Un program scris ntr-unul dintre limbajele .NET conform Common Language Specification (CLS) este compilat n Microsoft Intermediate Language (MSIL sau IL). Codul astfel obinut are extensia "exe", dar nu este direct executabil, ci respect formatul unic MSIL. 15
CLR include o main virtual asemntoare cu o main Java, ce execut instruciunile IL rezultate n urma compilrii. Maina folosete un compilator special JIT (Just n Time). Compilatorul JIT analizeaz codul IL corespunztor apelului unei metode i produce codul main adecvat i eficient. El recunoate secvenele de cod pentru care s-a obinut deja codul main adecvat, permind reutilizarea acestuia fr recompilare, ceea ce face ca, pe parcursul rulrii, aplicaiile .NET s fie din ce n ce mai rapide. Faptul c programul IL produs de diferitele limbaje este foarte asemntor are ca rezultat interoperabilitatea ntre aceste limbaje. Astfel, clasele i obiectele create ntr-un limbaj specific .NET pot fi utilizate cu succes n altul.
ctre funcii). Unele funciuni (cum ar fi accesul direct la memorie folosind pointeri) au fost pstrate, dar secvenele de cod corespunztoare se consider nesigure. C# suport interfeele n conjuncie cu .NET Common Language Runtime (CLR), garbage collection, care este considerat necesar de unii pentru un limbaj orientat obiect. De asemenea suport noiunea de indeci, care n termeni simpli permite manipularea obiectelor ca masive sau delegai. Framework-ul .NET suport aplicaii tip consol, interfee grafice utilizator (GUI graphical user interface), aplicaii (Windows Forms), aplicaii browser-based (Web - Forms i ASP.NET) i servicii Web.
Patrick Dalton - Microsoft SQL Server Black Book, Editura The Coriolis Group, 1997, pag. 177
17
SQL Server 2008 - un server mai sigur Cteva din func ionalit ile importante introduse de SQL Server 2008 sunt: PolicyBased Configuration of Surface Area (configurarea bazat pe politici a suprafe ei expuse), Extensible Key Management (management extensibil a cheilor de criptare), Transparent Data Encryption (Criptare/Decriptare transparent a datelor), SQL Server Audit (auditare pentru toate evenimentele)2. Policy-Based Configuration of Surface Area Utilitarul Surface Area Configuration a fost nlocuit n SQL Server 2008 de PolicyBased Management (Managementul Bazat pe Politici). Managementul Bazat pe Politici propune o nou abordare pentru configurarea i gestionarea SQL Server - folosirea politicilor. Principalul avantaj al folosirii politicilor n locul scripturilor este o administrare mult mai eficient i implicit reducerea TCO (Total Cost of Ownership). Printre opera iile de configurarea setrilor pentru una sau mai multe baze de date (pe unul sau mai multe servere) aplicarea automat sau la cerere a unei politici verificarea configurrii unuia sau a mai multor servere impunerea unei conven ii de nume pentru obiectele unei baze de date notificarea n cazul nclcrii unei politici automatizarea la nivel de linie de comand folosind integrarea cu PowerShell management suportate de noua func ionalitate pot fi enumerate urmtoarele:
Transparent Data Encryption (TDE) Transparent Data Encryption (Criptarea Transparent a Datelor) permite criptarea i decriptarea unei baze de date fr a necesita modificarea aplica iilor client. Scopul principal al TDE este prevenirea scenariilor n care date confiden iale sunt ob inute prin copierea neautorizata a fi ierelor unei baze de date sau prin furtul direct al mediilor de stocare (benzi de backup sau discuri fizice). ncercarea de a folosi datele confiden iale prin ata area
2
http://www.microsoft.com/romania/technet/articole/sql2008_securitate.mspx, SQL Server 2008 - inovaii n domeniul securitate, Cristian Lefter, 2008
18
fi ierelor bazei de date sau ncercarea unei opera iuni de restaurare pe alt server este prevenit prin criptarea datelor. Arhitectural, criptarea este realizat la nivelul unei pagini (structur de stocare de baz avnd dimensiunea 8K). La scrierea pe disc datele sunt criptate iar la citirea datelor se realizeaz decriptarea. Criptarea se face pe baza unui nou tip de cheie (Database Encryption Key - DEK ) protejat de un certificat stocat n baza de date master a serverului.
Figura 2.2. Transparent Data Encryption (TDE) Avantajul principal al TDE ca metod fa de criptarea la nivel de coloan introdus de SQL Server 2005 este abilitatea de a efectua interogri de tip fuzzy sau range. Pe de alt parte func ionalitatea TDE nu este conceput pentru a nlocui criptarea la nivel de coloana, metod care ofer o granularitate mai fin. De exemplu dac doar coloana CreditCardNumber a unei tabele Clien i con ine date confiden iale, criptarea datelor la nivel de coloan este net superioar din punct de vedere al performan ei comparativ cu TDE. Folosirea TDE determin criptarea log-ului de tranzac ii i a bazei de date tempdb. Dac baza de date criptat este folosit n solu ii de high-availability ca Database Mirroring sau Log Shipping toate bazele de date participante vor fi criptate.
19
SQL Server Audit SQL Server Audit este o nou metod de auditare destinat s completeze metodele deja existente ca de exemplu SQL Trace, C2 audit mode sau DDL Triggers. Ce aduce nou SQL Server Audit? Posibilitatea de a monitoriza toate evenimentele generate de SQL Server la nivelul unei baze de date sau la nivelul serverului. Rezultatele monitorizrii pot fi salvate n Windows Application Log, Windows Security Log sau ntr-un fi ier. SQL Server Audit este bazat pe XEVENT (Extended Events) viitoare infrastructur de monitorizare a evenimentelor n SQL Server. Un exemplu de folosire al acestei facilit i este urmtorul : monitorizarea ncercrilor e uate de conectare la server cu nchiderea automat a serverului n cazul e ecului la salvarea informa iilor):
Aceste caracteristici sunt determinate n stabilirea beneficiilor furnizate de ADO.NET: Interoperabilitate. ADO.NET poate interaciona uor cu orice component care suport XML. Programabilitate. ADO.NET simplific programarea pentru diferite task-uri cum ar fi comenzile SQL, ceea ce duce la o cretere a productivitii i la o scdere a numrului de erori. Performan. Nu mai este necesar conversia explicit a datelor la transferul ntre aplicaii, fapt care duce la crete performanelor acestora. Accesibilitate. Utilizarea arhitecturii deconectate permite accesul simultan la acelai set de date. Reducerea numrului de conexiuni deschise simultan determin utilizarea optim a resurselor.
21
2.5.3. Conectare
nainte de orice operaie cu o surs de date extern, trebuie realizat o conexiune (legtur) cu acea surs. Clasele din categoria Connection (SQLConnection, OleDbConnection etc.) conin date referitoare la sursa de date (locaia, numele i parola contului de acces, etc.), metode pentru deschiderea/nchiderea conexiunii, pornirea unei tranzacii etc. Aceste clase se gsesc n subspaii (SqlClient, OleDb etc.) ale spaiului System.Data. n plus, ele implementeaz interfaa IdbConnection. Pentru deschiderea unei conexiuni prin program se poate instania un obiect de tip conexiune, precizndu-i ca parametru un ir de caractere coninnd date despre conexiune.
22
Aplicaie
23
24
Figura 2.5. Arhitectura Client Server aplicat la Contact Center-ul ING Asigurri de Via
25
Partea de server ruleaz, de obicei, pe un calculator centralizator sau aflat la distan, furniznd sau oferind informaii/servicii clienilor. Cu alte cuvinte, n modelul de programare client/server, o aplicaie realizeaz dou funcii separate i bine definite: cererea de informaii i rspunsul la cererile de informaii. Programul care cere informaii funcioneaz ca un program client.
26
27
Aplicaia operatorului este folosit n cadrul Contact Center-ului pentru gestiunea situaiilor care intervin n momentul primirii apelurilor, respectiv oferirea de informaii referitoare la detaliile despre contract, informaii legate de tipurile de contract sau serviciile oferite de companie. Aplicaia dispecerului este utila n gestiunea alertelor generate de operatorii conectai la sistemul implementat. Acestea pot fi de trei tipuri: Alerte informaii necunoscute: sunt generate din modulul operatorului n momentul n care acesta nu cunoate anumite informaii legate de contract sau alte informaii ce in de activitatea companiei; Alerte plngeri ageni: se refera la plngeri venite din partea clienilor legate de activitatea agenilor; Alerte clieni noi: sunt generate n momentul introducerii unui client nou n sistem. Acesta va fi contactat n zilele urmtoare pentru a fi felicitat i pentru confirmarea detaliilor legate de contract. Serverul a fost creat cu scopul de a intermedia mesajele i alertele trimise intre operatori i dispeceri, precum i pentru a autoriza conexiunea la baza de date prin restricionarea accesului anumitor categorii de utilizatori. Pe acest modul a fost implementata i interfaa de administrare a utilizatorilor prin care se pot crea i modifica cele trei grupuri de utilizatori: operatori, dispeceri respectiv administratori.
Ion Lungu, Gheorghe Sabu, Manole Velicanu, Mihaela Muntean, Simona Ionescu, Elena Posdarie, Daniela Sandu Sisteme informatice. Analiza, proiectare i implementare, Editura Economic, Bucureti, 2003, pag. 53
7
Idem, pag. 55
29
Clieni_F IdClient IdFunctie Strada Sector TipClient Venit NrStrada Judet CNP NrCopii Bloc CodPostal Adresare NrPersIntretinute Scara NrTel Nume AcordMkt Ap Email Prenume Localitate Observatii
Activ
30
Clieni_C IdClient AdresareRep AcordMkt Sector TipClient NumeRep Strada Judet NumeFirma PrenumeRep NrStrada CodPostal CodFiscal IdFunctie Bloc NrTel IsVIP Venit Scara Email CNPrep NrCopii NrPersIntretinute Ap Localitate Observatii Activ
JudeteRomania IdJudet Judet Indicativ TipuriAsig IdPlan Planuri IdPlan IdCateg DescrPlan IdTip DescrTip
Categorii IdCateg DescrCat Contracte NrContract IdTip StatusContract StatusPrima IdAgent IdClient Prima DataInceput Facturat_PanaLa Platit_PanaLa StatusContract StatusContract StatusPrima Descriere Detalii Ageni IdAgent Data_Apointarii IdClient Data_Terminarii IdZona TipAgent ReportingAgent
31
TipuriAgeni TipAgent DescrTip ZoneAgeni IdZona Apeluri IdApel TipClient IdClient TipApel CodOperator Observatii DataIncConv DataSfConv Status TipuriApel IdTip DescrTip Descriere
IdAlerta TipAlerta IdApel IdAgent Observatii Status DataInregistrare DataRezolvare TipuriAlerte IdTip TipAlerta Descriere
Adugarea/ modificarea unui utilizator. Administratorul va trebui s completeze toate cmpurile: nume, prenume, utilizator, parola, email. n plus, va trebui s introduc aceeai parol n ambele cmpuri. Dac introduce parola corect, dar nu completeaz adresa de email sau introduce o valoare invalida, va primi un mesaj de atenionare. Se tie c o adres de email valid conine @ urmat de .
Proceduri pentru modificare/tergere client/ utilizator/ contract/ apel. Procedura pentru generarea apelurilor. Este folosit pentru generarea cazurilor de teste i pentru simularea procesului din cadrul sistemului informatic realizat. Procedura pentru adugarea unei alerte noi. Aceasta este generat din modulul operatorului i este transmis ctre dispecerat. De fapt, sunt stocate n baza de date, iar modulul dispecer scaneaz la intervale scurte de timp i verific existena alertelor.
Proceduri pentru validarea cmpurilor. Acestea au rolul de a limita introducerea informaiilor greite sau obligarea utilizatorului pentru completarea tuturor cmpurilor. Sunt prezentate n Anexa 2.
Proceduri pentru comunicarea cu serverul. Sunt folosite pentru conectarea la server, trimiterea/ primirea de mesaje sau alerte. Sunt prezentate n Anexa 6.
Diagrama Contracte cuprinde detaliile legate de contractele clienilor stocai n baza de date (tipuri de contracte, statusuri contract, statusuri prim); Diagrama Ageni conine tabelele cu tipurile de ageni, mprirea pe zone a acestora i detaliile legate de fiecare agent n parte. Fiecrui agent i este asociat un client din sistem. Diagrama Apeluri stocheaz datele privitoare la apelurile primite de la clieni sau efectuate de operatorii de la Contact Center; apelurile sunt mprite n tipuri iar fiecrui apel i este asociat un item din tabela StatusApel; Diagrama Alerte memoreaz alertele generate de ctre operatorii care ntmpin dificulti pe durata unui apel; tabelele stocate n aceast diagram sunt folosite de aplicaia de la dispecerat. Diagrama Clieni conine tabelele ce stocheaz datele de identificare ale clienilor precum i alte detalii de marketing;
Functii_COR * TipuriClienti
IdTip Tip
IdFunctie Cod_COR Denumirea_conform_COR
Judete Romania
IdJudet Judet Indicativ
Clienti_C *
IdClient TipClient NumeFirma CodFiscal IsVIP CNPrep AdresareRep NumeRep PrenumeRep IdFunctie
Clienti_F
IdClient TipClient CNP Adresare Nume Prenume IdFunctie Venit NrCopii NrPersIntretinute AcordMkt
34
Utilizatori
CodUtilizator GrupUtilizator Nume Prenume Utilizator Parola Email PasswordHint Detalii Activ
FK_Utilizatori_GrupuriUtilizatori
GrupuriUtilizatori
IdTip TipUtilizator
Diagrama Tipuri Asigurri stocheaz tipurile de contracte care sunt oferite de companie (mprite pe categorii i planuri de asigurare);
Categorii TipuriAsig
IdPlan IdTip DescrTip
FK_TipuriAsig_Planuri
IdCateg DescrCat
FK_Planuri_Categorii
Planuri
IdCateg IdPlan DescrPlan
35
Diagrama Contracte cuprinde detaliile legate de contractele clienilor stocai n baza de date (tipuri de contracte, statusuri contract, statusuri prim);
TipuriAsig Contracte
NrContract IdTip StatusContract StatusPrima IdAgent IdClient Prima DataInceput Facturat_PanaLa Platit_PanaLa
FK_Contracte_StatusContract FK_Contracte_TipuriAsig
StatusContract
StatusContract StatusPrima Descriere Detalii
Diagrama Ageni conine tabelele cu tipurile de ageni, mprirea pe zone a acestora i detaliile legate de fiecare agent n parte. Fiecrui agent i este asociat un client din sistem.
Clienti_F
IdClient TipClient CNP Adresare Nume Prenume IdFunctie Venit NrCopii NrPersIntretinute AcordMkt Strada NrStrada Bloc Scara Ap Localitate Sector Judet
FK_Agenti_Agenti FK_Agenti_Clienti_F
ZoneAgenti
IdZona Descriere
Agenti
IdAgent IdClient IdZona Data_Apointarii Data_Terminarii TipAgent ReportingAgent
FK_Agenti_TipuriAgenti FK_Agenti_ZoneAgenti
TipuriAgenti
TipAgent DescrTip
36
Diagrama Apeluri stocheaz datele privitoare la apelurile primite de la clieni sau efectuate de operatorii de la Contact Center; apelurile sunt mprite n tipuri iar fiecrui apel i este asociat un item din tabela StatusApel;
Utilizatori
CodUtilizator GrupUtilizator Nume Prenume Utilizator Parola Email PasswordHint Detalii Activ
TipuriClienti
IdTip Tip
Apeluri
IdApel TipClient IdClient TipApel CodOperator Observatii DataIncConv DataSfConv Status
TipuriApel
IdTip DescrTip
StatusApel
IdStatus Status Descriere
Diagrama Alerte memoreaz alertele generate de ctre operatorii care ntmpin dificulti pe durata unui apel; tabelele stocate n aceast diagram sunt folosite de aplicaia de la dispecerat.
Alerte
IdAlerta TipAlerta IdApel IdAgent Observatii Status DataInregistrare DataRezolvare
TipuriAlerte
IdTip TipAlerta Descriere
StatusApel
IdStatus Status Descriere
37
38
i setm proprietatea Enabled la True. Aceasta va determina timer-ul s porneasc la instanierea form-ului. Personalizm form-ul creat cu logo-ul companiei i cu titlul Call Center ING << Aplicatie Operator >>. Clasa printe se numete frmMain.cs. n aceast clas se regsesc variabile care sunt comune tuturor form-urilor, precum i variabile folosite doar n interiorul acesteia. De asemenea, se regsesc o suit de funcii care au fost grupate n regiuni. De exemplu, regiunea Utile conine funcii care returneaz clieni persoane fizice sau juridice, funcii care returneaz id-ul apelului sau al alertei care urmeaz sa fie inserate sau diverse informaii care sunt necesare n funcie de anumii parametri. Aceast regiune mai conine i funcii de formatare ale datelor de intrare pentru a putea fi inserate n baza de date: de exemplu, funcia FormatareDateTime_BD (DateTime data) ntoarce un string de forma 2010-06-26 23:14:36.000, care este nativ pentru SQL Server, deoarece string-ul returnat de metoda ToString() apelat pentru o variabila de tip DateTime din C# are alt format, neacceptat de SGBD. n aceast regiune mai sunt definite o succesiune de proceduri care au rolul de a declana anumite alerte vizuale sau auditive, cum ar fi alerta de apeluri n ateptare, care este evideniat n interfaa utilizator prin schimbarea culorii butonului Apeluri n ateptare din transparent n rou i redarea sunetului notify.wav. Procedura StareButoane(bool stare) are rolul de a activa/ dezactiva butoanele care in de sarcinile operatorului n funcie de conexiunea la server. Mai este definit o regiune cu prelucrri n baza de date: inserri, actualizri, respectiv tergeri. Sunt prezente procedurile de adugare client, inserare apel, tergere apel dup ce este preluat. De asemenea, mai sunt definite procedurile ce in de gestiunea alertelor: n momentul n care operatorul ntmpin o problem semnaleaz o alert ctre dispecer. Codul din spatele evenimentului Click asociat butonului Semnaleaz alert ne arat faptul c alerta este introdus n baza de date, n tabela Alerte , iar dup ce este semnalat va fi preluat de unul din dispeceri. O regiune foarte important definit n cadrul clasei principale frmMain.cs, este regiunea care se ocup de conectarea la / deconectarea de la server. Dac se realizeaz conectarea cu succes la server, se deschide un thread nou care se va ocupa de gestiunea mesajelor primite de la server. Acestea pot fi de tip mesaje primite de la ali utilizatori sau mesaje administrative: de exemplu n momentul opririi serverului se trimite un mesaj ctre toi utilizatorii conectai cu textul QUIT, care declaneaz mai multe mecanisme la nivelul 39
aplicaiei operatorului: se primete un mesaj Serverul a fost oprit!, se schimb culoarea fundalului n rou maro pentru a informa utilizatorul c serverul nu mai funcioneaz. De asemenea, o parte din butoane sunt dezactivate. Va rmne activ butonul Login pentru ncercarea reconectrii la server. Pentru definirea interfeei grafice se adaug un control de tip ToolStrip care se va numi toolStrip_Menu. Acesta conine meniul principal ce const n urmtoarele aciuni: Conectarea la server (Login) Apeluri n ateptare Crearea unui client nou Logout Activare Ptrel Ieire
Adugm un control de tip toolStrip denumit toolStrip_StatusBar. i setm proprietatea Dock la Bottom. Acesta va juca rol de Status Bar n care vor fi afiate informaii referitoare la operatorul conectat, data i ora curenta precum i starea conexiunii la server. Editm item-ii din acest control:
Se adaug 6 itemi de tip label i doi separatori i se seteaz proprietile conform cu urmtoarea imagine:
40
Setm proprietatea GripStyle la Hidden, deoarece acest control va avea poziie fix, n partea de jos a ferestrei principale.
Form Autentificare
Adugm la proiect un Form nou pentru Autentificarea operatorilor. Redenumim form-ul n Autentificare: Adugm pe form-ul creat dou controale de tip Label cu textele Utilizator, respectiv Parola, dou controale de tip TextBox: una pentru utilizator, creia ii setm proprietatea Text: Utilizator, iar cea pentru parola va avea proprietatea text Parola i proprietatea PasswordChar (introducem caracterul *). Cmpul astfel formatat va afia caracterul * n loc de caracterele introduse.
Mai adugam dou controale de tip Button cu textele Continu i Renun. nainte de a trata evenimentul butonului btn_Continua trebuie sa adugam directiva .NET Framework Data Provider pentru SQL Server.
using System.Data.SqlClient;
Aceasta descrie o colecie de clase folosite pentru a accesa baza de date SQL Server n spaiul utilizat. Pe evenimentul Click al butonului btn_Continua se scrie codul din Anexa 1 pentru validarea autentificrii.
Fereastra Apel Nou Se adaug la proiect un nou Windows Form denumit Apel_Nou care va conine tipurile de apeluri posibile n sistem: Apel Detalii Contract Apel Detalii Consultant 41
Informaii tipuri de contracte Informaii servicii oferite Apel Sugestii Plngeri / Reclamaii Setm proprietatea TopMost a form-ului introdus la True. Pentru a determina apariia
ecranului n faa celorlalte ferestre deschise de aplicaie. De asemenea, proprietatea ControlBox trebuie schimbat n False. Adugm un control de tip GroupBox n interiorul cruia plasm trei controale de tip RadioButton cu textele de mai sus. Le redenumim corespunztor cu semnificaia. Plasm i un Button cu textul &Continu. Caracterul & este o convenie pentru mnemonice (scurttura de la tastatur prin apsarea tastei <Alt> i litera care se gsete dup &). Este sugerat utilizatorului prin sublinierea literei corespunztoare.
Desfurtor. Setm proprietatea Dock a textbox-ului la Fill pentru a se redimensiona odat cu redimensionarea panelelor din SplitContainer. n cea de-a doua celul vom aduga desfurtorul care va fi un control de tip RichTextBox i se va completa cu informaii din fiierul Desfasurator\Desf_Apel
Info.txt pe evenimentul Load al form-ului. i setm proprietatea Dock la Fill.
42
4.1.3. Serverul
A fost creat cu scopul de a intermedia mesajele i alertele trimise intre operatori i dispeceri, precum i pentru a autoriza conexiunea la baza de date prin restricionarea accesului anumitor categorii de utilizatori. Pe acest modul a fost implementat i interfaa de administrare a utilizatorilor prin care se pot crea i modifica cele trei grupuri de utilizatori: operatori, dispeceri respectiv administratori. Aceast aplicaie const din 6 form-uri care se integreaz n forma principal numit mdiMain. Fereastra principal a fost creat cu scopul de a vizualiza operatorii i dispecerii conectai la server. Ea este o form de tip mdiParent n interiorul creia sunt afiate i celelalte elemente componente. Pentru afiarea utilizatorilor conectai este nevoie de un ListBox care se populeaz n momentul primirii pachetului de conectare sau elementele sale sunt eliminate pe msur ce utilizatorii se deconecteaz. Pentru primirea semnalului de conectare se apeleaz la un buffer care este citit n permanen de thread-ul principal. Dac se primete un mesaj de forma CONN|dispecer|utilizator se adaug n listbox-ul creat utilizatorul n funcie de parametrul al doilea (dispecer sau operator).
43
44
Figura 4.1. Fereastra principal i modulul de autentificare n momentul autentificrii se afieaz un mesaj care informeaz utilizatorul c se ncearc realizarea conexiunii la server.
Dac nu este posibil conectarea la server se afieaz urmtorul mesaj de eroare. Acest mesaj este posibil s apar n cazul n care nu a fost configurat adresa IP sau portul cu care se
45
face conexiunea la server. De asemenea, trebuie verificat ca serverul s fie pornit, n caz contrar mesajul fiind acelai.
Odat realizat conexiunea la server, interfaa utilizatorului se schimb prin activarea butoanelor. n partea de jos a ferestrei este afiat un mesaj de ntmpinare:
n cazul n care operatorul nu trateaz nici un apel, n status bar se poate observa n csua de la Durata apel mesajul IDLE (figura de mai sus). De asemenea, dac nu sunt apeluri n ateptare butonul apeluri n ateptare arat ca n figura de mai jos:
n momentul n care n baza de date exist apeluri n ateptare textul i culoarea butonului se schimb i afieaz numrul de apeluri n ateptare:
Prin apsarea acestui buton se afieaz apelurile n ateptare i timpul ct au ateptat s fie preluate de un operator. Apeluri sunt grupate dup prioritate n funcie de timpul ct au ateptat: <25 secunde apeluri cu prioritate normal ntre (25, 45) secunde apeluri cu prioritate mare >45 secunde apeluri critice 46
Alerta vizual i auditiv continu pn n momentul alegerii unui apel. Lista se remprospteaz automat, sau poate fi reactualizat manual prin apsarea butonului Actualizare sau a tastei <F5>.
Dup alegerea apelului va aprea n partea stng desfurtorul cu textul de ntmpinare a clientului:
47
Pentru apelurile de tip informaii desfurtorul va fi completat cu scriptul pentru acest tip de apel. n partea din dreapta se completeaz detalii despre client. Acesta se caut n baza de date prin apsarea butonului Caut Client.
48
n cazul n care clientul nu este gsit se afieaz acest mesaj i apare butonul de creare client:
49
Dac se alege opiunea de creare client fereastra de cutare este nchis i se afieaz formularul de creare client. Desfurtorul este completat automat cu textul pentru creare client care va ndruma operatorul n paii care trebuie s i parcurg pentru adugarea cu succes a unui client. Textul este personalizat n funcie de tipul de client creat (persoan fizic sau juridic).
Au fost create o suit de validri ale cmpurilor, astfel nct crearea unui client nou s nu altereze structura bazei de date curente. De asemenea, adresarea se completeaz automat n funcie de CNP-ul introdus.
50
Operatorul are posibilitatea s aleag judeul din lista derulant, la fel i funcia persoanei introduse n sistem, dar poat i s tasteze primele caractere din jude, respectiv funcie pentru a limita lista derulant:
Dup crearea clientului acesta se caut din nou n baza de date. Dup ce este ales, cmpurile vor fi completate automat, cu excepia observaiilor legate de apelul curent. n cazul n care este depit durata medie de rspuns operatorul este avertizat vizual prin mesajul de mai jos i auditiv prin redarea unui sunet de alert.
Dac tipul de apel ales este Informaii tipuri de contracte pe bara din dreapta se gsete butonul Tipuri Contracte. Fereastra cu tipurile de contracte este reprezentat mai jos:
51
Dup ce se ofer informaiile referitoare la tipurile de contracte sau alte informaii care au fost cerute de clieni, apelul poate fi ncheiat normal prin apsarea butonului nregistreaz Apel sau poate fi semnalat alert de informaii ctre dispecer. n acest caz, alerta va fi preluat de unul din dispeceri i va fi rezolvat n funcie de comentariile introduse de operator. Alerta poate fi trimis doar dup confirmare:
Dup care se afieaz mesajul urmtorul n cazul n care alerta este introdus cu succes n baza de date sau mesaj de eroare n caz contrat.
Asistentul Ptrel Acesta este prezent n aplicaie din momentul lansrii aplicaiei n execuie, ns informaiile furnizate de acesta sunt afiate doar dup ce este activat. Pentru activare se apas pe butonul din fereastra principal, din colul dreapta sus:
52
Informaiile sunt afiate sub forma unui balon de tipul ToolTip, cum ar fi n fereastra apelurilor n ateptare:
n momentul n care se primesc alerte de la divizia Contact Center este redat o alert sonor i vizual (butoanele i schimb culoarea alternativ din transparent n rou). De exemplu, cnd se primete o alert de tipul Informaii Necunoscute butoanele vor arta ca n figura de mai jos: 53
Alertele primite de la operatori sunt afiate n fereastra de mai jos. Acestea pot fi filtrate dup status: rezolvate sau n procesare. De asemenea, se poate reactualiza lista cu alertele prin apsarea butonului Actualizare sau prin apsarea tastei <F5>.
54
55
Statusul unei alerte rmne PROCESARE, ns poate fi schimbat ntr-unul din cele din lista de mai sus, iar la final se nchide cazul cu statusul REZOLVAT. Dac nu se cunosc informaiile cerute de client se apas pe butonul Amn Rezolvare i se alege o alt alert din list. Pentru generarea apelurilor de test se poate apela la butonul din bara lateral Gestiune Apeluri. Acest meniu ofer o interfa de generare a apelurilor, precum i posibilitatea eliminrii lor. De asemenea, se pot genera apeluri de o anumit prioritate (explicat la aplicaia operatorului) sau generarea tuturor tipurilor de apel: Apeluri cu prioritate normal Apeluri cu prioritate mare Apeluri critice
56
4.2.3. Serverul
Accesul la acest modul este permis doar utilizatorilor care parte din grupul administratori. Fereastra principal nu afieaz alte elemente grafice dect cele pentru logarea n aplicaie i butonul de nchidere a aplicaiei. Restul elementelor vor fi afiate dup autentificare.
57
n acest moment sunt posibile dou operaii: Pornirea serverului Administrarea utilizatorilor din sistem
Dup pornirea serverului butonul Pornete se transform n Oprete, iar n partea de jos a aplicaiei sunt afiate detalii legate de adresa IP i portul pe care este pornit serverul. De asemenea, n momentul n care un dispecer se conecteaz la server csua Dispecer se schimb din Offline n Online.
Pentru maximizarea spaiului de lucru, detalii despre server se pot ascunde, la fel i meniul din bara lateral.
58
n momentul n care un operator sau un dispecer se conecteaz la server, listele cu operatori/ dispeceri sunt populate corespunztor, iar cnd se alege un utilizator din cele dou liste n partea din dreapta vor aprea detalii referitoare la acest utilizator: numele complet i o scurt descriere care se ncarc din baza de date.
Se poate ncepe conversaia cu utilizatorul respectiv prin tastarea mesajul i apsarea butonului Trimite mesaj sau apsarea tastei <Enter>.
59
n tab-ul Zona Administrare se ine un istoric al utilizatorilor conectai, care este salvat la oprirea serverului ntr-un fiier text n directorul <Istoric> din locaia n care se afl executabilul.
Pagina de administrare utilizatori permite urmtoarele operaii: Creare utilizator Actualizare tergere Setare ca activ/ inactiv
60
CONCLUZII
n aceast lucrare am prezentat etapele parcurse n vederea realizrii unui sistem informatic pentru departamentul de Contact Center al companiei ING Asigurri de Via. Parcurgnd etapele de analiz a sistemului, de proiectare a bazei de date i implementare am reuit s realizez cu succes obiectivul propus, rezultnd o aplicaie care corespunde n totalitate cerinelor de proiect. Acest sistem informatic este creat special pentru a asigura confortul clienilor i securitatea tranzaciilor. Aplicaia este absolut necesar n condiiile n care numrul clienilor care apeleaz la serviciile de asigurri de via este din ce n ce mai mare i n continu cretere. Prin intermediul acestui sistem clienii au posibilitatea de a accesa direct serviciile companiei oricnd i de oriunde, avnd la dispoziie un serviciu de calitate. Aplicaia este util i datorit faptului c ofer posibilitatea realizrii unor rapoarte statistice i operative, rapoarte care ofer informaii ce pot fi folosite pentru planificare i studii de marketing. Din punct de vedere economic, aplicaia nu necesit costuri ridicate pentru a fi ntreinut, iar interfaa simpl i prietenoas permite folosirea aplicaiei fr a avea cunotine n acest domeniu. Aplicaia minimizeaz erorile utilizatorului, prin existena validrilor i a mesajelor, care atenioneaz ori de cte ori datele nu sunt introduse corect. De asemenea, datorit mpririi pe module, ea poate fi oricnd modificat n funcie de necesitile clienilor i de noile servicii ce se vor dezvolta n cadrul bncii. Pot fi adugate module noi, iar cele existente pot fi mbuntite n funcie de nevoile n permanent schimbare a clienilor. Pe viitor mi propun s dezvolt aplicaia, prin adugarea unor module suplimentare, care s ofere suport clienilor pentru noile servicii pe care compania le va oferi acestora. Acestea pot fi comunicarea prin e-mail integrat n sistemul implementat sau dezvoltarea unei aplicaii multilingve.
61
BIBLIOGRAFIE
[1] - Gheorghe Sabu, Mihaela Muntean, Vasile Avram, Marian Drdal, Rzvan Bologa, Ramona Bologa Baze de date, Editura Matrix Rom, Bucureti, 2008 [2] - Ion Lungu, Gheorghe Sabu, Manole Velicanu, Mihaela Muntean, Simona Ionescu, Elena Posdarie, Daniela Sandu Sisteme informatice. Analiza, proiectare i implementare, Editura Economic, Bucureti, 2003 [3] - Ion Smeureanu, Marian Drdal, Adriana Reveiu Visual C# .Net, Editura Cison, Bucureti, 2004 [4] - Patrick Dalton - Microsoft SQL Server Black Book, Editura The Coriolis Group, 1997 [5] - Rodica Mihalca, Adina U Modelare Orientat Obiect, Editura ASE, Bucureti, 2009 [6] - http://www.microsoft.com/romania/technet/articole/sql2008_securitate.mspx, SQL Server 2008 inovaii n domeniul securitate, Cristian Lefter, 2008 [7] - http://www.connectionstrings.com/sql-server-2008, Conectarea la o baz de date SQL Server 2008, 2010 [8] - http://www.codeproject.com/KB/cs/myBestMDI.aspx , Crearea unei aplicaii de tip MDI, Irfan Patel, 2004 [9] http://www.developerfusion.com/community/blog-entry/8393574/wpfwinformsinterop-a-highlighted-textbox/, Crearea unui control de utilizator de tip TextBox cu highlight,2009 [10] - http://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.aspx, BindingSource Class, 2010 [11] - http://articles.sitepoint.com/article/dataset-datareader , DataSet Vs. DataReader, Philip Miseldine, 2003 [12] - http://www.codeguru.com/csharp/csharp/cs_misc/userinterface/article.php/c10139/ , Form Fade In/Out Effect and Notification Window, Abhinaba Basu, 2005 [13] http://www.dreamincode.net/forums/topic/35616-cross-thread-communication-inc%23/ , Cross Thread Communication n C#, 2010 [14] - http://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.aspx , TcpClient Class, 2010
62
ANEXE
Mai jos vor fi prezentate secvene de cod importante sau care prezint un interes deosebit. Anexa 1 Procedura pentru autentificarea utilizatorilor
private void btn_Continua_Click(object sender, EventArgs e) { MainFrm PFRM = (MainFrm)this.MdiParent; SqlConnection authconn = new SqlConnection(); authconn.ConnectionString = MainFrm.ConnStr; try { if (authconn.State == ConnectionState.Closed) authconn.Open(); SqlCommand authcmd = new SqlCommand(); authcmd.Connection = authconn; authcmd.CommandText = "Select CodOperator, Nume, Prenume,Utilizator,Parola from Operatori " + " where Utilizator='" + textBoxUtilizator.Text + "'"; SqlDataReader authDR; authDR = authcmd.ExecuteReader(); if (!authDR.HasRows) { MessageBox.Show("Nume de utilizator incorect !"); //PFRM.StareButoane(false); } else { authDR.Read(); if (textBoxParola.Text == authDR.GetString(4)) { MainFrm.CodOp = authDR.GetByte(0); MainFrm.NumeOp = authDR.GetString(1); MainFrm.PrenOP = authDR.GetString(2);
63
64
} if (ctrl is ComboBox) { if ((((ComboBox)ctrl).SelectedIndex == -1) || (((ComboBox)ctrl).SelectedIndex == 0)) { errorProvider1.SetError((ComboBox)ctrl, "Selectai un item din list."); atentie = true; //ok = false; } else { errorProvider1.SetError((ComboBox)ctrl, ""); } } } if (!(ctrl == ctrlExclude) && ctrl.Controls.Count > 0) { VerificareCampuri(ctrl, ctrlExclude); } } #endregion #region Validari Campuri try { // Nr. Strada int nr = System.Convert.ToInt32((Htb_NrStr.InputTextBox).Text.ToString()); errorProvider1.SetError(elementHost_Htb_NrStr, ""); } catch { ((Highlist_TextBox)elementHost_Htb_NrStr.Child).HighlightError(); errorProvider1.SetError(elementHost_Htb_NrStr, "Introduceti o valoare numerica pentru numarul strazii."); atentie = true; } if (!IsEmail((Htb_Email.InputTextBox).Text)) { ((Highlist_TextBox)elementHost_Htb_Email.Child).HighlightError(); errorProvider1.SetError(elementHost_Htb_Email, "Introduceti un email de tipul: nume@mail.com"); atentie = true; } else errorProvider1.SetError(elementHost_Htb_Email, "");
65
SqlDataReader myReader = null; SqlCommand myCommand = new SqlCommand("select * from [dbo].[Clienti_F] where CNP='" + client.CNP + "'",sqlConnection1); myCommand.Transaction = TZ; myReader = myCommand.ExecuteReader(); //TZ.Commit(); //TZ. if (myReader.HasRows) exista = true; else exista = false; //MessageBox.Show("Clientul exist n baza de date!", "Client existent"); myReader.Close(); sqlConnection1.Close(); return exista; } catch (Exception e) { MessageBox.Show(e.ToString()); return false; } }
66
Anexa 4 - Procedura de inserare a unui client persoan fizic n baza de date folosind obiectele ADO.NET
// Inserare Persoana Fizica n BD private void InsertClientIntoDB_F(Client_F client) { SqlTransaction TZ; if (sqlConnection1.State == ConnectionState.Closed) sqlConnection1.Open(); TZ = sqlConnection1.BeginTransaction(); try { string cmdInsertString = "INSERT INTO [CallCenterDB].[dbo].[Clienti_F]" + "(" + "[IdClient]" + ",[TipClient]" + ",[CNP]" + ",[Adresare]" + ",[Nume]" + ",[Prenume]" + ",[IdFunctie]" + ",[Venit]" + ",[NrCopii]" + ",[NrPersIntretinute]" + ",[AcordMkt]" + ",[Strada]" + ",[NrStrada]" + ",[Bloc]" + ",[Scara]" + ",[Ap]" + ",[Localitate]" + ",[Sector]" + ",[Judet]" + ",[CodPostal]" + ",[NrTel]" + ",[Email]" + ",[Observatii]" + ",[Activ]" + ")" + "VALUES" + "(" + client.IdClient + "," + client.TipClient + "," + (client.CNP != "" ? "'" + client.CNP + "'" : "NULL") + client.Adresare + "','" + client.Nume + "','" + client.Prenume + "',"; if (client.IdFunctie != -1) cmdInsertString += client.IdFunctie; else cmdInsertString += "NULL"; cmdInsertString += ","; if (client.Venit != "") cmdInsertString += "'" + client.Venit + else cmdInsertString += "NULL"; cmdInsertString += ",";
",'" +
"'";
67
68
Anexa 5 - Funcia care ncarc numrul de client n momentul crerii unui client nou - primete ca parametru un caracter: P sau C (client Persoana Fizic sau Companie).
// Incarcare Numar client public decimal Incarc_NrClient(char c) { decimal CodCl = 0; if (sqlConnection1.State == ConnectionState.Closed) sqlConnection1.Open(); //SqlCommand maxCodCl = new SqlCommand("Command",sqlConnection1); switch (c) { case 'P': SqlCommand maxCodCl_F = new SqlCommand("Select max(IdClient) from [Clienti_F]", sqlConnection1); string rez = maxCodCl_F.ExecuteScalar().ToString(); if (rez == "") CodCl = 0; else CodCl = Convert.ToInt32(rez, 10); CodCl++; sqlConnection1.Close(); return CodCl; case 'C': SqlCommand maxCodCl_C = new SqlCommand("Select max(IdClient) from [Clienti_C]", sqlConnection1); string rez_C = maxCodCl_C.ExecuteScalar().ToString(); if (rez_C == "") CodCl = 0; else CodCl = Convert.ToInt32(rez_C, 10); CodCl++; sqlConnection1.Close(); return CodCl; default: MessageBox.Show("Eroare initializare numar client!"); return CodCl; } }
69
} catch (Exception exc) { MessageBox.Show("Eroarea intalnita: " + exc.Message, "Eroare initializare server!", MessageBoxButtons.OK, MessageBoxIcon.Stop); } } private void EstablishConnection() { authFrm.Hide(); frmCon.Show(); toolStripLabel_Server.Text = "Conectare la Server"; // < Localhost > //string localhost = System.Net.Dns.GetHostName(); hostName = System.Net.Dns.GetHostName(); PortSrv = 5555; // </ Localhost/ //// < Din "ConfigSRV.ini"> //System.IO.StreamReader sr = new System.IO.StreamReader("ConfigSRV.ini"); //string line = sr.ReadLine(); //hostName = line; //line = sr.ReadLine(); //PortSrv = Convert.ToInt32(line, 10); //// </ Din "ConfigSRV.ini"> //MessageBox.Show("Conexiune la serverul: \nNume Server: " + hostName + ". Port: " + PortSrv, "Dispecerat - Detalii conexiune",MessageBoxButtons.OK,MessageBoxIcon.Information); try {
clientsocket = new TcpClient(hostName, PortSrv); ns = clientsocket.GetStream(); sr = new StreamReader(ns); if (timer_RECONECT.Enabled) timer_RECONECT.Stop(); connected = true;
70
71
MessageBox.Show("Serverul a fost oprit!", "Mesaj de la server", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly); // Schimba culoarea de fundal cand se opreste serverul... i fa Restore la ferestre. :) Background_Offline(true); this.BackColor = Color.Maroon; StareButoane(false); toolStripLabel_Server.Text = "Serverul a fost oprit!"; connected = false; this.TopMost = false; break; } case "MESAJ": { Notificare notif = new Notificare(tokens[1],tokens[2]); notif.Show(); break;
72
Anexa 7 - Funcia care returneaz toate datele referitoare la un client persoan fizic
public Client_F GetClient_F(decimal _IdClient) { Client_F CL = new Client_F(); try { string selectSQL = "select * FROM [dbo].[Clienti_F] WHERE [IdClient] = " + _IdClient.ToString(); //MessageBox.Show("SQL String: " + selectSQL, "Info!", MessageBoxButtons.OK, MessageBoxIcon.Information); if (sqlConnection1.State == ConnectionState.Closed) sqlConnection1.Open(); SqlCommand cmmd = new SqlCommand(selectSQL, sqlConnection1); SqlDataAdapter adapter = new SqlDataAdapter(cmmd); DataSet ds = new DataSet(); adapter.Fill(ds, "Clienti");
73
74