Documente Academic
Documente Profesional
Documente Cultură
Coordonator tiinific,
Conf. Univ. dr. Botezatu Cezar
Student,
Coman Adrian-Alexandru
Bucureti 2014
Cuprins
Introducere .................................................................................................................................................... 4
1.
1.2
1.3
1.4
1.5
1.6
1.6.1
1.5.2
1.5.3
Analiza critic a sistemului actual i identificarea neajunsurilor existente n funcionarea
sistemului existent ............................................................................................................................... 13
1.5.4
2
3.
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
Cursant_copil ...................................................................................................................................... 32
3.2 Proiectarea logic i fizic a ieirilor ................................................................................................. 33
3.3 Proiectarea logic i fizic a intrrilor .............................................................................................. 36
3.4 Proiectarea bazei de date ................................................................................................................. 37
3.5 Proiectarea interfeei aplicaiei ........................................................................................................ 42
4.
5.
Bibliografie ................................................................................................................................................. 56
Anexa .......................................................................................................................................................... 58
CONTRACT DE PRESTRI DE SERVICII ..................................................................................................... 58
CONTRACT DE PRESTRI DE SERVICII ..................................................................................................... 62
Introducere
Succesul unei afaceri st n modul cum i foloseti resursele pe care le ai la dispoziie. n
lucrarea de fa se propune dezvoltarea unei aplicaii Windows 8 Modern UI pentru administrarea
unui studio de dans: Lotus Dance. Produsul software se adreseaz persoanelor moderne, cu
deschidere ctre noutatea tehnologic. Sistemul poate rula pe diferite medii: tablete, laptop-uri, pcuri cu sistem de operare Windows 8 i telefoane cu system de operare Windows Phone 8. Exist
patru categorii de utiliza-tori: guest, user, cursant i administrator, cu roluri specifice.
n dezvoltarea aplicaiei au fost utilizate tehnologii de ultim or: aplicaia principal este
realizat folosind framework-ul .NET pe baz de C# i XAML, serviciile Windows Azure se ocup
cu stocarea bazei de date SQL n cloud, serviciul Mobile Services asigur comunicarea ntre
aplicaia principal, baza de date i reelele de socializ-are (Facebook, Twitter, Google) care
furnizeaz profilul utilizatorului.
Aplicaia, care poate fi descarcat gratuit din Market Place, se constituie intr-un veritabil
instrument de promovare a activitii studio-ului Lotus Dance, beneficiind de oportunitile oferite
de caracterul viral al reelelor de socializ-are.
Trind n secolul XXI se poate vedea tendina din ce n ce mai accentuat a oamenilor de a fi
conectai, de a se ndrepta ctre lucruri care le fac viaa ct mai uoar. Oamenii se ndreapt ctre
lucruri accesibile oricrui tip de utilizator: de la un as al tehnicii avansate pn la un novice n ale
calculatoarelor.
Un aspect n care lumea virtuala i face simit prezena este facilitarea accesului
consumatorilor la servicii precum centre spa, sli de fitness i studiouri de dans.
Asociaia Club de Dans Sportiv Lotus Dance a fost deschis n anul 2008 cu codul unic
de identificare fiscal 24548648. Are dou locaii n prezent: una n zona Pipera i cealalt ntr-o
zon mai central a Bucuretiului n zona Alba Iulia. Ambele zone sunt alese pentru a atrage
diferite categorii de persoane. Cea din zona Alba Iulia, fiind situat aproape de gura de metrou
Piaa Muncii i Dristor are avantajul c poate s ajung foarte multe persoane la cursuri i datorit
faptului c este situat n mijlocul unei zone rezideniale atrage foarte multe persoane care locuiesc
n apropiere i observ activitatea de la sal.
Sala din zona Pipera este aleas pentru c este un teren virgin, nemaiexistnd concuren
din partea colilor de dans mai mari astfel c a meninerea un monopolului n acea zon este fcut
cu uurin. Un alt factor important pentru deschiderea slii n acea zon este zon este distana
foarte apropiat de dou coli generale asigurnd astfel un flux de copii constant care se nscriu la
cursurile de dans organizate de noi.
Compania este condus de dou persoane, mam i fiu: Coman Vichy i Coman AdrianAlexandru avnd ca angajai un instructor de dans sportiv, un instructor de street-dance, un
contabil, un avocat i o persoan care s se ocupe de ntreinerea cureniei studioului. De
asemenea cele dou persoane care se ocup de conducerea studioului sunt i antrenori de dans la
Lotus Dance.
Activitile asociaiei sunt de tipul prestri de servicii i cursurile se desfoar ntr-un
studio amenajat pe strada Popa Stoica din Farca Nr 92 ntr-o sal modern amenajat cu aer
condiionat, acces wireless la internet, televizor, cabine de du, sal de ateptare, oglinzi, parchet
precum i spaiu amenajat pentru persoanele care vin direct de la serviciu i vor s serveasc o
scurt gustare, un ceai sau o cafea. Astfel c n sal exist i o mic spaiu amenajat vnzrii
produselor.
Scopul funcionrii este popularea dansului sportiv i predarea figurilor de dans diferitelor
categorii de persoane n funcie de vrst, nivel i venit. Pe lng cursurile de dans oferite de
6
studioul de dans, Lotus Dance presteaz i servicii de dans n cadrul evenimentelor corporate:
perechi de dansatori profesioniti care danseaz pe ritmuri de tangou, vals, cha-cha, samba etc.
1.2
Ultima separare se face n funcie de venitul, importana i scopul urmrii cursului de dans:
1. edinele de grup: Aceast variant este, n general, cea mai ieftin i cea mai popular.
Preul variaz ntre 100 i 150 RON pe lun i cuprinde 8 edine de dans n grupe formate
din maxim 16 persoane.
2. edinele particulare: Aceast variant este aleas de ctre persoanele care doresc s
dobndeasc cunotine avansate ntr-un interval de timp mai scurt. Preul unei edine
particulare de dans variaz ntre 70 i 110 RON pentru 90 de minute.
7
Pe lng aceste activiti, Lotus Dance ofer i spectacole de dans sportiv n cadrul business sau
pentru evenimente speciale. ntre dou i zece perechi de dansatori profesioniti mbrcai al patru
ace intr pe scen i prezint dansuri precum tango, vals, cha-cha, salsa, samba, charlestone etc.
Ultima activitate care ruleaz la sala Lotus Dance este aceea de vnzare a produselor semipreparate i a buturilor rcoritoare. Acestea se vnd n camer de ateptare fie pentru prinii care
i ateapt copii fie pentru persoanele care vin direct de la serviciu, coal i nu au avut timp s ia
o gustare sau s i cumpere o sticl de ap/suc.
1.3
Asociaia Club de Dans Sportiv Lotus Dance este condus de ctre o echip format din dou
persoane, mam i fiu, parteneri cu drepturi egale n cadrul studioului acetia ocup postul de
director general.
Directorul General este cel care are grij de toi instructorii, antrenorii i dansatorii studioului.
Acesta trebuie s caute noi investitori, s conteacteze diferite persoane i companii n vederea
crerii de parteneriate, decide ce coninut s fie trecut pe site-ul studioului, dac este cazul s
uneasc grupe sau s le separe, programul sub care vor rula grupele n cadrul studioului, programul
edinelor particulare. Directorul general ia i decizia asupra oricrui tip de implicre financiar i,
dac este cazul, nchide parteneriatele care se dovedesc a fi neeficiente. Tot directorul general este
cel care stabilete programa i data spectacolelor n anul care urmeaz precum i repartizarea
perechilor de dansatori n spectacolele organizate de ctre noi sau la care particip studioul.
Director
General
Antrenor
Contabil
Social Media
Manager
Instructor
Dansatori
evenimente
Fig. 1 Organigram
1.4
Asociaia are cinci angajai fiecare cu rolurile pui specifice: doi instructori, un contabil, un
avocat i o persoan care se ocup de ngrijirea aspectului slii.
Cei doi instructori sunt tineri de 20 respectiv 22 de ani, cu deschidere ctre noutate i
tehnologie, fcnd astfel uoar implementarea unui sistem de gestiune pe care acetia s l poat
folosi, mai ales dac sistemul este accesibil de pe telefoanele mobile sau tabletele acestora.o
Instructorul se ocup cu predarea figurilor de dans syllabus dup un curriculum sistematic
i continuu, gradat i ataptat aptitudinilor i potenialului fizic i motric. Crearea de coregrafii
simple, instruirea dansatorilor, monitorizarea i evaluarea lor n vederea trecerii n cadrul unei
grupe mai avansate. De asemenea se ocup de cursanii care opteaz pentru ore particulare i
doresc s pregteasc dansul de deschidere a nunii. Postul imediat superior este cel de antrenor,
neexistnd post inferior.
Antrenorul se ocup cu predarea figurilor de dans avansate, de nivel C, B, A i S. Are
nevoie de cunotine pedagogice i se adapteaz cu uurin diferitelor tipuri de persoane crora le
pred. Se ocup de crearea de coregrafii complexe i colaje att pentru cuplurile care vin s se
9
pregteasc pentru dansul de nunt, dar i pentru cuplurile care doresc perfecionarea n arta
dansului sportiv. Decide de asemenea dac un dansator va fi avansat i trecut n cadrul unei grupe
superioare. Postul imediat superior este Director General, cel inferior este de instructor.
Dansatorii profesioniti sunt cei care se ocup de evenimentele organizate de Lotus Dance
sau n parteneriat cu studioul nostru. Se deplaseaz la locaia stabilit de client i presteaz unul
sau mai multe momente de dans care pot s conin unul din urmtoarele stiluri de dans: dansuri
clasice (vals, tango, quick step, slowfox), dansuri latino (samba, cha-cha, rumba, jive, passo
doble), dansuri de club (tango argentinian, salsa, merengue, bachata), dansuri de strad (street
dance, hip-hop).
Social Media Manager se ocup de integrarea activitii offline cu cea online asigurnduse c fiecare eveniment pe care-l organizm ajunge s fie populat pe reelele de socializare. De
asemenea se ocup cu redactarea articolelor pe blog pentru a mri reach-ul i engagement-ul n
mediul online i a se asigura de o mai bun fluiditate a link-juice-ului n cadrul site-ului de
prezentare.
1.5
1.6
11
Posibilul
client
Caut informaii
pentru cursuri
Site
Gsete
informaiile
complete
Telefon/
E-mail
Stabilim pre
nscreirea la cursuri
Studiou
nscrierea la
cursuri i achitarea
avansului
maxim dou
nceperea Dup
sptmni ncep
cursului cursurile
12
Ultimul tip de cursant este cel care alege s fac edinele particular, tabelul are ca proprieti:
nume, telefon, e-mail, data edinelor i instructorul avnd relaii de M la 1 cu data deoarece ntro anumit or i o anumit dat nu poate fi dect un singur cuplu n sal i M la 1 cu instructorul
deoarece doar un instructor se poate ocupa de un cuplu.
Principalul lucru la care trebuie renunat este sistemul de ndosariere care ocup spaiu i aduce
greuti atunci cnd vine vorba de cutarea unui document exact. De asemenea mai apar probleme
n cazul n care doi instructori i planific n acelai timp o edina de dans n acelai interval orar.
Acest lucru nefiind permis la Lotus Dance unul dintre acetia trebuie s sune clientul i s
stabileasc un alt interval pentru edine.
Un alt defect al sistemului actual este lipsa unei modaliti de a transmite live clienilor statusul
slii: locuri libere la grupe, intervale orare libere pentru edine particulare sau disponibilitate
pentru spectacole. La fiecare telefon trebuie s comunicm clienilor toate informaiile acestea.
Alta problem ridicat de sistemul actual este nevoie ca persoana nscris s vin pn la sal
pentru a achita avansul. De multe ori persoanelor le este greu s vin i renun fie la curs fie s
plteasc avansul ajungnd astfel la neplceri.
Sistemul va avea o baz de date unde se vor putea conecta att cursanii ct i instructorii
studioului de dans. Astfel se va renuna la nevoia de a avea toate informaiile pe hrtie eliminnd
spaiul ocupat de documente i reuind o mai bun gestionare a datelor.
Stocarea bazei de date ntr-un mediu online este o direcie bun de urmat pentru a elimina
problema programrii edinelor n acelai interval orar i va oferi o soluie pentru cursani s vad
cnd au programate edinele.
13
Pentru eliminarea drumului pe care cursanii trebuie s l fac la sal pentru achitarea primei
pri a cursului vom implementa un sistem de plat n cadrul aplicaiei. Plata se va face prin
Facebook, Paypal, Windows Store sau prin virament bancar. Factura se va emite n momentul n
care persoana a terminat nscrierea i detaliile de plat i vor fi livrate pe e-mail dup mpreun cu
chitana dac a decis s fac plata pe loc.
14
2.1
Ideea care va fi urmat n sistemul care urmeaz s fie conceput este simplitate: crearea
unui sistem cu o interfa grafic minimalist, dar care s aib toate informaiile necesare.
Direcia de urmat este crearea unei platforme cu baz e date online la care se vor putea
conecta att clienii pentru a verifica disponibilitatea locurilor libere, nscrierea la cursuri de dans
i urmrirea figurilor predate n timpul cursurilor de dans. Astfel vom elimina problema de a face
dou nscrieri n acelai interval de timp.
Pentru instructori sistemul va permite monitorizarea orelor pe care le-a fcut n luna n
curs, edinele pe care urmeaz s le in i s fac eventuale modificri n programul actual.
Datorit faptului c sistemul este conectat la o baz de date online vom evita cazul n care doi
instructori stabilesc o edin n cadrul aceluiai interval orar. De asemenea la fiecare modificare
fcut de oricare dintre pri att instructorul ct i cursantul vor fi atenionai printr-un notificare
de tip toast i un e-mail.
2.2
15
2.3
100
90
80
70
60
50
40
30
20
10
0
Noiembrie
Decembrie
Cursuri aduli
Ianuarie
Februarie
Cursuri copii
Martie
Aprilie
Cursuri particulare
Fig. 4. Situaia persoanelor care s-au nscris la cursurile de dans n ultimele ase luni
16
2.4
Baza de date este realizat n Microsoft SQL Server i conine 13 tabele relaionate.
Tabelele sunt grupate n trei categorii: o categorie conine informaii despre cursanii aduli care
opteaz pentru orele de grup, cea de a doua fiind destinat celor care aleg edinele particulare i
a treia categorie pentru cursanii, aduli sau copii, care aleg orele particulare.
Atributele exprim caracteristici i proprieti a sistemului economic analizat i a asocierilor dintre
componente. n mod curent, atributele sunt asociate entitilor. Fiecare entitate conine un numr
de atribute:
CURSANT
Id, nume, telefon, e-mail, sex, rank, grupa, confirmat, pachet, containerName, resourceName,
sasQueryString, imageUri, channel.
COPIL
Id, nume, telefon, email, varsta, grupa.
PARTICULAR
Id, nume, telefon, email, sex, sedinte, instructor.
INSTRUCTOR
Id, nume, email, telefon, sex.
GRUPA
Id, zi1, zi2, nivel, id_instructor
STIL
Id_stil, stil.
DATA_SEDINTA
Id, data, ora
COPIL_GRUP
Id,, idCopil, idGrup
CURSANT_GRUP
idCursant, idGrup
17
REL_PARTIC_DATA
Id, DataId, particID
CURSANT_LUNA
IdCursant, idGrup
STIL_GRUP
IdStil, IdGrup
2.5
Diagrama Entitate-Asociere
2.6
Tehnologii utilizate
Windows Azure Mobile Service este un serviciu oferit de Microsoft lansat cu scopul de a
facilita dezvoltarea unor aplicaii mobile de top. Mobile Services unete un set de servicii Windows
Azure care creeaz un backend foarte puternic pentru aplicaii: sistem de gestionare a tabelelor,
integrarea notificrilor i serviciilor push i toast, integrarea providerilor de identitate pentru
autentificare, posibilitatea de integrare cu alte servicii de tip cloud, posibilitatea de scalarizare a
unei instane de servicii.
Baza de date Microsoft Windows Azure SQL extinde capabilitile unui server obinuit
prin gzduirea n cloud. Folosind serviciul Windows Azure SQL Database un utilizator i poate
crea o baz de date uor de relaionat i de ntreinut. Beneficiile sunt: manevrabilitate, grad foarte
mare de disponibilitate, posibilitatea scalarizrii, un model deja cunoscut de baze de date i un
model de baz de date relaional. Un alt atuu foarte important a stocri n baza de date Microsoft
Windows Azure SQL este replicarea datelor. Acestea fiind replicate de trei ori, tolernd astfel
eventuale greeli n lucrul cu date i uurin n cazul n dorim s revenim la un backup mai vechi
deoarece tergerea unei nregistrri, tabele sau a ntregii baze de date nu este o greeal fatal.
Serviciul de Storage furnizat de Microsoft ofer aplicaiei acces la servicii de tip blob
pentru date binare de dimensiuni mari, tabele pentru stocare non-relaional i queue pentru
transmiterea de mesaje ntre aplicaii. Un cont de storage poate s aib unul sau mai multe
containere care s conin diferite blob-uri. Blob-urile pot fi de dimensiuni mari de pn la 50
gigabii, i pentru transferul mai uor de blob-uri, acestea pot fi subdivizate n blocuri. Astfel c n
cazul unei erori de transmitere nu va fi nevoie s se retransmit ntregul blob ci o s se transmit
de la blocul de date de unde s-a tiat conexiunea.
19
2.7
Arhitectura aplicaiei
Din punctul de vedere al tehnologiilor utilizate, aplicaia este structurat pe patru nivele:
Baza de date: Include partea de stocare i gestiune a informaiilor. Acest nivel este folosit
pentru prelucrri rapide pe volum mare de date oferind securitate sporit i posibilitatea
de export n diferite formate (excel, pdf, xml, text etc)
Serverul Mobile Services asigur legtura ntre nivelul 3, 4 i nivelul 1 (serverul SQL),
ocupndu-se de validarea informaiilor de logare, de prelucrarea datelor i inserarea lor n
baza de date.
Limbajul XAML este cel care ajut la crearea unui sistem modern cu interfa
ergonomic i intuitiv. Este nivelul care determin interfaa produsului software,
20
Interfaa
XAML
Logica i serializarea informaiilor
C#
Prelucarea i inserarea datelor
SQL
Fig.7 Cele patru nivele ale aplicaiei
21
7. Pachetul de date este introdus n baza de date SQL numai dac pachetul vine cu token-ul de
acreditare potrivit din partea Facebook.
2.8
Tehnologie de prelucrare
Hardware:
Laptop: Procesor i3 2.40 GHz, 8GB ram, 1TB spaiu de stocare folosit att pentru a reda melodiile
ct i pentru gestionarea studioului de dans. Preul de achiziie este dou mii de lei.
Sistem audio: Aplificator audio conectat la laptop pentru citirea melodiilor i cinci boxe i un
subwoofer pentru redarea melodiilor. Preul ntregului sistem este trei mii de lei.
Router Wireless: Folosit datorit nevoii de a comunica cu baza de date din cloud pe care o are
aplicaia i datorit faptului c persoanele care vin la sal se pot conecta la internet n cazul n care
au pauz sau au ajuns prea devreme. Preul de achiziie este de dou sute lei.
Aparat foto Nikon D5100: Folosit pentru a livra coninut ctre Social Media Manager pe care
acesta l public n cadrul reelelor de socializare pentru a mri reach-ul studioului. Pre de achiziie
dou mii dou sute lei.
Software:
22
Toate pachetele Microsoft au fost achiziionate prin parteneriatul BizSpark pe care Lotus Dance l
are cu Microsoft. Astfel nct preurile au fost reduse la zero. Parteneriatul este valabil ntre doi i
cinci ani i dup terminarea perioadei de parteneriat o parte din produsele software pot fi folosite
n continuare.
Licen Windows Azure: Windows Azure este o platform creat de Microsoft pentru a crea, a
face deploy i a administra servicii i aplicaii de oriunde de pe glob prin intermediul centrelor de
date Microsoft. Alegerea de a lucra cu Windows Azure a fost fcut datorit faptului c nu exist
un abonament lunar ci plteti fix volumul de date pe care-l foloeti i, dac este cazul, s se poat
mri numrul de resurse alocate pentru susinerea aplicaiei n mod automat. Acest lucru
dovedindu-se un adevrat avantaj fa de metoda clasic de a avea o baz de date pentru care fie
ar fi trebui s se plteasc ntreaga arhitectur, mentenana, back-up-ul fiierelor i eventual plata
diferitelor defeciuni hardware care ar fi putut s apar dup un an sau doi de funcionare. Din
estimri preul pentru serviciul azure este de aproximativ cincizeci de euro / an, dar datorit
faptului c studioul Lotus Dance a fost ncadrat n programul BizSpark de startup-uri preul este
inexistent.
Visual Studio Professional 2013: Un mediu de programare integrat oferit de Microsoft a fost ales
datorit monopolului pe care-l prezint Windows-ul pe piaa calculatoarelor de birou i datorit
nivelului din ce n ce mai mare ca i cot de pia a telefoanelor mobile cu sistem de operare
Windows Phone 8. Folosit pentru dezvoltarea aplicaiei, viitoare update-uri, Visual Studio este o
unealt de importan maxim pentru dezvoltarea produsului software. Preul unei licene este de
aproximativ cinci sute de dolari, dar datorit programului BizSpark acesta este livrat n mod
gratuit.
Windows 8.1: Folosit ca sistem de operare pentru laptop-ul de la sal i ca sistem de rulare pentru
aplicaia care va fi folosit pentru administrarea studioului. Principalul motiv pentru care s-a ales
Windows 8.1 este noutatea tehnologic de care acesta d dovad fiind construit pentru touch,
interfa intuitiv i primit gratuit din programul BizSpark. O licen de Windows 8 are preul de
o sut dou zeci de dolari.
Suita de pachete Office 2013: Folosite pentru redactarea documentelor oficiale, a listelor de
prezen, a programului slii, programului spectacolelor i a fielor cursanilor. De asemenea
23
folosim outlook pentru citirea i trimiterea e-mail-urilor. Preul pentru suita Office 2013 Home i
Office este de o mie o sut lei.
2.9
Calendarul de realizare
Baza de date
Implementarea aplicaiei
24
Testarea i lansarea
user
instructor
cursant
administrator
Cursanii sunt de trei feluri, cursanii care vin la orele de grup pentru aduli, cursanii care vin
la orele de grup pentru copii i cei care iau ore particulare, astfel nct, clasa cursant este motenit
de clasa particular i copii.
n cele ce urmeaz vom vedea mai n detaliu cum se formeaz legturile ntre clase, care
sunt proprietile acestora i metodele specifice fiecrei categorii de utilizator.
25
26
User
User este o clas abastract care nu va fi propriu-zis folosit. n schimb, din aceasta deriv
principalele clase ale aplicaiei: cursant, instructor i administrator.
Ca i proprieti, clasa user are:
Nume: de tip string, loc unde va fi stocat numele i prenumele persoanei care va fi
nregistrat.
E-mail: de tip string, este modul principal de nregistrare n interiorul aplicaiei, pentru
user-ul normal aceasta este opional iar pentru userii care doresc s se nregistreze,
aceasta va fi sustras prin intermediul contului de Facebook, Google+ sau Twitter.
Rank: pentru a putea beneficia de anumite facilitii, am introdus proprietatea rank care
se updateaz automat la anumite perioade de timp. Cu ajutorul proprietii rank,
cursantul are acces la anumite reduceri sau la anumite evenimente pe care le
organizeaz Lotus Dance. De asemenea, prin intermediul proprietii RANK facem i
diferenierea la nivel de accesare de informaii cu referire la cine a fcut cererea (un
instructor, un administrator, un antrenor sau un cursant).
Sex: de tip string, aceast informaie este luat fie prin intermediul reelelor de
socializare (dac avem acces la aceast informaie), fie prin intermediul formularului
de nregistrare. Pentru cursani este un atribut obligatoriu i esenial pentru a verifica
proporionalitatea grupelor, iar pentru instructori un detaliu la fel de important pentru
a asigura sexe diferite n cadrul orelor particulare.
Image_url: de tip string, aici va fi stoca string-ul care va face trimitere ctre imaginea
profilului utilizatorului. Aceast informaie va fi luat fie de pe profilul de Facebook,
Google+ sau Twitter al utilizatorului sau, dac dorete, poate s ncarce el una
personalizat prin intermediul aplicaiei.
minute de la validarea acesteia n contextul n care nu mai este apelat sau folosit, n
caz contrar aceasta mai primete nc cinci minute ca durat de via.
resourceName: n resourceName vom stoca fix adresa din blog a imaginii. Aceasta vine
sub forma de nume_poz + .jpg.
Ca un rezumat al modului de operare a stocrii de tip BLOB: Image_url ne va spune url-ul unde
se gsete imaginea, pentru accesarea url-ului avem nevoie de o semnturi de tip SAS care este
valabil doar 5 minute de la crearea acesteia, pentru accesarea fiierului trebuie s tim locul unde
aceasta este stocat (containerName) i numele exact (resourceName) pentru a o putea identifica
i a o folosi.
Metodele clasei:
void rezerva: o metod care va fi folosit de toate celelalte clase care motenesc pe USER.
Cursantul, instructorul sau administratorul pot s nscrie persoane la cursurile de dans
apelnd aceast metod. Ca parametrii de intrare, aceasta are: nume, sex, e-mail, telefon,
grupa, rank_i, rank_sender. n momentul apelrii aceste funcii, se va forma o clas cursant,
instructor sau administrator (n funcie de rank_i care i este atribuit), informaia va fi
serializat i trimit n Windows Azure pentru stocare, urmnd ca utilizatorul s i poat
aduga poz de profil ulterior sau s i modifice anumite date.
void rank: o metod de tip get/set pentru a putea stabili gradul de acces al utilizatorului n
cadrul aplicaiei.
void self_modi: o metod care permite utilizatorului s i modifice anumii parametrii din
cadrul profilului personal.
Cursant
Cursantul este persoana care s-a nscris la un curs, fie c a fost sau nu acceptat. n momentul
nscrierii, cursantul are acces la anumite statistici n cadrul aplicaiei. CURSANT fiind o clas
motenit din USER are aceleai proprieti specificate mai sus, dar i urmtoarele:
28
Grupa: proprietate de tip string, vor fi stocate informaiile referitoare la grupa unde
cursantul dorete s fac cursurile de dans sau, n cazul orelor particulare, data primei
edine.
Pachet: o proprietate de tip string, aceasta arat pachetul pe care un cursant l-a ales. Acesta
face referire strict la ce fel de abonament a ales (clasificat n funcie de numrul de edine
sau numrul de luni, n cazul orelor de grup)
Stil: o proprietate de tip string, va arta stilurile de dans pe care cursantul a ales s le
urmeze.
Id_c_grup: pentru o mai bun indexare, fiecare cursant o s aib propriul lui ID, acesta va
fi generat automat, dac utilizatorul nu dorete s se nregistreze prin intermediul reelelor
de socializare, sau va fi folosit id-ul unic dat de Facebook, Google+ sau Twitter n
momentul primei nregistrri al utilizatorului pe una din cele trei reele de socializare. n
momentul nregistrrii, id-ul dispozitivului va fi asociat cu cel al userului, astfel nct se
vor putea trimite notificri de tip push i toast ctre acesta, asigurndu-ne c primete mai
rapid diferitele informaii.
Void signal: cu ajutorul acestei metode, cursantul poate s alerteze instructorul care i este
asignat sau administratorul cu referire la imposibilitatea de a ajunge la o edin. n cadrul
orelor particulare, acesta va fi pus s reprogrameze edina urmnd s primeasc
confirmare prin intermediul aplicaiei. Confirmarea va veni fie de la instructor fie de la
administrator.
29
Instructor
Clas motenit din USER, INSTRUCTOR are o parte din posibilitile de administrare ale unui
administrator, dar nu toate. Proprietile acestuia sunt:
Grupa: proprietate de tip string, aceasta arat grupa care i este asignat instructorului.
Id_instr: pentru o mai bun indexare, fiecare instructor o s aib propriul lui ID, acesta va
fi generat automat, dac nu dorete s se nregistreze prin intermediul reelelor de
socializare, sau va fi folosit id-ul unic dat de Facebook, Google+ sau Twitter n momentul
primei nregistrri al utilizatorului pe una din cele trei reele de socializare. n momentul
nregistrrii, id-ul dispozitivului va fi asociat cu cel al instructorului, astfel nct se vor
putea trimite notificri de tip push i toast ctre acesta, asigurndu-ne c primete mai rapid
diferitele informaii.
Add_crs: instructorul poate s adauge un cursant direct n cadrul unei grupe, fr a fi nevoie
s fac nainte rezervarea locului. Ca parametrii de intrare, aceasta are: nume, sex, e-mail,
telefon, grupa, rank_i, rank_sender. n momentul apelrii aceste funcii, se va forma o clas
cursant, informaia va fi serializat i trimis n Windows Azure pentru stocare, urmnd ca
utilizatorul s i poat aduga poz de profil ulterior sau s i modifice anumite date prin
intermediul aplicaiei.
Modif: instructorul poate s modifice data programrii unei edine particulare sau ora
acesteia. n momentul n care orice tip de modificare a fost fcut, persoana implicat va
primi o notificare de tip toast pe dispozitiv precum i un e-mail care s l informeze cu
referire la modificarea fcut.
Administrator
Proprietile clasei sunt urmtoarele:
Id_admin: pentru o mai bun indexare, fiecare administrator o s aib propriul lui ID,
acesta va fi generat automat, dac nu dorete s se nregistreze prin intermediul reelelor
de socializare, sau va fi folosit id-ul unic dat de Facebook, Google+ sau Twitter n
momentul primei nregistrri pe una din cele trei reele de socializare. n momentul
nregistrrii, id-ul dispozitivului va fi asociat cu cel al instructorului, astfel nct se vor
putea trimite notificri de tip push i toast ctre acesta, asigurndu-ne c primete mai rapid
30
diferitele informaii. Specific administratorului este faptul c Id-ul poate fi generat doar
rulnd aplicaia din serviciul de cloud. Astfel c nu vor exista probleme de securitate prin
accesarea informaiilor de ctre persoane nedorite.
Metodele clasei:
Add_cursant: metod de tip void, este folosit pentru adugare instant a unei persoane la
cursuri fr a fi necesar confirmarea unei alte persoane. Ca parametrii de intrare, aceasta
are: nume, sex, e-mail, telefon, grupa, rank_i, rank_sender. n momentul apelrii aceste
funcii, se va forma o clas cursant, informaia va fi serializat i trimis n Windows Azure
pentru stocare, urmnd ca utilizatorul s i poat aduga poz de profil ulterior sau s i
modifice anumite date prin intermediul aplicaiei.
Add_instructor: metod de tip void, este folosit pentru adugarea unui instructor n sistem.
Fiind, de asemenea, i singura metod de a face aa ceva. Ca parametrii de intrare, aceasta
are: nume, sex, e-mail, telefon, grupa, rank. n momentul apelrii aceste funcii, se va forma
o clas instructor, informaia va fi serializat i trimis n Windows Azure pentru stocare,
urmnd ca utilizatorul s i poat aduga poz de profil ulterior sau s i modifice anumite
date prin intermediul aplicaiei.
Delete: metod de tip void, administratorul este singurul care are voie s tearg cursani,
date, edine din sistem. Folosim ghilimele deoarece datele nu vor fi terse ci doar mutate
ntr-un alt tabel fantom pentru generarea altor rapoarte suplimentare.
Modif: administratorul poate s modifice data programrii unei edine particulare sau ora
acesteia. n momentul n care orice tip de modificare a fost fcut, persoana implicat va
primi o notificare de tip toast pe dispozitiv precum i un e-mail care s l informeze cu
referire la modificarea fcut.
Cursant_partic
Clasa CURSANT_PARTIC este motenit din clasa CURSANT. Aceasta i ia toate proprietile
i metodele (pe care nu le vom mai discuta aici, fiind prezentate anterior), dar are n plus
urmtoarele proprieti:
Data_nunta: proprietate de tip date, va fi stocat data nunii sau data evenimentului pentru
care se pregtete cursantul n vederea repartizrii optime a orelor de curs. Aceast dat va
31
Id_p_grup: Proprietate de tip string, fiecare cursant o s aib propriul lui ID, acesta va fi
generat automat, dac utilizatorul nu dorete s se nregistreze prin intermediul reelelor de
socializare, sau va fi folosit id-ul unic dat de Facebook, Google+ sau Twitter n momentul
primei nregistrri al utilizatorului pe una din cele trei reele de socializare. n momentul
nregistrrii, id-ul dispozitivului va fi asociat cu cel al userului, astfel nct se vor putea
trimite notificri de tip push i toast ctre acesta, asigurndu-ne c primete mai rapid
diferitele informaii.
Melodie: proprietate de tip string, va stoca melodie pe care un cursant a ales-o pentru nunta
sau evenimentul acestuia.
Sedinta: proprietate de tip date, vor fi stocate datele edinelor pentru rezervarea locului n
sal i rezervarea orei instructorului.
Cursant_copil
Clas motenit din clasa CURSANT, CURSANT_COPIL motenete toate proprietile i
metodele prezentate mai sus, dar mai are trei proprieti aparte:
Id_coil_grup: Proprietate de tip string, fiecare cursant o s aib propriul lui ID. n
momentul nregistrrii, id-ul dispozitivului va fi asociat cu cel al userului, astfel nct se
vor putea trimite notificri de tip push i toast ctre acesta, asigurndu-ne c primete mai
rapid diferitele informaii. Datorit politicilor de folosire a aplicaiei, copilul nu are voie s
se nregistreze n aplicaie cu ajutorul reelelor sociale dect dac are vrsta minim de 13
ani.
Varsta: pentru crearea optima a grupelor, este nevoie s tim vrsta copilului. Aceasta va
fi completat n formularul de nscriere n momentul n care copilul sau printele l
nregistreaz la curs.
Nume_parinte: proprietate de tip string, va salva numele printelui sau tutorelui legat al
copilului.
32
Raportul de adopie a aplicaiei: putem urmri cte persoane au instalat aplicaia ntr-o
perioad de timp, eventualele erori pe care utilizatorii le-au ntmpinat, numrul de
persoane care folosesc zilnic aplicaia i putem urmri numrul de dezinstalri a aplicaiei.
33
Raportul de activitate: putem urmri numrul de persoane nscrise din cadrul aplicaiei i
numrul de persoane care s-au nscris din afara acesteia. De asemenea, putem urmri
repartizarea cursanilor n funcie de grup i n funcie de stilurile pe care le-au ales precum
i Rata de abandon a cursurilor.
Raportul de activitate individual: Ca administrator putem urmri att raportul per ansamblu
al grupelor sau a ntregii activiti ct i activitatea individual pe care o are un anumit
cursant. Putem determina ce stiluri de dans a ales cineva s urmeze, orele la care acesta
dorete s vin, de ct timp vine la cursuri precum i detalii referitoare la metoda de plat
pe care o dorete.
34
35
36
n cazul unei persoane care se nscrie la cursurile de dans, pentru aduli, de grup, trebuie s
aleag stilurile de dans pe care le dorete, zilele i intervalul orar n care poate s urmeze
cursurile.
n cazul n care persoane a ales s se nscrie la cursurile de dans pentru nunt, aceasta va
trebui s aleag zilele i orele de la care este disponibil pentru a urma cursurile de dans
private.
Dac este vorba de nscrierea unui copil, trebuie specificat vrsta, dac mai are experien
de dans sau dac prefer o anumit zi i or pentru cursuri.
Al treilea pas const n alegerea metodei de plat, aceasta poate fi cash (la sediul Lotus Dance),
prin transfer bancar (prin emiterea unei facturi care va fi trimis prin e-mail) sau cu ajutorul
serviciului Microsoft de In An Purchase (IAP). Cu ajutorul serviciului de IAP, consumatorul
poate s achiziioneze direct din cadrul aplicaiei abonamentul pe o lun de zile la sala Lotus
Dance. Acesta vine sub form de serviciu n interiorul aplicaiei, urmnd ca persoana nscris s
vin la sal pentru a finaliza nscrierea direct n ziua cnd se ncep cursurile.
37
38
40
41
Coninut nainte de elemente chrome: s-a renunat la orice element care ar putea s distrag
atenia utilizatorului de la funcia de baz a aplicaiei. S-au separat paii de nscriere i cei
de verificare a cursanilor pentru a mai bun tranziie ntre acestea.
Mai puin nseamn mai mult: am renunat la barele de marcaj care veneau cu interfaa
obinuit de Windows i am trecut pe un aranjament de tip grid de dimensiuni diferite, n
funcie de nivelul de administrare:
o Dup ce utilizatorul a intrat prima dat n aplicaie, acesta poate s vad aplicaia
n layout-ul clasic de 3 x 2, avnd acces la:
Blog-ul site-ului
Modaliti de contact
43
RAM: 1 gigabyte pentru un sistemul de operare pe 32 de bii sau 2 gigabyte dac rulezi
sistemul pe 64 de bii.
44
Spaiu hard disk: 16 GB pentru sistemul de operare pe 32 de bii sau 20 GB pentru sistemul
de operare pe 64 de bii.
Plac video: dispozitiv care s suporte minim Microsoft DirectX 9 cu driver WDDM.
Rezoluie minim de 1366 x 768 pentru a putea trimite aplicaie n modul snapped.
Ecranul principal
Ecranul principal al aplicaiei este organizat sub form de tile, specific aplicaiilor
Windows 8 (Modern UI). De aici utilizatorul poate opta, prin selectarea unui tile, pentru
vizualizarea mai multor categorii de informaii: tarife practicate, locaia slii, detalii despre echip
i altele. De asemenea, n funcie de rank-ul user-ului, pot fi fcute nscrieri pentru diferite cursuri
sau poate fi confirmat participarea la evenimentele organizate, se poate face listarea i statistica
cursurilor, iar user-ul poate chiar s urmreasc blogul i s nvee diferii pai de dans.
45
nscrierea cursanilor
Tile-ul de adugare nscrie user-ul nregistrat n procesul de setare a profilului, proces
care const n parcurgerea a trei pai:
Pasul 1. n cadrul primului pas, utilizatorul are posibilitatea de a vizualiza datele preluate automat
din contul de facebook, microsoft, google sau twitter, identificate pe baza informaiilor de
autentificare. Datele ce pot fi preluate sunt: nume, sex i poz de profil. Utilizatorul poate efectua
modificri asupra numelui i pozei de profil, i va completa adresa de e-mail i va alege tipul
abonamentului, precum i dac urmeaz s vin la cursuri singur sau n cuplu.
46
Pasul 2.1. Dac tipul de abonament este de adult pentur or de grup, atunci pasul al doilea
presupune alegerea stilurilor de dans pe care le va studia precum i a programului de frecventare
a cursurilor.
47
Pasul 2.2 Dac programul ales este pentru a orelor particulare, pasul al doilea presupune stabilirea
primei edine i a numrului total de lectii pe care doreti s le achiziionezi.
Pasul 2.3 Dac doreti s i nscrii copilul la cursuri, trebuie s specifici vrsta, dac mai are
experien i ce stiluri de dans te-ar interesa pentru cel mic.
Pasul 3. Ultimul pas const n selectarea metodei de plat care poate fi: plat n numerar,
prin transfer bancar sau printr-un serviciu de plat electronic. Sistemul de plat electronic
prevede un procedeu de cumprare prin intermediul aplicaiei a unui abonament sub form de
licen a aplicaiei.
Seciunea nv i tu
n cadrul seciunii nv i tu sunt prezentate diferite figuri de dans structurate pe grad
de dificultate i pe stiluri. Acesta fiind unul dintre avantajele pe care le furnizeaz descrcarea
aplicaiei de ctre consumator: posibilitatea de a nva s danseze din confortul propriei case. Paii
sunt explicai din punctul de vedere al fetei, al biatului i din punctul de vedere al
cuplului.
Utilizatorul
autentificat
are acces
48
figuri de
dans.
Afiarea cursanilor
n pagina de afiare, administratorul poate vizualiza lista complet a persoanelor
nscrise, precum i detaliile fiecrui participant la cursurile de dans, poate aproba nscrieri i,
eventual, modifica anumite date. Pentru confirmarea i nregistrarea cursanilor, administratorul
sau instructorul doar trebuie s fac swipe din dreapta n stnga cu persoana pe care o dorete i
nreigstrarea este considerat efectuat.
49
50
Prin selectarea unui cursant se va afia pagina cu detalii despre profilul acestuia. Administratorul
poate modifica grupa la care este nscris cursantul.
Statistici
n seciunea avansat a paginii de listare administratorul va putea afia statistici foarte clare
asupra numrului de brbai vs numr de femei nscrise, suma total ncasat pentru fiecare lun
i chiar s vad dac veniturile sunt n cretere sau n urcare de la o lun la alta. Alt posibilitate
51
pe care o ofer pagina de statistici este aceea de a vizualiza n timp real ce pachete sunt cele mai
avantajoase, ce grupe i intervale orare sunt cele mai cutate i cte locuri libere sunt n cadrul
fiecrei grupe.
52
Blog
Pe pagina Blog utilizatorul are acces la articolele postate. Accesul se realizeaz prin inter
mediul
unui
RSS
reader
implementat
XAML.
Gestiunea
articolelor
se
face
de ctre administrator prin intermediul platformei Wordpress. Articolele sunt vizibile tuturor catg
oriilor de utilizatori ai aplicaiei.
53
54
Crearea contului
Pentru a avea acces la ntreaga aplicaie, utilizatorul are nevoie de un cont Facebook, Google+,
Twitter sau Microsoft. Prin crearea conturilor care au ncorporat i partea de reea social,
utilizatorul este de accord c are minim 13 ani. Prin crearea contului este posibil s i se cear s
foloseasc un nume. Utilizatorul este de accord s trimit date complete i corecte legate de propria
persoan.
Ce nu are voie s fac utilizatorul
S creeze un username care ar putea prin orice mod s deranjeze sau s insulte alte persoane
care se joac;
S foloseasc o poz de profil care s denote sexualitate, violen fizic sau verbal sau
care s poat deranja ali juctori.
Lotus Dance i rezerv dreptul de a suspenda i de a ntrerupe accesul la serviciul oferit oricrei
persoane care nu respect regulile fr a da un avertisment nainte i fr a da vreo explicaie
ulterioar asupra motivului.
Datele care au caracter personal
Scopul stocrii datelor care au character personal este acela de a mbuntii serviciile oferite.
Lotus Dance nu va vinde, nchiria sau mprumuta aceste date ctre o ter parte, datale utilizatorului
fiind folosite exclusive de ctre Asociaia Club de Dans Sportiv Lotus Dance.
Limitarea rspunderii
Lotus Dance i dezvoltatorii aplicaiei nu pot fi sub nici o form trai la rspundere pentru orice
problem creat de modul de utilizare a aplicaiei (incluznd pierdere de profit, pierderea datelor,
ntreruperea serviciilor, distrugerea telefonului sau a sistemului sau taxele suplimentare care pot
aprea prin folosirea aplicaiei datorit conectrii prin providerul de internet).
55
Pentru a realiza o aplicaie software care s aib succes pe pia este foarte important ca aceasta s
aib o interfa ct mai plcut i sugestiv. La fel de important n proiectarea oricrei aplicaii
este i flexibilitatea acesteia, uurina cu care se poate adapta la noi situaii care ar putea
s apar n cadrul sistemului informaional pe care l mapeaz. n acest spirit, aplicaia este de aa
natur nct printr-un update venit din Market Place se pot repara probleme sau implementa noi
soluii i capabiliti.
Bibliografie
1. Chappell, D., Introducing Windows Azure, Octombrie 2008
2. Smeureanu, I. , Drdal, M. , Reveiu, A., Visual C# .NET, CISON, Bucureti 2004
3. Richter, J. , Applied Microsoft .NETFramework Programming, Microsoft Pess 2002
56
4. Stnic, J.L. , Programarea aplicaiilor pentru dispozitive mobile, note de curs, 2013
5. Botezatu C, Proiectarea sistemelor informatice. Metode sistematice, Editura
ProUniversitaria, Buc, 2007
6. Chichernea V, Garais G, Baze de date. Sistemul FoxPro Vol II, Editura ProUniversitaria,
2006
7. Moise M., Sisteme informatice cu baze de date, Editura ProUniversitaria, Bucureti, 2008
8. Crian D., Limbajul C / C++. Fundamente, Vol. 1, Editura ProUniversitaria, 2006
9. Crian D., Limbajul C / C++. Programarea orientat obiect, Vol. 2, Editura
ProUniversitaria, 2006
10. Iacob I., SGBD Oracle - Ghid aplicativ pentru realizarea soluiilor informatice, Editura
ProUniversitaria, 2007
11. Iacob I., ORACLE 10g - Proiectarea i realizarea aplicaiilor cu baze de date utizliznd
limbajul SQL*PLUS, Editura ProUniversitaria 2009
12. Smeureanu I. Ivan I, Drdal M, Structuri i obiecte n C / C++, Editura CISON, Bucureti,
2000
13. Mulea I, C/C++ pentru avansai, Editura Microinformatica, Cluj, 1995.
14. Botezatu C, Iacob I, Proiectarea sistemelor informatice. Studii de caz pentru managementul
activitilor unei societi. Editura ProUniversitaria, 2007
15. Chichernea V, Botezatu C, Iacob I, Fabian G., Avram V., Oprea P, Crstea C, Baze de date
relaionale. Aplicaii n turism, Editura CISON, 1998
16. http://www.windowsazure.com/en-us/documentation/
17. http://www.windowsazure.com/en-us/home/features/mobile-services/
57
Anexa
CONTRACT DE PRESTRI DE SERVICII
ncheiat astzi ..................
I. PRILE CONTRACTANTE
1.1. ASOCIATIA CLUB DE DANS SPORTIV LOTUS DANCE, cu sediul social n Bucuresti,
Sos. Pantelimon, Nr. 309, Bl. 8, Sc. C, Ap. 119, Et. 10, Sector 2, cod fiscal 24548648,
reprezentat de Coman Paraschiva, cu funcia de Director, n calitate de prestator, pe de o parte,
2.2. Prestatorul oblig s predea lectii de dans beneficiarului intr-un numar de sedinte
59
VIII. LITIGII
8.1. Prile au convenit ca toate nenelegerile privind validitatea prezentului contract sau
rezultate din interpretarea, executarea ori ncetarea acestuia s fie rezolvate pe cale amiabil de
reprezentanii lor.
8.2. n cazul n care nu este posibil rezolvarea litigiilor pe cale amiabil, prile se vor adresa
instanelor judectoreti competente.
60
PRESTATOR
BENEFICIAR
61
I. PRILE CONTRACTANTE
1.1. ASOCIATIA CLUB DE DANS SPORTIV LOTUS DANCE, cu sediul social n Bucuresti, Sos. Pantelimon, Nr.
309, Bl. 8, Sc. C, Ap. 119, Et. 10, Sector 2, cod fiscal 24548648, reprezentat de Coman Paraschiva, cu
funcia de Director, n calitate de prestator, pe de o parte,
62
.
V. OBLIGAIILE PRILOR
5.1. Prestatorul de servicii se oblig:
Sa prezinte un scurt spectacol de dans.
VIII. LITIGII
8.1. Prile au convenit ca toate nenelegerile privind validitatea prezentului contract sau rezultate din
interpretarea, executarea ori ncetarea acestuia s fie rezolvate pe cale amiabil de reprezentanii lor.
8.2. n cazul n care nu este posibil rezolvarea litigiilor pe cale amiabil, prile se vor adresa instanelor
judectoreti competente.
PRESTATOR
BENEFICIAR
64
Pagina de administrare:
private ObservableCollection<cursant> crs_it;
private IMobileServiceTable<cursant> crs_tb = App.MobileService.GetTable<cursant>();
private ObservableCollection<partic> part_it;
private IMobileServiceTable<partic> part_tb = App.MobileService.GetTable<partic>();
private async void Refresh_grup()
{
try
{
var res = await crs_tb
.Where(cursantul=>cursantul.Complete==false)
.ToListAsync();
crs_it = new ObservableCollection<cursant>(res);
GrupRecN.ItemsSource = crs_it;
}
catch (MobileServiceInvalidOperationException e)
{
MessageDialog errormsg = new MessageDialog(e.Response.Content,
string.Format("{0} (HTTP {1})",
e.Response.StatusDescription,
e.Response.StatusCode));
var ignoreAsyncOpResult = errormsg.ShowAsync();
}
}
private async void Refresh_partic()
{
try
{
var res = await part_tb
.Where(cursantul => cursantul.del == false)
.ToListAsync();
part_it = new ObservableCollection<partic>(res);
ParticRecN.ItemsSource = part_it;
}
catch (MobileServiceInvalidOperationException e)
{
MessageDialog errormsg = new MessageDialog(e.Response.Content,
string.Format("{0} (HTTP {1})",
e.Response.StatusDescription,
e.Response.StatusCode));
var ignoreAsyncOpResult = errormsg.ShowAsync();
}
}
private async void Refresh_grup_c()
{
try
{
var res = await crs_tb
.Where(cursantul => cursantul.Complete == true)
65
.ToListAsync();
crs_it = new ObservableCollection<cursant>(res);
GrupRec.ItemsSource = crs_it;
}
catch (MobileServiceInvalidOperationException e)
{
MessageDialog errormsg = new MessageDialog(e.Response.Content,
string.Format("{0} (HTTP {1})",
e.Response.StatusDescription,
e.Response.StatusCode));
var ignoreAsyncOpResult = errormsg.ShowAsync();
}
}
private async void Refresh_partic_c()
{
try
{
var res = await part_tb
.Where(cursantul => cursantul.del == true)
.ToListAsync();
part_it = new ObservableCollection<partic>(res);
ParticRec.ItemsSource = part_it;
}
catch (MobileServiceInvalidOperationException e)
{
MessageDialog errormsg = new MessageDialog(e.Response.Content,
string.Format("{0} (HTTP {1})",
e.Response.StatusDescription,
e.Response.StatusCode));
var ignoreAsyncOpResult = errormsg.ShowAsync();
}
}
private async void list_del(object sender, RoutedEventArgs e)
{
}
private void val_list(object sender, RoutedEventArgs e)
{
if (partic.IsChecked == true)
{
Refresh_partic_c();
Refresh_partic();
}
else
{
Refresh_grup();
Refresh_grup_c();
}
}
66
}
private void CBComplete2(object sender, RoutedEventArgs e)
{
CheckBox cb = (CheckBox)sender;
partic item = cb.DataContext as partic;
UpdatePartic(item);
}
67
Pagina de adugare
namespace LotusDance_admin
{
public sealed partial class add_p : LotusDance_admin.Common.LayoutAwarePage
{
char sx = 'm';
int grupa = 0;
string pack;
int state = 0; //pt a vedea statusul meniurilor
int i = 0; //de folosit pt a crea mai multe instante
public add_p()
{
this.InitializeComponent();
}
protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
{
}
protected override void SaveState(Dictionary<String, Object> pageState)
{
}
StorageFile media = null;
private ObservableCollection<cursant> items;
private IMobileServiceTable<cursant> crs_tb = App.MobileService.GetTable<cursant>();
//private IMobileServiceTable<stiluri> stil_ds = App.MobileService.GetTable<stiluri>();
private IMobileServiceTable<partic> partic_tb = App.MobileService.GetTable<partic>();
private async void InsertCursant(cursant crs_ob)
{
try
{
string errorString = string.Empty;
if (media != null)
{
// Set blob properties of TodoItem.
crs_ob.ContainerName = "todoitemimages";
crs_ob.ResourceName = media.Name;
}
await crs_tb.InsertAsync(crs_ob);
if (!string.IsNullOrEmpty(crs_ob.SasQueryString))
{
using (var fileStream = await media.OpenStreamForReadAsync())
{
StorageCredentials cred = new StorageCredentials(crs_ob.SasQueryString);
var imageUri = new Uri(crs_ob.imageUri);
68
CloudBlockBlob blobFromSASCredential =
container.GetBlockBlobReference(crs_ob.ResourceName);
await blobFromSASCredential.UploadFromStreamAsync(fileStream.AsInputStream());
}
}
MessageDialog md = new MessageDialog("Cursantul " + nume_b.Text + " a fost inscris la grupa " +
grupa, "nscriere fcut cu succes!");
md.ShowAsync();
}
catch (MobileServiceInvalidOperationException e)
{
MessageDialog errormsg = new MessageDialog(e.Response.Content,
string.Format("{0} (HTTP {1})",
e.Response.StatusDescription,
e.Response.StatusCode));
var ignoreAsyinc = errormsg.ShowAsync();
}
}
private async void InsertPartic(partic partic_ob)
{
try
{
await partic_tb.InsertAsync(partic_ob);
}
catch (MobileServiceInvalidOperationException e)
{
MessageDialog errormsg = new MessageDialog(e.Response.Content,
string.Format("{0} (HTTP {1})",
e.Response.StatusDescription,
e.Response.StatusCode));
var ignoreAsyinc = errormsg.ShowAsync();
}
}
69
break;
}
}
private void sex_check(object sender, RoutedEventArgs e)
{
if (male.IsChecked == true)
{
sx = 'm';
}
if (female.IsChecked == true)
{
sx = 'f';
}
if (couple.IsChecked == true)
{
sx = 'c';
}
}
70
pak = pack
};
InsertCursant(ad);
MessageDialog md = new MessageDialog("Cursantul " + nume_b.Text + " a fost inscris la grupa " +
grupa+ "nscriere fcut cu succes!");
md.ShowAsync();
i += 1;
}
catch { }
}
private void Back(object sender, RoutedEventArgs e)
{
switch ((string)((Button)sender).Content)
{
case "1":
if (state != 0)
{
anim_pas3_back.Begin();
}
if (Convert.ToString(abo_b.SelectedValue) == "Particular") anim_pas2_p_back.Begin();
else anim_pas2_back.Begin();
break;
case "2":
anim_pas3_back.Begin();
break;
}
}
private void Final(object sender, RoutedEventArgs e)
{
if (Convert.ToString(abo_b.SelectedValue) == "Particular")
{
partic ad = new partic
{
id = 0,
nume = nume_b.Text,
telefon = tel_b.Text,
email = email_b.Text,
rank = "cursant",
data_i = date_picker.Value.ToString() + hour_picker.Value.ToString(),
pak = "5 edine",
};
InsertPartic(ad);
MessageDialog md = new MessageDialog("Felicitri " + nume_b.Text + " ai fost inscris. n cel mai scurt
timp un reprezentant Lotus Dance te va contacta", "nscriere fcut cu succes!");
md.ShowAsync();
}
else
{
71
Clasa cursant
namespace LotusDance_admin
{
public class cursant
{
public int id { get; set; }
[DataMember(Name = "nume")]
public string nume {get;set;}
[DataMember (Name= "telefon")]
public string telefon {get;set;}
[DataMember (Name="email")]
public string email {get;set;}
72
[DataMember (Name="sex")]
public string sex {get;set;}
[DataMember (Name="rank")]
public string rank{get;set;}
[DataMember(Name="Grupa")]
public int Grupa{get;set;}
[DataMember(Name = "confirmat")]
public bool Complete { get; set; }
[DataMember(Name = "pack")]
public string pak { get; set; }
[DataMember(Name = "containerName")]
public string ContainerName { get; set; }
[DataMember(Name = "resourceName")]
public string ResourceName { get; set; }
[DataMember(Name = "sasQueryString")]
public string SasQueryString { get; set; }
[DataMember(Name = "imageUri")]
public string imageUri { get; set; }
public cursant(string _nume, string _telefon, string _email, string _sex, string _rank, int _grupa, bool
_Complete, string _pak)
{
nume = _nume;
telefon = _telefon;
email = _email;
sex = _sex;
rank = _rank;
Grupa = _grupa;
Complete = _Complete;
pak = _pak;
}
public cursant()
{
}
public cursant(string _nume, string _telefon)
{
nume = _nume;
telefon = _telefon;
}
}
}
73
74
75
76
77
xmlns:Input="using:Telerik.UI.Xaml.Controls.Input"
x:Name="pageRoot"
x:Class="LotusDance_admin.add_p"
DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Mode=Self}}"
mc:Ignorable="d">
<common:LayoutAwarePage.Resources>
<x:String x:Key="AppName">My Application</x:String>
</common:LayoutAwarePage.Resources>
<Grid Grid.Row="1">
<!--Noul add-->
<Grid x:Name="Pasul1_1" Width="670" Background="#FF80012E" Height="400" Margin="400,100,0,0"
VerticalAlignment="Top" HorizontalAlignment="Left">
<TextBlock Grid.Column="0" Text="Informaii de baz" HorizontalAlignment="Left"
VerticalAlignment="Top" Margin="100,35,0,0" FontSize="30"/>
<TextBox x:Name="nume_b" Grid.Column="0" Text="Nume" Margin="100,94,0,0"
HorizontalAlignment="Left" VerticalAlignment="Top" Height="50" Width="350" FontSize="30"/>
<RadioButton Name="male" Content="M" HorizontalAlignment="Left" Margin="100,149,0,0"
VerticalAlignment="Top" Checked="sex_check" FontSize="30"/>
78
79
<x:String>Merengue</x:String>
</ListBox>
<Button Content="Grupa 1" Margin="75,322,0,26" Height="52" Click="grup_pick"/>
<Button Content="Grupa 2" Margin="274,322,0,26" Height="52" Click="grup_pick"/>
<Button Content="Grupa 3" Margin="474,322,0,26" Height="52" Click="grup_pick"/>
<Button Content=">>" x:Name="step2" HorizontalAlignment="Right" Click="Next1"
Margin="309,301,0,10" FontSize="30" Height="68" Width="79"/>
<Button Content="2" Margin="0,317,0,0" FontSize="30" Height="62" Width="55" Click="Back"/>
</Grid>
<Grid x:Name="Pasul2_2" Width="670" Height="400" Margin="2589,91,-1893,0"
Background="#FF57001F" VerticalAlignment="Top" HorizontalAlignment="Left"
RenderTransformOrigin="0.5,0.5">
<Grid.RenderTransform>
<CompositeTransform/>
</Grid.RenderTransform>
<Input:RadDatePicker Name="date_picker" HorizontalAlignment="Left" Margin="70,63,0,0"
VerticalAlignment="Top" Width="150" EmptyContent="Selecteaz data"/>
<Input:RadTimePicker Name="hour_picker" HorizontalAlignment="Left" Margin="70,162,0,0"
VerticalAlignment="Top" Width="150" EmptyContent="Selecteaz ora"/>
<ListView x:Name="partic_tip" Margin="371,63,0,0" HorizontalAlignment="Left"
VerticalAlignment="Top" Height="233" Width="192">
<x:String>O edin</x:String>
<x:String>5 edine</x:String>
<x:String>6 edine</x:String>
<x:String>7 edine</x:String>
<x:String>10 edine</x:String>
</ListView>
<Button Content=">>" x:Name="step22" HorizontalAlignment="Right" Click="Next1"
Margin="309,301,0,10" FontSize="30" Height="68" Width="79"/>
<Button Content="2" Margin="0,317,0,0" FontSize="30" Height="62" Width="55" Click="Back"/>
</Grid>
<Grid x:Name="pasul3" Width="670" Height="400" Background="#FF340013" Margin="2866,91,-2170,0"
VerticalAlignment="Top" HorizontalAlignment="Left" RenderTransformOrigin="0.5,0.5" >
<Grid.RenderTransform>
<CompositeTransform/>
</Grid.RenderTransform>
<TextBlock Text="Medot de plat" FontSize="30"/>
<RadioButton VerticalContentAlignment="Center" Content="Plat n numerar" FontSize="30"
Margin="10,49,-10,286"/>
<RadioButton VerticalContentAlignment="Center" Content="Prin transfer bancar" FontSize="30"
Margin="10,93,-10,242"/>
<RadioButton VerticalContentAlignment="Center" Content="Serviciu de plat electronic"
FontSize="30" Margin="10,137,-10,198"/>
<Button Content=">>" HorizontalAlignment="Right" Click="Final" Margin="309,301,0,10"
FontSize="30" Height="68" Width="79"/>
<Button Content="3" Click="Back" Margin="0,317,0,0" FontSize="30" Height="62" Width="55"/>
</Grid>
</Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="ApplicationViewStates">
<VisualState x:Name="FullScreenLandscape"/>
80
<VisualState x:Name="Filled"/>
<VisualState x:Name="FullScreenPortrait">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="backButton"
Storyboard.TargetProperty="Style">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PortraitBackButtonStyle}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Margin)"
Storyboard.TargetName="Pas2_2">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Thickness>481,20,-808,169</Thickness>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Grid.Row)"
Storyboard.TargetName="Pas2_2">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<x:Int32>1</x:Int32>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Grid.Column)"
Storyboard.TargetName="Pas2_2">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<x:Int32>2</x:Int32>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Grid.ColumnSpan)"
Storyboard.TargetName="Pas2_2">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<x:Int32>1</x:Int32>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="pas2">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0">
<Storyboard x:Name="anim_pas2">
<DoubleAnimation Duration="0:0:1" To="-2044"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)"
Storyboard.TargetName="Pasul2_1" d:IsOptimized="True"/>
<DoubleAnimation Duration="0:0:1" To="10"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)"
Storyboard.TargetName="Pasul2_1" d:IsOptimized="True"/>
</Storyboard>
81
</VisualTransition>
<VisualTransition From="pas2_back" GeneratedDuration="0">
<Storyboard x:Name="anim_pas2_back">
<DoubleAnimationUsingKeyFrames
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)"
Storyboard.TargetName="Pasul2_1">
<EasingDoubleKeyFrame KeyTime="0" Value="-2042"/>
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="577"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimation Duration="0" To="10"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)"
Storyboard.TargetName="Pasul2_1" d:IsOptimized="True"/>
</Storyboard>
</VisualTransition>
</VisualStateGroup.Transitions>
<VisualState x:Name="pas2_back"/>
</VisualStateGroup>
<VisualStateGroup x:Name="pas2_p">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0">
<Storyboard x:Name="anim_pas2_p">
<DoubleAnimation Duration="0:0:1" To="-2136"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)"
Storyboard.TargetName="Pasul2_2" d:IsOptimized="True"/>
<DoubleAnimation Duration="0:0:1" To="8"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)"
Storyboard.TargetName="Pasul2_2" d:IsOptimized="True"/>
</Storyboard>
</VisualTransition>
<VisualTransition From="pas2_p_back" GeneratedDuration="0">
<Storyboard x:Name="anim_pas2_p_back">
<DoubleAnimation Duration="0:0:1" To="40"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)"
Storyboard.TargetName="Pasul2_2"/>
<DoubleAnimation Duration="0:0:1" To="0"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)"
Storyboard.TargetName="Pasul2_2"/>
</Storyboard>
</VisualTransition>
</VisualStateGroup.Transitions>
<VisualState x:Name="pas2_p_back">
<Storyboard>
<DoubleAnimation Duration="0" To="-2136.666"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)"
Storyboard.TargetName="Pasul2_2" d:IsOptimized="True"/>
<DoubleAnimation Duration="0" To="8"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)"
Storyboard.TargetName="Pasul2_2" d:IsOptimized="True"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="pas3">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0">
<Storyboard x:Name="anim_pas3">
82
83