Sunteți pe pagina 1din 74

ACADEMIA DE STUDII ECONOMICE Facultatea de Cibernetic, Statistic i Informatic Economic

LUCRARE DE LICEN
DEZVOLTAREA UNUI SISTEM INFORMATIC DE CONTACT CENTER

Profesor Coordonator: Lect. univ. dr. Bra Adela

Absolvent: Mndru Daniel

BUCURETI - 2010 -

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

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.

Dezvoltarea unui sistem informatic de Contact Center

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..

Dezvoltarea unui sistem informatic de Contact Center

Capitolul 1. Descrierea problemei economice


1.1. Prezentarea companiei ING Asigurri de Via
ING Asigurri de Via este o component a Grupului ING care a fost constituit n 1991 prin fuziunea dintre Nationale - Nederlanden i grupul NMB PostBank. Grupul ING reprezint o combinaie unic a operaiunilor de asigurri, activiti bancare i investiii, avnd scopul declarat de a oferi clienilor servicii financiare integrate. Aceast strategie a fost iniiat n Olanda, iar ulterior a fost extins n toate rile n care a fost posibil i s-a considerat c poate fi profitabil. Grupul ING furnizeaz servicii de asigurare, bancare, investiii i de pensii n peste 50 de ri. Cei 125.000 de angajai deservesc 85 de milioane de clieni din ntreaga lume: persoane fizice, companii de dimensiuni mici i mijlocii, corporaii mari, instituii i guverne, oferindu-le acestora libertatea de a alege alternativa care se potrivete cel mai bine nevoilor individuale. Puterea financiar a Grupului, gama vast de produse i servicii, marea diversitate a surselor de profit i buna rspndire a riscului formeaz baza continuitii potenialului ING. Lund n considerare capitalizarea (valoarea pe pia calculat la 30 iunie 2009), ING este una dintre cele mai mari 20 de companii financiare din lume. Grupul ING este format din cinci centre de management care asigur cooperarea i sinergia diferitelor tipuri de activiti financiare dezvoltate de componentele grupului. ING Nederlanden presteaz servicii financiare pentru clienii din Olanda. ING Financial Services International acoper n totalitate activitile de asigurri de pe piaa internaional, n combinaie cu activitile bancare pentru clieni individuali. ING ASIGURRI DE VIA SA este subordonat acestui centru de management. ING Barings ofer servicii de vrf n domeniul bancar-investiional, n domeniul relaiilor cu clienii Grupului ING, precum i servicii de cercetare. ING Asset Management asigur managementul activelor, al investiiilor imobiliare i al operaiunilor legate de investiiile de capital. ING Belgium ofer servicii bancare companiilor din Belgia i a fost constituit n urma achiziionrii bncii Brussels Lampert (BBL) n 1997. i creterii

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

1.2. Compartimentele companiei


Din punct de vedere structural, compania ING Asigurri de Via este mprit n: departamente productive-creative departamente de suport. n prima categorie intr departamentele de marketing, de vnzri, brokerii i partea de bank-assurance, cele care dezvolt noi produse, au legtur direct cu clienii i for de vnzri. n cea de a dou categorii intr de fapt partea majoritar, care susine aceste procese creative: departamentul CMO, IT, cel de operaiuni, cel de resurse umane, legal i altele. Unul dintre cele mai importante departamente ale companiei cel de Management al Schimbrilor i Proiectelor (CMO). Acesta face legtura ntre cerinele idealiste ale departamentelor creative i departamentele tehnice, care trebuie s transforme aceste cerine n realitate, n produse finale atractive pentru clieni pe de o parte i uor de administrat de ctre firm pe cealalt parte. Ciclul de via al unui proiect se poate ntinde de la o zi la cteva luni, n funcie de complexitatea lui. Dac ideea pornete de la departamentul de vnzri sau cel de marketing, de exemplu, i departamentul IT efectueaz implementarea propriu-zis, rolul departamentului CMO este de a porni acest proiect, de a-l supraveghea pe toat durat lui i de a-l duce la bun sfrit n condiiile prestabilite, totodat asigurnd resurse din toate departamentele i diviziile implicate. Structura organizatoric a companiei este prezentat n Figura 1.1.

Dezvoltarea unui sistem informatic de Contact Center

Fig. 1.1. Organigrama ING Asigurri de via

Dezvoltarea unui sistem informatic de Contact Center

1.3. Activitile firmei


Obiectul de activitate al societii, conform contractului i statutului, l reprezint servicii de asigurare i reasigurare pentru clasele de asigurri de via i de persoane. Vnzarea polielor se face printr-o reea de consultani de asigurri de via al cror numr a crescut de la 200 n 1997 la circa 2600 n 2010 care lucreaz exclusiv pentru ING ASIGURRI DE VIA. Suportul Grupului ING pentru expansiunea rapid a societii n ar, creterea reelei de vnzare, inovarea pentru diversificarea ofertei de produse n scopul satisfacerii nevoilor clienilor, anticiparea sau chiar crearea unor noi nevoi ale acestora fac parte din preocuprile permanente ala acestuia, precum i ale tuturor celor care lucreaz pentru compania ING Asigurri de Via. 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 unei cunoateri a pieei locale, precum i a tradiiei i ofertei sale internaionale. ING Asigurri de Via ofer urmtoarele tipuri de asigurri: asigurri tradiionale: asigurri destinate exclusiv proteciei ( SMART, PRUDENT, MARATON) asigurri cu component de economisire ( REGAL, ACADEMICA). DEBUT 18 - Plan de economisire pentru copii MERIT, MENTOR - Planuri de Asigurare cu component de Pensii ACTIV PLUS, CAPITAL - Planuri de Asigurare cu component de Investiii asigurri de grup: planuri financiare de protecie planurile financiare de sntate planurile financiare de economisire i investiii planurile de asigurare cu component de pensii planurile de motivare pentru angajai asigurri Unit Linked:

10

Dezvoltarea unui sistem informatic de Contact Center

1.4. Prezentarea activitii care va fi informatizat


Serviciul care va fi optimizat din punct de vedere informatic este cel de Contact Center din cadrul departamentului Operations, divizia Customer Services.

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

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

Capitolul 2. Tehnologii informatice utilizate


2.1. Programare orientat pe obiecte
2.1.1. Introducere n .NET
.NET este un cadru (Framework) de dezvoltare software unitar care 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. .NET Framework este o component livrat mpreun cu sistemul de operare Windows. De fapt, .NET 2.0 vine cu Windows Server 2003, se poate instala pe versiunile anterioare, pn la Windows 98 inclusiv; .NET 3.0 vine instalat pe Windows Vista i poate fi instalat pe versiunile Windows XP cu SP2 i Windows Server 2003 cu minimum SP1. Pentru a dezvolta aplicaii pe platforma .NET este bine s avem 3 componente eseniale: un set de limbaje (C#, Visual Basic .NET, J#, Managed C++, Smalltalk, Perl, Fortran, Cobol, Lisp, Pascal etc), un set de medii de dezvoltare (Visual Studio .NET, Visio), bibliotec de clase pentru crearea serviciilor Web, aplicaiilor Web i aplicaiilor desktop Windows. Cnd se dezvolt aplicaii .NET, se pot utiliza: Servere specializate - un set de servere Enterprise .NET (din familia SQL Server 2000, Exchange 2000 etc), care pun la dispoziie funcii de stocare a bazelor de date, email, aplicaii B2B (Bussiness to Bussiness comer electronic ntre partenerii unei afaceri). Servicii Web (n special comerciale), utile n aplicaii care necesit identificarea utilizatorilor (de exemplu, .NET Passport - un mod de autentificare folosind un singur nume i o parol pentru toate site-urile vizitate) Servicii incluse pentru dispozitive non-PC (Pocket PC Phone Edition, Smartphone, Tablet PC, Smart Display, XBox, set-top boxes, etc.)

14

Dezvoltarea unui sistem informatic de Contact Center

.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).

2.1.2. Arhitectura .NET Framework


Componenta .NET Framework este format din compilatoare, biblioteci i alte executabile utile n rularea aplicaiilor .NET.

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

Dezvoltarea unui sistem informatic de Contact Center

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.

2.1.3. De ce am alege .NET?


n primul rnd pentru c ne ofer instrumente pe care le putem folosi i n alte programe, ofer acces uor la baze de date, permite realizarea desenelor sau a altor elemente grafice. Spaiul de nume System.Windows.Forms conine instrumente (controale) ce permit implementarea elementelor interfeei grafice cu utilizatorul. Folosind aceste controale, se pot proiecta i dezvolta rapid i interactiv, elementele interfeei grafice. Tot .NET ofer clase care efectueaz majoritatea sarcinilor uzuale cu care se confrunt programele i care plictisesc i fur timpul programatorilor, reducnd astfel timpul necesar dezvoltrii aplicaiilor.

2.2. Introducere n limbajul C#


Limbajul C# a fost dezvoltat de o echip restrns de ingineri de la Microsoft, echip din care s-a evideniat Anders Hejlsberg (autorul limbajului Turbo Pascal i membru al echipei care a proiectat Borland Delphi). C# este un limbaj modern, simplu, cu circa 80 de cuvinte cheie i 12 tipuri de date predefinite. El permite programarea structurat, modular i orientat obiectual, conform perceptelor moderne ale programrii profesioniste. Principiile de baz ale programrii orientate pe obiecte (NCAPSULARE, MOTENIRE, POLIMORFISM) sunt elemente fundamentale ale programrii C#. n mare, limbajul motenete sintaxa i principiile de programare din C++. Sunt o serie de tipuri noi de date sau funciuni diferite ale datelor din C++, iar n spiritul realizrii unor secvene de cod sigure (safe), unele funciuni au fost adugate (de exemplu, interfee i delegri), diversificate (tipul struct), modificate (tipul string) sau chiar eliminate motenirea multipl i pointerii 16

Dezvoltarea unui sistem informatic de Contact Center

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.

2.3. Introducere n limbajul SQL


Anumite instruciuni cum ar fi Alter sau Create nu sunt accesibile din meniu. Trebuie apelat la scrierea lor n cod. Acest lucru poate fi realizat cu ajutorul procedurilor stocate sau cu ajutorul opiunii SQLCMD. O procedur stocat este o secven de instruciuni SQL, salvat n baza de date, care poate fi apelat de aplicaii diferite. SQL Server compileaz procedurile stocate, ceea ce creste eficiena utilizrii lor. De asemenea, procedurile stocate pot avea parametri.1 Dac operaiile efectuate pe server sunt mai multe (calcule complexe de ex.) atunci e mai simplu s apelai la procesarea n Stored Procedures i s returnai doar o list mic de rezultate, gata procesate. Asta mai ales cnd procesarea necesit prelucrarea unui volum mare de date.

2.4. SQL Server 2008 - inovaii n domeniul securitate


Versiunea 2005 a SQL Server a nsemnat pentru seria produsului cea mai sigur versiune din punctul de vedere al securit ii. SQL Server 2008 acord aceea i importan mbunt irii protec iei datelor. SQL Server 2005 a demonstrat de la apari ie c este un server de baze de date sigur. SQL Server 2008 adaug noi func ionalit i de securitate care extind flexibilitatea i u urin a construirii unei solu ii securizate pe baza SQL Server.
1

Patrick Dalton - Microsoft SQL Server Black Book, Editura The Coriolis Group, 1997, pag. 177

17

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

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):

2.5. Accesarea i prelucrarea datelor cu ajutorul obiectelor ADO.NET


ADO.NET (ActiveX Data Objects) reprezint o parte component a nucleului .NET Framework ce permite conectarea la surse de date diverse, extragerea, manipularea i actualizarea datelor. De obicei, sursa de date este o baz de date, dar ar putea de asemenea s fie un fiier text, o foaie Excel, un fiier Access sau un fiier XML. n aplicaiile tradiionale cu baze de date, clienii stabilesc o conexiune cu baza de date i menin aceast conexiune deschis pn la ncheierea executrii aplicaiei. Conexiunile deschise necesit alocarea de resurse sistem. Atunci cnd meninem mai multe conexiuni deschise server-ul de baze de date va rspunde mai lent la comenzile clienilor ntruct cele mai multe baze de date permit un numr foarte mic de conexiuni concurente. ADO.NET permite i lucrul n stil conectat dar i lucrul n stil deconectat, aplicaiile conectndu-se la server-ul de baze de date numai pentru extragerea i actualizarea datelor. Acest lucru permite reducerea numrului de conexiuni deschise simultan la sursele de date. ADO.NET ofer instrumentele de utilizare i reprezentare XML pentru transferul datelor ntre aplicaii i surse de date, furniznd o reprezentare comun a datelor, ceea ce permite accesarea datelor din diferite surse de diferite tipuri i prelucrarea lor ca entiti, fr s fie necesar s convertim explicit datele n format XML sau invers. 20

Dezvoltarea unui sistem informatic de Contact Center

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.

2.5.1. Arhitectura ADO.NET


Componentele principale ale ADO.NET sunt DataSet i Data Provider. Ele au fost proiectate pentru accesarea i manipularea datelor.

Figura 2.3. Arhitectura ADO.NET

21

Dezvoltarea unui sistem informatic de Contact Center

2.5.2. Furnizori de date (Data Providers)


Din cauza existenei mai multor tipuri de surse de date este necesar ca pentru fiecare tip de protocol de comunicare s se foloseasc o bibliotec specializat de clase. .NET Framework include SQL Server.NET Data Provider pentru interaciune cu Microsoft SQL Server, Oracle Data Provider pentru bazele de date Oracle i OLE DB Data Provider pentru accesarea bazelor de date ce utilizeaz tehnologia OLE DB pentru expunerea datelor (de exemplu Access, Excel sau SQL Server versiune mai veche dect 7.0). Furnizorul de date permite unei aplicaii s se conecteze la sursa de date, execut comenzi i salveaz rezultate. Fiecare furnizor de date cuprinde componentele Connection, Command, DataReader i DataAdapter.

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

Dezvoltarea unui sistem informatic de Contact Center

2.5.4. Accesul direct la date prin intermediul ADO.NET


Accesul direct la date presupune construcia unei comenzi SQL, conectarea la baza de date, executarea comenzii i deconectarea de la baza de date fr memorarea direct a rezultatelor. Dac se lucreaz n mod deconectat atunci se pstreaz o copie a datelor ntr-un obiect de tip DataSet i acestea pot fi prelucrate i dup deconectarea de la baza de date3. O interogare direct a datelor presupune executarea pailor urmtori: a) crearea obiectelor de tip Connection, Command i DataReader ; b) obinerea informaiilor din baza de date cu ajutorul obiectelor de tip DataReader i afiarea acestora ntr-un controler de pe un formular; c) nchiderea conexiunii; d) trimiterea paginii ctre utilizator; n acest moment nu mai avem o legtur direct ntre ceea ce vede utilizatorul i datele din baza de date, obiectele de tip ADO.NET fiind distruse. Adugarea, tergerea sau modificarea datelor se realizeaz n doi pai: a) crearea obiectelor de tip Connection, Command; b) executarea comenzii directe. n Figura 2.4. sunt reprezentai paii menionai anterior.

Aplicaie

Figura 2.4. Paii pentru adugarea/ tergerea sau modificarea datelor

http://articles.sitepoint.com/article/dataset-datareader , DataSet Vs. DataReader, Philip Miseldine, 2003

23

Dezvoltarea unui sistem informatic de Contact Center

2.6. Modelul client - server


2.6.1. Prezentarea arhitecturii
Reelele de calculatoare s-au dezvoltat spectaculos n ultimii ani, datorit evoluiei tehnologiilor hardware, software i de interconectare. Tehnologii de mare vitez au dus la utilizarea reelelor de calculatoare n toate domeniile vieii socio-economice, cu rezultate deosebite. Clasificarea reelelor de calculatoare, dup criteriul distanei, n LAN (Local Area Network), MAN (Metropplitan Area Nerwork) i WAN (Wide Area Network) este foarte cunoscut astzi, iar Internet-ul este accesibil aproape oricui. Extinderea utilizrii Internet-ului a dus la dezvoltarea serviciilor i aplicaiilor distribuite. Orice aplicaie n care solicitantul aciunii este un sistem de calcul (sau un proces) i executantul aciunii este un alt sistem de calcul (sau un alt proces) este o aplicaie client / server. Modelul client / server mparte aplicaia de reea n dou pri: partea de client i partea de server. Prin definiie, partea de client a unei legturi de reea cere informaii sau servicii de la partea de server. De obicei, aceasta parte, ruleaz pe calculatorul utilizatorului i este folosit pentru a accesa informaii sau alte aplicaii din cadrul reelei. Reprezentarea acestei arhitecturi este realizat n Figura 2.5.

24

Dezvoltarea unui sistem informatic de Contact Center

Figura 2.5. Arhitectura Client Server aplicat la Contact Center-ul ING Asigurri de Via

25

Dezvoltarea unui sistem informatic de Contact Center

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.

2.6.2. Utilizarea socket-urilor pentru comunicarea n timp real


Socket-urile sunt utilizate pentru comunicarea n timp real. Exist dou protocoale de baz: TCP (Transport Control Protocol), UDP (User Datagram Protocol) TCP este sigur (fiecare pachet care pleac de la surs va fi confirmat de ctre destinatar) UDP este mai rapid (deoarece sursa nu mai a teapt confirmri) - problema este c pachetele pierdute nu sunt retransmise n unele cazuri este preferat comunicarea TCP4 (de exemplu ntr-un joc online nu se admit pierderi de pachete dac s-ar pierde chiar pachetul n care eroul a omort monstrul, clientul ar putea crede c acesta este nc n via ). n unele cazuri este preferat comunicarea UDP atunci cnd transmitem voce, nici nu ne intereseaz ca aplica ia surs s retransmit un pachet care s-a pierdut acum dou secunde. De asemenea ntr-o astfel de aplica ie (pentru transmiterea de voce) ne intereseaz viteza cu care are loc comunicarea. Vom utiliza comunicarea TCP (sigur) pentru a realiza un chat5. Un calculator din Internet este identificat printr-o adres unic adresa IP. Va trebui s utilizm o astfel de adres pentru a ti cui transmitem (sau care este serverul). Pentru a identifica aplica ia creia i transmitem informa ia vom utiliza un numr special denumit port (o valoare ntre 0 65535). Adresa IP mpreun cu portul formeaz un socket care este identificat de obicei printro scriere de tipul: [adresa_ip:port]. Exemplu: 192.168.1.1 : 4444. Arhitectura folosit pentru realizarea comunicrii ntre operatori i dispeceri este reprezentat n Figura 2.6.
4 5

http://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.aspx , TcpClient Class, 2010

http://www.dreamincode.net/forums/topic/35616-cross-thread-communication-in-c%23/ , Cross Thread Communication n C#, 2010

26

Dezvoltarea unui sistem informatic de Contact Center

Figura 2.6. Modelul client server aplicat pe o aplicaie de chat

27

Dezvoltarea unui sistem informatic de Contact Center

Capitolul 3. Analiza i proiectarea sistemului informatic


n aceast etap se iau decizii generale asupra arhitecturii globale a sistemului, se alege o strategie de implementare i o strategie de alocare a resurselor. Tot n aceast etap se stabilete mprirea sistemului mare n subsisteme, se determin definirea complet a claselor i asocierilor folosite la implementare, ca i interfaa i algoritmii metodelor folosite la implementarea operaiilor. n aceast faz se pune accentul pe cum trebuie fcut, adic se stabilete cum i poate ndeplini sistemul funciile rezultate din cerinele utilizatorului.

3.1. Specificarea cerinelor sistemului informatic


Sistemul informatic realizat poate fi utilizat n departamentul Contact 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. Rapoartele generate pot fi utilizate n activitatea dispecerului pentru monitorizarea fiecrui operator n parte sau a tuturor n ansamblu, urmrirea solicitrilor clienilor, n activitatea de management pentru decizii ce in de politicile companiei. De asemenea, se pot face studii de marketing pe baza informaiilor furnizate de clieni n momentul semnrii unui contract sau atunci cnd este nregistrat n sistem. Sistemul informatic a fost proiectat pe o arhitectur de tip client-server i mprit n cele trei module: Aplicaia operatorului 28

Dezvoltarea unui sistem informatic de Contact Center

Aplicaia dispecerului Serverul

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.

3.2. Analiza sistemului existent


Analiza sistemului existent se regsete ca etap/ proces/ flux de lucru/ activitate n toate metodologiile de realizare a sistemelor informatice6. Aceast etap are ca scop principal cunoaterea sistemului existent i stabilirea modului n care acesta satisface cerinele specificate. Analiza sistemului existent este o component esenial a procesului de realizare a unui sistem informatic.7

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

Dezvoltarea unui sistem informatic de Contact Center

3.2.1. Identificarea entitilor i a caracteristicilor acestora


Pentru proiectarea bazei de date am optat pentru modelul relaional. O baz de date relaional este format din una sau mai multe tabele cu asocieri ntre ele. Datele sunt corelate ntre ele prin legturi numite relaii. O tabel se caracterizeaz prin: denumirea tabelei numrul de coloane: acesta definete gradul tabelei atribut sau cmp: acesta definete o coloan din tabel tuplul reprezint o nregistrare (o linie din tabel) data: intersecia dintre linie i coloan cheia primar: reprezint un atribut sau un grup de atribute prin ale cror valoare se identific unic fiecare tuplu cheia extern: reprezint un atribut ce face referire la un atribut ce aparine altei tabele pe baza acestui atribut se realizeaz operaia de jonciune. Entitile folosite n cadrul aplicaiei sunt prezentate n tabelele de mai jos. Utilizatori CodUtilizator PasswordHint GrupUtilizator Detalii Nume Activ Prenume Utilizator Parola Email

GrupuriUtilizatori IdTip TipUtilizator

TipuriClieni IdTip Tip

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

Dezvoltarea unui sistem informatic de Contact Center

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

Functii_COR IdFunctie Cod_COR Denumirea_conform_COR

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

Dezvoltarea unui sistem informatic de Contact Center

TipuriAgeni TipAgent DescrTip ZoneAgeni IdZona Apeluri IdApel TipClient IdClient TipApel CodOperator Observatii DataIncConv DataSfConv Status TipuriApel IdTip DescrTip Descriere

StatusApel IdStatus Status Alerte Descriere

IdAlerta TipAlerta IdApel IdAgent Observatii Status DataInregistrare DataRezolvare TipuriAlerte IdTip TipAlerta Descriere

3.2.2. Identificarea procedurilor necesare


Pornind de la entitile identificate anterior, se identific procedurile necesare pentru funcionarea sistemului. Va fi nevoie de proceduri pentru : Adugarea unui client n baza de date. Se va verifica mai nti dac exist clientul n baza de date i apoi se va permite adugarea acestuia. Utilizatorul va primi un mesaj care i va solicita s completeze toate cmpurile. Vom valida CNP-ul i restul cmpurilor numerice, precum i toate cmpurile obligatorii fr care nu se poate continua crearea unui client. Este prezentat n Anexa 4. Funcia care verific existena unui client n baza de date. Este prezentat n Anexa 3. 32

Dezvoltarea unui sistem informatic de Contact Center

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.

3.3. Proiectarea noului sistem:


3.3.1. Proiectarea schemelor bazei de date.
Pentru o proiectare mai uoar a bazei de date am ales principiul diviziunii, prin mprirea bazei de date n mai multe grupuri, fiecare grup coninnd tabelele i relaiile dintre ele. n baza de date a sistemului informatic sunt stocate toate informaiile necesare, legate de utilizatorii aplicaiilor, clienii nregistrai, ageni, apeluri i alerte generate de operatori. Baza de date se numete CallCenterDB. Grupurile sunt reprezentate n cte o diagram. Diagramele sistemului sunt: Diagrama Clieni conine tabelele ce stocheaz datele de identificare ale clienilor precum i alte detalii de marketing; aici se regsesc i toate judeele Romniei i funciile conform COR 2010 (Clasificare Ocupaiilor din Romnia); Diagrama Utilizatori conine tabelele ce in de administrarea utilizatorilor; Diagrama Tipuri Asigurri stocheaz tipurile de contracte care sunt oferite de companie (mprite pe categorii i planuri de asigurare); 33

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

Diagrama Utilizatori conine tabelele ce in de administrarea utilizatorilor;

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

Dezvoltarea unui sistem informatic de Contact Center

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

IdPlan IdTip DescrTip

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

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

Capitolul 4. Realizarea aplicaiei informatice


4.1. Implementarea aplicaiei
Implementarea continu ciclul de realizare a sistemului informatic. n aceast etap modelul de proiectare este implementat folosind un limbaj de programare i un sistem de gestiune a bazei de date. Etapa conine i procedurile i funciile responsabile de validri, de algoritmii ce asigur eliminarea unor erori de actualizare. Sistemul informatic a fost proiectat pe o arhitectur de tip client-server i mprit n trei module: Aplicaia operatorului Aplicaia dispecerului Serverul

4.1.1. 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. Acesta a fost realizat n Visual Studio 2008, folosind ca limbaj de programare C#. Fiecare funcionalitate adus acestei aplicaii a fost realizat ntr-un Windows Form nou sau a fost modificat form-ul printe, care este de tip mdiParent. Se creeaz un proiect nou de tip WindowsFormsApplication numit Call Center ING. Ecranul de start Se adaug un form nou la proiectul creat. l denumim frmWelcome. Setm proprietatea ControlBox la False. Cautam proprietatea FormBoderStyle i o setam la None. Setm proprietatea StartupPosition la CenterScreen., iar Cursor la WaitCursor. Se adaug un control de tip Timer pentru a ine ecranul de Start pentru cteva secunde pe ecran dup care se va ncrca aplicaia principal. Setm proprietatea Interval la 5000 milisecunde.

38

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

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.

Formular Apel Informaii


Adugm un WindowsForm la proiectul creat. Acesta se va numi frmApelInfo.cs pe care vom aduga un desfurtor al convorbirii. Acesta va avea rolul de a-l ndruma pe Operator n paii care trebuie s i parcurg pentru a ndeplini solicitrile clientului. mprim fereastra n dou folosind un control de tip SplitContainer cruia i setm proprietatea Dock la Fill. Pe panelul din stnga a SplitContainer-ului mai adaugm un control de tip TableLayoutPanel pentru a putea aduga n acesta dou controale i poziionarea lor la momentul rulrii aplicaiei sa fie fcut automat. Setm proprietatea RowCount i ColumnCount la 2, respectiv 1. n prima celula adugm un control de tip TextBox care va conine textul

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

Dezvoltarea unui sistem informatic de Contact Center

4.1.2. Aplicaia dispecerului


Este util 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.

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

Dezvoltarea unui sistem informatic de Contact Center

4.2. Prezentarea aplicaiei


n continuare vor fi prezentate funcionalitile sistemului informatic, mprite pe cele trei module prezentate anterior.

4.2.1. Aplicaia operatorului


Fereastra principal este mprit n mai multe meniuri funcionale. Meniul cel mai de sus este util n vizualizarea ferestrelor deschise, dar i pentru accesarea opiunilor din meniu. Meniul principal conine butoanele pentru autentificare, butonul pentru preluarea apelurilor n ateptare, butonul pentru delogarea operatorului, precum i un buton pentru activarea lui Ptrel, asistentul aplicaiei, care furnizeaz informaii despre elementele componente ale interfeei utilizator. n partea de jos a ecranul se poate observa un StatusBar care afieaz detalii legate de operatorul conectat, data i ora curent, durata apelului i starea conexiunii la server. Meniul din dreapta este un meniu cu acces rapid la diverse informaii, cum ar fi informaii despre tipurile de contracte oferite de companie sau alte informaii care vor fi implementate n viitor. n continuare sunt descrise funcionalitile principale ale aplicaiei. n figura 4.1. sunt reprezentate fereastra principal i modulul de autentificare.

44

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

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:

Iar n partea central se afieaz fereastra pentru alegerea tipului de apel:

47

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

Fereastra de cutare client:

n cazul n care clientul nu este gsit se afieaz acest mesaj i apare butonul de creare client:

49

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

Informaiile sunt afiate sub forma unui balon de tipul ToolTip, cum ar fi n fereastra apelurilor n ateptare:

Sau n formularul de adugare al unui client:

4.2.2. Aplicaia de la Dispecerat


Fereastra principal este mprit n mai multe meniuri funcionale precum aplicaia de la operator. n partea de sus se regsete meniul principal, care const n gestiunea alertelor posibile: Alerte Informaii Necunoscute Alerte Ageni Alerte Clieni Noi

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

Dezvoltarea unui sistem informatic de Contact Center

Fereastra principal este reprezentat n figura de mai jos:

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

Dezvoltarea unui sistem informatic de Contact Center

Dup alegerea unei alerte se ncarc datele referitoare la client:

55

Dezvoltarea unui sistem informatic de Contact Center

i referitoare la alerta primit:

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

Dezvoltarea unui sistem informatic de Contact Center

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.

Dup o autentificare reuit sunt afiate i restul elementelor componente:

57

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center


MainFrm.NumeUtiliz = authDR.GetString(3); PFRM.StareButoane(true); PFRM.SeteazaNumeOP(true); PFRM.IncearcaConectare(); this.Close(); } else { MessageBox.Show("Parola incorecta !"); //PFRM.StareButoane(false); } } authDR.Close(); } catch (SqlException Myexc) { MessageBox.Show(Myexc.Message); } finally { authconn.Close(); } }

Anexa 2 - Procedura pentru validarea cmpurilor din formularul de adugare clieni.


private void VerificareCampuri(Control Page, Control ctrlExclude) { //bool ok = true; #region Campuri Obligatorii foreach (Control ctrl n Page.Controls) { string tag; tag = ""; if ((ctrl).Tag != null) { tag = ctrl.Tag.ToString(); tag = tag.Trim(); } if (tag.ToUpper() == "CAMP OBLIGATORIU") { if (ctrl is ElementHost)

64

Dezvoltarea unui sistem informatic de Contact Center


{ Highlist_TextBox copil = (Highlist_TextBox)(((ElementHost)ctrl).Child); if (copil.IsHTBEmpty()) { copil.HighlightEmpty(); atentie = true; //ok = false; }

} 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

Dezvoltarea unui sistem informatic de Contact Center


if (!IsNumber(Htb_NrTel.InputTextBox.Text) || Htb_NrTel.InputTextBox.Text.Length != 10) { ((Highlist_TextBox)elementHost_Htb_NrTel.Child).HighlightError(); errorProvider1.SetError(elementHost_Htb_NrTel, "Introduceti un numar de telefon valid! \n(Includeti i prefixul judetului pentru numerele de fix)\n(Trebuie s aib 10 cifre.)"); atentie = true; } else errorProvider1.SetError(elementHost_Htb_NrTel, ""); #endregion //return ok; } //<\ VerificareCampuri>

Anexa 3 - Funcia care verific existena unui client n baza de date


private bool ClientExists_F(Client_F client) { bool exista = false; try {

SqlTransaction TZ; if (sqlConnection1.State == ConnectionState.Closed) sqlConnection1.Open(); TZ = sqlConnection1.BeginTransaction();

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

Dezvoltarea unui sistem informatic de Contact Center

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

Dezvoltarea unui sistem informatic de Contact Center


if (client.NrCopii != -1) cmdInsertString += (client.NrCopii).ToString(); else cmdInsertString += "NULL"; cmdInsertString += ","; if (client.NrPersIntretinute != -1) cmdInsertString += (client.NrPersIntretinute).ToString(); else cmdInsertString += "NULL"; cmdInsertString += ",'" + (client.AcordMkt).ToString() + "',"; if (client.Strada != "") cmdInsertString += "'" + client.Strada + "'"; else cmdInsertString += "NULL"; cmdInsertString +=","; if (client.NrStrada != -1) cmdInsertString += (client.NrStrada).ToString(); else cmdInsertString += "NULL"; cmdInsertString += ","; if (client.Bloc != "") cmdInsertString += "'" + client.Bloc + "'"; else cmdInsertString += "NULL"; cmdInsertString += ","; if (client.Scara != "") cmdInsertString += "'" + client.Scara + "'"; else cmdInsertString += "NULL"; cmdInsertString += ","; if (client.Ap != "") cmdInsertString += "'" + client.Ap + "'"; else cmdInsertString += "NULL"; cmdInsertString += ","; if (client.Localitate != "") cmdInsertString += "'" + client.Localitate + "'"; else cmdInsertString += "NULL"; cmdInsertString += ","; if (client.Sector != "") cmdInsertString += "'" + client.Sector + "'"; else cmdInsertString += "NULL"; cmdInsertString += ","; if (client.Judet != "") cmdInsertString += "'" + client.Judet + "'"; else cmdInsertString += "NULL"; cmdInsertString += ","; if (client.CodPostal != "") cmdInsertString += "'" + client.CodPostal + "'"; else cmdInsertString += "NULL"; cmdInsertString += ","; if (client.NrTel != "") cmdInsertString += "'" + client.NrTel + "'"; else cmdInsertString += "NULL"; cmdInsertString += ","; if (client.Email != "") cmdInsertString += "'" + client.Email + "'"; else cmdInsertString += "NULL"; cmdInsertString += ","; if (client.Observatii != "") cmdInsertString += "'" + client.Observatii + "'"; else cmdInsertString += "NULL"; cmdInsertString += ","; cmdInsertString += "'" + client.Activ + "'"; cmdInsertString += ")"; SqlCommand cmdInsert = new SqlCommand(cmdInsertString, sqlConnection1); cmdInsert.Transaction = TZ; cmdInsert.ExecuteNonQuery();

68

Dezvoltarea unui sistem informatic de Contact Center


MessageBox.Show("Clientul [" + client.Nume + " " + client.Prenume + "] a fost inserat cu succes n baza de date!", "Inserare reuit n BD!"); TZ.Commit(); } catch (Exception exc) { TZ.Rollback(); MessageBox.Show("Detalii eroare:\n\n->" + exc.Message, "Eroare inserare n BD (Modul InsertClientIntoDB_F", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } // <\ InsertIntoDB_F>

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

Dezvoltarea unui sistem informatic de Contact Center

Anexa 6 - Metodele de conectare i comunicare cu serverul. 1. Procedurile de stabilire a conexiunii


public void IncearcaConectare() { try { EstablishConnection(); if (connected) { RegisterWithServer(); keepalive = true; receive = new Thread(new ThreadStart(ReceiveChat)); receive.Start(); authFrm.Close(); frmCon.Close(); }

} 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

Dezvoltarea unui sistem informatic de Contact Center


toolStripLabel_Server.Text = "Conectat"; StareButoane(true); SeteazaNumeOP(true); } catch (Exception e) { toolStripLabel_Server.Text = "Deconectat"; timer_RECONECT.Stop(); frmCon.Hide(); authFrm.Hide(); DialogResult result; result = MessageBox.Show("Eroarea intalnita: " + e.Message, "Eroare initializare server!", MessageBoxButtons.RetryCancel, MessageBoxIcon.Stop); if (result == DialogResult.Cancel) { // Eroare conexiune server => Inchidem toate form-urile deschise. foreach (Form frm n this.MdiChildren) frm.Hide(); timer_RECONECT.Stop(); authFrm.Show(); authFrm.Cursor = Cursors.Default; } else { timer_RECONECT.Start(); frmCon.Show(); } } } 2. Procedura de nregistrare la server private void RegisterWithServer() { try { string command = "CONN|operator|" + frmMain.NumeUtiliz + "|" + frmMain.NumeOp + " " + frmMain.PrenOP + "|"; Byte[] outbytes = System.Text.Encoding.ASCII.GetBytes(command.ToCharArray()); ns.Write(outbytes, 0, outbytes.Length); // string serverresponse = sr.ReadLine(); // serverresponse.Trim(); // string[] tokens = serverresponse.Split(new Char[]{'|'}); // if(tokens[0] == "LIST") // { toolStripLabel_Server.Text = "Conectat"; connected = true; // btnDisconnect.Enabled = true; // } // for(int n=1; n<tokens.Length-1; n++) // lbChatters.Items.Add(tokens[n].Trim(new char[]{'\r','\n'})); // this.Text = clientname + ": Connected to Chat Server";

71

Dezvoltarea unui sistem informatic de Contact Center


} catch (Exception e) { MessageBox.Show("Error Registering\r\n" + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } 3. Procedura de primire mesaje de la server private void ReceiveChat() { while (keepalive) { try { Byte[] buffer = new Byte[2048]; ns.Read(buffer, 0, buffer.Length); string chatter = System.Text.Encoding.ASCII.GetString(buffer); string[] tokens = chatter.Split(new Char[] { '|' }); switch (tokens[0]) { case "QUIT": { ns.Close(); clientsocket.Close(); keepalive = false; //this.Activate(); this.CenterToScreen(); // Make this form the active form and make it TopMost this.ShowInTaskbar = true; this.TopMost = true; this.Focus(); this.BringToFront();

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

Dezvoltarea unui sistem informatic de Contact Center


} } catch (Exception e) { //MessageBox.Show(e.Message,"Eroare Receive Chat ",MessageBoxButtons.OK,MessageBoxIcon.Warning); } } } 4. Procedura de nchidere conexiune la server public void InchideConn() { if (connected) { try { string pubcommand = "GONE|operator|" + frmMain.NumeUtiliz + "|"; Byte[] outbytes = System.Text.Encoding.ASCII.GetBytes(pubcommand.ToCharArray()); keepalive = false; frmMain.ns.Write(outbytes, 0, outbytes.Length); ns.Close(); clientsocket.Close(); connected = false; toolStripLabel_Server.Text = "Deconectat"; } catch (Exception ex) { MessageBox.Show("Eroarea intalnita: " + ex.Message, "Eroare", MessageBoxButtons.OK, MessageBoxIcon.Warning); } if (receive != null && receive.IsAlive) receive.Abort(); } } }

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

Dezvoltarea unui sistem informatic de Contact Center


foreach (DataRow r n ds.Tables["Clienti"].Rows) { //MessageBox.Show("Detalii client: " + (r["IdFunctie"] != DBNull.Value ? System.Convert.ToInt32(r["IdFunctie"].ToString()) : -1), "Informatii"); CL = new Client_F ( (r["IdClient"] != DBNull.Value ? System.Convert.ToDecimal(r["IdClient"].ToString()) : -1), (r["TipClient"] != DBNull.Value ? System.Convert.ToInt32(r["TipClient"].ToString()) : -1), ((r["CNP"] != DBNull.Value) ? r["CNP"].ToString() : ""), (r["Adresare"] != DBNull.Value ? r["Adresare"].ToString() : "<<Alegeti adresare >>"), (r["Nume"] != DBNull.Value ? r["Nume"].ToString() : ""), (r["Prenume"] != DBNull.Value ? r["Prenume"].ToString() : ""), (r["IdFunctie"] != DBNull.Value ? System.Convert.ToInt32(r["IdFunctie"].ToString()) : -1), (r["Venit"] != DBNull.Value ? r["Venit"].ToString() : ""), (r["NrCopii"] != DBNull.Value ? System.Convert.ToInt32(r["NrCopii"].ToString()) : -1), (r["NrPersIntretinute"] != DBNull.Value ? System.Convert.ToInt32(r["NrPersIntretinute"].ToString()) : -1), (r["AcordMkt"] != DBNull.Value ? System.Convert.ToBoolean(r["AcordMkt"].ToString()) : false), (r["Strada"] != DBNull.Value ? r["Strada"].ToString() : ""), (r["NrStrada"] != DBNull.Value ? System.Convert.ToInt32(r["NrStrada"].ToString()) : -1), (r["Bloc"] != DBNull.Value ? r["Bloc"].ToString() : ""), (r["Scara"] != DBNull.Value ? r["Scara"].ToString() : ""), (r["Ap"] != DBNull.Value ? r["Ap"].ToString() : ""), (r["Localitate"] != DBNull.Value ? r["Localitate"].ToString() : ""), (r["Sector"] != DBNull.Value ? r["Sector"].ToString() : ""), (r["Judet"] != DBNull.Value ? r["Judet"].ToString() : ""), (r["CodPostal"] != DBNull.Value ? r["CodPostal"].ToString() : ""), (r["NrTel"] != DBNull.Value ? r["NrTel"].ToString() : ""), (r["Email"] != DBNull.Value ? r["Email"].ToString() : ""), (r["Observatii"] != DBNull.Value ? r["Observatii"].ToString() : ""), (r["Activ"] != DBNull.Value ? System.Convert.ToBoolean(r["Activ"].ToString()) : false) ); } sqlConnection1.Close(); } catch (Exception exc) { MessageBox.Show("Detalii eroare: " + exc.Message, "Eroare modul [GetClient_F]"); } return CL; }

74

S-ar putea să vă placă și