• No results found

Komplettering av gränssnitt

2. Skapa funktionalitet för att hämta information om tillgängliga grupper

3. Skapa stöd för att spara användarens grupptillhörighet i användarens profil i data-basen. Detta stöd bör skapas via en controller som anropar service.

3.3 Komplettering av gränssnitt

Figur 3.1: Design för användargränssnittet för att välja grupp

För att uppnå delmål 3 a), att uppdatera gränssnittet så att användare ser de till-gängliga grupperna, behöver gränssnittet kompletteras i enlighet med figur 3.1. De tillgängliga grupperna bör hanteras under ”Settings” i menyn i figur 2.6 och det är även här uppdateringen av gränssnittet för detta delmål sker.

För att uppnå delmål 3 b), att uppdatera gränssnittet så att administratörerna ser de tillgängliga grupperna samt med funktionalitet för att ta bort/ lägga till / ändra grupper,

24 KAPITEL 3. DESIGN

Figur 3.2: Design för administratörgränssnittet för vyn ”Campaign”

behöver gränssnittet kompletteras i enlighet med figur 3.2. De tillgängliga grupptill-hörigheterna ska presenteras under ”Campaign”-sidan i administratörmenyn (figur 2.7) och ska presenteras nedanför tillgängliga aktiviteter som syns i figur 2.13.

För att uppnå delmål 3 c) att uppdatera gränssnittet så att administratörerna ser de tillgängliga grupperna för en specifik användare och kan välja grupptillhörigheten för den specifika användaren, behöver administratörsgränssnittet kompletteras i enlighet med figur 3.3. Denna funktionalitet bör ligga under menyvalet ”Users” i administra-törmenyn (figur 2.7).

3.3. KOMPLETTERING AV GRÄNSSNITT 25

Kapitel 4

Implementation

Detta kapitel redogör för hur den utökade funktionaliteten, som beskrevs i kapitel 3, implementerades.

4.1 Utökning av funktionalitet för administratörer

För att utöka funktionaliteten för administratörer delmål 1 a) - d) utfördes följande steg. Skapa ytterligare en tabell i databasen för att hantera grupper:

För att skapa ytterligare en tabell i databasen för att hantera grupper kompletterades programmet med ytterligare en entitetsklass och en model för att, med hjälp av Entity framework, skapa denna tabell utifrån data i de skapade model-och entitetsklasserna. Entitetsklassen GroupChoice har följande egenskaper:

• GroupChoiceId. Detta ID ger varje rad i tabellen, som representerar en grupp, ett unikt ID för att senare kunna identifiera respektive grupp.

• Company, en sträng som representerar gruppens namn.

• CampaignId, ett ID som kopplar gruppen till en specifik kampanj.

Fullständig implementationskod för tabellen GroupChoice finns i bilaga B.1.

28 KAPITEL 4. IMPLEMENTATION

Läsa ifrån databasen:

För att kunna läsa från databasen implementerades metoderna :

• GetGroupOptions(CampaignID) i Repositoryklassen som ansvarar för tränings-kampanjerna (CampaignRepository). Denna metod innehåller funktionalitet för att tillsammans med Fluent API hämta grupptillhörigheter från databasen. (Kod för denna metod finns i bilaga B.2).

• GroupChoice To(GroupChoice option) denna metod innehåller logik som kon-verterar en GroupChoicemodel till en GroupChoice entitet. Kod för denna metod finns i bilaga B.3

• GroupChoice From(GroupChoicesModel model) denna metod innehåller logik som konverterar en GroupChoice entitet till en GroupChoicemodel. Kod för den-na metod finns i bilaga B.3

• GetGroupOptions(CampaignID) i Providerklassen som ansvarar för att läsa ifrån databasen som administratör (AdminProvider). Metoden läser från tabellen i da-tabasen och returnerar en lista med alla rader. Koden finns i bilaga B.4.

Skapa hierarki i databasen för grupperna:

För att skapa en hierarki i tabellen med grupper lades egenskapen ParentId till som kolumn i grupptabellen. Denna egenskap kan vara NULL, vilket gör den till en rotnod, alltså en grupp som är högst i hierarkin, eller vara en referens till en annan grupps ID. Kod för att skapa kolumnen ParentId i databasen finns i bilaga B.1.

Utökning av funktionalitet för att administratörer ska kunna lägga till och ta bort grupper inklusive uppdatering av administratörernas gränssnitt:

Genom att administratörer markerar en eller flera grupper och trycker på den skapade knappen Delete i figur 4.1 kan dessa tas bort från databasen. Att lägga till eller uppdatera

4.1. UTÖKNING AV FUNKTIONALITET FÖR ADMINISTRATÖRER 29

en grupp sker genom att markera en grupp, skriva det nya namnet i textfältet och sedan trycka på Add eller Update, detta visas i figur 4.1. När detta gjorts skickas en HTTP-POST (se kapitel 2.2.2) med information om vad i tabellen som ska uppdateras. Detta hanteras sedan av den Controllerklass som ansvarar för administratöranrop (AdminCon-troller). Kod för denna funktionalitet finns i bilaga B.5.

Uppdateringen realiserades genom att kalla på de skapade metoderna: UpdateCam-paignGroupChoice() i CampaignRepository som används för att spara ner den informa-tionen om den uppdaterade gruppen. Kod för denna metod finns i bilaga B.6.

Figur 4.1: Implementation för det uppdaterade administratörgränsnittet under vyn ”Campaign”

Utökning av funktionalitet för att administratörerna ska kunna redigera vilken grupp en användare tillhör:

30 KAPITEL 4. IMPLEMENTATION

För att möjliggöra att administratörer ska kunna ändra eller ta bort gruppval för en specifik användare krävs det att en användare ska kunna ha en referens till vilken grupp den är med i. Detta implementerades genom att lägga till ytterligare en kolumn i profiltabellen. Denna kolumn fick namnet GroupSelected. Kod för detta finns i bilaga B.7.

För att presentera trädstrukturen över aktuella grupper uppdaterades administratörs-gränssnittet under menyalternativet ”Users”, se figur 2.9 där trädet implementerades på pop-up-sidan under knappen ”Edit” se figur 2.10 . Uppdateringen av en användares grupp sker genom att administratörer markerar gruppen och sedan sparar valet. Det uppdaterade gränssnittet för detta visas i figur 4.2. När markeringen sparas skickas det med hjälp av en HTTP-POST-metod till AdminController. Fullständig kod för denna funktionalitet finns i bilaga B.5.

4.1. UTÖKNING AV FUNKTIONALITET FÖR ADMINISTRATÖRER 31

32 KAPITEL 4. IMPLEMENTATION

Related documents