--- /dev/null
+.factorypath
+.classpath
+.project
+.settings
+bin
+target
--- /dev/null
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>de.laktatnebel.tools</groupId>
+ <artifactId>tickets</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <name>LetsToDoIt</name>
+ <description>Simple Ticket System</description>
+
+ <modules>
+ <module>service</module>
+ <module>php</module>
+ </modules>
+
+ <scm>
+ <connection>scm:git:ssh://laktatnebel.de/srv/git/tickets.git</connection>
+ <developerConnection>scm:git:ssh://laktatnebel.de/srv/git/tickets.git</developerConnection>
+ <tag>HEAD</tag>
+ </scm>
+
+ <distributionManagement>
+ <repository>
+ <id>laktatnebel.release</id>
+ <name>Release Repository</name>
+ <url>file:///home/oleb/.m2/distribution</url>
+ </repository>
+ <snapshotRepository>
+ <id>laktatnebel.snapshots</id>
+ <uniqueVersion>false</uniqueVersion>
+ <name>Snapshot Repository</name>
+ <url>file:///home/oleb/.m2/distribution</url>
+ </snapshotRepository>
+ <site>
+ <id>laktatnebel.site</id>
+ <name>Sites</name>
+ <url>file:///home/oleb/.m2/site</url>
+ </site>
+ </distributionManagement>
+
+</project>
+
--- /dev/null
+set search_path TO ticket;
+
+insert into dt_user values (default, 'oleb', 'Ole B. Rosentreter', 'email@ole-b-rosentreter.de', '859im'), (default, 'anita', 'Anita Meyer', 'anita--myer@t-online.de', 'Schnecki');
+
+insert into dt_status values (default, 'abgeschlossen'), (default, 'zurückgestellt'), (default, 'deployt'), (default, 'getestet'), (default, 'in Prüfung'), (default, 'ungetestet'), (default, 'in Arbeit'), (default, 'geplant'), (default, 'geschätzt'), (default, 'ungeplant'), (default, 'in Konzeption'), (default, 'Idee'), (default, 'warten');
+
+insert into dt_domain values (default, 'Büro'), (default, 'Haus & Hof'), (default, 'Sport'), (default, 'Ebay'), (default, 'IT'), (default, 'Urlaub'), (default, 'Finanzen'), (default, 'Business'), (default, 'Familie'), (default, 'Job'), (default, 'Freunde');
+
+insert into dt_relation_type values (default, 'abhängig von'), (default, 'siehe auch'), (default, 'ist Kopie von');
+
+insert into dt_project values
+(default, 'Serverumzug',(select id from dt_domain where name_domain = 'IT')),
+(default, 'dionysos', (select id from dt_domain where name_domain = 'IT')),
+(default, 'VCardManager', (select id from dt_domain where name_domain = 'IT')),
+(default, 'Bestzeitenrechner', (select id from dt_domain where name_domain = 'IT')),
+(default, 'PaceCalculator', (select id from dt_domain where name_domain = 'IT')),
+(default, 'TSS-Calculator', (select id from dt_domain where name_domain = 'IT')),
+(default, 'TrainingsBereichsRechner', (select id from dt_domain where name_domain = 'IT')),
+(default, 'Zwischenzeitrechner', (select id from dt_domain where name_domain = 'IT')),
+(default, 'SchwimmtrainingsplanGenerator', (select id from dt_domain where name_domain = 'IT')),
+(default, 'Laktatnebel-Webseite', (select id from dt_domain where name_domain = 'IT')),
+(default, 'Bildersort-Software', (select id from dt_domain where name_domain = 'IT')),
+(default, 'MP3Manager', (select id from dt_domain where name_domain = 'IT')),
+(default, 'Master-POMs', (select id from dt_domain where name_domain = 'IT')),
+(default, 'Ticketsystem', (select id from dt_domain where name_domain = 'IT')),
+(default, 'BmB', (select id from dt_domain where name_domain = 'IT')),
+(default, 'PDFLib', (select id from dt_domain where name_domain = 'IT')),
+(default, 'Praxis', (select id from dt_domain where name_domain = 'IT')),
+(default, 'Domainverwaltung', (select id from dt_domain where name_domain = 'IT')),
+(default, 'Arbeitszimmer', (select id from dt_domain where name_domain = 'Haus & Hof')),
+(default, 'Einkaufen', (select id from dt_domain where name_domain = 'Haus & Hof')),
+(default, 'Keller', (select id from dt_domain where name_domain = 'Haus & Hof')),
+(default, 'Küche', (select id from dt_domain where name_domain = 'Haus & Hof')),
+(default, 'Balkon', (select id from dt_domain where name_domain = 'Haus & Hof')),
+(default, 'Auto', (select id from dt_domain where name_domain = 'Haus & Hof')),
+(default, 'Haushalt', (select id from dt_domain where name_domain = 'Haus & Hof')),
+(default, 'Wohnung', (select id from dt_domain where name_domain = 'Haus & Hof')),
+(default, 'Training', (select id from dt_domain where name_domain = 'Sport')),
+(default, 'Coaching', (select id from dt_domain where name_domain = 'Sport')),
+(default, 'Verein', (select id from dt_domain where name_domain = 'Sport')),
+(default, 'Fahrrad', (select id from dt_domain where name_domain = 'Sport'));
+
+---
+
+insert into dt_issue values (default, 'Etap-Akku besorgen', 5, 7, '01:30:00', now(), now(), '2023-08-01 18:00:00', '2023-08-01 19:00:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Fahrrad'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Etap-Akku besorgen'), 'Auf dem Weg zum Schwimmtraining erledigen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Rechnung schreiben Dr. Kräuter', 7, 8, '00:15:00', now(), now(), '2023-07-30 00:00:00', '2023-07-30 23:59:00' , null, (select id from dt_domain where name_domain = 'Business'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Rechnung schreiben Dr. Kräuter'), '1 + 2h', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Bericht Dr. Kräuter', 7, 8, '01:00:00', now(), now(), '2023-07-29 00:00:00', '2023-07-30 23:59:00' , null, (select id from dt_domain where name_domain = 'Business'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Bericht Dr. Kräuter'), 'Vorschläge:</br>Virenschutz</br>Kennwörter sicher machen</br>Backup', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Idee für Dr. Kräuter', 5, 5, '02:00:00', now(), now(), '2023-08-30 00:00:00', '2023-08-30 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Praxis'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Idee für Dr. Kräuter'), 'Idee, wie man die 2-Lan-Karten-Lösung vor indirekter Infiltration schützt', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Rechnung schreiben Besser mit Butter', 7, 8, '00:15:00', now(), now(), '2023-07-30 00:00:00', '2023-07-30 23:59:00' , null, (select id from dt_domain where name_domain = 'Business'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Rechnung schreiben Besser mit Butter'), '1 + 14h', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Doku für Dr. Kräuter', 4, 5, '02:00:00', now(), now(), '2023-08-30 00:00:00', '2023-08-30 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Praxis'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Doku für Dr. Kräuter'), 'Netzwerk-Zeichnung anfertigen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Plattenspieler verkaufen', 4, 3, '00:45:00', now(), now(), '2023-09-30 00:00:00', '2023-10-15 23:59:00' , null, (select id from dt_domain where name_domain = 'Ebay'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Plattenspieler verkaufen'), 'Braun-Plattenspieler im Keller verkaufen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Blumentöpfe verkaufen', 4, 3, '00:45:00', now(), now(), '2023-09-30 00:00:00', '2023-10-15 23:59:00' , null, (select id from dt_domain where name_domain = 'Ebay'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Blumentöpfe verkaufen'), 'Blumentöpfe im Keller verkaufen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Honiggläser verkaufen/verschenken', 4, 3, '00:45:00', now(), now(), '2023-09-30 00:00:00', '2023-10-15 23:59:00' , null, (select id from dt_domain where name_domain = 'Ebay'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Honiggläser verkaufen/verschenken'), 'Braun-Plattenspieler im Keller verkaufen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Montageständer verkaufen', 4, 3, '00:45:00', now(), now(), '2023-09-30 00:00:00', '2023-10-15 23:59:00' , null, (select id from dt_domain where name_domain = 'Ebay'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Montageständer verkaufen'), 'Montageständer im Keller verkaufen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Rolle verkaufen', 4, 3, '00:45:00', now(), now(), '2023-09-30 00:00:00', '2023-10-15 23:59:00' , null, (select id from dt_domain where name_domain = 'Ebay'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Rolle verkaufen'), 'Rolle samt Schnellspanner und blauen Mantel', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Fischertechnik verkaufen', 5, 6, '01:00:00', now(), now(), '2023-09-30 00:00:00', '2023-12-15 23:59:00' , null, (select id from dt_domain where name_domain = 'Ebay'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Fischertechnik verkaufen'), 'Fischertechnik verkaufen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Fischertechnik Waggons verkaufen', 5, 6, '01:00:00', now(), now(), '2023-09-30 00:00:00', '2023-12-15 23:59:00' , null, (select id from dt_domain where name_domain = 'Ebay'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Fischertechnik Waggons verkaufen'), 'Fischertechnik Waggons verkaufen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Fischertechnik Lokomotiven verkaufen', 5, 6, '01:00:00', now(), now(), '2023-09-30 00:00:00', '2023-12-15 23:59:00' , null, (select id from dt_domain where name_domain = 'Ebay'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Fischertechnik Lokomotiven verkaufen'), 'Fischertechnik Lokomotiven verkaufen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Fischertechnik Motoren verkaufen', 5, 6, '01:00:00', now(), now(), '2023-09-30 00:00:00', '2023-12-15 23:59:00' , null, (select id from dt_domain where name_domain = 'Ebay'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Fischertechnik Motoren verkaufen'), 'Fischertechnik verkaufen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Fischertechnik Gleise verkaufen', 5, 6, '01:00:00', now(), now(), '2023-09-30 00:00:00', '2023-12-15 23:59:00' , null, (select id from dt_domain where name_domain = 'Ebay'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Fischertechnik Gleise verkaufen'), 'Fischertechnik Gleise verkaufen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Aufkleber Bento-Box', 2, 4, '03:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Fahrrad'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Aufkleber Bento-Box'), 'Laktatnebel-Aufkleber für die Bentobox vom Rad', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Saison 2024', 7, 9, '04:00:00', now(), now(), '2023-08-09 00:00:00', '2023-08-30 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Saison 2024'), 'Saison 2024 - Periodisierung, Wettkämpfe, Camps', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Webseite neu', 8, 6, '03:00:00', now(), now(), '2023-08-30 00:00:00', '2023-08-30 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Laktatnebel-Webseite'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Webseite neu'), 'Webseite neues Theme verpassen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Eintrag triathlon-coaches.com', 6, 4, '01:00:00', now(), now(), '2023-09-30 00:00:00', '2023-09-30 23:59:00' , null, (select id from dt_domain where name_domain = 'Business'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Eintrag triathlon-coaches.com'), 'Eintrag triatlon-coaches.com erstellen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Laufstrecken markieren', 5, 5, '03:00:00', now(), now(), '2023-09-30 00:00:00', '2023-09-30 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Training'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Laufstrecken markieren'), 'Laufstrecken markieren für Intervalle', now(), now(), (select id from dt_user where username = 'oleb'), null);
+ insert into dt_comment values (default, (select id from dt_issue where titel = 'Laufstrecken markieren'), 'auch für testläufe 5km u.ä.', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'e.on Account', 3, 7, '00:30:00', now(), now(), '2023-08-30 00:00:00', '2023-08-30 23:59:00' , null, (select id from dt_domain where name_domain = 'Büro'), null, (select id from dt_user where username = 'anita'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'e.on Account'), 'Account auf e.on@anita-ole.de umstellen', now(), now(), (select id from dt_user where username = 'anita'));
+insert into dt_issue values (default, 'Lauftraining Termin finden', 4, 8, '01:00:00', now(), now(), '2023-08-30 00:00:00', '2023-08-30 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Lauftraining Termin finden'), 'Freitags Bert-Brecht?', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Kino Gutschein Mira', 5, 7, '00:15:00', now(), now(), '2023-07-30 00:00:00', '2023-07-30 23:59:00' , null, (select id from dt_domain where name_domain = 'Freunde'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Kino Gutschein Mira'), 'Cine oder Sommernachtskino', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'PKV abrechnen', 4, 4, '01:00:00', now(), now(), '2023-07-30 00:00:00', '2023-07-31 23:59:00' , null, (select id from dt_domain where name_domain = 'Büro'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'PKV abrechnen'), 'Abrechnung PKV', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Panele Arbeitszimmer', 2, 3, '01:00:00', now(), now(), '2023-11-15 00:00:00', '2023-12-15 23:59:00' , null, (select id from dt_domain where name_domain = 'Haus & Hof'), (select id from dt_project where name_project = 'Arbeitszimmer'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Panele Arbeitszimmer'), '2m Breite, 2,45 hoch, bestellen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+ insert into dt_comment values (default, (select id from dt_issue where titel = 'Panele Arbeitszimmer'), 'und anbringen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'weißes Regal anbringen', 4, 5, '02:00:00', now(), now(), '2023-12-01 00:00:00', '2023-12-31 23:59:00' , null, (select id from dt_domain where name_domain = 'Haus & Hof'), (select id from dt_project where name_project = 'Arbeitszimmer'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'weißes Regal anbringen'), 'also die Fahrradhalterungen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Termin bei Dominik', 6, 7, '00:15:00', now(), now(), '2023-07-30 00:00:00', '2023-08-15 23:59:00' , null, (select id from dt_domain where name_domain = 'Büro'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Termin bei Dominik'), 'Kontrolle & PZR', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Weinregal neu: Entwurf', 4, 2, '05:00:00', now(), now(), '2023-12-15 00:00:00', '2024-01-15 23:59:00' , null, (select id from dt_domain where name_domain = 'Büro'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Weinregal neu: Entwurf'), 'Konstruktion entwerfen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Weinregal neu: Material', 4, 2, '10:00:00', now(), now(), '2024-01-31 00:00:00', '2024-03-31 23:59:00' , null, (select id from dt_domain where name_domain = 'Büro'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Weinregal neu: Material'), 'Material besorgen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Weinregal neu: zusammenbauen', 4, 2, '20:00:00', now(), now(), '2024-03-31 00:00:00', '2024-04-30 23:59:00' , null, (select id from dt_domain where name_domain = 'Büro'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Weinregal neu: zusammenbauen'), 'Basteln', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Kalender pflegen', 4, 7, '01:30:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'Büro'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'ungeplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Kalender pflegen'), 'Termine München, Kinder, Sasison, Eltern, urlaube', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Mails sortieren', 4, 8, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'Büro'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'ungeplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Mails sortieren'), 'Mails sortieren und Filter bauen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Aufkleber Helm', 2, 4, '03:00:00', now(), now(), '9999-12-31', '2024-04-30 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Fahrrad'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Aufkleber Helm'), 'Full Attack now – Aufkleber/Folie', now(), now(), (select id from dt_user where username = 'oleb'), null);
+ insert into dt_comment values (default, (select id from dt_issue where titel = 'Aufkleber Helm'), 'Folientyp im Nürbanum fragen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Server installieren', 9, 5, '03:00:00', now(), now(), '9999-12-31', '2023-08-15 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Serverumzug'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geschätzt')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Server installieren'), 'User, Software', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Auto-Kofferraumschutz verkaufen', 4, 6, '00:45:00', now(), now(), '2023-08-25 00:00:00', '2023-08-31 23:59:00' , null, (select id from dt_domain where name_domain = 'Ebay'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Auto-Kofferraumschutz verkaufen'), 'bei Ebay verticken', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'TomTom verticken', 4, 6, '00:45:00', now(), now(), '2023-08-25 00:00:00', '2023-08-31 23:59:00' , null, (select id from dt_domain where name_domain = 'Ebay'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'TomTom verticken'), 'Testen und bei Ebay verticken', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Workflows einführen', 3, 4, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Ticketsystem'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'in Konzeption')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Workflows einführen'), 'Workflows als defninierbbare Kette von Stati', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Schwimmtraining: 4000er/Mix', 6, 5, '02:00:00', now(), now(), '2023-08-10 00:00:00', '2023-09-20 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'ungeplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Schwimmtraining: 4000er/Mix'), 'basteln und in DB/TP schreiben', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Schwimmtraining: Technik', 6, 8, '03:00:00', now(), now(), '2023-08-12 00:00:00', '2023-09-20 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'ungeplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Schwimmtraining: Technik'), 'mehr auf Fehlertypen eingehen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Schwimmtraining: Wpt', 6, 5, '02:00:00', now(), now(), '2023-08-14 00:00:00', '2023-09-20 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'ungeplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Schwimmtraining: Wpt'), 'Wuppertaler Pläne DB/TP schreiben', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Schwimmtraining: Peters Pläne', 6, 7, '04:00:00', now(), now(), '2023-08-24 00:00:00', '2023-09-20 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'ungeplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Schwimmtraining: Peters Pläne'), 'in DB/TP schreiben', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Schwimmtraining: Kurzversionen', 6, 6, '04:00:00', now(), now(), '2023-08-26 00:00:00', '2023-09-20 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'ungeplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Schwimmtraining: Kurzversionen'), 'basteln und in DB/TP schreiben', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Schwimmtraining: Lüning-Buch', 6, 7, '06:00:00', now(), now(), '2023-08-28 00:00:00', '2023-09-20 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'ungeplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Schwimmtraining: Lüning-Buch'), 'schneller Schwimmen von Holger Lüning kaufen und „verarbeiten“', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Wiederholungs-Ticktes', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Ticketsystem'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Wiederholungs-Ticktes'), 'ToDos, die (regelmäßige) wiederholungen sind, mit „Kopie von“ verknüpfen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Vortrag Radtraining', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Verein'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Vortrag Radtraining'), 'Ideen sammeln', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Vortrag Lauftraining', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Verein'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Vortrag Lauftraining'), 'Ideen sammeln', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Vortrag Ernährung', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Verein'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Vortrag Ernährung'), 'Ideen sammeln', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Schwimmseminar', 0, 0, '03:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geschätzt')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Schwimmseminar'), 'Technik-Seminar mit Marianne', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Laufseminar', 0, 0, '02:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geschätzt')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Laufseminar'), 'Aublauf planen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Instagram', 5, 5, '00:30:00', now(), now(), '2023-09-15 00:00:00', '2023-09-25 23:59:00' , null, (select id from dt_domain where name_domain = 'Business'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Instagram'), 'Story: Wie sinnvoll ist die Teilnahme an Event/Race X', now(), now(), (select id from dt_user where username = 'oleb'), null);
+ insert into dt_comment values (default, (select id from dt_issue where titel = 'Instagram'), 'Was ist von Produkt ABC zu halten?', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Datei hochladen', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'PDFLib'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Datei hochladen'), 'Die hochgeladenen Datei temp. Speichern', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Vorschaubilder generieren', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'PDFLib'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Vorschaubilder generieren'), 'Aus dem PDF pro seite eine Vorschau erstellen und anzeigen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Aktion: drehen', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'PDFLib'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Aktion: drehen'), 'PDF-Seite soll um 180 Grad gedreht werden', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Aktion: löschen', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'PDFLib'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Aktion: löschen'), 'PDF seite soll ausgeblendet bzw, gelöscht werden', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Reihenfolge', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'PDFLib'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Reihenfolge'), 'Vorschaubilder sollen per Drag & Drop verschoben werden', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Download-Button', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'PDFLib'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Download-Button'), 'Download-Button löst die Aktionen aus und startet download', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Bilder sortieren', 5, 5, '10:00:00', now(), now(), '2023-10-01 00:00:00', '2023-10-03 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Bilder sortieren'), 'auch vom Handy ….', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Datenbank für PDFLib', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'PDFLib'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Datenbank für PDFLib'), 'Session', now(), now(), (select id from dt_user where username = 'oleb'), null);
+ insert into dt_comment values (default, (select id from dt_issue where titel = 'Datenbank für PDFLib'), 'Input-File als Blob ablegen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+ insert into dt_comment values (default, (select id from dt_issue where titel = 'Datenbank für PDFLib'), 'output als File auf Disk', now(), now(), (select id from dt_user where username = 'oleb'), null);
+ insert into dt_comment values (default, (select id from dt_issue where titel = 'Datenbank für PDFLib'), 'Aktionen als Kette von Befehlen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Einnahme für PDFLib', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'PDFLib'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Einnahme für PDFLib'), 'Google-Werbung', now(), now(), (select id from dt_user where username = 'oleb'), null);
+ insert into dt_comment values (default, (select id from dt_issue where titel = 'Einnahme für PDFLib'), '1ct/Seite (input)', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'PDFLib-Frontends', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'PDFLib'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'PDFLib-Frontends'), 'REST-API', now(), now(), (select id from dt_user where username = 'oleb'), null);
+ insert into dt_comment values (default, (select id from dt_issue where titel = 'PDFLib-Frontends'), 'App', now(), now(), (select id from dt_user where username = 'oleb'), null);
+ insert into dt_comment values (default, (select id from dt_issue where titel = 'PDFLib-Frontends'), 'Browser', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'PDFLib Services: Upload', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'PDFLib'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'PDFLib Services: Upload'), 'Upload', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'PDFLib Services: User/Login', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'PDFLib'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'PDFLib Services: User/Login'), 'User-login', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'PDFLib Services: Accounting', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'PDFLib'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'PDFLib Services: Accounting'), 'accounting', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'PDFLib Services: Vorschau', 0, 0, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'PDFLib'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'PDFLib Services: Vorschau'), 'Vorschauen generieren', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Urlaub 2023', 5, 8, '08:00:00', now(), now(), '2023-09-05 00:00:00', '2023-09-20 23:59:00' , null, (select id from dt_domain where name_domain = 'Urlaub'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Urlaub 2023'), 'Kuba-Reise plannen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Config-Dateien absichern.', 7, 4, '01:30:00', now(), now(), '2023-09-28 00:00:00', '2023-09-30 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Serverumzug'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Config-Dateien absichern.'), 'Config-Dateien absichern. Schreib- und Leserechte reduzieren, chmod 400 Security', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Login phpMyAdmin', 6, 4, '00:30:00', now(), now(), '2023-09-28 00:00:00', '2023-09-30 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Serverumzug'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Login phpMyAdmin'), 'Login phpMyAdmin MySQL', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'ProFTP installieren', 4, 3, '03:00:00', now(), now(), '2023-10-15 00:00:00', '2023-10-31 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Serverumzug'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'ProFTP installieren'), 'ProFTP installieren und konfigurieren, DB serveradmin nutzen ProFTP PostgresQL', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Firewall iptables', 7, 7, '05:00:00', now(), now(), '2023-09-05 00:00:00', '2023-09-30 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Serverumzug'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Firewall iptables'), 'Firewall iptables einbauen Security', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Logrotate', 3, 3, '02:00:00', now(), now(), '2023-09-20 00:00:00', '2023-09-30 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Serverumzug'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Logrotate'), 'Logrotate einrichten / prüfen Logrotate', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Apache-Confs', 2, 2, '01:30:00', now(), now(), '2023-09-10 00:00:00', '2023-09-30 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Serverumzug'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Apache-Confs'), 'Apache-Confs vom certbot-Müll säubern Apache2 Letsencrypt', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Domainverwaltung WebUI', 0, 0, '08:00:00', now(), now(), '9999-12-31', '1999-12-30 00:00:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Domainverwaltung'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Domainverwaltung WebUI'), 'Domainverwaltung WebUI', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Conf-Generator schreiben', 0, 0, '03:00:00', now(), now(), '9999-12-31', '1999-12-30 00:00:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Domainverwaltung'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'Idee')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Conf-Generator schreiben'), 'Conf-Generator schreiben Apache', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Postfix sender restrictions', 8, 5, '01:30:00', now(), now(), '2023-09-15 00:00:00', '2023-09-30 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Serverumzug'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Postfix sender restrictions'), 'Postfix sender restrictions Postfix Mailserver', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Log-Dirs aufräumen', 4, 3, '00:30:00', now(), now(), '2023-09-25 00:00:00', '2023-09-30 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Serverumzug'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Log-Dirs aufräumen'), 'Log-Dirs aufräumen Server-OS', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'sport@laktatnebel.de ', 6, 5, '00:30:00', now(), now(), '2023-09-20 00:00:00', '2023-09-30 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'Serverumzug'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'sport@laktatnebel.de '), 'sport@laktatnebel.de wieder einrichten / reparieren', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Hardware', 8, 5, '03:00:00', now(), now(), '2023-09-29 00:00:00', '2023-10-03 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'dionysos'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Hardware'), 'Hardware zum fliegen kriegen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Server-OS installieren', 8, 5, '03:00:00', now(), now(), '2023-10-01 00:00:00', '2023-10-03 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), (select id from dt_project where name_project = 'dionysos'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Server-OS installieren'), 'Debian testing, Basis-Funktionen, Software, User', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'unsichere Passwörter ändern', 9, 6, '02:00:00', now(), now(), '2023-08-14 00:00:00', '2023-08-31 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'unsichere Passwörter ändern'), 'unsichere Passwörter ändern', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Kabelsalat aufräumen', 7, 7, '02:00:00', now(), now(), '2023-10-10 00:00:00', '2023-10-15 23:59:00' , null, (select id from dt_domain where name_domain = 'Haus & Hof'), (select id from dt_project where name_project = 'Arbeitszimmer'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Kabelsalat aufräumen'), 'Kabelsalat aufräumen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Bluetoothheadset einrichten', 6, 5, '02:00:00', now(), now(), '2023-10-15 00:00:00', '2023-10-31 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Bluetoothheadset einrichten'), 'Bluetoothheadset einrichten', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Email-Accounts', 7, 5, '05:00:00', now(), now(), '2023-09-10 00:00:00', '2023-09-30 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Email-Accounts'), 'jeder Dienst ein Alias', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Schneckenpasswörter', 8, 6, '02:00:00', now(), now(), '2023-10-16 00:00:00', '2023-10-30 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Schneckenpasswörter'), 'Schneckenpasswörter sichern', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Bookmarks sortieren', 6, 3, '01:30:00', now(), now(), '2023-08-03 00:00:00', '2023-08-31 23:59:00' , null, (select id from dt_domain where name_domain = 'IT'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Bookmarks sortieren'), 'Bookmarks sortieren und ins Wiki falls nötig', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'B07-Liga', 7, 6, '02:00:00', now(), now(), '2023-08-24 00:00:00', '2023-08-25 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Verein'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'B07-Liga'), 'Trainings definieren und terminieren', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'B07-Lauftraining', 7, 6, '02:00:00', now(), now(), '2023-08-10 00:00:00', '2023-08-15 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'B07-Lauftraining'), 'Plan machen für Okt-Mai', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Trainings übersetzen', 6, 5, '10:00:00', now(), now(), '2023-09-01 00:00:00', '2023-10-20 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Trainings übersetzen'), 'in Trainingpeaks: aus englisch', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'GoldenCheetah lernen', 7, 6, '00:00:00', now(), now(), '2023-11-01 00:00:00', '2023-11-30 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'ungeplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'GoldenCheetah lernen'), 'GoldenCheetah lernen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Life Kinetik Übungen lernen', 8, 5, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'ungeplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Life Kinetik Übungen lernen'), 'Life Kinetik Übungen lernen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Insta-beträge vorplanen', 3, 4, '00:00:00', now(), now(), '2023-10-05 00:00:00', '2023-10-31 23:59:00' , null, (select id from dt_domain where name_domain = 'Business'), null, (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'ungeplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Insta-beträge vorplanen'), 'Insta-beträge vorplanen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Rookie-Programm', 5, 5, '03:00:00', now(), now(), '2023-09-01 00:00:00', '2023-09-20 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Rookie-Programm'), 'Mit Alexander überarbeiten', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Athletik-Trainings bauen', 7, 5, '02:00:00', now(), now(), '2023-09-01 00:00:00', '2023-09-20 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Athletik-Trainings bauen'), 'in TP', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Outdoor-Training', 7, 3, '06:00:00', now(), now(), '2023-09-01 00:00:00', '2023-09-20 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Outdoor-Training'), 'Altletiktrainung a la everfit', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Stretching Anleitung', 6, 3, '08:00:00', now(), now(), '2024-01-15 00:00:00', '2024-03-31 23:59:00' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'ungeplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Stretching Anleitung'), 'Stretching-Bilder machen (Sarah?)', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Neuroathletik lernen', 8, 6, '00:00:00', now(), now(), '9999-12-31', '9999-12-31' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'ungeplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Neuroathletik lernen'), 'Neuroathletik lernen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Schwimmseminar: Delphin', 0, 0, '03:00:00', now(), now(), '2023-08-02', '2023-08-04' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Schwimmseminar: Delphin'), 'Delphin-Technik-Seminar mit Marianne', now(), now(), (select id from dt_user where username = 'oleb'), null);
+ insert into dt_comment values (default, (select id from dt_issue where titel = 'Schwimmseminar: Delphin'), 'Ablauf planen, Videos finden', now(), now(), (select id from dt_user where username = 'oleb'), null);
+insert into dt_issue values (default, 'Schwimmseminar: Rücken', 0, 0, '03:00:00', now(), now(), '2023-08-08', '2023-08-11' , null, (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Schwimmseminar: Rücken'), 'Rücken-Technik-Seminar mit Marianne', now(), now(), (select id from dt_user where username = 'oleb'), null);
+ insert into dt_comment values (default, (select id from dt_issue where titel = 'Schwimmseminar: Rücken'), 'Ablauf planen, Videos finden', now(), now(), (select id from dt_user where username = 'oleb'), null);
+
+insert into dt_issue values (default, 'Honig besorgen', 0, 0, '03:00:00', now(), now(), '2023-08-01', '2023-08-03' , null, (select id from dt_domain where name_domain = 'Haus & Hof'), (select id from dt_project where name_project = 'Einkaufen'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant')); insert into dt_comment values (default, (select id from dt_issue where titel = 'Honig besorgen'), 'alte Gläser mitnehmen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+
+---
+
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Rechnung schreiben Dr. Kräuter'), (select id from dt_issue where titel = 'Bericht Dr. Kräuter'), (select id from dt_relation_type where name_relation_type = 'abhängig von'));
+
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Fischertechnik verkaufen'), (select id from dt_issue where titel = 'Fischertechnik Waggons verkaufen'), (select id from dt_relation_type where name_relation_type = 'siehe auch'));
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Fischertechnik verkaufen'), (select id from dt_issue where titel = 'Fischertechnik Lokomotiven verkaufen'), (select id from dt_relation_type where name_relation_type = 'siehe auch'));
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Fischertechnik verkaufen'), (select id from dt_issue where titel = 'Fischertechnik Gleise verkaufen'), (select id from dt_relation_type where name_relation_type = 'siehe auch'));
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Fischertechnik verkaufen'), (select id from dt_issue where titel = 'Fischertechnik Motoren verkaufen'), (select id from dt_relation_type where name_relation_type = 'siehe auch'));
+
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Lauftraining Termin finden'), (select id from dt_issue where titel = 'Laufseminar'), (select id from dt_relation_type where name_relation_type = 'siehe auch'));
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Kalender pflegen'), (select id from dt_issue where titel = 'Saison 2024'), (select id from dt_relation_type where name_relation_type = 'abhängig von'));
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Vorschaubilder generieren'), (select id from dt_issue where titel = 'PDFLib Services: Vorschau'), (select id from dt_relation_type where name_relation_type = 'abhängig von'));
+
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Kabelsalat aufräumen'), (select id from dt_issue where titel = 'Hardware'), (select id from dt_relation_type where name_relation_type = 'abhängig von'));
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Server-OS installieren'), (select id from dt_issue where titel = 'Hardware'), (select id from dt_relation_type where name_relation_type = 'abhängig von'));
+
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Weinregal neu: zusammenbauen'), (select id from dt_issue where titel = 'Weinregal neu: Material'), (select id from dt_relation_type where name_relation_type = 'abhängig von'));
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Weinregal neu: Material'), (select id from dt_issue where titel = 'Weinregal neu: Entwurf'), (select id from dt_relation_type where name_relation_type = 'abhängig von'));
+insert into kt_relation values (default, (select id from dt_issue where titel = 'weißes Regal anbringen'), (select id from dt_issue where titel = 'Panele Arbeitszimmer'), (select id from dt_relation_type where name_relation_type = 'abhängig von'));
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Fischertechnik Gleise verkaufen'), (select id from dt_issue where titel = 'Fischertechnik Waggons verkaufen'), (select id from dt_relation_type where name_relation_type = 'abhängig von'));
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Fischertechnik Waggons verkaufen'), (select id from dt_issue where titel = 'Fischertechnik Lokomotiven verkaufen'), (select id from dt_relation_type where name_relation_type = 'abhängig von'));
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Eintrag triathlon-coaches.com'), (select id from dt_issue where titel = 'Webseite neu'), (select id from dt_relation_type where name_relation_type = 'abhängig von'));
+
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Vorschaubilder generieren'), (select id from dt_issue where titel = 'Datei hochladen'), (select id from dt_relation_type where name_relation_type = 'abhängig von'));
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Aktion: drehen'), (select id from dt_issue where titel = 'Vorschaubilder generieren'), (select id from dt_relation_type where name_relation_type = 'abhängig von'));
+insert into kt_relation values (default, (select id from dt_issue where titel = 'Aktion: löschen'), (select id from dt_issue where titel = 'Vorschaubilder generieren'), (select id from dt_relation_type where name_relation_type = 'abhängig von'));
+
+---
+
+update dt_issue set deadline = '9999-12-31 00:00:00' where deadline < '2000-12-31 00:00:00' ;
+
+update dt_issue set fk_status = (select id from dt_status where name_status = 'abgeschlossen') where titel = 'Rechnung schreiben Besser mit Butter' ;
+update dt_issue set fk_status = (select id from dt_status where name_status = 'abgeschlossen') where titel = 'Bericht Dr. Kräuter';
+update dt_issue set fk_status = (select id from dt_status where name_status = 'abgeschlossen') where titel = 'Rechnung schreiben Dr. Kräuter';
+update dt_issue set fk_status = (select id from dt_status where name_status = 'abgeschlossen') where titel = 'Kino Gutschein Mira';
+update dt_issue set fk_status = (select id from dt_status where name_status = 'abgeschlossen') where titel = 'PKV abrechnen';
+
+
+
+INSERT INTO dt_issue VALUES (DEFAULT, 'Trainingpeaks leeren für Ole bis Saisonende', 7, 10, '01:00:00', now(), now(), '2023-08-23 00:00:00', '2023-08-26 07:00:00', 'Training Trainingsplan Trainingpeaks', (select id from dt_domain where name_domain = 'Sport'), (select id from dt_project where name_project = 'Coaching'), (select id from dt_user where username = 'oleb'), (select id from dt_user where username = 'oleb'), (select id from dt_status where name_status = 'geplant'));
+ insert into dt_comment values (default, (select id from dt_issue where titel = 'Trainingpeaks leeren für Ole bis Saisonende'), 'Trainingpeaks leeren für Ole bis Saisonende - alle Einheiten raus ab Erlangen', now(), now(), (select id from dt_user where username = 'oleb'), null);
+
+SELECT * FROM ticket.view_comments_users WHERE fk_issue_of_comment=97 ORDER BY erstellt asc;
+
+
+UPDATE ticket.dt_issue SET fk_domain = '3', fk_project = '28', effort = '1:0:00', fk_assignee = '1', fk_status = '8', importance = '7', urgency = '10', edited = now() WHERE id=104;
+
+
+
--- /dev/null
+--create schema ticket;
+
+set
+search_path to ticket;
+
+--drop table dt_user cascade;
+--drop sequence dt_user_id_seq;
+-- USER
+create table dt_user (
+ id serial not null,
+ username varchar not null,
+ name_user varchar not null,
+ email varchar not null,
+ pass varchar not null
+);
+
+alter table only dt_user
+ add constraint dt_user_pkey primary key (id);
+
+alter table only dt_user
+ add constraint dt_user_uniq unique (username);
+
+-- STATUS
+--drop table dt_status cascade;
+--drop sequence dt_status_id_seq;
+
+create table dt_status (
+ id serial not null,
+ name_status varchar not null
+);
+
+alter table only dt_status
+ add constraint dt_status_pkey primary key (id);
+-- DOMAIN
+--drop table dt_domain cascade;
+--drop sequence dt_domain_id_seq;
+
+create table dt_domain (
+ id serial not null,
+ name_domain varchar not null
+);
+
+alter table only dt_domain
+ add constraint dt_domain_pkey primary key (id);
+-- PROJECT
+--drop table dt_project cascade;
+--drop sequence dt_project_id_seq;
+
+create table dt_project (
+ id serial not null,
+ name_project varchar not null,
+ fk_domain integer
+);
+
+alter table only dt_project
+ add constraint dt_project_pkey primary key (id);
+
+alter table only dt_project
+ add constraint project_domain_fkey foreign key (fk_domain) references dt_domain(id) on
+update
+ cascade on
+ delete
+ cascade;
+-- ISSUE
+--drop table dt_issue cascade;
+--drop sequence dt_issue_id_seq;
+
+
+
+
+create table dt_issue (
+ id serial not null,
+ titel varchar not null,
+ importance integer not null default 0,
+ urgency integer not null default 0,
+ effort interval,
+ created timestamp not null,
+ edited timestamp not null,
+ executiondate timestamp,
+ deadline date,
+ keywords text,
+ fk_domain integer not null,
+ fk_project integer,
+ fk_user integer not null,
+ fk_assignee integer not null,
+ fk_status integer not null
+);
+
+alter table only dt_issue
+ add constraint dt_issue_pkey primary key (id);
+
+alter table only dt_issue
+ add constraint issue_domain_fkey foreign key (fk_domain) references dt_domain(id) on
+update
+ cascade on
+ delete
+ cascade;
+
+alter table only dt_issue
+ add constraint issue_project_fkey foreign key (fk_project) references dt_project(id) on
+update
+ cascade on
+ delete
+ cascade;
+
+alter table only dt_issue
+ add constraint issue_status_fkey foreign key (fk_status) references dt_status(id) on
+update
+ cascade on
+ delete
+ cascade;
+
+alter table only dt_issue
+ add constraint issue_user_fkey foreign key (fk_user) references dt_user(id) on
+update
+ cascade on
+ delete
+ cascade;
+
+alter table only dt_issue
+ add constraint issue_assignee_fkey foreign key (fk_assignee) references dt_user(id) on
+update
+ cascade on
+ delete
+ cascade;
+
+
+-- ATTACHMENT
+--drop table dt_attachment cascade;
+--drop sequence dt_attachment_id_seq;
+
+create table dt_attachment (
+ id serial not null,
+ file_name varchar not null,
+ file_type varchar not null,
+ file_data bytea not null,
+ md5sum varchar not null
+);
+
+alter table only dt_attachment
+ add constraint dt_attachment_pkey primary key (id);
+
+-- COMMENT
+--drop table dt_comment cascade;
+--drop sequence dt_comment_id_seq;
+
+create table dt_comment (
+ id serial not null,
+ fk_issue integer not null,
+ text_comment text not null,
+ created timestamp not null,
+ edited timestamp not null,
+ fk_user integer not null,
+ fk_attachment integer
+);
+
+alter table only dt_comment
+ add constraint dt_comment_pkey primary key (id);
+
+alter table only dt_comment
+ add constraint comment_user_fkey foreign key (fk_user) references dt_user(id) on
+update
+ cascade on
+ delete
+ cascade;
+
+alter table only dt_comment
+ add constraint comment_issue_fkey foreign key (fk_issue) references dt_issue(id) on
+update
+ cascade on
+ delete
+ cascade;
+
+alter table only dt_comment
+ add constraint comment_attachment_fkey foreign key (fk_attachment) references dt_attachment(id) on
+update
+ cascade on
+ delete
+ cascade;
+
+
+-- LOG
+--drop table dt_sqllog cascade;
+--drop sequence dt_sqllog_id_seq;
+
+create table dt_sqllog (
+ id serial not null,
+ created timestamp not null,
+ sql text not null,
+ fk_user integer not null,
+ sid text not null,
+ script varchar not null
+);
+
+alter table only dt_sqllog
+ add constraint dt_sqllog_pkey primary key (id);
+
+
+alter table only dt_sqllog
+ add constraint sqllog_user_fkey foreign key (fk_user) references dt_user(id) on
+update
+ cascade on
+ delete
+ cascade;
+
+-- RELATION-TYPE
+--drop table dt_relation_type cascade;
+--drop sequence dt_relation_type_id_seq;
+
+create table dt_relation_type (
+ id serial not null,
+ name_relation_type varchar not null
+);
+
+alter table only dt_relation_type
+ add constraint dt_relation_type_pkey primary key (id);
+-- RELATION
+--drop table kt_relation cascade;
+
+create table kt_relation (
+ id serial not null,
+ fk_issue integer not null,
+ fk_issue_relation_of integer not null,
+ fk_relation_type integer not null
+);
+
+alter table only kt_relation
+ add constraint dt_relation_pkey primary key (id);
+
+alter table only kt_relation
+ add constraint kt_relation_uniq unique (
+ fk_issue,
+ fk_issue_relation_of,
+ fk_relation_type
+);
+
+alter table only kt_relation
+ add constraint relation_issue_fkey foreign key (fk_issue) references dt_issue(id) on
+update
+ cascade on
+ delete
+ cascade;
+
+alter table only kt_relation
+ add constraint relation_of_issue_fkey foreign key (fk_issue_relation_of) references dt_issue(id) on
+update
+ cascade on
+ delete
+ cascade;
+
+alter table only kt_relation
+ add constraint relation_relation_type_fkey foreign key (fk_relation_type) references dt_relation_type(id) on
+update
+ cascade on
+ delete
+ cascade;
+-- VIEWS
+
+create or replace
+view view_comments_users as
+select
+ dc.id as id_comment,
+ dc.fk_issue as fk_issue_of_comment,
+ dc.text_comment,
+ da.name_user as name_user_of_comment,
+ dc.created as erstellt,
+ dc.edited as editiert,
+ da.id as id_name_user_of_comment,
+ da.username as username_user_of_comment
+from
+ dt_comment dc
+join dt_user da on
+ dc.fk_user = da.id
+order by
+ created desc;
+
+create or replace
+view view_relationships as
+select
+ di1.id as relation_source_id,
+ di1.titel as relation_source_titel,
+ ds1.name_status as relation_source_status,
+ ddt.name_relation_type,
+ di2.id as relation_target_id,
+ di2.titel as relation_target_titel,
+ ds2.name_status as relation_target_status
+from
+ kt_relation kd
+join dt_relation_type ddt on
+ kd.fk_relation_type = ddt.id
+join dt_issue di1 on
+ kd.fk_issue = di1.id
+join dt_issue di2 on
+ kd.fk_issue_relation_of = di2.id
+join
+ dt_status ds1 on
+ di1.fk_status = ds1.id
+join
+ dt_status ds2 on
+ di2.fk_status = ds2.id;
+
+create or replace
+view view_uncompleted as
+select
+ *
+from
+ view_relationships vr
+where
+ vr.relation_target_status not in ('abgeschlossen')
+ and
+ vr.name_relation_type in ('abhängig von');
+
+
+--drop view view_todo_overview;
+create or replace
+view view_todo_overview as
+select
+ dd.name_domain as domain,
+ di.titel as issue,
+ vca.text_comment as Kommentar,
+ di.effort as aufwand,
+ di.deadline as bis_wann,
+ ds.name_status as status,
+ das.name_user as zugeordnet,
+ di.executiondate as geplant,
+ di.importance * di.urgency as bewertung,
+ ds.id as status_id,
+ das.id as assingee_id,
+ vca.id_comment as comment_id,
+ dd.id as domain_id,
+ da.id as user_id,
+ di.id as issue_id,
+ di.edited,
+ di.created
+from
+ dt_issue di
+join dt_domain dd on
+ di.fk_domain = dd.id
+join dt_status ds on
+ di.fk_status = ds.id
+join view_comments_users vca on
+ di.id = vca.fk_issue_of_comment
+join dt_user da on
+ di.fk_user = da.id
+join dt_user das on
+ di.fk_assignee = das.id
+where
+ di.id not in (
+ select
+ vu.relation_source_id
+ from
+ view_uncompleted vu
+ )
+ and ds.id not in (
+ select
+ id
+ from
+ dt_status
+ where
+ name_status = 'abgeschlossen'
+ )
+order by
+ di.deadline asc,
+ di.importance * di.urgency desc,
+ di.executiondate asc,
+ di.effort asc;
+
+create or replace
+view view_todo_short_overview as
+select
+ di.id,
+ dd.name_domain as domain,
+ di.titel as issue,
+ di.deadline as bis_wann,
+ di.importance as wichtigkeit,
+ di.urgency as dringlichkeit,
+ di.importance * di.urgency as bewertung,
+ di.effort as aufwand,
+ di.executiondate as geplant,
+ di.fk_status as status,
+ di.keywords
+from
+ dt_issue di
+join dt_domain dd on
+ di.fk_domain = dd.id
+join dt_status ds on
+ di.fk_status = ds.id
+where
+ ds.id not in (
+ select
+ id
+ from
+ dt_status
+ where
+ name_status = 'abgeschlossen'
+ )
+order by
+ di.deadline asc,
+ di.importance * di.urgency desc,
+ di.executiondate asc,
+ di.effort asc;
+
+create or replace
+view view_issue as
+select
+ di.id,
+ dd.name_domain as domain,
+ di.titel as issue,
+ di.deadline as bis_wann,
+ di.importance as wichtigkeit,
+ di.urgency as dringlichkeit,
+ di.importance * di.urgency as bewertung,
+ di.effort as aufwand,
+ di.executiondate as geplant,
+ di.edited as edited,
+ di.created as created,
+ du.name_user as author,
+ da.name_user as assignee,
+ di.fk_status as status,
+ di.keywords
+from
+ dt_issue di
+join dt_domain dd on
+ di.fk_domain = dd.id
+join dt_user du on
+ di.fk_user = du.id
+join dt_user da on
+ di.fk_assignee = da.id;
+
+grant usage on schema ticket to oleb with grant option;
+grant select, update, insert, delete on all tables in schema ticket to oleb;
+grant usage on sequence dt_attachment_id_seq, dt_comment_id_seq, dt_domain_id_seq, dt_issue_id_seq, dt_project_id_seq, dt_sqllog_id_seq, kt_relation_id_seq to oleb;
\ No newline at end of file
--- /dev/null
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>de.laktatnebel.service</groupId>
+ <artifactId>tickets</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>war</packaging>
+
+ <name>LetsToDoIt - Service</name>
+ <description>Simple Ticket System</description>
+
+ <parent>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-parent</artifactId>
+ <version>3.1.2</version>
+ <relativePath /> <!-- lookup parent from repository -->
+ </parent>
+
+ <properties>
+ <java.version>17</java.version>
+ <json.version>20230227</json.version>
+
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+
+ <maven.compiler.source>${java.version}</maven.compiler.source>
+ <maven.compiler.target>${java.version}</maven.compiler.target>
+
+ <maven-enforcer-plugin.version>3.3.0</maven-enforcer-plugin.version>
+
+ <maven-source-plugin.version>3.2.1</maven-source-plugin.version>
+ <maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version>
+ <maven-surefire-plugin.version>3.0.0</maven-surefire-plugin.version>
+
+ <maven-jar-plugin.version>3.3.0</maven-jar-plugin.version>
+ <maven-war-plugin.version>3.3.2</maven-war-plugin.version>
+ <maven-ear-plugin.version>3.3.0</maven-ear-plugin.version>
+ <maven-assembly-plugin.version>3.5.0</maven-assembly-plugin.version>
+ <maven-dependency-plugin.version>3.5.0</maven-dependency-plugin.version>
+
+ <maven-release-plugin.version>3.0.0</maven-release-plugin.version>
+ <maven-deploy-plugin.version>3.1.1</maven-deploy-plugin.version>
+ <maven-javadoc-plugin.version>3.5.0</maven-javadoc-plugin.version>
+ <maven-site-plugin.version>4.0.0-M6</maven-site-plugin.version>
+
+ <junit.version>4.13.2</junit.version>
+
+ <tomcat7-maven-plugin.version>2.2</tomcat7-maven-plugin.version>
+
+ <javadoc.opts>-Xdoclint:none</javadoc.opts>
+
+ <utillib.version>2.1.0</utillib.version>
+ </properties>
+
+ <dependencyManagement>
+ <dependencies>
+
+ <dependency>
+ <groupId>de.laktatnebel.libs</groupId>
+ <artifactId>utillib</artifactId>
+ <version>${utillib.version}</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.json/json -->
+ <dependency>
+ <groupId>org.json</groupId>
+ <artifactId>json</artifactId>
+ <version>${json.version}</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-data-jpa</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-devtools</artifactId>
+ <scope>runtime</scope>
+ <optional>true</optional>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-configuration-processor</artifactId>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-tomcat</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- -->
+
+ <dependency>
+ <groupId>org.webjars</groupId>
+ <artifactId>bootstrap</artifactId>
+ <version>5.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.webjars</groupId>
+ <artifactId>bootstrap-datepicker</artifactId>
+ <version>1.9.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.webjars</groupId>
+ <artifactId>jquery</artifactId>
+ <version>3.6.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.postgresql</groupId>
+ <artifactId>postgresql</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+ <!-- <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId>
+ <scope>provided</scope> </dependency> -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.json/json -->
+ <dependency>
+ <groupId>org.json</groupId>
+ <artifactId>json</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>de.laktatnebel.libs</groupId>
+ <artifactId>utillib</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${project.artifactId}</finalName>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <version>${maven-javadoc-plugin.version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>${maven-compiler-plugin.version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-enforcer-plugin</artifactId>
+ <version>${maven-enforcer-plugin.version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-source-plugin</artifactId>
+ <version>${maven-source-plugin.version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <version>${maven-deploy-plugin.version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-release-plugin</artifactId>
+ <version>${maven-release-plugin.version}</version>
+ <configuration>
+ <branchName>develop</branchName>
+ <pushChanges>false</pushChanges>
+ <localCheckout>true</localCheckout>
+ <!--tagBase>http://svn.obg-it.de/obgit/obgit_repo/tags/${project.scm.dir}</tagBase -->
+ <!--branchBase>http://svn.obg-it.de/obgit/obgit_repo/branches/${project.scm.dir}</branchBase -->
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-site-plugin</artifactId>
+ <version>${maven-site-plugin.version}</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>site</goal>
+ </goals>
+ <configuration>
+ <reportPlugins>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ </plugin>
+ </reportPlugins>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <version>${maven-javadoc-plugin.version}</version>
+ <configuration>
+ <additionalparam>${javadoc.opts}</additionalparam>
+ <doclint>none</doclint>
+ </configuration>
+ <executions>
+ <execution>
+ <id>attach-javadocs</id>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ <configuration>
+ <additionalparam>${javadoc.opts}</additionalparam>
+ <doclint>none</doclint>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-site-plugin</artifactId>
+ <version>${maven-site-plugin.version}</version>
+ </plugin>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <release>${java.version}</release>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-enforcer-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>enforce-versions</id>
+ <goals>
+ <goal>enforce</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <!-- http://maven.apache.org/enforcer/enforcer-rules/versionRanges.html -->
+ <rules>
+ <requireMavenVersion>
+ <version>[3.0,)</version>
+ </requireMavenVersion>
+ <requireJavaVersion>
+ <version>${java.version}</version>
+ </requireJavaVersion>
+ </rules>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.tomcat.maven</groupId>
+ <artifactId>tomcat7-maven-plugin</artifactId>
+ <version>2.0</version>
+ <configuration>
+ <server>localtomcat</server>
+ <url>http://localhost:8080/manager/text</url>
+ <!-- path>/${project.build.finalName}</path -->
+ <update>true</update>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
+
--- /dev/null
+package de.laktatnebel.service.tickets;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class LetsToDoItApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(LetsToDoItApplication.class, args);
+ }
+
+}
--- /dev/null
+package de.laktatnebel.service.tickets;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+
+public class ServletInitializer extends SpringBootServletInitializer {
+
+ @Override
+ protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+ return application.sources(LetsToDoItApplication.class);
+ }
+
+}
--- /dev/null
+package de.laktatnebel.service.tickets;
+
+import java.util.Optional;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import de.laktatnebel.libs.utillib.logging.StaticLogger;
+import de.laktatnebel.service.tickets.entities.Issue;
+import de.laktatnebel.service.tickets.persist.TicketJPARepository;
+
+/**
+ * @author oleb
+ *
+ */
+@RestController
+@RequestMapping("/")
+public class TicketAppliction {
+
+ public TicketAppliction() {
+ // TODO Auto-generated constructor stub
+ }
+
+ @Autowired
+ private TicketJPARepository ticketJPAServiceImpl;
+
+ @GetMapping("/issue/{id}")
+ public ResponseEntity<Issue> getIssueById(@PathVariable("id") long id) {
+ StaticLogger.getLogger(TicketAppliction.class).debug(TicketConstants.LOG_PREFIX + "getIssueById(" + id + ")");
+
+ Optional<Issue> issueData = ticketJPAServiceImpl.findById(id);
+
+ if (issueData.isPresent()) {
+ Issue issue = issueData.get();
+ StaticLogger.getLogger(TicketAppliction.class).debug(TicketConstants.LOG_PREFIX + issue);
+ return new ResponseEntity<>(issue, HttpStatus.OK);
+ } else {
+ return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+ }
+ }
+
+ @RequestMapping("/welcome")
+ public String loginMessage() {
+ return "welcome";
+ }
+
+}
\ No newline at end of file
--- /dev/null
+package de.laktatnebel.service.tickets;
+
+public class TicketConstants {
+
+ public static final String LOG_PREFIX = "===> ";
+
+ public static final String ENCODING_STRING = "ENCODING";
+ public static final String BASE64_STRING = "BASE64";
+
+
+ public static final String _00 = "00";
+
+
+ public static final String EMPTY_STRING = "";
+ public static final String BLANK = " ";
+ public static final char BLANK_CHAR = ' ';
+
+ public static final String AT_STRING = "@";
+ public static final char AT_CHAR = '@';
+
+ public static final String HASH_STRING = "#";
+
+ public static final char MINUS_CHAR = '-';
+
+ public static final String PLUS_STRING = "+";
+ public static final char PLUS_CHAR = '+';
+
+ public static final char POINT_CHAR = '.';
+
+ public static final String COLON_STRING = ",";
+
+ public static final char EINS_CHAR = '1';
+
+
+}
--- /dev/null
+package de.laktatnebel.service.tickets.entities;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Date;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "dt_attachment")
+@NamedQuery(name="Attachment.findAll", query="SELECT a FROM Attachment a")
+public class Attachment implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ private Long id;
+
+ @Column(name = "file_name")
+ private String fileName;
+
+ @Column(name = "file_type")
+ private String fileType;
+
+ @Column(name = "file_data")
+ private byte[] data;
+
+ @Column(name = "md5sum")
+ private String md5sum;
+
+
+ public Attachment() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ public Attachment(Long id, Comment commentRef, String fileName, String fileType, byte[] data, Date created,
+ Date edited) {
+ super();
+ this.id = id;
+ this.fileName = fileName;
+ this.fileType = fileType;
+ this.data = data;
+ }
+
+ /**
+ * @return the id
+ */
+ public Long getId() {
+ return id;
+ }
+
+ /**
+ * @param id the id to set
+ */
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ /**
+ * @return the fileName
+ */
+ public String getFileName() {
+ return fileName;
+ }
+
+ /**
+ * @param fileName the fileName to set
+ */
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ /**
+ * @return the fileType
+ */
+ public String getFileType() {
+ return fileType;
+ }
+
+ /**
+ * @param fileType the fileType to set
+ */
+ public void setFileType(String fileType) {
+ this.fileType = fileType;
+ }
+
+ /**
+ * @return the data
+ */
+ public byte[] getData() {
+ return data;
+ }
+
+ /**
+ * @param data the data to set
+ */
+ public void setData(byte[] data) {
+ this.data = data;
+ }
+
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + Arrays.hashCode(data);
+ result = prime * result + ((fileName == null) ? 0 : fileName.hashCode());
+ result = prime * result + ((fileType == null) ? 0 : fileType.hashCode());
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ result = prime * result + ((md5sum == null) ? 0 : md5sum.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Attachment other = (Attachment) obj;
+ if (!Arrays.equals(data, other.data))
+ return false;
+ if (fileName == null) {
+ if (other.fileName != null)
+ return false;
+ } else if (!fileName.equals(other.fileName))
+ return false;
+ if (fileType == null) {
+ if (other.fileType != null)
+ return false;
+ } else if (!fileType.equals(other.fileType))
+ return false;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ if (md5sum == null) {
+ if (other.md5sum != null)
+ return false;
+ } else if (!md5sum.equals(other.md5sum))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("Attachment [id=");
+ builder.append(id);
+ builder.append(", fileName=");
+ builder.append(fileName);
+ builder.append(", fileType=");
+ builder.append(fileType);
+ builder.append(", data=");
+ builder.append(Arrays.toString(data));
+ builder.append(", md5sum=");
+ builder.append(md5sum);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
--- /dev/null
+package de.laktatnebel.service.tickets.entities;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "dt_comment")
+@NamedQuery(name="Comment.findAll", query="SELECT c FROM Comment c")
+public class Comment implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ private Long id;
+
+ @Column(name = "text_comment")
+ private String text;
+
+ private Timestamp created;
+ private Timestamp edited;
+
+ @Column(name="fk_attachment")
+ private Integer fkAttachment;
+
+ //bi-directional many-to-one association to DtIssue
+ @ManyToOne
+ @JoinColumn(name="fk_issue")
+ private Issue issue;
+
+ //bi-directional many-to-one association to DtUser
+ @ManyToOne
+ @JoinColumn(name="fk_user")
+ private User user;
+
+ public Comment() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+
+ public Comment(Long id, String text, Timestamp created, Timestamp edited, Integer fkAttachment, Issue issue,
+ User user) {
+ super();
+ this.id = id;
+ this.text = text;
+ this.created = created;
+ this.edited = edited;
+ this.fkAttachment = fkAttachment;
+ this.issue = issue;
+ this.user = user;
+ }
+
+
+ /**
+ * @return the id
+ */
+ public Long getId() {
+ return id;
+ }
+
+
+ /**
+ * @param id the id to set
+ */
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+
+ /**
+ * @return the text
+ */
+ public String getText() {
+ return text;
+ }
+
+
+ /**
+ * @param text the text to set
+ */
+ public void setText(String text) {
+ this.text = text;
+ }
+
+
+ /**
+ * @return the created
+ */
+ public Timestamp getCreated() {
+ return created;
+ }
+
+
+ /**
+ * @param created the created to set
+ */
+ public void setCreated(Timestamp created) {
+ this.created = created;
+ }
+
+
+ /**
+ * @return the edited
+ */
+ public Timestamp getEdited() {
+ return edited;
+ }
+
+
+ /**
+ * @param edited the edited to set
+ */
+ public void setEdited(Timestamp edited) {
+ this.edited = edited;
+ }
+
+
+ /**
+ * @return the fkAttachment
+ */
+ public Integer getFkAttachment() {
+ return fkAttachment;
+ }
+
+
+ /**
+ * @param fkAttachment the fkAttachment to set
+ */
+ public void setFkAttachment(Integer fkAttachment) {
+ this.fkAttachment = fkAttachment;
+ }
+
+
+ /**
+ * @return the issue
+ */
+ public Issue getIssue() {
+ return issue;
+ }
+
+
+ /**
+ * @param issue the issue to set
+ */
+ public void setIssue(Issue issue) {
+ this.issue = issue;
+ }
+
+
+ /**
+ * @return the user
+ */
+ public User getUser() {
+ return user;
+ }
+
+
+ /**
+ * @param user the user to set
+ */
+ public void setUser(User user) {
+ this.user = user;
+ }
+
+
+ /**
+ * @return the serialversionuid
+ */
+ public static long getSerialversionuid() {
+ return serialVersionUID;
+ }
+
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((created == null) ? 0 : created.hashCode());
+ result = prime * result + ((edited == null) ? 0 : edited.hashCode());
+ result = prime * result + ((fkAttachment == null) ? 0 : fkAttachment.hashCode());
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ result = prime * result + ((issue == null) ? 0 : issue.hashCode());
+ result = prime * result + ((text == null) ? 0 : text.hashCode());
+ result = prime * result + ((user == null) ? 0 : user.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Comment other = (Comment) obj;
+ if (created == null) {
+ if (other.created != null)
+ return false;
+ } else if (!created.equals(other.created))
+ return false;
+ if (edited == null) {
+ if (other.edited != null)
+ return false;
+ } else if (!edited.equals(other.edited))
+ return false;
+ if (fkAttachment == null) {
+ if (other.fkAttachment != null)
+ return false;
+ } else if (!fkAttachment.equals(other.fkAttachment))
+ return false;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ if (issue == null) {
+ if (other.issue != null)
+ return false;
+ } else if (!issue.equals(other.issue))
+ return false;
+ if (text == null) {
+ if (other.text != null)
+ return false;
+ } else if (!text.equals(other.text))
+ return false;
+ if (user == null) {
+ if (other.user != null)
+ return false;
+ } else if (!user.equals(other.user))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("Comment [id=");
+ builder.append(id);
+ builder.append(", text=");
+ builder.append(text);
+ builder.append(", created=");
+ builder.append(created);
+ builder.append(", edited=");
+ builder.append(edited);
+ builder.append(", fkAttachment=");
+ builder.append(fkAttachment);
+ builder.append(", issue=");
+ builder.append(issue);
+ builder.append(", user=");
+ builder.append(user);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
--- /dev/null
+package de.laktatnebel.service.tickets.entities;
+
+import java.io.Serializable;
+import java.util.List;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "dt_domain")
+@NamedQuery(name="Domain.findAll", query="SELECT d FROM Domain d")
+public class Domain implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ private long id;
+
+ //bi-directional many-to-one association to DtIssue
+ @OneToMany(mappedBy="domain")
+ private List<Issue> issues;
+
+ //bi-directional many-to-one association to DtProject
+ @OneToMany(mappedBy="domain")
+ private List<Project> projects;
+
+ @Column(name = "name_domain")
+ private String name;
+
+ public Domain() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+
+ public Domain(long id, List<Issue> issues, List<Project> projects, String name) {
+ super();
+ this.id = id;
+ this.issues = issues;
+ this.projects = projects;
+ this.name = name;
+ }
+
+
+ /**
+ * @return the id
+ */
+ public long getId() {
+ return id;
+ }
+
+
+ /**
+ * @param id the id to set
+ */
+ public void setId(long id) {
+ this.id = id;
+ }
+
+
+ /**
+ * @return the issues
+ */
+ public List<Issue> getIssues() {
+ return issues;
+ }
+
+
+ /**
+ * @param issues the issues to set
+ */
+ public void setIssues(List<Issue> issues) {
+ this.issues = issues;
+ }
+
+
+ /**
+ * @return the projects
+ */
+ public List<Project> getProjects() {
+ return projects;
+ }
+
+
+ /**
+ * @param projects the projects to set
+ */
+ public void setProjects(List<Project> projects) {
+ this.projects = projects;
+ }
+
+
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return name;
+ }
+
+
+ /**
+ * @param name the name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+ /**
+ * @return the serialversionuid
+ */
+ public static long getSerialversionuid() {
+ return serialVersionUID;
+ }
+
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (int) (id ^ (id >>> 32));
+ result = prime * result + ((issues == null) ? 0 : issues.hashCode());
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ result = prime * result + ((projects == null) ? 0 : projects.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Domain other = (Domain) obj;
+ if (id != other.id)
+ return false;
+ if (issues == null) {
+ if (other.issues != null)
+ return false;
+ } else if (!issues.equals(other.issues))
+ return false;
+ if (name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!name.equals(other.name))
+ return false;
+ if (projects == null) {
+ if (other.projects != null)
+ return false;
+ } else if (!projects.equals(other.projects))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("Domain [id=");
+ builder.append(id);
+ builder.append(", issues=");
+ builder.append(issues);
+ builder.append(", projects=");
+ builder.append(projects);
+ builder.append(", name=");
+ builder.append(name);
+ builder.append("]");
+ return builder.toString();
+ }
+}
--- /dev/null
+package de.laktatnebel.service.tickets.entities;\r
+\r
+import java.io.Serializable;\r
+import java.sql.Time;\r
+import java.sql.Timestamp;\r
+import java.util.List;\r
+\r
+import jakarta.persistence.Column;\r
+import jakarta.persistence.Entity;\r
+import jakarta.persistence.GeneratedValue;\r
+import jakarta.persistence.GenerationType;\r
+import jakarta.persistence.Id;\r
+import jakarta.persistence.JoinColumn;\r
+import jakarta.persistence.ManyToOne;\r
+import jakarta.persistence.NamedQuery;\r
+import jakarta.persistence.OneToMany;\r
+import jakarta.persistence.Table;\r
+\r
+@Entity\r
+@Table(name = "dt_issue")\r
+@NamedQuery(name = "Issue.findAll", query = "SELECT i FROM Issue i")\r
+public class Issue implements Serializable {\r
+ private static final long serialVersionUID = 1L;\r
+\r
+ @Id\r
+ @GeneratedValue(strategy = GenerationType.IDENTITY)\r
+ @Column(name = "id")\r
+ private Long id;\r
+\r
+ private String titel;\r
+ private Integer importance;\r
+ private Integer urgency;\r
+ private Time effort;\r
+ private Timestamp executiondate;\r
+ private Timestamp created;\r
+ private Timestamp edited;\r
+ private Timestamp deadline;\r
+\r
+ private String keywords;\r
+\r
+ // bi-directional many-to-one association to DtComment\r
+ @OneToMany(mappedBy = "issue")\r
+ private List<Comment> comments;\r
+\r
+ // bi-directional many-to-one association to DtDomain\r
+ @ManyToOne\r
+ @JoinColumn(name = "fk_domain")\r
+ private Domain domain;\r
+\r
+ // bi-directional many-to-one association to DtProject\r
+ @ManyToOne\r
+ @JoinColumn(name = "fk_project")\r
+ private Project project;\r
+\r
+ // bi-directional many-to-one association to DtStatus\r
+ @ManyToOne\r
+ @JoinColumn(name = "fk_status")\r
+ private Status status;\r
+\r
+ // bi-directional many-to-one association to DtUser\r
+ @ManyToOne\r
+ @JoinColumn(name = "fk_assignee")\r
+ private User assignee;\r
+\r
+ // bi-directional many-to-one association to DtUser\r
+ @ManyToOne\r
+ @JoinColumn(name = "fk_user")\r
+ private User user;\r
+\r
+ // bi-directional many-to-one association to KtRelation\r
+ @OneToMany(mappedBy = "issue")\r
+ private List<Relation> issueRelations;\r
+\r
+ // bi-directional many-to-one association to KtRelation\r
+ @OneToMany(mappedBy = "issueRelationOf")\r
+ private List<Relation> issueRelationsOf;\r
+\r
+ public Issue() {\r
+ super();\r
+ }\r
+\r
+ public Issue(Long id, String titel, Integer importance, Integer urgency, Time effort, Timestamp executiondate,\r
+ Timestamp created, Timestamp edited, Timestamp deadline, String keywords, List<Comment> comments,\r
+ Domain domain, Project project, Status status, User assignee, User user, List<Relation> issueRelations,\r
+ List<Relation> issueRelationsOf) {\r
+ super();\r
+ this.id = id;\r
+ this.titel = titel;\r
+ this.importance = importance;\r
+ this.urgency = urgency;\r
+ this.effort = effort;\r
+ this.executiondate = executiondate;\r
+ this.created = created;\r
+ this.edited = edited;\r
+ this.deadline = deadline;\r
+ this.keywords = keywords;\r
+ this.comments = comments;\r
+ this.domain = domain;\r
+ this.project = project;\r
+ this.status = status;\r
+ this.assignee = assignee;\r
+ this.user = user;\r
+ this.issueRelations = issueRelations;\r
+ this.issueRelationsOf = issueRelationsOf;\r
+ }\r
+\r
+ /**\r
+ * @return the id\r
+ */\r
+ public Long getId() {\r
+ return id;\r
+ }\r
+\r
+ /**\r
+ * @param id the id to set\r
+ */\r
+ public void setId(Long id) {\r
+ this.id = id;\r
+ }\r
+\r
+ /**\r
+ * @return the titel\r
+ */\r
+ public String getTitel() {\r
+ return titel;\r
+ }\r
+\r
+ /**\r
+ * @param titel the titel to set\r
+ */\r
+ public void setTitel(String titel) {\r
+ this.titel = titel;\r
+ }\r
+\r
+ /**\r
+ * @return the importance\r
+ */\r
+ public Integer getImportance() {\r
+ return importance;\r
+ }\r
+\r
+ /**\r
+ * @param importance the importance to set\r
+ */\r
+ public void setImportance(Integer importance) {\r
+ this.importance = importance;\r
+ }\r
+\r
+ /**\r
+ * @return the urgency\r
+ */\r
+ public Integer getUrgency() {\r
+ return urgency;\r
+ }\r
+\r
+ /**\r
+ * @param urgency the urgency to set\r
+ */\r
+ public void setUrgency(Integer urgency) {\r
+ this.urgency = urgency;\r
+ }\r
+\r
+ /**\r
+ * @return the effort\r
+ */\r
+ public Time getEffort() {\r
+ return effort;\r
+ }\r
+\r
+ /**\r
+ * @param effort the effort to set\r
+ */\r
+ public void setEffort(Time effort) {\r
+ this.effort = effort;\r
+ }\r
+\r
+ /**\r
+ * @return the executiondate\r
+ */\r
+ public Timestamp getExecutiondate() {\r
+ return executiondate;\r
+ }\r
+\r
+ /**\r
+ * @param executiondate the executiondate to set\r
+ */\r
+ public void setExecutiondate(Timestamp executiondate) {\r
+ this.executiondate = executiondate;\r
+ }\r
+\r
+ /**\r
+ * @return the created\r
+ */\r
+ public Timestamp getCreated() {\r
+ return created;\r
+ }\r
+\r
+ /**\r
+ * @param created the created to set\r
+ */\r
+ public void setCreated(Timestamp created) {\r
+ this.created = created;\r
+ }\r
+\r
+ /**\r
+ * @return the edited\r
+ */\r
+ public Timestamp getEdited() {\r
+ return edited;\r
+ }\r
+\r
+ /**\r
+ * @param edited the edited to set\r
+ */\r
+ public void setEdited(Timestamp edited) {\r
+ this.edited = edited;\r
+ }\r
+\r
+ /**\r
+ * @return the deadline\r
+ */\r
+ public Timestamp getDeadline() {\r
+ return deadline;\r
+ }\r
+\r
+ /**\r
+ * @param deadline the deadline to set\r
+ */\r
+ public void setDeadline(Timestamp deadline) {\r
+ this.deadline = deadline;\r
+ }\r
+\r
+ /**\r
+ * @return the keywords\r
+ */\r
+ public String getKeywords() {\r
+ return keywords;\r
+ }\r
+\r
+ /**\r
+ * @param keywords the keywords to set\r
+ */\r
+ public void setKeywords(String keywords) {\r
+ this.keywords = keywords;\r
+ }\r
+\r
+ /**\r
+ * @return the comments\r
+ */\r
+ public List<Comment> getComments() {\r
+ return comments;\r
+ }\r
+\r
+ /**\r
+ * @param comments the comments to set\r
+ */\r
+ public void setComments(List<Comment> comments) {\r
+ this.comments = comments;\r
+ }\r
+\r
+ /**\r
+ * @return the domain\r
+ */\r
+ public Domain getDomain() {\r
+ return domain;\r
+ }\r
+\r
+ /**\r
+ * @param domain the domain to set\r
+ */\r
+ public void setDomain(Domain domain) {\r
+ this.domain = domain;\r
+ }\r
+\r
+ /**\r
+ * @return the project\r
+ */\r
+ public Project getProject() {\r
+ return project;\r
+ }\r
+\r
+ /**\r
+ * @param project the project to set\r
+ */\r
+ public void setProject(Project project) {\r
+ this.project = project;\r
+ }\r
+\r
+ /**\r
+ * @return the status\r
+ */\r
+ public Status getStatus() {\r
+ return status;\r
+ }\r
+\r
+ /**\r
+ * @param status the status to set\r
+ */\r
+ public void setStatus(Status status) {\r
+ this.status = status;\r
+ }\r
+\r
+ /**\r
+ * @return the assignee\r
+ */\r
+ public User getAssignee() {\r
+ return assignee;\r
+ }\r
+\r
+ /**\r
+ * @param assignee the assignee to set\r
+ */\r
+ public void setAssignee(User assignee) {\r
+ this.assignee = assignee;\r
+ }\r
+\r
+ /**\r
+ * @return the user\r
+ */\r
+ public User getUser() {\r
+ return user;\r
+ }\r
+\r
+ /**\r
+ * @param user the user to set\r
+ */\r
+ public void setUser(User user) {\r
+ this.user = user;\r
+ }\r
+\r
+ /**\r
+ * @return the issueRelations\r
+ */\r
+ public List<Relation> getIssueRelations() {\r
+ return issueRelations;\r
+ }\r
+\r
+ /**\r
+ * @param issueRelations the issueRelations to set\r
+ */\r
+ public void setIssueRelations(List<Relation> issueRelations) {\r
+ this.issueRelations = issueRelations;\r
+ }\r
+\r
+ /**\r
+ * @return the issueRelationsOf\r
+ */\r
+ public List<Relation> getIssueRelationsOf() {\r
+ return issueRelationsOf;\r
+ }\r
+\r
+ /**\r
+ * @param issueRelationsOf the issueRelationsOf to set\r
+ */\r
+ public void setIssueRelationsOf(List<Relation> issueRelationsOf) {\r
+ this.issueRelationsOf = issueRelationsOf;\r
+ }\r
+\r
+ /**\r
+ * @return the serialversionuid\r
+ */\r
+ public static long getSerialversionuid() {\r
+ return serialVersionUID;\r
+ }\r
+\r
+ @Override\r
+ public int hashCode() {\r
+ final int prime = 31;\r
+ int result = 1;\r
+ result = prime * result + ((assignee == null) ? 0 : assignee.hashCode());\r
+ result = prime * result + ((comments == null) ? 0 : comments.hashCode());\r
+ result = prime * result + ((created == null) ? 0 : created.hashCode());\r
+ result = prime * result + ((deadline == null) ? 0 : deadline.hashCode());\r
+ result = prime * result + ((domain == null) ? 0 : domain.hashCode());\r
+ result = prime * result + ((edited == null) ? 0 : edited.hashCode());\r
+ result = prime * result + ((effort == null) ? 0 : effort.hashCode());\r
+ result = prime * result + ((executiondate == null) ? 0 : executiondate.hashCode());\r
+ result = prime * result + ((id == null) ? 0 : id.hashCode());\r
+ result = prime * result + ((importance == null) ? 0 : importance.hashCode());\r
+ result = prime * result + ((issueRelations == null) ? 0 : issueRelations.hashCode());\r
+ result = prime * result + ((issueRelationsOf == null) ? 0 : issueRelationsOf.hashCode());\r
+ result = prime * result + ((keywords == null) ? 0 : keywords.hashCode());\r
+ result = prime * result + ((project == null) ? 0 : project.hashCode());\r
+ result = prime * result + ((status == null) ? 0 : status.hashCode());\r
+ result = prime * result + ((titel == null) ? 0 : titel.hashCode());\r
+ result = prime * result + ((urgency == null) ? 0 : urgency.hashCode());\r
+ result = prime * result + ((user == null) ? 0 : user.hashCode());\r
+ return result;\r
+ }\r
+\r
+ @Override\r
+ public boolean equals(Object obj) {\r
+ if (this == obj)\r
+ return true;\r
+ if (obj == null)\r
+ return false;\r
+ if (getClass() != obj.getClass())\r
+ return false;\r
+ Issue other = (Issue) obj;\r
+ if (assignee == null) {\r
+ if (other.assignee != null)\r
+ return false;\r
+ } else if (!assignee.equals(other.assignee))\r
+ return false;\r
+ if (comments == null) {\r
+ if (other.comments != null)\r
+ return false;\r
+ } else if (!comments.equals(other.comments))\r
+ return false;\r
+ if (created == null) {\r
+ if (other.created != null)\r
+ return false;\r
+ } else if (!created.equals(other.created))\r
+ return false;\r
+ if (deadline == null) {\r
+ if (other.deadline != null)\r
+ return false;\r
+ } else if (!deadline.equals(other.deadline))\r
+ return false;\r
+ if (domain == null) {\r
+ if (other.domain != null)\r
+ return false;\r
+ } else if (!domain.equals(other.domain))\r
+ return false;\r
+ if (edited == null) {\r
+ if (other.edited != null)\r
+ return false;\r
+ } else if (!edited.equals(other.edited))\r
+ return false;\r
+ if (effort == null) {\r
+ if (other.effort != null)\r
+ return false;\r
+ } else if (!effort.equals(other.effort))\r
+ return false;\r
+ if (executiondate == null) {\r
+ if (other.executiondate != null)\r
+ return false;\r
+ } else if (!executiondate.equals(other.executiondate))\r
+ return false;\r
+ if (id == null) {\r
+ if (other.id != null)\r
+ return false;\r
+ } else if (!id.equals(other.id))\r
+ return false;\r
+ if (importance == null) {\r
+ if (other.importance != null)\r
+ return false;\r
+ } else if (!importance.equals(other.importance))\r
+ return false;\r
+ if (issueRelations == null) {\r
+ if (other.issueRelations != null)\r
+ return false;\r
+ } else if (!issueRelations.equals(other.issueRelations))\r
+ return false;\r
+ if (issueRelationsOf == null) {\r
+ if (other.issueRelationsOf != null)\r
+ return false;\r
+ } else if (!issueRelationsOf.equals(other.issueRelationsOf))\r
+ return false;\r
+ if (keywords == null) {\r
+ if (other.keywords != null)\r
+ return false;\r
+ } else if (!keywords.equals(other.keywords))\r
+ return false;\r
+ if (project == null) {\r
+ if (other.project != null)\r
+ return false;\r
+ } else if (!project.equals(other.project))\r
+ return false;\r
+ if (status == null) {\r
+ if (other.status != null)\r
+ return false;\r
+ } else if (!status.equals(other.status))\r
+ return false;\r
+ if (titel == null) {\r
+ if (other.titel != null)\r
+ return false;\r
+ } else if (!titel.equals(other.titel))\r
+ return false;\r
+ if (urgency == null) {\r
+ if (other.urgency != null)\r
+ return false;\r
+ } else if (!urgency.equals(other.urgency))\r
+ return false;\r
+ if (user == null) {\r
+ if (other.user != null)\r
+ return false;\r
+ } else if (!user.equals(other.user))\r
+ return false;\r
+ return true;\r
+ }\r
+\r
+ @Override\r
+ public String toString() {\r
+ StringBuilder builder = new StringBuilder();\r
+ builder.append("Issue [id=");\r
+ builder.append(id);\r
+ builder.append(", titel=");\r
+ builder.append(titel);\r
+ builder.append(", importance=");\r
+ builder.append(importance);\r
+ builder.append(", urgency=");\r
+ builder.append(urgency);\r
+ builder.append(", effort=");\r
+ builder.append(effort);\r
+ builder.append(", executiondate=");\r
+ builder.append(executiondate);\r
+ builder.append(", created=");\r
+ builder.append(created);\r
+ builder.append(", edited=");\r
+ builder.append(edited);\r
+ builder.append(", deadline=");\r
+ builder.append(deadline);\r
+ builder.append(", keywords=");\r
+ builder.append(keywords);\r
+ builder.append(", comments=");\r
+ builder.append(comments);\r
+ builder.append(", domain=");\r
+ builder.append(domain);\r
+ builder.append(", project=");\r
+ builder.append(project);\r
+ builder.append(", status=");\r
+ builder.append(status);\r
+ builder.append(", assignee=");\r
+ builder.append(assignee);\r
+ builder.append(", user=");\r
+ builder.append(user);\r
+ builder.append(", issueRelations=");\r
+ builder.append(issueRelations);\r
+ builder.append(", issueRelationsOf=");\r
+ builder.append(issueRelationsOf);\r
+ builder.append("]");\r
+ return builder.toString();\r
+ }\r
+\r
+}\r
--- /dev/null
+package de.laktatnebel.service.tickets.entities;
+
+import java.io.Serializable;
+import java.util.List;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "dt_project")
+@NamedQuery(name="Project.findAll", query="SELECT p FROM Project p")
+public class Project implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ private long id;
+
+ @Column(name = "name_project")
+ private String name;
+
+ //bi-directional many-to-one association to DtIssue
+ @OneToMany(mappedBy="project")
+ private List<Issue> issues;
+
+ //bi-directional many-to-one association to DtDomain
+ @ManyToOne
+ @JoinColumn(name="fk_domain")
+ private Domain domain;
+
+
+ public Project() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+
+ public Project(long id, String name, List<Issue> issues, Domain domain) {
+ super();
+ this.id = id;
+ this.name = name;
+ this.issues = issues;
+ this.domain = domain;
+ }
+
+
+ /**
+ * @return the id
+ */
+ public long getId() {
+ return id;
+ }
+
+
+ /**
+ * @param id the id to set
+ */
+ public void setId(long id) {
+ this.id = id;
+ }
+
+
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return name;
+ }
+
+
+ /**
+ * @param name the name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+ /**
+ * @return the issues
+ */
+ public List<Issue> getIssues() {
+ return issues;
+ }
+
+
+ /**
+ * @param issues the issues to set
+ */
+ public void setIssues(List<Issue> issues) {
+ this.issues = issues;
+ }
+
+
+ /**
+ * @return the domain
+ */
+ public Domain getDomain() {
+ return domain;
+ }
+
+
+ /**
+ * @param domain the domain to set
+ */
+ public void setDomain(Domain domain) {
+ this.domain = domain;
+ }
+
+
+ /**
+ * @return the serialversionuid
+ */
+ public static long getSerialversionuid() {
+ return serialVersionUID;
+ }
+
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((domain == null) ? 0 : domain.hashCode());
+ result = prime * result + (int) (id ^ (id >>> 32));
+ result = prime * result + ((issues == null) ? 0 : issues.hashCode());
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Project other = (Project) obj;
+ if (domain == null) {
+ if (other.domain != null)
+ return false;
+ } else if (!domain.equals(other.domain))
+ return false;
+ if (id != other.id)
+ return false;
+ if (issues == null) {
+ if (other.issues != null)
+ return false;
+ } else if (!issues.equals(other.issues))
+ return false;
+ if (name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!name.equals(other.name))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("Project [id=");
+ builder.append(id);
+ builder.append(", name=");
+ builder.append(name);
+ builder.append(", issues=");
+ builder.append(issues);
+ builder.append(", domain=");
+ builder.append(domain);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
--- /dev/null
+package de.laktatnebel.service.tickets.entities;
+
+
+import java.io.Serializable;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "kt_relation")
+@NamedQuery(name="Relation.findAll", query="SELECT r FROM Relation r")
+public class Relation implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ private Long id;
+
+ //bi-directional many-to-one association to dt_issue
+ @ManyToOne
+ @JoinColumn(name="fk_issue")
+ private Issue issue;
+
+ //bi-directional many-to-one association to dt_issue
+ @ManyToOne
+ @JoinColumn(name="fk_issue_relation_of")
+ private Issue issueRelationOf;
+
+ //bi-directional many-to-one association to dt_relation_type
+ @ManyToOne
+ @JoinColumn(name="fk_relation_type")
+ private RelationType relationType;
+
+ public Relation() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ public Relation(Issue issue, Issue issueRelationOf, RelationType relationType) {
+ super();
+ this.issue = issue;
+ this.issueRelationOf = issueRelationOf;
+ this.relationType = relationType;
+ }
+
+ /**
+ * @return the relationType
+ */
+ public RelationType getRelationType() {
+ return relationType;
+ }
+
+ /**
+ * @param relationType the relationType to set
+ */
+ public void setRelationType(RelationType relationType) {
+ this.relationType = relationType;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ result = prime * result + ((issue == null) ? 0 : issue.hashCode());
+ result = prime * result + ((issueRelationOf == null) ? 0 : issueRelationOf.hashCode());
+ result = prime * result + ((relationType == null) ? 0 : relationType.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Relation other = (Relation) obj;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ if (issue == null) {
+ if (other.issue != null)
+ return false;
+ } else if (!issue.equals(other.issue))
+ return false;
+ if (issueRelationOf == null) {
+ if (other.issueRelationOf != null)
+ return false;
+ } else if (!issueRelationOf.equals(other.issueRelationOf))
+ return false;
+ if (relationType == null) {
+ if (other.relationType != null)
+ return false;
+ } else if (!relationType.equals(other.relationType))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("Relation [id=");
+ builder.append(id);
+ builder.append(", issue=");
+ builder.append(issue);
+ builder.append(", issueRelationOf=");
+ builder.append(issueRelationOf);
+ builder.append(", relationType=");
+ builder.append(relationType);
+ builder.append("]");
+ return builder.toString();
+ }
+}
--- /dev/null
+package de.laktatnebel.service.tickets.entities;
+
+import java.io.Serializable;
+import java.util.List;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "dt_relation_type")
+@NamedQuery(name="RelationType.findAll", query="SELECT r FROM RelationType r")
+public class RelationType implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ private long id;
+
+ @Column(name = "name_relation_type")
+ private String name;
+
+ //bi-directional many-to-one association to dt_relation
+ @OneToMany(mappedBy="relationType")
+ private List<Relation> relations;
+
+ public RelationType() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+
+
+ public RelationType(long id, String name, List<Relation> relations) {
+ super();
+ this.id = id;
+ this.name = name;
+ this.relations = relations;
+ }
+
+
+
+
+ /**
+ * @return the id
+ */
+ public long getId() {
+ return id;
+ }
+
+
+
+ /**
+ * @param id the id to set
+ */
+ public void setId(long id) {
+ this.id = id;
+ }
+
+
+
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return name;
+ }
+
+
+
+ /**
+ * @param name the name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+
+ /**
+ * @return the relations
+ */
+ public List<Relation> getRelations() {
+ return relations;
+ }
+
+
+
+ /**
+ * @param relations the relations to set
+ */
+ public void setRelations(List<Relation> relations) {
+ this.relations = relations;
+ }
+
+
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (int) (id ^ (id >>> 32));
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ result = prime * result + ((relations == null) ? 0 : relations.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ RelationType other = (RelationType) obj;
+ if (id != other.id)
+ return false;
+ if (name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!name.equals(other.name))
+ return false;
+ if (relations == null) {
+ if (other.relations != null)
+ return false;
+ } else if (!relations.equals(other.relations))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("RelationType [id=");
+ builder.append(id);
+ builder.append(", name=");
+ builder.append(name);
+ builder.append(", relations=");
+ builder.append(relations);
+ builder.append("]");
+ return builder.toString();
+ }
+}
--- /dev/null
+package de.laktatnebel.service.tickets.entities;
+
+import java.io.Serializable;
+import java.util.List;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
+
+
+@Entity
+@Table(name = "dt_status")
+@NamedQuery(name="Status.findAll", query="SELECT s FROM Status s")
+public class Status implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ private long id;
+
+ @Column(name = "name_status")
+ private String name;
+
+ //bi-directional many-to-one association to DtIssue
+ @OneToMany(mappedBy="status")
+ private List<Issue> issues;
+
+ public Status() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+
+
+ public Status(long id, String name, List<Issue> issues) {
+ super();
+ this.id = id;
+ this.name = name;
+ this.issues = issues;
+ }
+
+
+
+ /**
+ * @return the id
+ */
+ public long getId() {
+ return id;
+ }
+
+
+
+ /**
+ * @param id the id to set
+ */
+ public void setId(long id) {
+ this.id = id;
+ }
+
+
+
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return name;
+ }
+
+
+
+ /**
+ * @param name the name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+
+ /**
+ * @return the issues
+ */
+ public List<Issue> getIssues() {
+ return issues;
+ }
+
+
+
+ /**
+ * @param issues the issues to set
+ */
+ public void setIssues(List<Issue> issues) {
+ this.issues = issues;
+ }
+
+
+
+ /**
+ * @return the serialversionuid
+ */
+ public static long getSerialversionuid() {
+ return serialVersionUID;
+ }
+
+
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (int) (id ^ (id >>> 32));
+ result = prime * result + ((issues == null) ? 0 : issues.hashCode());
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Status other = (Status) obj;
+ if (id != other.id)
+ return false;
+ if (issues == null) {
+ if (other.issues != null)
+ return false;
+ } else if (!issues.equals(other.issues))
+ return false;
+ if (name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!name.equals(other.name))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("Status [id=");
+ builder.append(id);
+ builder.append(", name=");
+ builder.append(name);
+ builder.append(", issues=");
+ builder.append(issues);
+ builder.append("]");
+ return builder.toString();
+ }
+}
--- /dev/null
+package de.laktatnebel.service.tickets.entities;
+
+import java.io.Serializable;
+import java.util.List;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "dt_user")
+@NamedQuery(name="User.findAll", query="SELECT u FROM User u")
+public class User implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ private long id;
+
+ @Column(name = "username")
+ private String username;
+
+ @Column(name = "name_user")
+ private String fullname;
+
+ @Column(name = "email")
+ private String email;
+
+ @Column(name = "pass")
+ private String pass;
+
+ //bi-directional many-to-one association to DtComment
+ @OneToMany(mappedBy="user")
+ private List<Comment> comments;
+
+ //bi-directional many-to-one association to DtIssue
+ @OneToMany(mappedBy="assignee")
+ private List<Issue> assignees;
+
+ //bi-directional many-to-one association to DtIssue
+ @OneToMany(mappedBy="user")
+ private List<Issue> users;
+
+ public User() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+
+ public User(long id, String username, String fullname, String email, String pass, List<Comment> comments,
+ List<Issue> assignees, List<Issue> users) {
+ super();
+ this.id = id;
+ this.username = username;
+ this.fullname = fullname;
+ this.email = email;
+ this.pass = pass;
+ this.comments = comments;
+ this.assignees = assignees;
+ this.users = users;
+ }
+
+
+ /**
+ * @return the id
+ */
+ public long getId() {
+ return id;
+ }
+
+
+ /**
+ * @param id the id to set
+ */
+ public void setId(long id) {
+ this.id = id;
+ }
+
+
+ /**
+ * @return the username
+ */
+ public String getUsername() {
+ return username;
+ }
+
+
+ /**
+ * @param username the username to set
+ */
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+
+ /**
+ * @return the fullname
+ */
+ public String getFullname() {
+ return fullname;
+ }
+
+
+ /**
+ * @param fullname the fullname to set
+ */
+ public void setFullname(String fullname) {
+ this.fullname = fullname;
+ }
+
+
+ /**
+ * @return the email
+ */
+ public String getEmail() {
+ return email;
+ }
+
+
+ /**
+ * @param email the email to set
+ */
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+
+ /**
+ * @return the pass
+ */
+ public String getPass() {
+ return pass;
+ }
+
+
+ /**
+ * @param pass the pass to set
+ */
+ public void setPass(String pass) {
+ this.pass = pass;
+ }
+
+
+ /**
+ * @return the comments
+ */
+ public List<Comment> getComments() {
+ return comments;
+ }
+
+
+ /**
+ * @param comments the comments to set
+ */
+ public void setComments(List<Comment> comments) {
+ this.comments = comments;
+ }
+
+
+ /**
+ * @return the assignees
+ */
+ public List<Issue> getAssignees() {
+ return assignees;
+ }
+
+
+ /**
+ * @param assignees the assignees to set
+ */
+ public void setAssignees(List<Issue> assignees) {
+ this.assignees = assignees;
+ }
+
+
+ /**
+ * @return the users
+ */
+ public List<Issue> getUsers() {
+ return users;
+ }
+
+
+ /**
+ * @param users the users to set
+ */
+ public void setUsers(List<Issue> users) {
+ this.users = users;
+ }
+
+
+ /**
+ * @return the serialversionuid
+ */
+ public static long getSerialversionuid() {
+ return serialVersionUID;
+ }
+
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((assignees == null) ? 0 : assignees.hashCode());
+ result = prime * result + ((comments == null) ? 0 : comments.hashCode());
+ result = prime * result + ((email == null) ? 0 : email.hashCode());
+ result = prime * result + ((fullname == null) ? 0 : fullname.hashCode());
+ result = prime * result + (int) (id ^ (id >>> 32));
+ result = prime * result + ((pass == null) ? 0 : pass.hashCode());
+ result = prime * result + ((username == null) ? 0 : username.hashCode());
+ result = prime * result + ((users == null) ? 0 : users.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ User other = (User) obj;
+ if (assignees == null) {
+ if (other.assignees != null)
+ return false;
+ } else if (!assignees.equals(other.assignees))
+ return false;
+ if (comments == null) {
+ if (other.comments != null)
+ return false;
+ } else if (!comments.equals(other.comments))
+ return false;
+ if (email == null) {
+ if (other.email != null)
+ return false;
+ } else if (!email.equals(other.email))
+ return false;
+ if (fullname == null) {
+ if (other.fullname != null)
+ return false;
+ } else if (!fullname.equals(other.fullname))
+ return false;
+ if (id != other.id)
+ return false;
+ if (pass == null) {
+ if (other.pass != null)
+ return false;
+ } else if (!pass.equals(other.pass))
+ return false;
+ if (username == null) {
+ if (other.username != null)
+ return false;
+ } else if (!username.equals(other.username))
+ return false;
+ if (users == null) {
+ if (other.users != null)
+ return false;
+ } else if (!users.equals(other.users))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("User [id=");
+ builder.append(id);
+ builder.append(", username=");
+ builder.append(username);
+ builder.append(", fullname=");
+ builder.append(fullname);
+ builder.append(", email=");
+ builder.append(email);
+ builder.append(", pass=");
+ builder.append(pass);
+ builder.append(", comments=");
+ builder.append(comments);
+ builder.append(", assignees=");
+ builder.append(assignees);
+ builder.append(", users=");
+ builder.append(users);
+ builder.append("]");
+ return builder.toString();
+ }
+}
--- /dev/null
+package de.laktatnebel.service.tickets.persist;
+
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import de.laktatnebel.service.tickets.entities.Issue;
+
+public interface TicketJPARepository extends JpaRepository<Issue, Long> {
+
+// @Query(value = "SELECT * FROM dt_issue")
+ List<Issue>findAll();
+
+// @Query(value = "SELECT * FROM dt_issue i WHERE i.id=?1")
+// Optional<Issue> findById(Integer id);
+
+}
\ No newline at end of file
--- /dev/null
+spring.mvc.view.prefix=/WEB-INF/jsp/
+spring.mvc.view.suffix=.jsp
+
+logging.level.root=TRACE
+logging.level.org.springframework.web=DEBUG
+#logging.level.root=INFO
+#logging.level.org.springframework.web=ERROR
+logging.level.org.hibernate=ERROR
+
+
+spring.main.banner-mode=off
+logging.level.org.springframework=ERROR
+
+
+spring.sql.init.mode=always
+spring.sql.init.platform=postgres
+spring.datasource.url=jdbc:postgresql://localhost:5432/tickets
+spring.jpa.properties.hibernate.default_schema=ticket
+spring.datasource.username=oleb
+spring.datasource.password=wpj_9+L6ukX+SN2-
+
+spring.jpa.database=POSTGRESQL
+
+spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
+
+spring.jpa.hibernate.ddl-auto=none
+spring.jpa.generate-ddl=false
+
+spring.jpa.show-sql=true
+spring.jpa.properties.hibernate.format_sql=true
+#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL81Dialect
+
+
+
+
--- /dev/null
+body {
+ background-color: lightblue;
+}
\ No newline at end of file
--- /dev/null
+alert("I'm active");
\ No newline at end of file
--- /dev/null
+<html>
+<head>
+ <title>Welcome</title>
+ <link href="webjars/bootstrap/3.3.6/css/bootstrap.min.css"
+ rel="stylesheet">
+ <link href="css/custom.css"
+ rel="stylesheet">
+</head>
+<body>
+ <div class="container">
+ <table class="table table-striped">
+ <caption>Your todos are</caption>
+ <thead>
+ <tr>
+ <th>Description</th>
+ <th>Target Date</th>
+ <th>Is it Done?</th>
+ <th>Edit</th>
+ <th>Delete</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Todo 1</td>
+ <td>13/01/2021</td>
+ <td>No</td>
+ <td><a class="btn btn-warning" href="/edit-todo">Edit Todo</a></td>
+ <td><a class="btn btn-warning" href="/delete-todo">Delete Todo</a></td>
+ </tr>
+ </tbody>
+ </table>
+ <div>
+ <a class="btn btn-default" href="/add-todo">Add a Todo</a>
+
+ </div>
+ <script src="webjars/jquery/1.9.1/jquery.min.js"></script>
+ <script src="webjars/bootstrap/3.3.6/js/bootstrap.min.js"></script>
+ <script src="js/custom.js"></script>
+ </div>
+</body>
+</html>
--- /dev/null
+package de.laktatnebel.service.ticket;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+// replaced @RunWith with @ExtendWith
+// replaced SpringRunner.class with SpringExtension.class
+@ExtendWith(SpringExtension.class)
+@SpringBootTest
+public class SpringBootWebApplicationBootstrapJqueryApplicationTests {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
--- /dev/null
+package de.laktatnebel.service.tickets;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class LetsToDoItApplicationTests {
+
+ @Test
+ void contextLoads() {
+ }
+
+}
--- /dev/null
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+ <id>tar</id>
+ <formats>
+ <format>tar.gz</format>
+ </formats>
+ <includeBaseDirectory>false</includeBaseDirectory>
+ <baseDirectory>${project.basedir}</baseDirectory>
+ <fileSets>
+ <fileSet>
+ <directory>${project.basedir}</directory>
+ <includes>
+ <include>**/*</include>
+ </includes>
+ <useDefaultExcludes>true</useDefaultExcludes>
+ <excludes>
+ <exclude>${project.basedir}/target/**</exclude>
+ <exclude>${project.basedir}/.project</exclude>
+ <exclude>${project.basedir}/.classpath</exclude>
+ <exclude>${project.basedir}/.settings/**</exclude>
+ </excludes>
+ </fileSet>
+ </fileSets>
+</assembly>
+
--- /dev/null
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>de.laktatnebel.web</groupId>
+ <artifactId>tickets</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <name>LetsToDoIt - Web</name>
+ <description>Simple Ticket System</description>
+
+ <parent>
+ <groupId>de.laktatnebel.maven</groupId>
+ <artifactId>laktatnebelscript</artifactId>
+ <version>2.1.9</version>
+ </parent>
+
+</project>
--- /dev/null
+<?php
+
+define ("DB_TYPE", "pgsql");
+
+
+define ("HOST", "localhost");
+define ("SCHEMA", "ticket");
+define ("DB", "tickets");
+//define ("USER", "postgres");
+define ("USER", "oleb");
+//define ("PASS", "B9cr--ZvfF@5cMdu");
+define ("PASS", "wpj_9+L6ukX+SN2-");
+
+
+date_default_timezone_set('Europe/Berlin');
+
+?>
--- /dev/null
+<?php require_once '../ticket_glob_vars.php'; ?>\r
+<?php require_once 'lib/database_functions.php'; ?>\r
+<?php require_once 'lib/gui_functions.php'; ?>\r
+<?php require_once 'lib/util_functions.php'; ?>\r
+<?php\r
+$page = 'domain.php';\r
+\r
+$i=0;\r
+\r
+require_once 'lib/header.php';\r
+\r
+if (isset($_POST) && count(array_keys($_POST)) > 0) {\r
+ \r
+ $issue = handleQuickUpdate($_POST, $connect_dbms_handle);\r
+ //echo $issue;\r
+ $domain = getDomainIdOfIssue($connect_dbms_handle, $issue);\r
+ //echo $domain;\r
+ $issues = getIssueOfDomain($connect_dbms_handle, $domain);\r
+ \r
+}\r
+\r
+\r
+if (isset($_GET)) {\r
+ if (isset($_GET['domaindetail'])) {\r
+ $domain = $_GET['domaindetail'];\r
+ $issues = getIssueOfDomain($connect_dbms_handle, $domain);\r
+ \r
+ }\r
+}\r
+$stati_arr = getData($connect_dbms_handle, $selectFromDtStatus);\r
+//var_dump($stati_arr);\r
+\r
+?>\r
+\r
+<a href="newissue.php">neues Ticket</a> | <a href="index.php">alle Tickets</a>\r
+<div class="container">\r
+<?php\r
+foreach ($issues as $issue) {\r
+ getIssuebox ($issue, $connect_dbms_handle, $stati_arr, $page);\r
+}\r
+?>\r
+</div>\r
+\r
+</body>\r
+</html>\r
+<?php\r
+closeDBConnection ( $connect_dbms_handle );\r
+?>
\ No newline at end of file
--- /dev/null
+<?php require_once '../ticket_glob_vars.php'; ?>\r
+<?php require_once 'lib/database_functions.php'; ?>\r
+<?php require_once 'lib/gui_functions.php'; ?>\r
+<?php require_once 'lib/util_functions.php'; ?>\r
+<?php
+$page = 'index.php';\r
+\r
+$i=0;\r
+\r
+require_once 'lib/header.php';\r
+\r
+//var_dump($_POST);\r
+\r
+if (isset($_POST) && count(array_keys($_POST)) > 0) {\r
+ \r
+ handleQuickUpdate($_POST, $connect_dbms_handle);\r
+\r
+}\r
+\r
+$issues = getData($connect_dbms_handle, $selectFromViewTodoShortOverview);\r
+\r
+$stati_arr = getData($connect_dbms_handle, $selectFromDtStatus);\r
+\r
+?>\r
+<a href="newissue.php">neues Ticket</a> | <a href="index.php">alle Tickets</a>\r
+<div class="container">\r
+<?php\r
+foreach ($issues as $issue) {\r
+ getIssuebox ($issue, $connect_dbms_handle, $stati_arr, $page);\r
+}\r
+?>\r
+</div>\r
+\r
+</body>\r
+</html>\r
+<?php
+closeDBConnection ( $connect_dbms_handle );
+?>
--- /dev/null
+<?php require_once '../ticket_glob_vars.php'; ?>\r
+<?php require_once 'lib/database_functions.php'; ?>\r
+<?php require_once 'lib/gui_functions.php'; ?>\r
+<?php require_once 'lib/util_functions.php'; ?>\r
+<?php\r
+$page = 'issue.php';\r
+\r
+require_once 'lib/header.php';\r
+//var_dump($_POST);\r
+//var_dump($_GET);\r
+\r
+if (isset($_GET)) {\r
+ if (isset($_GET['issuedetail'])) {\r
+ //echo "ja: GET['issuedetail']";\r
+ \r
+ //var_dump($_GET);\r
+ $issue = $_GET['issuedetail'];\r
+ \r
+ $issue_arr = getData($connect_dbms_handle, generateSelect(array("*"), "ticket.view_issue", array("id=".$issue), null));\r
+ //var_dump($issue_arr);\r
+ \r
+ $comments_arr = getData($connect_dbms_handle, generateSelect(array("*"), "ticket.view_comments_users", array("fk_issue_of_comment=".$issue), array("erstellt asc")));\r
+ //var_dump($comments_arr);\r
+ }\r
+}\r
+if (isset($_POST)) {\r
+ if (isset($_POST['change'])) {\r
+ //echo "ja: POST['change']";\r
+ \r
+ $change = explode ("_", $_POST['change']);\r
+ $issue = $change[1];\r
+ //echo $issue;\r
+\r
+ $update_arr = array();\r
+\r
+ $issue_deadline = $_POST['issue_deadline'];\r
+ if ($issue_deadline != "" && strlen($issue_deadline) > 0) {\r
+ array_push($update_arr, array("deadline", "'".$issue_deadline." 00:00:00'"));\r
+ }\r
+\r
+ $issue_executiondate_date = $_POST['issue_executiondate'];\r
+ $issue_executiondate_time = $_POST['issue_executiondate_time'];\r
+ $issue_executiondate = $issue_executiondate_date." ";\r
+ $issue_executiondate .= ($issue_executiondate_time == "" ? " 00:00" : $issue_executiondate_time).":00'";\r
+ array_push($update_arr, array("executiondate", "'".$issue_executiondate));\r
+ \r
+ $issue_domain = $_POST['issue_domain'];\r
+ array_push($update_arr, array("fk_domain", $issue_domain));\r
+ \r
+ $issue_project = $_POST['issue_project'];\r
+ array_push($update_arr, array("fk_project", $issue_project));\r
+ \r
+ $issue_aufwand_h = $_POST['issue_aufwand_h'];\r
+ $issue_aufwand_min = $_POST['issue_aufwand_min'];\r
+ array_push($update_arr, array("effort", "'".$issue_aufwand_h.":".(15*$issue_aufwand_min).":00'"));\r
+ \r
+ $issue_assignee = $_POST['issue_assignee'];\r
+ array_push($update_arr, array("fk_assignee", $issue_assignee));\r
+ \r
+ $issue_status = $_POST['issue_status'];\r
+ array_push($update_arr, array("fk_status", $issue_status));\r
+ \r
+ $issue_wichtigkeit = $_POST['issue_wichtigkeit'];\r
+ array_push($update_arr, array("importance", $issue_wichtigkeit));\r
+ \r
+ $issue_dringlichkeit = $_POST['issue_dringlichkeit'];\r
+ array_push($update_arr, array("urgency", $issue_dringlichkeit));\r
+\r
+ array_push($update_arr, array("edited", "now()"));\r
+ \r
+ $sqlupdate = generateUpdateSchema("ticket", "dt_issue", $update_arr, array("id=".$issue));\r
+ //echo $sqlupdate;\r
+ $sqlupdate_result = getBooleanData($connect_dbms_handle, $sqlupdate);\r
+ //echo $sqlinsert_result;\r
+ \r
+ $sqllog = generateInsertSchema("ticket", "dt_sqllog", array("DEFAULT", "now()", "'".addslashes(str_replace("'", "\"", $sqlupdate))."'", $current_user, "'".uniqid()."'", "'".$page."'"));\r
+ $sqllog_result = getBooleanData($connect_dbms_handle, $sqllog);\r
+ //echo $sqllog_result;\r
+ \r
+ $issue_arr = getData($connect_dbms_handle, generateSelect(array("*"), "ticket.view_issue", array("id=".$issue), null));\r
+ //var_dump($issue_arr);\r
+ \r
+ $comments_arr = getData($connect_dbms_handle, generateSelect(array("*"), "ticket.view_comments_users", array("fk_issue_of_comment=".$issue), array("erstellt asc")));\r
+ //var_dump($comments_arr);\r
+ } else if (isset($_POST['comment'])) {\r
+ var_dump($_POST);\r
+ \r
+ $comment = explode ("_", $_POST['comment']);\r
+ $issue = $comment[1];\r
+ //echo $issue;\r
+\r
+ $sqlinsert = generateInsertSchema("ticket", "dt_comment", array("DEFAULT", $issue, "'".htmlentities($_POST['newComment'])."'", "now()", "now()", $current_user, "null"));\r
+ echo $sqlinsert;\r
+ $sqlinsert_result = getBooleanData($connect_dbms_handle, $sqlinsert);\r
+ //echo $sqlinsert_result;\r
+ \r
+ $sqllog = generateInsertSchema("ticket", "dt_sqllog", array("DEFAULT", "now()", "'".addslashes(str_replace("'", "\"", $sqlinsert))."'", $current_user, "'".uniqid()."'", "'".$page."'"));\r
+ $sqllog_result = getBooleanData($connect_dbms_handle, $sqllog);\r
+ //echo $sqllog_result;\r
+ \r
+ $issue_arr = getData($connect_dbms_handle, generateSelect(array("*"), "ticket.view_issue", array("id=".$issue), null));\r
+ //var_dump($issue_arr);\r
+ \r
+ $comments_arr = getData($connect_dbms_handle, generateSelect(array("*"), "ticket.view_comments_users", array("fk_issue_of_comment=".$issue), array("erstellt asc")));\r
+ //var_dump($comments_arr);\r
+ }\r
+} else {\r
+?>\r
+ </body>\r
+ </html>\r
+<?php\r
+ closeDBConnection ( $connect_dbms_handle );\r
+ die();\r
+}\r
+$stati_arr = getData($connect_dbms_handle, $selectFromDtStatus);\r
+//var_dump($stati_arr);\r
+\r
+$issue_btn = $issue;\r
+?>\r
+\r
+<a href="newissue.php">neues Ticket</a> | <a href="index.php">alle Tickets</a>\r
+<form action="issue.php" method="post" name="editissue">\r
+<div class="singleissue">\r
+<?php\r
+ $j=0;\r
+ \r
+ $id = $issue_arr[0][$j++];\r
+ $domain = $issue_arr[0][$j++];\r
+ $titel = $issue_arr[0][$j++];\r
+ $deadline_data = $issue_arr[0][$j++];\r
+ //echo strtotime($deadline_data);\r
+ if (strtotime($deadline_data) != strtotime("31.12.9999 00:00:00")) {\r
+ if ((date("U", strtotime($deadline_data))+date("Z")) % 86400 == 0) {\r
+ $deadline = date("o-m-d", strtotime($deadline_data));\r
+ }\r
+ } else {\r
+ $deadline = "---";\r
+ }\r
+ \r
+ $wichtigkeit = $issue_arr[0][$j++];\r
+ $dringlichkeit = $issue_arr[0][$j++];\r
+ $bewertung = $issue_arr[0][$j++];\r
+ $aufwand_data = $issue_arr[0][$j++];\r
+ \r
+ $datum_data = $issue_arr[0][$j++];\r
+ //echo strtotime($datum_data);\r
+ if (strtotime($datum_data) != strtotime("31.12.9999 00:00:00")) {\r
+ if ((date("U", strtotime($datum_data))+date("Z")) % 86400 == 0) {\r
+ $datum = date("o-m-d", strtotime($datum_data));\r
+ } else {\r
+ $datum = date("o-m-d", strtotime($datum_data));\r
+ $datum_zeit = date("H:i:s", strtotime($datum_data));\r
+ }\r
+ } else {\r
+ $datum = "---";\r
+ $datum_zeit = "00:00:00";\r
+ }\r
+ \r
+ $edited_data = $issue_arr[0][$j++];\r
+ if (strtotime($edited_data) != strtotime("31.12.9999 00:00:00")) {\r
+ if ((date("U", strtotime($edited_data))+date("Z")) % 86400 == 0) {\r
+ $edited = date("j.n.o", strtotime($edited_data));\r
+ } else {\r
+ $edited = date("j.n.o G:i", strtotime($edited_data)) . " Uhr";\r
+ }\r
+ }\r
+ \r
+ $created_data = $issue_arr[0][$j++];\r
+ if (strtotime($created_data) != strtotime("31.12.9999 00:00:00")) {\r
+ if ((date("U", strtotime($created_data))+date("Z")) % 86400 == 0) {\r
+ $created = date("j.n.o", strtotime($created_data));\r
+ } else {\r
+ $created = date("j.n.o G:i", strtotime($created_data)) . " Uhr";\r
+ }\r
+ }\r
+ \r
+ $author = $issue_arr[0][$j++];\r
+ $assignee = $issue_arr[0][$j++];\r
+ $status = $issue_arr[0][$j++];\r
+ $keywords = $issue_arr[0][$j++];\r
+ \r
+ \r
+ $project = getProjectNameOfIssue($connect_dbms_handle, $id);\r
+?> \r
+ <div class="boxelem headline col4">\r
+ <?php echo $titel; ?>\r
+ </div>\r
+<?php\r
+if ($keywords != null || $keywords != "") {\r
+?>\r
+ <div class="boxelem keywords center col4">\r
+ <?php echo $keywords; ?>\r
+ </div>\r
+<?php\r
+}\r
+?>\r
+ <div class="boxelem"><span class="boxelemdescr">Deadline:</span></div><div>\r
+ <?php\r
+ makeInput("issue_deadline", $deadline, null, "inputbtn", null, "date", 0, 0, null, null, null, false, false, 0);\r
+ ?>\r
+ </div>\r
+ <div class="boxelem"><span class="boxelemdescr">geplant am:</span></div><div>\r
+ <?php\r
+ makeInput("issue_executiondate", $datum, null, "inputbtn", null, "date", 0, 0, null, null, null, false, false, 0);\r
+ makeInput("issue_executiondate_time", $datum_zeit, null, "inputbtn", null, "time", 0, 0, null, null, null, false, false, 0);\r
+ ?>\r
+ </div>\r
+\r
+<?php\r
+$domain_arr = getData($connect_dbms_handle, $selectFromDtDomain);\r
+$domain_id = getDomainIdOfIssue($connect_dbms_handle, $issue);\r
+//echo $domain_id;\r
+?>\r
+ <div class="boxelem"><span class="boxelemdescr">Domain:</span></div><div>\r
+ <?php makeSelect("issue_domain", $domain_arr, null, "selectbtn", null, 0, 0, $domain_id, false, 1, null, null, null, false, false, 0); ?>\r
+ </div>\r
+<?php\r
+$project_arr = getData($connect_dbms_handle, $selectFromDtProject);\r
+$project_id = getProjectIdOfIssue($connect_dbms_handle, $issue);\r
+//var_dump($project_arr);\r
+?>\r
+ <div class="boxelem"><span class="boxelemdescr">Projekt:</span></div><div>\r
+ <?php makeSelect("issue_project", $project_arr, null, "selectbtn", null, 0, 0, $project_id, false, 1, null, null, null, false, false, 0); ?>\r
+ </div>\r
+ \r
+ <div class="boxelem"><span class="boxelemdescr">Aufwand:</span></div><div>\r
+ <?php\r
+ $aufwand_h = date("G", strtotime($aufwand_data));\r
+ $aufwand_min = date("i", strtotime($aufwand_data));\r
+ makeSelect("issue_aufwand_h", null, null, "selectbtn", null, 0, 20, $aufwand_h, false, 1, null, null, null, false, false, 0);\r
+ echo ":";\r
+ makeSelect("issue_aufwand_min", array("0", "15", "30", "45"), null, "selectbtn", null, 0, 0, ($aufwand_min/15+1), false, 1, null, null, null, false, false, 0);\r
+ ?>\r
+ </div>\r
+ <div class="boxelem"><span class="boxelemdescr">Issue-ID:</span></div><div><?php echo $id; ?></div>\r
+\r
+ <div class="boxelem"><span class="boxelemdescr">zugewiesen an:</span></div><div>\r
+ <?php\r
+ $user_arr = getData($connect_dbms_handle, $selectFromDtUserWithNames);\r
+ $assignee_id = getAssigneeIdOfIssue($connect_dbms_handle, $id);\r
+ makeSelect("issue_assignee", $user_arr, null, "selectbtn", null, 0, 0, $assignee_id, false, 1, null, null, null, false, false, 0);\r
+ ?>\r
+ </div>\r
+ <div class="boxelem"><span class="boxelemdescr">Bewertung:</span></div><div><?php echo $bewertung; ?></div>\r
+\r
+ <div class="boxelem"><span class="boxelemdescr">Status:</span></div><div>\r
+ <?php makeSelect("issue_status", $stati_arr, null, "selectbtn", null, 0, 0, $status, false, 1, null, null, null, false, false, 0); ?>\r
+ </div>\r
+ <div class="boxelem"><span class="boxelemdescr">Wichtigkeit:</span></div><div>\r
+ <?php makeSelect("issue_wichtigkeit", null, null, "selectbtn", null, 1, 10, $wichtigkeit, false, 1, null, null, null, false, false, 0); ?>\r
+ </div>\r
+\r
+ <div class="boxelem"><span class="boxelemdescr">Verfasser:</span></div><div><?php echo $author; ?></div>\r
+ <div class="boxelem"><span class="boxelemdescr">Dringlichkeit:</span></div><div>\r
+ <?php makeSelect("issue_dringlichkeit", null, null, "selectbtn", null, 1, 10, $dringlichkeit, false, 1, null, null, null, false, false, 0); ?>\r
+ </div>\r
+\r
+ <div class="boxelem"><span class="boxelemdescr">erstellt am:</span></div><div><?php echo $created; ?></div>\r
+ <div class="boxelem"><span class="boxelemdescr">letzte Änderung am:</span></div><div><?php echo $edited; ?></div>\r
+\r
+\r
+<?php\r
+foreach ($comments_arr as $comment) {\r
+ //var_dump($comment);\r
+ $j=0;\r
+ \r
+ $id = $comment[$j++];\r
+ $issue = $comment[$j++];\r
+ $text = $comment[$j++];\r
+ $author = $comment[$j++];\r
+ $created = $comment[$j++];\r
+ $edited = $comment[$j++];\r
+?>\r
+ <div class="col4"></div>\r
+ <div class="boxelem col2"><?php echo $text; ?></div>\r
+ <div class="boxelem"><span class="boxelemdescr">Verfasser:</span></div><div><?php echo $author; ?></div>\r
+ <div class="boxelem"><span class="boxelemdescr">erstellt am:</span></div><div><?php echo $created; ?></div>\r
+ <div class="boxelem"><span class="boxelemdescr">letzte Änderung am:</span></div><div><?php echo $edited; ?></div>\r
+<?php \r
+}\r
+?>\r
+</div>\r
+<?php\r
+$button_value = "change_".$issue_btn;\r
+makeButton("change", $button_value, "Änderungen übernehmen", null, "btn", null, "submit", null, null, false, false, 0);\r
+?>\r
+</form>\r
+\r
+<form action="issue.php" method="post" name="newcomment">\r
+\r
+<?php \r
+makeTextarea("newComment", null, null, null, null, null, null, 100, 5, null, false, "neuer Kommentar", true, true, 0);\r
+\r
+$button_value = "save_".$issue_btn;\r
+makeButton("comment", $button_value, "jetzt kommentieren!", null, "btn", null, "submit", null, null, false, false, 0);\r
+?>\r
+</form>\r
+</body>\r
+</html>\r
+<?php\r
+closeDBConnection ( $connect_dbms_handle );\r
+\r
+?>\r
--- /dev/null
+/**
+ *
+ */
\ No newline at end of file
--- /dev/null
+<?php
+
+if (DB_TYPE == "mysql") {
+ require ("db/database_functions_mysql.php");
+} elseif (DB_TYPE == "pgsql") {
+ require ("db/database_functions_pgsql.php");
+}
+
+require ("db/database_functions_insert.php");
+require ("db/database_functions_select.php");
+require ("db/database_functions_update.php");
+require ("db/database_functions_delete.php");
+
+$selectFromViewTodoShortOverview = "SELECT * FROM ticket.view_todo_short_overview;";
+
+$selectFromDtStatus = "SELECT * FROM ticket.dt_status;";
+
+$selectFromDtUser = "SELECT * FROM ticket.dt_user;";
+
+$selectFromDtUserWithNames = "SELECT id, name_user FROM ticket.dt_user;";
+
+$selectFromDtProject = "SELECT * FROM ticket.dt_project;";
+
+$selectFromDtDomain = "SELECT * FROM ticket.dt_domain;";
+
+/**
+ * @param connect_dbms_handle
+ * @param id
+ */
+function getProjectNameOfIssue($connect_dbms_handle, $id) {
+
+ $project = "";
+
+ $fk_project = getData($connect_dbms_handle, generateSelect(array("fk_project"), "ticket.dt_issue", array("id=".$id), null));
+ if ($fk_project[0][0] != null ) {
+ $project_arr = getData($connect_dbms_handle, generateSelect(array("name_project"), "ticket.dt_project", array("id=".$fk_project[0][0]), null));
+ $project = $project_arr[0][0];
+ }
+ return $project;
+}
+
+/**
+ * @param connect_dbms_handle
+ * @param id
+ */
+function getDomainIdOfIssue($connect_dbms_handle, $id) {
+
+ $fk_domain = getData($connect_dbms_handle, generateSelect(array("fk_domain"), "ticket.dt_issue", array("id=".$id), null));
+ if ($fk_domain[0][0] == null ) {
+ return 0;
+ }
+ return $fk_domain[0][0];
+}
+
+/**
+ * @param connect_dbms_handle
+ * @param id
+ */
+function getProjectIdOfIssue($connect_dbms_handle, $id) {
+
+ $fk_project = getData($connect_dbms_handle, generateSelect(array("fk_project"), "ticket.dt_issue", array("id=".$id), null));
+ if ($fk_project[0][0] == null ) {
+ return 0;
+ }
+ return $fk_project[0][0];
+}
+
+/**
+ * @param connect_dbms_handle
+ * @param id
+ */
+function getIssueOfProject($connect_dbms_handle, $project) {
+
+ $where_clause = "";
+
+ $issue_ids = getData($connect_dbms_handle, generateSelect(array("id"), "ticket.dt_issue", array("fk_project=".$project), null));
+ if ($issue_ids[0][0] == null ) {
+ return 0;
+ } else {
+ //var_dump($issue_ids);
+ foreach ($issue_ids as $issue_id) {
+ $where_clause .= $issue_id[0].", ";
+ }
+ $where_clause = "id in (".substr($where_clause, 0, strlen($where_clause)-2).")";
+ $issues = getData($connect_dbms_handle, generateSelect(array("*"), "ticket.view_todo_short_overview", array($where_clause), null));
+
+ }
+ return $issues;
+}
+
+/**
+ * @param connect_dbms_handle
+ * @param id
+ */
+function getIssueOfDomain($connect_dbms_handle, $domain) {
+
+ $where_clause = "";
+
+ $issue_ids = getData($connect_dbms_handle, generateSelect(array("id"), "ticket.dt_issue", array("fk_domain=".$domain), null));
+ if ($issue_ids[0][0] == null ) {
+ return 0;
+ } else {
+ //var_dump($issue_ids);
+ foreach ($issue_ids as $issue_id) {
+ $where_clause .= $issue_id[0].", ";
+ }
+ $where_clause = "id in (".substr($where_clause, 0, strlen($where_clause)-2).")";
+ $issues = getData($connect_dbms_handle, generateSelect(array("*"), "ticket.view_todo_short_overview", array($where_clause), null));
+
+ }
+ return $issues;
+}
+
+/**
+ * @param connect_dbms_handle
+ * @param id
+ */
+function getAssigneeIdOfIssue($connect_dbms_handle, $id) {
+
+ $fk_project = getData($connect_dbms_handle, generateSelect(array("fk_assignee"), "ticket.dt_issue", array("id=".$id), null));
+ if ($fk_project[0][0] == null ) {
+ return 0;
+ }
+ return $fk_project[0][0];
+}
+
+?>
\ No newline at end of file
--- /dev/null
+<?php
+
+
+function generateDeleteSchema($schema, $table, $col, $value) {
+ $delete_str = "DELETE FROM ".$schema.".".$table." WHERE (".$col."=".$value.");";
+ //echo debugPrint($delete_str);
+ return $delete_str;
+}
+
+function generateDelete($table, $col, $value) {
+ $delete_str = "DELETE FROM ".$table." WHERE (".$col."=".$value.");";
+ //echo debugPrint($delete_str);
+ return $delete_str;
+}
+
+?>
\ No newline at end of file
--- /dev/null
+<?php
+
+
+function generateInsertSchema($schema, $table, $values) {
+ $insert_str = "INSERT INTO ".$schema.".".$table." VALUES (";
+
+ //print_r($values);
+ $anzValues = count($values);
+ for ($i = 0 ; $i < $anzValues; $i++) {
+ $insert_str .= $values[$i];
+ if ($i < ($anzValues-1)) {
+ $insert_str .= ", ";
+ }
+ }
+
+ $insert_str .= ");";
+ //echo debugPrint($insert_str);
+ return $insert_str;
+}
+
+function generateInsertSchemaReturn($schema, $table, $values, $return) {
+ $insert_str = "INSERT INTO ".$schema.".".$table." VALUES (";
+
+ //print_r($values);
+ $anzValues = count($values);
+ for ($i = 0 ; $i < $anzValues; $i++) {
+ $insert_str .= $values[$i];
+ if ($i < ($anzValues-1)) {
+ $insert_str .= ", ";
+ }
+ }
+
+ $insert_str .= ") ".$return.";";
+ //echo debugPrint($insert_str);
+ return $insert_str;
+}
+
+function generateInsert($table, $values) {
+ $insert_str = "INSERT INTO ".$table." VALUES (";
+
+ //print_r($values);
+ $anzValues = count($values);
+ for ($i = 0 ; $i < $anzValues; $i++) {
+ $insert_str .= $values[$i];
+ if ($i < $anzValues-1) {
+ $insert_str .= ", ";
+ }
+ }
+
+ $insert_str .= ");";
+ //echo debugPrint($insert_str);
+ return $insert_str;
+}
+
+?>
\ No newline at end of file
--- /dev/null
+<?php
+
+/**
+ * Mit PostgresSQL verbinden */
+function getDBConnection() {
+
+ //$dbConnection = new PgSql\Connection();
+
+ $str_connection = "host=".HOST." dbname=".DB." user=".USER." password=".PASS;
+ // mit DB verbinden
+ //$dbConnection->pg_pconnect($str_connection) or die('Verbindungsaufbau fehlgeschlagen: ');
+ $connect_dbms_handle = @pg_pconnect($str_connection) or die('Verbindungsaufbau fehlgeschlagen: ');
+
+ if ($connect_dbms_handle) {
+ return $connect_dbms_handle;
+ } else {
+ echo "Datenbankabfrage fehlgeschlagen!";
+ echo pg_last_error($connect_dbms_handle);
+ return false;
+ }
+}
+
+/**
+ * PostgresSQL-Verbindung schliessen */
+function closeDBConnection($dbms_connection) {
+ @pg_close($dbms_connection) or die('Verbindungsclose fehlgeschlagen: ');
+}
+
+
+// SQL an DB absetzen
+// Parameter: Tablle, Feld(er), Wert(e)
+// Rückgabewert: boolean
+function getBooleanData ($dbms_connection, $db_query) {
+ // Variablen
+ $return_bool_value = false ;
+
+ // DB Abfage starten
+ //echo "<p>".$db_query."</p>";
+ $res_sql_result = pg_query ($dbms_connection, $db_query);
+ // Gültigkeit der DB Abfage testen
+ if ($res_sql_result) {
+ //echo "<li>".$res_sql_result;
+ $return_bool_value = true;
+ } else {
+ return "Datenbankabfrage fehlgeschlagen!";
+ }
+
+ return $return_bool_value;
+}
+
+
+// SQL an DB absetzen
+// Parameter: Tablle, Feld(er), Wert(e)
+// Rückgabewert: Array
+function getData ($dbms_connection, $db_query) {
+ $return_arr_data = array(); // Rückgabewert als Array
+ //echo "\n<p> SQL:<br>".$ref_str_db_query."</p>";
+
+ // DB Abfage starten
+ //echo $db_query;
+ $res_sql_result = pg_query ($dbms_connection, $db_query);
+
+ // Gültigkeit der DB Abfage testen
+ if ($res_sql_result) {
+ while ($arr_sql_data = pg_fetch_row($res_sql_result)) {
+ //print_r($arr_sql_data);
+ array_push ($return_arr_data, $arr_sql_data);
+ }
+ //var_dump( $return_arr_data);
+ } else {
+ return "Datenbankabfrage fehlgeschlagen!";
+ }
+
+ return $return_arr_data;
+}
+
+// SQL an DB absetzen
+// Parameter: Tablle, Feld(er), Wert(e)
+// Rückgabewert: Array
+function getDataReturnID ($dbms_connection, $db_query) {
+ $return_arr_data = array(); // Rückgabewert als Array
+ //echo "\n<p> SQL:<br>".$ref_str_db_query."</p>";
+
+ // DB Abfage starten
+ //echo $db_query;
+ $res_sql_result = pg_query ($dbms_connection, $db_query);
+
+ // Gültigkeit der DB Abfage testen
+ if ($res_sql_result) {
+ while ($arr_sql_data = pg_fetch_row($res_sql_result)) {
+ //print_r($arr_sql_data);
+ array_push ($return_arr_data, $arr_sql_data);
+ }
+ //var_dump( $return_arr_data);
+ } else {
+ return "Datenbankabfrage fehlgeschlagen!";
+ }
+
+ return $return_arr_data[0][0];
+}
+
+
+?>
\ No newline at end of file
--- /dev/null
+<?php
+
+
+function generateSelect ($selectedFields, $table, $whereClause, $orderClause) {
+ $select_str = "SELECT ";
+
+ //print_r($selectedFields);
+ $anzFields = count($selectedFields);
+ for ($i = 0 ; $i < $anzFields; $i++) {
+ $select_str .= $selectedFields[$i];
+ if ($i < $anzFields-1) {
+ $select_str .= ", ";
+ }
+ }
+
+ $select_str .= " FROM ".$table;
+
+ if ($whereClause != null) {
+ $select_str .= " WHERE ";
+
+ //print_r($whereClause);
+ $anzWheres = count($whereClause);
+ for ($i = 0 ; $i < $anzWheres; $i++) {
+ $select_str .= $whereClause[$i];
+ if ($i < $anzWheres-1) {
+ $select_str .= " AND ";
+ }
+ }
+ }
+
+ if ($orderClause != null) {
+ $select_str .= " ORDER BY ";
+
+ //print_r($orderClause);
+ $anzOrders = count($orderClause);
+ for ($i = 0 ; $i < $anzOrders; $i++) {
+ $select_str .= $orderClause[$i];
+ if ($i < $anzOrders-1) {
+ $select_str .= ", ";
+ }
+ }
+ }
+
+ $select_str .= ";";
+ //echo ($select_str);
+ return $select_str;
+}
+
+
+?>
\ No newline at end of file
--- /dev/null
+<?php
+
+function generateUpdateSchema($schema, $table, $values, $whereClause) {
+ $update_str = "UPDATE ".$schema.".".$table." SET ";
+
+ //print_r($values);
+ $anzValues = count($values);
+ for ($i = 0 ; $i < $anzValues; $i++) {
+ $update_str .= $values[$i][0];
+ $update_str .= " = ";
+ $update_str .= $values[$i][1];
+ if ($i < ($anzValues-1)) {
+ $update_str .= ", ";
+ }
+ }
+
+ if ($whereClause != null) {
+ $update_str .= " WHERE ";
+
+ //print_r($whereClause);
+ $anzWheres = count($whereClause);
+ for ($i = 0 ; $i < $anzWheres; $i++) {
+ $update_str .= $whereClause[$i];
+ if ($i < $anzWheres-1) {
+ $update_str .= " AND ";
+ }
+ }
+ }
+
+
+ $update_str .= ";";
+ //echo debugPrint($update_str);
+ return $update_str;
+}
+?>
\ No newline at end of file
--- /dev/null
+<?php
+
+/** $ref_button_name Name des <button>
+ * $ref_value_button Daten; null möglich
+ * $ref_html_button HTML zwischen <button></button>; null möglich
+ * $ref_id Id des <button>
+ * $ref_class Class des <button>; null möglich
+ * $ref_tabindex Tabindex in der <form>
+
+ * $ref_type <button>-type (submit, reset, button)
+ * $ref_javascript Javascript; null möglich
+
+ * $ref_labeltitle <label>-Text; null möglich
+ * $ref_p_flag true, wenn alles in <p> soll
+ * $ref_newline_flag true, wenn <label> ueber <button> stehen soll
+ * $ref_intend Anz. Tabs einrücken
+ * */
+function makeButton($ref_button_name, $ref_value_button, $ref_html_button, $ref_id, $ref_class, $ref_tabindex, $ref_type, $ref_javascript, $ref_labeltitle, $ref_p_flag, $ref_newline_flag, $ref_intend) {
+
+ $intend = make_intend_str($ref_intend);
+
+ if ($ref_p_flag) {
+ echo $intend;
+ echo "<p>\n";
+ }
+
+
+ if ($ref_labeltitle != null) {
+ echo $intend."\t";
+ echo "<label for=\"".$ref_button_name."\">".$ref_labeltitle."</label>";
+ if ($ref_newline_flag) {
+ echo "<br />";
+ }
+ echo "\n";
+ }
+
+ $str_id = $ref_id == null ? " " : " id=\"".$ref_id."\" ";
+ $str_class = $ref_class == null ? " " : " class=\"".$ref_class."\" ";
+ $str_tabindex = $ref_tabindex == null ? " " : " tabindex=\"".$ref_tabindex."\" ";
+ $str_javascript = $ref_javascript == null ? " " : " onchange=\"".$ref_javascript."\" ";
+
+ echo $intend."\t";
+
+ echo "<button ".$str_id.$str_class.$str_tabindex."name=\"".$ref_button_name."\" type=\"".$ref_type."\" ";
+ if ($ref_value_button != null) {
+ echo " value=\"".$ref_value_button."\"";
+ }
+ echo "/>\n";
+
+ echo $intend."\t\t";
+
+ echo $ref_html_button."\n";
+
+ echo $intend."\t";
+ echo "</button>\n";
+
+ if ($ref_p_flag) {
+ echo $intend;
+ echo "</p>\n";
+ }
+}
+
+
+?>
\ No newline at end of file
--- /dev/null
+<?php
+
+
+
+function make_check($ref_name, $ref_intend, $ref_value, $ref_tabindex, $ref_class, $ref_classerrorextension, $ref_error_label) {
+
+ echo make_intend($ref_intend)."\t<input type=\"checkbox\" value=\"".$ref_value."\" class=\"".$ref_class;
+ if ($ref_error_label == $ref_name) {
+ echo $ref_classerrorextension;
+ }
+ echo "\" name=\"".$ref_name."\" tabindex=\"".$ref_tabindex."\" id=\"".$ref_name."\" />\n";
+
+}
+
+
+?>
\ No newline at end of file
--- /dev/null
+<?php
+
+/** $ref_name Name des <input>
+ * $ref_value_input Daten; null möglich
+ * $ref_id Id des <input>
+ * $ref_class Class des <input>; null möglich
+ * $ref_tabindex Tabindex in der <form>
+
+ * $ref_type <input>-type (hidden, password, text ...)
+ * $ref_size Größe des Feldes
+ * $ref_maxlength Max. Größe der Eingabe
+ * $ref_javascript Javascript; null möglich
+
+ * $ref_mandantory Pflichtfeldmarkierung; null möglich
+ * $ref_labeltitle <label>-Text; null möglich
+ * $ref_p_flag true, wenn alles in <p> soll
+ * $ref_newline_flag true, wenn <label> ueber <input> stehen soll
+ * $ref_intend Anz. Tabs einrücken
+ * */
+function makeInput($ref_name, $ref_value_input, $ref_id, $ref_class, $ref_tabindex, $ref_type, $ref_size, $ref_maxlength, $ref_javascript, $ref_mandantory, $ref_labeltitle, $ref_p_flag, $ref_newline_flag, $ref_intend) {
+
+ $intend = make_intend_str($ref_intend);
+
+ if ($ref_p_flag) {
+ echo $intend;
+ echo "<p>\n";
+ }
+
+ echo $intend."\t";
+
+ if ($ref_mandantory) {
+ echo "* ";
+ }
+
+ if ($ref_labeltitle != null) {
+ echo "<label for=\"".$ref_name."\">".$ref_labeltitle."</label>";
+ if ($ref_newline_flag) {
+ echo "<br />";
+ }
+ echo "\n";
+ }
+
+ $str_id = $ref_id == null ? " " : " id=\"".$ref_id."\" ";
+ $str_class = $ref_class == null ? " " : " class=\"".$ref_class."\" ";
+ $str_tabindex = $ref_tabindex == null ? " " : " tabindex=\"".$ref_tabindex."\" ";
+ $str_javascript = $ref_javascript == null ? " " : " onchange=\"".$ref_javascript."\" ";
+
+ echo $intend."\t";
+
+ echo "<input ".$str_id.$str_class.$str_tabindex.$str_javascript."name=\"".$ref_name."\" type=\"".$ref_type."\" size=\"".$ref_size."\" maxlength=\"".$ref_maxlength."\" ";
+
+ if (isset($_POST[$ref_name]) && strlen($_POST[$ref_name]) > 0) {
+ echo " value=\"".$_POST[$ref_name]."\"";
+ } else if ($ref_value_input != null ){
+ echo " value=\"".$ref_value_input."\"";
+ }
+ echo "/>\n";
+
+ if ($ref_p_flag) {
+ echo $intend;
+ echo "</p>\n";
+ }
+}
+
+function make_multi_input($ref_name, $ref_type, $ref_size, $ref_maxlength, $ref_tabindex, $ref_id, $ref_labeltitle, $ref_class, $ref_classerrorextension, $ref_error_label, $ref_mandantory, $ref_intend, $ref_p_flag) {
+
+ if ($ref_p_flag) {
+ echo make_intend($ref_intend)."<p>\n";
+ }
+ echo make_intend($ref_intend)."\t";
+ if ($ref_mandantory) {
+ echo "*";
+ }
+ echo "<label for=\"".$ref_name[0]."\">".$ref_labeltitle."</label><br />\n";
+
+ for ($i=0; $i<count($ref_name); $i++) {
+ echo make_intend($ref_intend)."\t<input class=\"".$ref_class[$i];
+ if ($ref_error_label == $ref_name[$i]) {
+ echo $ref_classerrorextension;
+ }
+ echo "\" type=\"".$ref_type[$i]."\" name=\"".$ref_name[$i]."\" size=\"".$ref_size[$i]."\" maxlength=\"".$ref_maxlength[$i]."\" tabindex=\"".$ref_tabindex[$i]."\" id=\"".$ref_id[$i]."\" ";
+ if (isset($_POST[$ref_name[$i]]) && strlen($_POST[$ref_name[$i]]) > 0) {
+ echo " value=\"".$_POST[$ref_name[$i]]."\"";
+ }
+ echo "/>\n";
+ }
+ if ($ref_p_flag) {
+ echo make_intend($ref_intend)."</p>\n";
+ }
+}
+
+
+
+
+?>
\ No newline at end of file
--- /dev/null
+<?php
+
+/** $ref_select_name Name des <select>
+ * $ref_value_array Daten-Array; null möglich
+ * $ref_id Id des <select>
+ * $ref_class Class des <select>; null möglich
+ * $ref_tabindex Tabindex in der <form>
+
+ * $ref_start Start-Index statt Datenarray falls Datenarray null
+ * $ref_end End-Index statt Datenarray falls Datenarray null
+ * $ref_int_preselect Index vorausgewähltes Element; default -1
+ * $ref_multiple Mehrfachauswahl <select multiple>; default false
+ * $ref_int_size Für mehrzeilige Mehrfachauswahl > 1;
+ * $ref_javascript Javascript; null möglich
+
+ * $ref_mandantory Pflichtfeldmarkierung; null möglich
+ * $ref_labeltitle <label>-Text; null möglich
+ * $ref_p_flag true, wenn alles in <p> soll
+ * $ref_newline_flag true, wenn <label> ueber <select> stehen soll
+ * $ref_intend Anz. Tabs einrücken
+ * */
+function makeSelect($ref_select_name, $ref_value_array, $ref_id, $ref_class, $ref_tabindex, $ref_start, $ref_end, $ref_int_preselect, $ref_multiple, $ref_int_size, $ref_javascript, $ref_mandantory, $ref_labeltitle, $ref_p_flag, $ref_newline_flag, $ref_intend) {
+
+ $intend = make_intend_str($ref_intend);
+
+ if ($ref_p_flag) {
+ echo $intend;
+ echo "<p>\n";
+ }
+
+ echo $intend."\t";
+
+ if ($ref_mandantory) {
+ echo "* ";
+ }
+
+ if ($ref_labeltitle != null) {
+ echo "<label for=\"".$ref_select_name."\">".$ref_labeltitle."</label>";
+ if ($ref_newline_flag) {
+ echo "<br />";
+ }
+ echo "\n";
+ }
+
+ $str_id = $ref_id == null ? " " : " id=\"".$ref_id."\" ";
+ $str_class = $ref_class == null ? " " : " class=\"".$ref_class."\" ";
+ $str_tabindex = $ref_tabindex == null ? " " : " tabindex=\"".$ref_tabindex."\" ";
+ $str_javascript = $ref_javascript == null ? " " : " onchange=\"".$ref_javascript."\" ";
+
+ echo $intend."\t";
+
+ echo "<select ".$str_id.$str_class.$str_tabindex.$str_javascript."name=\"".$ref_select_name."\" size=\"".$ref_int_size."\" "." ";
+ if ($ref_multiple == true) {
+ echo "multiple=\"multiple\" ";
+ }
+ echo ">\n";
+
+ if ($ref_value_array != null) {
+
+ // Flag: True, falls das Datenarray multidimensional ist. Dann wird das Attribut value in <option> mit dem wert aus dem Unterarray gefüllt, ansonsten wird der Schleifenindex verwendet.
+ $multiDimensionalArrayFlag = is_array($ref_value_array[0]);
+
+ for ($i=0; $i<count($ref_value_array); $i++) {
+ echo $intend;
+ echo "\t\t<option value=\"".($multiDimensionalArrayFlag ? $ref_value_array[$i][0] : $i)."\"";
+ if (($multiDimensionalArrayFlag ? $ref_value_array[$i][0] : ($i+1)) == $ref_int_preselect) { // $i-1 deshalb, weil das Array mit dem 0-ten Element beginnt, der Value aber mit 1 anfängt
+ echo " selected";
+ }
+ echo ">".($multiDimensionalArrayFlag ? $ref_value_array[$i][1] : $ref_value_array[$i])."</option>\n";
+ }
+ } else {
+ for ($i=$ref_start; $i<(1+$ref_end); $i++) {
+ echo $intend;
+ echo "\t\t<option value=\"".$i."\"";
+ if ($i == $ref_int_preselect) {
+ echo " selected";
+ }
+ echo ">".$i."</option>\n";
+ }
+ }
+
+ echo $intend."\t";
+ echo "</select>\n";
+
+ if ($ref_p_flag) {
+ echo $intend;
+ echo "</p>\n";
+ }
+}
+
+
+
+
+
+?>
\ No newline at end of file
--- /dev/null
+<?php
+
+
+/**
+ * $ref_name Name der <trxtarea>
+ * $ref_value_input Daten; null möglich
+ * $ref_id Id des <input>
+ * $ref_class Class des <input>; null möglich
+ * $ref_tabindex Tabindex in der <form>
+ *
+ * @param unknown $ref_classerrorextension
+ * @param unknown $ref_error_label
+ * @param unknown $ref_cols
+ * @param unknown $ref_rows
+ *
+ * $ref_javascript Javascript; null möglich
+ *
+ * $ref_mandantory Pflichtfeldmarkierung; null möglich
+ * $ref_labeltitle <label>-Text; null möglich
+ * $ref_p_flag true, wenn alles in <p> soll
+ * $ref_newline_flag true, wenn <label> ueber <input> stehen soll
+ * $ref_intend Anz. Tabs einrücken
+ */
+function makeTextarea($ref_name, $ref_value_input, $ref_id, $ref_class, $ref_tabindex, $ref_classerrorextension, $ref_error_label, $ref_cols, $ref_rows, $ref_javascript, $ref_mandantory, $ref_labeltitle, $ref_p_flag, $ref_newline_flag, $ref_intend) {
+
+ if ($ref_p_flag) {
+ echo make_intend($ref_intend)."<p>\n";
+ }
+
+ echo make_intend($ref_intend)."\t";
+
+ if ($ref_mandantory) {
+ echo "*";
+ }
+
+ if ($ref_labeltitle != null) {
+ echo "<label for=\"".$ref_name."\">".$ref_labeltitle."</label>";
+ if ($ref_newline_flag) {
+ echo "<br />";
+ }
+ echo "\n";
+ }
+
+ echo make_intend($ref_intend)."\t<textarea ";
+
+ if ($ref_error_label == $ref_name) {
+ echo $ref_classerrorextension;
+ }
+
+ $str_id = $ref_id == null ? " " : " id=\"".$ref_id."\" ";
+ $str_class = $ref_class == null ? " " : " class=\"".$ref_class."\" ";
+ $str_tabindex = $ref_tabindex == null ? " " : " tabindex=\"".$ref_tabindex."\" ";
+
+ echo " ".$str_id.$str_class.$str_tabindex."name=\"".$ref_name."\" cols=\"".$ref_cols."\" rows=\"".$ref_rows."\" >\n";
+
+ if (isset($_POST[$ref_name]) && strlen($_POST[$ref_name]) > 0) {
+ echo $_POST[$ref_name];
+ } else if ($ref_value_input != null ){
+ echo $ref_value_input;
+ }
+
+ echo "</textarea>\n";
+
+ if ($ref_p_flag) {
+ echo make_intend($ref_intend)."</p>\n";
+ }
+}
+
+
+
+?>
\ No newline at end of file
--- /dev/null
+<?php
+
+require ("gui/gui_functions_button.php");
+require ("gui/gui_functions_checkbox.php");
+require ("gui/gui_functions_input.php");
+require ("gui/gui_functions_select.php");
+require ("gui/gui_functions_textarea.php");
+
+function getIssuebox ($ref_issue, $connect_dbms_handle, $ref_stati_arr, $ref_page) {
+
+ $j=0;
+
+ $id = $ref_issue[$j++];
+ $domain = $ref_issue[$j++];
+ $titel = $ref_issue[$j++];
+ $deadline_data = $ref_issue[$j++];
+ $deadline = $deadline_data;
+ //echo strtotime($deadline_data);
+ if (strtotime($deadline_data) != strtotime("31.12.9999 00:00:00")) {
+ if ((date("U", strtotime($deadline_data))+date("Z")) % 86400 == 0) {
+ $deadline = date("o-m-d", strtotime($deadline_data));
+ }
+ } else {
+ $deadline = "---";
+ }
+ //echo $deadline;
+
+
+ $wichtigkeit = $ref_issue[$j++];
+ $dringlichkeit = $ref_issue[$j++];
+ $bewertung = $ref_issue[$j++];
+ $aufwand_data = $ref_issue[$j++];
+ $aufwand = date("G \h i\'", strtotime($aufwand_data));
+
+ $datum_data = $ref_issue[$j++];
+ //echo strtotime($datum_data);
+ if (strtotime($datum_data) != strtotime("31.12.9999 00:00:00")) {
+ if ((date("U", strtotime($datum_data))+date("Z")) % 86400 == 0) {
+ $datum = date("o-m-d", strtotime($datum_data));
+ } else {
+ $datum = date("o-m-d", strtotime($datum_data));
+ $datum_zeit = date("H:i:s", strtotime($datum_data));
+ }
+ } else {
+ $datum = "---";
+ $datum_zeit = "00:00:00";
+ }
+
+ $status = $ref_issue[$j++];
+ $keywords = $ref_issue[$j++];
+
+ $domain_id = getDomainIdOfIssue($connect_dbms_handle, $id);
+
+ $project_id = getProjectIdOfIssue($connect_dbms_handle, $id);
+ $project = getProjectNameOfIssue($connect_dbms_handle, $id);
+
+ $comments_arr = getData($connect_dbms_handle, generateSelect(array("*"), "ticket.view_comments_users", array("fk_issue_of_comment=".$id), array("erstellt asc")));
+ //var_dump($comments_arr);
+
+ echo "<form name=\"issue_".$id."\" id=\"issue_".$id."\" action=\"".$ref_page."\" method=\"post\">\n";
+ echo "<div class=\"issuebox\">";
+
+ echo "<div class=\"boxelem\"><span class=\"boxelemdescr\">Domain:</span><br />";
+ echo "<a class=\"link\" href=\"domain.php?domaindetail=".$domain_id."\">".$domain."</a></div>\n";
+ echo "<div class=\"boxelem center\"><span class=\"boxelemdescr\">Projekt:</span><br />";
+ echo "<a class=\"link\" href=\"project.php?projectdetail=".$project_id."\">".$project."</a></div>\n";
+ echo "<div class=\"boxelem right\"><span class=\"boxelemdescr\">Issue-ID:</span><br />".$id."</div>\n";
+ echo "<div class=\"boxelem headline col3\">";
+ echo "<a class=\"link tooltip\" href=\"issue.php?issuedetail=".$id."\">".$titel."<span class=\"tooltiptext\">".$comments_arr[0][2]."</span></a></div>\n";
+
+ if ($keywords != null && strlen($keywords) > 0) {
+ echo "<div class=\"boxelem keywords col3\">".$keywords."</div>\n";
+ }
+
+ echo "<div class=\"boxelem\"><span class=\"boxelemdescr\">Deadline:</span></div>\n";
+ echo "<div class=\"boxelem\">";
+ makeInput("issue_deadline_".$id, $deadline, null, "inputbtn", null, "date", 0, 0, "document.forms['issue_".$id."'].submit();", null, null, false, false, 0);
+ echo "</div>\n";
+ echo "<div class=\"boxelem center\"><span class=\"boxelemdescr\">Bewertung:</span>".$bewertung."</div>\n";
+ echo "<div class=\"boxelem center\"><span class=\"boxelemdescr\">Aufwand:</span><br />".$aufwand."</div>\n";
+ echo "<div class=\"boxelem center\"><span class=\"boxelemdescr\">Wichtigkeit:</span><br />";
+ makeSelect("issue_wichtigkeit_".$id, null, null, "selectbtn", null, 1, 10, $wichtigkeit, false, 1, "document.forms['issue_".$id."'].submit();", null, null, false, false, 0);
+ echo "</div>\n";
+ echo "<div class=\"boxelem center\"><span class=\"boxelemdescr\">Dringlichkeit:</span><br />";
+ makeSelect("issue_dringlichkeit_".$id, null, null, "selectbtn", null, 1, 10, $dringlichkeit, false, 1, "document.forms['issue_".$id."'].submit();", null, null, false, false, 0);
+ echo "</div>\n";
+ echo "<div class=\"boxelem center col2\"><span class=\"boxelemdescr\">let's do it:</span><br />";
+ makeInput("issue_executiondate_".$id, $datum, null, "inputbtn", null, "date", 0, 0, "document.forms['issue_".$id."'].submit();", null, null, false, false, 0);
+ //if (!($datum_zeit == null || strlen($datum_zeit) == 0 || $datum_zeit == "")) {
+ //echo "<br />";
+ makeInput("issue_executiondate_time_".$id, $datum_zeit, null, "inputbtn", null, "time", 0, 0, "document.forms['issue_".$id."'].submit();", null, null, false, false, 0);
+ //}
+ echo "</div>\n";
+ echo "<div class=\"boxelem center\"><span class=\"boxelemdescr\">Status:</span><br />";
+ makeSelect("issue_status_".$id, $ref_stati_arr, null, "selectbtn", null, 0, 0, $status, false, 1, "document.forms['issue_".$id."'].submit();", null, null, false, false, 0);
+ echo "</div>\n\n";
+
+ echo "</div>\n";
+ echo "</form>\n\n";
+}
+
+?>
\ No newline at end of file
--- /dev/null
+<?php\r
+\r
+$connect_dbms_handle = getDBConnection();\r
+\r
+$current_user=1;\r
+?>\r
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" lang="de">\r
+\r
+<head>\r
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />\r
+<meta http-equiv="expires" content="0" /> \r
+\r
+<title>LetsDoIt!</title>\r
+\r
+<link rel="stylesheet" href="stylesheet/ticket_main.css" type="text/css" media="screen, projection\" />\r
+</head>\r
+\r
+<body>
\ No newline at end of file
--- /dev/null
+<?php
+
+function sessionHandling($scriptname, $dbms_connection) {
+ session_start();
+
+ $sid = session_id();
+
+ if (isset($_POST['login_name']) && isset($_POST['login_pass'])) {
+ // eigentliche Prüfung
+ if (check_login($dbms_connection, $_POST['login_name'],$_POST['login_pass']) == 1) {
+ $_SESSION['sess_user'] = $_POST['login_name'];
+ } else {
+ $_SESSION['sess_user'] = "guest";
+ }
+ } else if (!isset($_SESSION['sess_user']) || $_POST['logout'] == "Abmelden") {
+ $_SESSION['sess_user'] = "guest";
+ }
+
+ $session_user = "0";
+
+ if ($_SESSION['sess_user'] == "guest") {
+ $session_user = "0";
+ } else {
+ $session_user = "(SELECT login_id FROM login WHERE login_name='".$_SESSION['sess_user']."')";
+ }
+
+ sql_data($dbms_connection, generateInsert(SCHEMA, "session", array("'".$sid."'", $session_user, "now()", "'".$scriptname."'")));
+
+
+
+}
+
+?>
\ No newline at end of file
--- /dev/null
+<?php
+
+require ("session/session_functions.php");
+
+?>
\ No newline at end of file
--- /dev/null
+<?php
+
+function debugPrint($param) {
+ echo "<p>";
+ if (is_array($param)) {
+ if ($asList) {
+ debugPrintAsList($param);
+ } else {
+ echo "_";
+ foreach ($param as $p) {
+ echo $p."_";
+ }
+ }
+ } else {
+ echo $param;
+ }
+ echo "</p>\n";
+}
+
+function debugPrintAsList($param) {
+ echo "<ol>\n";
+ foreach ($param as $p) {
+ echo "<li>".$p."_</li>\n";
+ }
+ echo "</ol>\n";
+}
+
+function coordinates ($ref_longitude, $ref_latitude) {
+ $return_geo = array("","");
+
+ $return_geo[0] = $ref_longitude[0] + $ref_longitude[1]/60 + $ref_longitude[2]/3600;
+ $return_geo[1] = $ref_latitude[0] + $ref_latitude[1]/60 + $ref_latitude[2]/3600;
+
+ return $return_geo;
+}
+
+function find_pos_in_array($ref_array, $ref_value) {
+ $pos = -1;
+
+ for ($i=0; $i<count($ref_array); $i++) {
+ if ($ref_array[$i] == $ref_value) {
+ $pos = $i;
+ }
+ }
+
+ return $pos;
+}
+
+function make_intend($ref_count) {
+ for ($i=0; $i<$ref_count; $i++) {
+ echo "\t";
+ }
+}
+
+function make_intend_str($ref_count) {
+ $intend = "";
+ for ($i=0; $i<$ref_count; $i++) {
+ $intend .= "\t";
+ }
+ return $intend;
+}
+
+function checkDeadlineAfterExecutionDate ($newissue_executiondate, $newissue_deadline) {
+ if (strtotime($newissue_executiondate) > strtotime($newissue_deadline)+86399) {
+ echo "Deadline (".strtotime($newissue_executiondate).") kann nicht vor dem Ausführungsdatum (".(strtotime($newissue_deadline)+86399).") liegen.";
+ return false;
+ }
+ return true;
+}
+
+function handleQuickUpdate ($ref_POST, $connect_dbms_handle) {
+ $update_arr = array();
+ $issue = 0;
+
+ foreach (array_keys($ref_POST) as $post) {
+ //echo $post." => ".$_POST[$post]."\n";
+ $change = explode ("_", $post);
+ $issue += $change[count($change)-1];
+
+ //echo $issue;
+ }
+
+ $issue = $issue / count(array_keys($ref_POST));
+ //echo $issue;
+
+ $issue_deadline = $ref_POST['issue_deadline_'.$issue];
+ if ($issue_deadline != "" && strlen($issue_deadline) > 0) {
+ array_push($update_arr, array("deadline", "'".$issue_deadline." 00:00:00'"));
+ }
+
+ $issue_executiondate_date = $ref_POST['issue_executiondate_'.$issue];
+ $issue_executiondate_time = $ref_POST['issue_executiondate_time_'.$issue];
+ //echo $issue_executiondate_time;
+ if ($issue_executiondate_time == "00:00:00" || $issue_executiondate_time == "") {
+ $issue_executiondate_time = "00:00:00";
+ } else {
+ $issue_executiondate_time .= ":00";
+ }
+ $issue_executiondate = $issue_executiondate_date." ".$issue_executiondate_time;
+ //echo $issue_executiondate;
+ array_push($update_arr, array("executiondate", "'".$issue_executiondate."'"));
+
+ $issue_status = $ref_POST['issue_status_'.$issue];
+ array_push($update_arr, array("fk_status", $issue_status));
+
+ $issue_wichtigkeit = $ref_POST['issue_wichtigkeit_'.$issue];
+ array_push($update_arr, array("importance", $issue_wichtigkeit));
+
+ $issue_dringlichkeit = $ref_POST['issue_dringlichkeit_'.$issue];
+ array_push($update_arr, array("urgency", $issue_dringlichkeit));
+
+ array_push($update_arr, array("edited", "now()"));
+
+ $sqlupdate = generateUpdateSchema("ticket", "dt_issue", $update_arr, array("id=".$issue));
+ //echo $sqlupdate;
+ $sqlupdate_result = getBooleanData($connect_dbms_handle, $sqlupdate);
+ //echo $sqlinsert_result;
+
+ $sqllog = generateInsertSchema("ticket", "dt_sqllog", array("DEFAULT", "now()", "'".addslashes(str_replace("'", "\"", $sqlupdate))."'", $current_user, "'".uniqid()."'", "'".$page."'"));
+ $sqllog_result = getBooleanData($connect_dbms_handle, $sqllog);
+ //echo $sqllog_result;
+
+ return $issue;
+}
+?>
\ No newline at end of file
--- /dev/null
+<?php
+
+require ("util/util_functions.php");
+
+
+?>
\ No newline at end of file
--- /dev/null
+<?php require_once '../ticket_glob_vars.php'; ?>\r
+<?php require_once 'lib/database_functions.php'; ?>\r
+<?php require_once 'lib/gui_functions.php'; ?>\r
+<?php require_once 'lib/util_functions.php'; ?>\r
+<?php\r
+$page = 'newissue.php';\r
+\r
+require_once 'lib/header.php';\r
+\r
+\r
+if (isset($_POST)) {\r
+ if (isset($_POST['newissue_save'])) {\r
+ //var_dump($_POST);\r
+ \r
+ $newissue_titel = $_POST['newissue_titel'];\r
+ $newissue_importance = $_POST['newissue_importance'];\r
+ $newissue_dringlichkeit = $_POST['newissue_dringlichkeit'];\r
+ $newissue_aufwand_h = $_POST['newissue_aufwand_h'];\r
+ $newissue_aufwand_min = 15*$_POST['newissue_aufwand_min'];\r
+ $newissue_executiondate_date = $_POST['newissue_executiondate'];\r
+ $newissue_executiondate_time = $_POST['newissue_executiondate_time'];\r
+ $newissue_executiondate = $newissue_executiondate_date." ";\r
+ $newissue_executiondate .= ($newissue_executiondate_time == "" ? " 00:00" : $newissue_executiondate_time).":00";\r
+ \r
+ $newissue_deadline_date = $_POST['newissue_deadline'];\r
+ $newissue_deadline = $newissue_deadline_date." 00:00:00";\r
+\r
+ $newissue_keywords = $_POST['newissue_keywords'];\r
+ $newissue_domain = $_POST['newissue_domain'];\r
+ $newissue_project = $_POST['newissue_project'];\r
+ $newissue_user = $_POST['newissue_user'];\r
+ $newissue_assignee = $_POST['newissue_assignee'];\r
+ $newissue_status = $_POST['newissue_status'];\r
+ $newissue_comment = $_POST['newissue_comment'];\r
+ $newissue_save = $_POST['newissue_save'];\r
+ \r
+ $now = getdate();\r
+ //var_dump($now);\r
+ //echo strtotime($newissue_deadline);\r
+ if (\r
+ strlen($newissue_titel) > 5\r
+ && 60*$newissue_aufwand_h+15*$newissue_aufwand_min > 0\r
+ && strlen($newissue_comment) > 5\r
+ && strtotime($newissue_executiondate) > $now[0]\r
+ && strtotime($newissue_deadline) > $now[0]\r
+ && checkDeadlineAfterExecutionDate($newissue_executiondate, $newissue_deadline)\r
+ ) {\r
+ \r
+ if ($newissue_status >= 9 ) { // TODO böses Foul: Die 9 durch was generisches ersetzen\r
+ $newissue_executiondate = $newissue_deadline = "9999-12-31 00:00:00";\r
+ }\r
+ if ($newissue_status > 10 ) { // TODO böses Foul: Die 9 durch was generisches ersetzen\r
+ $newissue_aufwand_h = $newissue_aufwand_min = "00";\r
+ }\r
+ \r
+ $insertArray = array("DEFAULT",\r
+ "'".htmlentities($newissue_titel)."'",\r
+ $newissue_importance,\r
+ $newissue_dringlichkeit,\r
+ "'".$newissue_aufwand_h.":".$newissue_aufwand_min.":00'",\r
+ "now()",\r
+ "now()",\r
+ "'".$newissue_executiondate."'",\r
+ "'".$newissue_deadline."'",\r
+ "'".htmlentities($newissue_keywords)."'",\r
+ $newissue_domain,\r
+ $newissue_project,\r
+ $newissue_user,\r
+ $newissue_assignee,\r
+ $newissue_status);\r
+ \r
+ $sqlinsert = generateInsertSchemaReturn("ticket", "dt_issue", $insertArray, " RETURNING id");\r
+ //echo $sqlinsert;\r
+ $sqlinsert_result_id = getDataReturnID($connect_dbms_handle, $sqlinsert);\r
+ //echo $sqlinsert_result_id;\r
+ \r
+ $sqllog = generateInsertSchema("ticket", "dt_sqllog", array("DEFAULT", "now()", "'".addslashes(str_replace("'", "\"", $sqlinsert))."'", $current_user, "'".uniqid()."'", "'".$page."'"));\r
+ $sqllog_result = getBooleanData($connect_dbms_handle, $sqllog);\r
+ //echo $sqllog_result;\r
+ \r
+ $insertArray = array("DEFAULT",\r
+ $sqlinsert_result_id,\r
+ "'".htmlentities($newissue_comment)."'",\r
+ "now()",\r
+ "now()",\r
+ $newissue_user,\r
+ "null");\r
+ \r
+ $sqlinsert = generateInsertSchema("ticket", "dt_comment", $insertArray);\r
+ //echo $sqlinsert;\r
+ $sqlinsert_result = getBooleanData($connect_dbms_handle, $sqlinsert);\r
+ //echo $sqlinsert_result;\r
+ \r
+ $sqllog = generateInsertSchema("ticket", "dt_sqllog", array("DEFAULT", "now()", "'".addslashes(str_replace("'", "\"", $sqlinsert))."'", $current_user, "'".uniqid()."'", "'".$page."'"));\r
+ $sqllog_result = getBooleanData($connect_dbms_handle, $sqllog);\r
+ //echo $sqllog_result;\r
+ } else {\r
+ echo "unzulässige Eingaben!";\r
+ }\r
+ }\r
+}\r
+?>\r
+<a href="index.php">alle Tickets</a>\r
+<form action="newissue.php" method="post" name="newissue">\r
+<div class="singleissue">\r
+\r
+<?php\r
+// id\r
+// DEFAULT\r
+ \r
+//titel\r
+?>\r
+<div class="boxelem headline col2">\r
+<?php\r
+// titel\r
+makeInput("newissue_titel", null, null, "inputbtn", null, "text", 100, 250, null, true, "Titel", false, true, 0);\r
+?>\r
+</div>\r
+\r
+<div class="boxelem center col2">\r
+<?php\r
+// keywords\r
+makeTextarea("newissue_keywords", null, null, "inputbtn", null, null, null, 100, 2, null, true, "Schlüsselwörter: ", false, true, 0);\r
+?>\r
+</div>\r
+\r
+<div class="boxelem">\r
+<?php\r
+//deadline\r
+makeInput("newissue_deadline", null, null, "inputbtn", null, "date", 0, 0, null, true, "Deadline: ", false, false, 0);\r
+?>\r
+</div>\r
+\r
+<div class="boxelem">\r
+<?php\r
+//executiondate\r
+makeInput("newissue_executiondate", null, null, "inputbtn", null, "date", 0, 0, null, true, "geplant zum: ", false, false, 0);\r
+makeInput("newissue_executiondate_time", "00:00", null, "inputbtn", null, "time", 0, 0, null, false, null, false, false, 0);\r
+?>\r
+</div>\r
+\r
+<div class="boxelem">\r
+<?php\r
+//fk_domain\r
+$domain_arr = getData($connect_dbms_handle, $selectFromDtDomain);\r
+makeSelect("newissue_domain", $domain_arr, null, "selectbtn", null, 0, 0, null, false, 1, null, true, "Domain: ", false, false, 0);\r
+?>\r
+</div>\r
+\r
+<div class="boxelem">\r
+<?php\r
+//fk_project\r
+$project_null_arr = array(0, "null", null);\r
+$project_arr = getData($connect_dbms_handle, $selectFromDtProject);\r
+array_push($project_arr, $project_null_arr);\r
+//var_dump($project_arr);\r
+makeSelect("newissue_project", $project_arr, null, "selectbtn", null, 0, 0, null, false, 1, null, true, "Projekt: ", false, false, 0);\r
+?>\r
+</div>\r
+\r
+<div class="boxelem">\r
+<?php\r
+//effort\r
+//makeInput("newissue_aufwand", null, null, "inputbtn", null, "time", 0, 0, null, true, "Aufwand", false, true, 0);\r
+makeSelect("newissue_aufwand_h", null, null, "selectbtn", null, 0, 20, null, false, 1, null, true, "Aufwand (hh:mm): ", false, false, 0);\r
+echo ":";\r
+makeSelect("newissue_aufwand_min", array("0", "15", "30", "45"), null, "selectbtn", null, 0, 0, null, false, 1, null, false, null, false, false, 0);\r
+?>\r
+</div>\r
+\r
+<div class="boxelem">\r
+<?php\r
+//fk_user\r
+$user_arr = getData($connect_dbms_handle, $selectFromDtUser);\r
+makeSelect("newissue_user", $user_arr, null, "selectbtn", null, 0, 0, $current_user, false, 1, null, true, "verfasst von: ", false, false, 0);\r
+?>\r
+</div>\r
+\r
+<div class="boxelem">\r
+<?php\r
+//fk_status\r
+$stati_arr = getData($connect_dbms_handle, $selectFromDtStatus);\r
+makeSelect("newissue_status", $stati_arr, null, "selectbtn", null, 0, 0, 9, false, 1, null, true, "Status: ", false, false, 0);\r
+?>\r
+</div>\r
+\r
+<div class="boxelem">\r
+<?php\r
+//fk_assignee\r
+makeSelect("newissue_assignee", $user_arr, null, "selectbtn", null, 0, 0, $current_user, false, 1, null, true, "zugewiesen an: ", false, false, 0);\r
+?>\r
+</div>\r
+\r
+<div class="boxelem">\r
+<?php\r
+//importance\r
+makeSelect("newissue_importance", null, null, "selectbtn", null, 1, 10, null, false, 1, null, true, "Wichtigkeit: ", false, false, 0);\r
+?>\r
+</div>\r
+\r
+<div class="boxelem">\r
+<?php\r
+//urgency\r
+makeSelect("newissue_dringlichkeit", null, null, "selectbtn", null, 1, 10, null, false, 1, null, true, "Dringlichkeit: ", false, false, 0);\r
+?>\r
+</div>\r
+\r
+<div class="boxelem center col2">\r
+<?php\r
+//comment\r
+makeTextarea("newissue_comment", null, null, "inputbtn", null, null, null, 100, 5, null, true, "Beschreibung: ", false, true, 0);\r
+?>\r
+</div>\r
+\r
+</div>\r
+<?php\r
+makeButton("newissue_save", "newissue_save", "jetzt speichern!", null, "btn", null, "submit", null, null, false, false, 0);\r
+makeButton("newissue_reset", "newissue_reset", "abbrechen", null, "btn", null, "reset", null, null, false, false, 0);\r
+?>\r
+</form>\r
+</body>\r
+</html>\r
+<?php\r
+closeDBConnection ( $connect_dbms_handle );\r
+\r
+?>
\ No newline at end of file
--- /dev/null
+<?php require_once '../ticket_glob_vars.php'; ?>\r
+<?php require_once 'lib/database_functions.php'; ?>\r
+<?php require_once 'lib/gui_functions.php'; ?>\r
+<?php require_once 'lib/util_functions.php'; ?>\r
+<?php\r
+$page = 'project.php';\r
+\r
+$i=0;\r
+\r
+require_once 'lib/header.php';\r
+\r
+if (isset($_POST) && count(array_keys($_POST)) > 0) {\r
+ \r
+ $issue = handleQuickUpdate($_POST, $connect_dbms_handle);\r
+ //echo $issue;\r
+ $project = getProjectIdOfIssue($connect_dbms_handle, $issue);\r
+ //echo $project;\r
+ $issues = getIssueOfProject($connect_dbms_handle, $project);\r
+ \r
+}\r
+\r
+if (isset($_GET)) {\r
+ if (isset($_GET['projectdetail'])) {\r
+ $project = $_GET['projectdetail'];\r
+ //echo $project;\r
+ $issues = getIssueOfProject($connect_dbms_handle, $project);\r
+ //var_dump($issues);\r
+ }\r
+}\r
+$stati_arr = getData($connect_dbms_handle, $selectFromDtStatus);\r
+//var_dump($stati_arr);\r
+\r
+?>\r
+\r
+<a href="newissue.php">neues Ticket</a> | <a href="index.php">alle Tickets</a>\r
+<div class="container">\r
+<?php\r
+foreach ($issues as $issue) {\r
+ getIssuebox ($issue, $connect_dbms_handle, $stati_arr, $page);\r
+}\r
+?>\r
+</div>\r
+\r
+</body>\r
+</html>\r
+<?php\r
+closeDBConnection ( $connect_dbms_handle );\r
+?>
\ No newline at end of file
--- /dev/null
+body {
+ font-size: 100.01%;
+ font-family: sans-serif, Verdana;
+}
+
+.container {
+ display: flex;
+ flex-wrap: wrap;
+}
+
+.issuebox {
+ background-color: #f8f8f8;
+ --width: 18em;
+ margin: 10px;
+ border: 1px solid #000000;
+ display: grid;
+ grid-template-columns: auto auto auto;
+ --row-gap: 0.5em;
+ gap: 0.25em;
+}
+
+.singleissue {
+ background-color: #f8f8f8;
+ --width: 18em;
+ margin: 10px;
+ border: 1px solid #000000;
+ display: grid;
+ grid-template-columns: auto auto;
+ --row-gap: 0.5em;
+ gap: 0.25em;
+}
+
+.boxelem {
+ --margin: 0.2em 0.1em;
+ padding: 0.2em 0.1em;
+ --border: 1px dotted #0000ff;
+ background-color: #ffffff;
+}
+
+.col2 {
+ grid-column: 1 / span 2;
+ --background-color: #ffddcc;
+}
+
+.col2ab2 {
+ grid-column: 2 / span 2;
+ --background-color: #ffddcc;
+}
+
+.col3 {
+ grid-column: 1 / span 3;
+ --background-color: #ffddcc;
+}
+
+.col4 {
+ grid-column: 1 / span 4;
+ --background-color: #ffddcc;
+}
+
+.keywords {
+ font-weight: 400;
+ font-size: 75%;
+}
+
+.headline {
+ background-color: #99fdfd;
+ font-weight: 700;
+ font-size: 125%;
+ text-align: center;
+}
+
+.datum {
+ font-size: 66.6%;
+}
+
+.boxelemdescr {
+ font-style: italic;
+ font-size: 85%;
+}
+
+.center {
+ text-align: center;
+}
+
+.right {
+ text-align: right;
+}
+
+.inputbtn {
+ border: 1px solid #000000;
+ background-color: #eeeeee;
+ font-size: inherit;
+ cursor: text;
+ display: inline-block;
+}
+
+.selectbtn {
+ border: 1px solid #000000;
+ background-color: #eeeeee;
+ font-size: inherit;
+ cursor: pointer;
+ display: inline-block;
+}
+
+.btn {
+ border: 1px solid #000000;
+ background-color: #fafada;
+ font-size: inherit;
+ cursor: pointer;
+ display: inline-block;
+}
+
+.link {
+ border: none;
+ text-decoration: none;
+ color: #000000;
+ background-color: inherit;
+ font-size: inherit;
+ cursor: pointer;
+ display: inline-block;
+}
+
+.link:hover {
+ background: #eeeeee;
+}
+/*
+.linkbtn {
+ border: none;
+ background-color: inherit;
+ font-size: inherit;
+ cursor: pointer;
+ display: inline-block;
+}
+
+.linkbtn:hover {
+ background: #eeeeee;
+}
+*/
+.tooltip {
+ position: relative;
+ display: inline-block;
+ --border-bottom: 1px dotted black;
+}
+
+.tooltip .tooltiptext {
+ visibility: hidden;
+ background-color: #f8f8f8;
+ border: 1px solid #99fdfd;
+ font-size: 75%;
+ text-align: center;
+ border-radius: 0.1em;
+ padding: 0.25em;
+
+ /* Position the tooltip */
+ position: absolute;
+ z-index: 1;
+}
+
+.tooltip:hover .tooltiptext {
+ visibility: visible;
+
+@media only screen and (min-width: 320px) {
+ body {
+ font-size: 200%;
+ }
+
+ .keywords {
+ font-size: 150%;
+ }
+
+ .tooltip .tooltiptext {
+ font-size: 150%;
+ }
+
+ .headline {
+ font-size: 250%;
+ }
+
+ .datum {
+ font-size: 133.3%;
+ }
+
+ .boxelemdescr {
+ font-size: 170%;
+ }
+ }
+}