A teljes megoldást tömörítse be vezeteknev_keresztnev_neptunkod formátumban, majd az oktató által megadott helyre töltse fel. A feladat megoldására 90 perc áll rendelkezésre. A feladat során egyrétegű konzolos alkalmazást implementálunk. (Egy sima konzolos projektbe kerül minden.) ADATBÁZIS KIALAKÍTÁSA (8,5 PONT) a) Hozzon létre egy Service-based Database-t CustomerDb néven! (0,5 pont) b) CodeFirst módszerrel hozza létre az előző pontban létrehozott adatbázisban a CaseCategory és Cases táblát (3 pont) a. CaseCategory oszlopai az alábbiak (Ügy típus): i. Id (int) – elsődleges kulcs, adatbázis által növelt (auto increment) érték legyen; ii. Name (string) – az ügy kategória neve. Legfeljebb 50 hosszú, kötelező mező; iii. Description (string) – az ügy bővebb leírása, kötelező mező; iv. IsPersonalOnly (bool) – csak személyes részvétellel lehet intézni; b. Cases oszlopai az alábbiak (Konkrét ügyek): i. Id (int) – elsődleges kulcs, adatbázis által növelt (auto increment) érték legyen; ii. CustomerName (string) – Legfeljebb 50 hosszú, kötelező mező; iii. Amount (int) – az ügyintézés ideje, kötelező mező; iv. CaseCategoryId (int) – ügytípus azonosító, külsőkulcs. c) Állítsa be a szükséges paramétereket az adatbázis kapcsolathoz, és a táblák között is definiálja a külsőkulcs- függőségeket. Adjon lehetőséget a LazyLoad módszer alkalmazására. (4 pont) d) Töltse fel teszt adatokkal a mellékelt segédlet alapján a táblákat, a félév során tanult alapértelmezett adatok beviteli módjával! (1 pont) XML FÁJL ADATAINAK ELÉRÉSE (5 PONT) a) Készítsen el egy Administrator osztályt az alábbi írható olvasható nyilvános tulajdonságokkal: (0 pont) Name (string) – ügyintéző neve Capacity (int) – maximális terhelhetőség b) Készítsen egy Office osztályt az alábbi írható olvasható nyilvános tulajdonságokkal: (0 pont) Address (string) – az ügyfélkapu irodájának a címe Capacity (int) – elvárt kapacitás, egy napra Administrators (List<Administrator >) – bent dolgozó ügyintézők c) Készítsen egy statikus metódust, mely képes az office.xml fájlból létrehozni, egy Office objektumot a benne található Administrator objektumokkal együtt. (5 pont) ATTRIBÚTUM KÉSZÍTÉSE (2 PONT) a) Hozzon létre egy attribútumot UpperCaseDisplayAttribute néven! (1 pont) b) Készítse el úgy az attribútumot, hogy a tulajdonságokon lehessen egyedül alkalmazni! (0,5 pont) c) Helyezze el az Administrator és Office osztályok string tulajdonságain a UpperCaseDisplay attribútumot. (0,5 pont) HANDLER OSZTÁLY (5 PONT) a) Készítsen egy UpperCaseHandler osztályt, mely képes feldolgozni az UpperCaseDisplayAttribute-ot. (0 pont) b) Ha az UpperCaseDisplayAttribute-ot: (5 pont) a. string tulajdonságon alkalmazták, akkor nagybetűsen adjuk vissza a tulajdonság értéket b. ha NEM string tulajdonságon alkalmazták, akkor InvalidOperationException-el kezeljük c. ha NEM TALÁLTUNK ilyen attribútumot, akkor csak adjuk vissza a tulajdonság értékét d. null paraméter esetén ArgumentNullException-el kezeljük le
a) Alakítson ki egy olyan különálló DLL-t, melyben unittesztelést hajthatunk végre a félév során tanultak alapján. (2 pont) b) Készítsen egy osztályt az UpperCaseHandler osztályhoz, melyben leteszteli a GetPropertyUpperCaseDisplay() metódus működését: a. olyan tulajdonságára, melyen található UpperCaseDisplay attribútum (2 pont) i. normál eset ii. kivétel kezelése b. olyan osztály tulajdonságra, melyen nem található UpperCaseDisplay attribútum (1 pont) c. null értékre, a bemeneti paramétereknél (2 pont) i. első paramétere a függvénynek ii. második paramétere a függvénynek
A KÉT FORRÁS ADATAI ALAPJÁN KÖVETKEZŐ FELADATOKAT (JELENÍTSE MEG AZ EREDMÉNYÜKET A
KONZOLON) (12,5 PONT) a) Mennyi ügytípus van az adatbázisban? (1,5 pont) b) Jelenítse meg a konzolon a személyesen végezhető ügytípusokat! (1,5 pont) c) Rendezze a konkrét ügyeket ügyintézési idő szerint csökkenő sorrendben, amelyek személyesen intézhetőek! (4 pont) d) Számítsa ki, hogy egy ügytípusra mennyi időt fordítottak aznap, és ezt jelenítse meg! (3 pont) e) Jelenítse meg a konzolon az iroda felépítését. (1 pont) A megjelenítés során alkalmazza az Administrator tulajdonságain tárolt UpperCaseDisplay attribútumot! (2,5 pont)