Startup for PHP Assignment
- PHP 100%
| Image | ||
| .gitignore | ||
| LICENSE | ||
| PHPApplikation.php | ||
| README.md | ||
PHP Applikation
Grupp A.
Denna applikation utgår från den administrativa delen av myndigheten. Det är främst kopplat mot myndihetens Agent- och Operationshantering.
KRAV
Den del av hela organisationen som berör admin på ett bra sätt har gjort att avgränsningen av kravspecifikationen ser ut som nedan.
Det ska hantera främst dataintegriteten och säkerhetsmekanismer (bl.a. behörighetsnivå) för att klargöra på ett användarvänligt (agenternas lägre tekniska kunskap och admins behov av snabbhet vid åtgärder) sätt, så att applikationen fungerar så optimalt den bara kan.
Här hanteras Inloggningen med både med verifiering av behörighetsnivå och ett grupptillhörande lösenord (admin har ett och gruppledare har ett annat gemensamt lösenord).
AGENT
Databaskrav
- 1 En agent identifieras av en sammansatt nyckel bestående av första bokstaven i namnet (namn) och ett unikt nummer (nr).
- 2 Det finns ett härlett attribut
agent_idsom anger agentens fullständiga agentnamn (första bokstav unamn och nr). - 3 Agentnummer 00-09 är reserverade för gruppledare. Agentnummer 10-99 används för övriga agenter (nr 13 får ej förekomma).
- 4 Agentens lön skall ha ett minvärde på 12000kr, ett maxvärde på 35000kr och om ingen lön sätts, ska den automatiskt sättas till 13000kr.
- 5 Agenter som inte är gruppledare får ej ha lön över 25000kr.
- 6 Leif Loket Olsson, Greger puckowitz och Greve Dracula får ej vara agenter.
- 7 Härlett attribut ska visas i applikationen.
- 8 Agenter har olika behörigheter.
Webbkrav
- 1 Applikationen ska ha en fritextsökning där användaren kan söka efter agenter baserat på deras namn via ett självrefererande formulär.
- 2 Administratörer (behörighetsnivå 2) och gruppledare (behörighetsnivå 1) ska kunna uppdatera en befintlig agents kommentar i systemet via webbgränssnittet (UPDATE).
ADMIN (Systemadministratör)
Databaskrav
- 1 Systemadministratör identiferas unikt av ett säkert UIDTOKEN.
- 2 Admin har särskilda behörigheter för att ex. hantera och hemligstämpla data.
- 3 Admin är en subklass till Agent och ärver därmed agentens primärnyckel (Namn, Nr) samt dess grundegenskaper, vilket implementeras som en identifierande 1:1-relation.
Webbkrav
- 1 Inloggning ska hanteras via PHP-sessioner och applikationen ska dynamiskt anpassa innehållet baserat på databasens
behorighetsniva. Endast admin med behörighetsnivå 2 ska tillåtas radera befintliga incidenter (DELETE).
OPERATION
Databaskrav
- 1 Operation identifieras unikt av kombinationen kodnamnstyp, startdatum och incident.
- 2 Operationen succes rate (SR) lagras som sant eller falskt (0 eller 1).
- 3 En incident måste inträffa i någon region (tvingande koppling).
- 4 En operation måste ledas av en gruppledare agentnummer (00-09).
- 5 Operationens start- och slutdatum måste skilja sig åt med minst 1 dag och får pågå i max 5 veckor.
Webbkrav
- 1 Användaren ska via en rullgardinsmeny (Dropdown) kunna filtrera och visa operationer som är kopplade till en specifik incident. Dropdown-listan ska populeras dynamiskt från databasen (Dropdown-filtrering).
REGION
Databaskrav
- 1 En region identifieras unikt av dess namn.
- 2 Måste finnas en uppskattning av dess huvudterräng lagrad. Om inget värde tilldelas, ska det automatiskt sättas till 'blandad'.
- 3 Det ska gå att härleda regionens antal tidigare incidenter och operationer.
- 4 Regioner ska kunna hemligstämplas (tas bort temporärt). När detta görs ska regionens befintliga kopplingar till incidenter och operationer automatiskt flyttas till en specifik region som heter 'hemligstämplat'.
Webbkrav
- 1 Det ska finnas ett gränssnitt som anropar en befintlig procedur från databasen (
sp_region_statistik) för att hämta och visa en regions härledda antal incidenter och operationer i en HTML-tabell (Proceduranrop).
INCIDENT
Databaskrav
- 1 Kan identifieras antingen av dess unika namn eller dess unika nummer.
- 2 Incidentens plats ska lagras.
- 3 Incidenten måste inträffa i någon region (tvingande koppling).
- 4 Kan ha flera operationer kopplade till sig.
Webbkrav
- 1 Vid registrering av en ny incident (INSERT) ska tillgängliga regioner hämtas som valbara alternativ i en dropdown via en SQL-förfrågan för att förhindra felstavning.
RAPPORT (superklass)
Databaskrav
- 1 Identifieras av sitt datum och titel.
- 2 En rapport lämnas in av en agent och kopplas till en specifik incident.
- 3 Alla attribut måste ha värden (not null).
- 4 Ska finnas ett härlett attribut - antal uppföljningar.
Webbkrav
- 1 Sambandet mellan en Incident och dess tillhörande Rapporter ska presenteras i en nästlad HTML-tabell byggd med "radlayout" (Row Layout) med en underliggande JOIN-fråga mot databasen.
AVSLUTNING (subklass till Rapport)
Databaskrav
- 1 Ärver primärnyckel från Rapport-tabellen.
- 2 En kortfattad kommentar lagras (max 25 tecken).
- 3 Typ av rapport lagras (fältrapport, ledningsrapport, kampanjrapport, övrigt och slutrapport).
- 4 Sätts automatiskt till 'slutrapport' om inget annat anges.
Webbkrav
- 1 PHP-logiken måste hantera ISA-relationen genom att vid registrering automatiskt utföra en 'INSERT' i superklassen 'RAPPORT' följt av en synkroniserad 'INSERT' i subbklassen 'AVLSUTNING'.
UPPFÖLJNING (subklass till Rapport)
Databaskrav
- 1 Ärver primärnyckeln från Rapport-tabellen.
- 2 Endast fältrapporter på misslyckade operationer och misslyckade uppföljningsrapporter kan tilldelas uppföljningar.
- 3 Misslyckad operation KAN tilldelas ny uppföljning på uppdraget efter 2 år.
- 4 En längre kommentar lagras (max 80 tecken).
- 5 Om inget utslag anges ska det automatiskt tilldelas värdet som motsvarar misslyckande.
Webbkrav
- 1 Precis som 'AVSLUTNING' måste PHP-logiken för formuläret hantera ISA-arvet korrekt med dubbla, länkade databasinsättingar.