From 641d6bae3377811943def68ee1496414e994a29d Mon Sep 17 00:00:00 2001 From: Jacob Date: Mon, 14 Oct 2019 11:58:59 +0100 Subject: [PATCH 01/45] next merge request --- AgentDiscoveries-Frontend/app/src/components/home.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AgentDiscoveries-Frontend/app/src/components/home.jsx b/AgentDiscoveries-Frontend/app/src/components/home.jsx index 353bab07..8abd7dae 100644 --- a/AgentDiscoveries-Frontend/app/src/components/home.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/home.jsx @@ -64,4 +64,4 @@ export default class Home extends React.Component { ); } -} +} \ No newline at end of file From 2597a246091a411c5e845911246fa08ef9de6620 Mon Sep 17 00:00:00 2001 From: zee Date: Mon, 14 Oct 2019 11:59:17 +0100 Subject: [PATCH 02/45] correct name --- demo-pull-request-doc.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo-pull-request-doc.txt b/demo-pull-request-doc.txt index 454d876d..a21f8c9e 100644 --- a/demo-pull-request-doc.txt +++ b/demo-pull-request-doc.txt @@ -3,4 +3,4 @@ Richard Tree Cami Mummery Jacob Craighead Zsolt Tekeres -Zee FishKing +Zee From cdf6cc525eb767bae14773d8bb31d5191971a094 Mon Sep 17 00:00:00 2001 From: Cami Date: Mon, 14 Oct 2019 12:24:49 +0100 Subject: [PATCH 03/45] Validating status code between 1 and 100 --- .../softwire/training/api/models/ReportApiModelBase.java | 6 +++--- .../api/routes/v1/LocationStatusReportsRoutes.java | 8 +++++++- .../java/org/softwire/training/models/ReportBase.java | 6 +++--- .../components/submit-forms/submit-location-report.jsx | 4 ++-- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/ReportApiModelBase.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/ReportApiModelBase.java index 6fe70b72..2887d896 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/ReportApiModelBase.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/ReportApiModelBase.java @@ -5,7 +5,7 @@ public class ReportApiModelBase { private int reportId; - private byte status; + private int status; private ZonedDateTime reportTime; private String reportBody; private int agentId; @@ -18,11 +18,11 @@ public void setReportId(int reportId) { this.reportId = reportId; } - public byte getStatus() { + public int getStatus() { return status; } - public void setStatus(byte status) { + public void setStatus(int status) { this.status = status; } diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationStatusReportsRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationStatusReportsRoutes.java index bfbfbad9..f3255a32 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationStatusReportsRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationStatusReportsRoutes.java @@ -44,9 +44,14 @@ protected LocationStatusReport validateThenMap(LocationStatusReportApiModel apiM LocalDateTime reportTimeUtc = LocalDateTime.now(ZoneOffset.UTC); LocationStatusReport model = new LocationStatusReport(); + model.setStatus(apiModel.getStatus()); + + if (model.getStatus() > 100 || model.getStatus() <= 0){ + throw new FailedRequestException(ErrorCode.UNKNOWN_ERROR, "Status code must be between 1 and 100."); + } + model.setAgentId(apiModel.getAgentId()); model.setLocationId(apiModel.getLocationId()); - model.setStatus(apiModel.getStatus()); model.setReportTime(reportTimeUtc); model.setReportBody(apiModel.getReportBody()); model.setReportTitle(apiModel.getReportTitle()); @@ -69,6 +74,7 @@ private LocationStatusReportApiModel mapReportAndTimezoneToApiModel(LocationStat ZoneId locationTimeZone = ZoneId.of(timeZone); + apiModel.setReportId(model.getReportId()); apiModel.setReportTitle(model.getReportTitle()); apiModel.setAgentId(model.getAgentId()); diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/models/ReportBase.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/models/ReportBase.java index 58e3e71f..d43125b2 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/models/ReportBase.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/models/ReportBase.java @@ -7,7 +7,7 @@ public class ReportBase { private int reportId; - private byte status; + private int status; private LocalDateTime reportTime; // Always UTC in the DB private String reportBody; private int agentId; @@ -24,11 +24,11 @@ public void setReportId(int reportId) { } @Column(name = "status", nullable = false) - public byte getStatus() { + public int getStatus() { return status; } - public void setStatus(byte status) { + public void setStatus(int status) { this.status = status; } diff --git a/AgentDiscoveries-Frontend/app/src/components/submit-forms/submit-location-report.jsx b/AgentDiscoveries-Frontend/app/src/components/submit-forms/submit-location-report.jsx index e8fadeba..5166ea97 100644 --- a/AgentDiscoveries-Frontend/app/src/components/submit-forms/submit-location-report.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/submit-forms/submit-location-report.jsx @@ -56,7 +56,7 @@ export default class LocationReportSubmit extends React.Component { Status @@ -64,7 +64,7 @@ export default class LocationReportSubmit extends React.Component { Title Date: Mon, 14 Oct 2019 12:32:12 +0100 Subject: [PATCH 04/45] removal of an extra line --- .../training/api/routes/v1/LocationStatusReportsRoutes.java | 1 - 1 file changed, 1 deletion(-) diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationStatusReportsRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationStatusReportsRoutes.java index f3255a32..f2ff0105 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationStatusReportsRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationStatusReportsRoutes.java @@ -74,7 +74,6 @@ private LocationStatusReportApiModel mapReportAndTimezoneToApiModel(LocationStat ZoneId locationTimeZone = ZoneId.of(timeZone); - apiModel.setReportId(model.getReportId()); apiModel.setReportTitle(model.getReportTitle()); apiModel.setAgentId(model.getAgentId()); From 372e03e1d64be16a9709a0ee437c44c4817e5513 Mon Sep 17 00:00:00 2001 From: zee Date: Mon, 14 Oct 2019 16:08:50 +0100 Subject: [PATCH 05/45] pulling info from api --- AgentDiscoveries-Backend/pom.xml | 16 +++++++++++++- .../training/AgentDiscoveriesApplication.java | 3 ++- .../api/models/MostWantedApiModel.java | 22 +++++++++++++++++++ .../api/models/MostWantedWrapper.java | 7 ++++++ .../training/api/routes/v1/AgentsRoutes.java | 16 ++++++++++++++ .../training/api/routes/v1/UsersRoutes.java | 1 + .../main/resources/META-INF/persistence.xml | 4 ++-- .../src/main/resources/config.properties | 4 ++-- .../app/src/components/nav.jsx | 4 ++++ 9 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/MostWantedApiModel.java create mode 100644 AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/MostWantedWrapper.java diff --git a/AgentDiscoveries-Backend/pom.xml b/AgentDiscoveries-Backend/pom.xml index 9f57adb9..f28a8fae 100644 --- a/AgentDiscoveries-Backend/pom.xml +++ b/AgentDiscoveries-Backend/pom.xml @@ -203,8 +203,22 @@ guava 24.0-jre + + org.glassfish.jersey.core + jersey-client + 2.26 + + + org.glassfish.jersey.inject + jersey-hk2 + 2.26 + + + org.glassfish.jersey.media + jersey-media-json-jackson + 2.26 + - diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/AgentDiscoveriesApplication.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/AgentDiscoveriesApplication.java index 82003916..eb5cc40d 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/AgentDiscoveriesApplication.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/AgentDiscoveriesApplication.java @@ -55,9 +55,9 @@ public void run() { // Serve the static assets from the frontend project staticFileLocation("/frontend"); - // Setup of all the routes path("/v1", () -> { + get("/mostwanted", (req, res) -> agentsRoutes.mostWanted(req, res), responseTransformer); // Endpoint used to get an authorisation token post("/token", tokenRoutes::createToken, responseTransformer); path("/api", () -> { @@ -118,6 +118,7 @@ private void agentsRouteGroup() { get("/:id", (req, res) -> agentsRoutes.readAgent(req, res, idParamAsInt(req)), responseTransformer); put("/:id", (req, res) -> agentsRoutes.updateAgent(req, res, idParamAsInt(req)), responseTransformer); put("/editcallsign/:id", (req, res) -> agentsRoutes.editCallSign(req, res, idParamAsInt(req)), responseTransformer); + put("/mostwanted/:id", (req, res) -> agentsRoutes.editCallSign(req, res, idParamAsInt(req)), responseTransformer); delete("/:id", (req, res) -> agentsRoutes.deleteAgent(req, res, idParamAsInt(req)), responseTransformer); get("", (req, res) -> agentsRoutes.readAgents(req, res), responseTransformer); } diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/MostWantedApiModel.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/MostWantedApiModel.java new file mode 100644 index 00000000..10cd9293 --- /dev/null +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/MostWantedApiModel.java @@ -0,0 +1,22 @@ +package org.softwire.training.api.models; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class MostWantedApiModel { + String title; + String description; + String image; + + public String getTitle() { + return title; + } + + public String getDescription() { + return description; + } + + public String getImage() { + return image; + } +} diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/MostWantedWrapper.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/MostWantedWrapper.java new file mode 100644 index 00000000..0e65ce9b --- /dev/null +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/MostWantedWrapper.java @@ -0,0 +1,7 @@ +package org.softwire.training.api.models; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class MostWantedWrapper { + public MostWantedApiModel[] items; +} diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java index 22598484..929c5520 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java @@ -1,16 +1,22 @@ package org.softwire.training.api.routes.v1; +import javax.ws.rs.client.Client; +import javax.ws.rs.client.ClientBuilder; import org.apache.commons.lang3.StringUtils; +import org.glassfish.jersey.jackson.JacksonFeature; import org.softwire.training.api.core.JsonRequestUtils; import org.softwire.training.api.core.PermissionsVerifier; import org.softwire.training.api.models.ErrorCode; import org.softwire.training.api.models.FailedRequestException; +import org.softwire.training.api.models.MostWantedApiModel; +import org.softwire.training.api.models.MostWantedWrapper; import org.softwire.training.db.daos.AgentsDao; import org.softwire.training.models.Agent; import spark.Request; import spark.Response; import javax.inject.Inject; +import javax.ws.rs.core.MediaType; import java.util.List; import java.time.LocalDate; import java.util.NoSuchElementException; @@ -82,4 +88,14 @@ public Agent editCallSign (Request req, Response res, int agentID) { agentsDao.updateAgent(agent); return agent; } + + public MostWantedApiModel[] mostWanted (Request req, Response res) { + Client client = ClientBuilder.newBuilder().register(JacksonFeature.class).hostnameVerifier((s1, s2) -> true).build(); + MostWantedWrapper mostwanted = client + .target("https://api.fbi.gov/@wanted?pageSize=10&page=1&sort_on=publication&sort_order=desc&person_classification=main&status=na") + .request(MediaType.APPLICATION_JSON_TYPE) + .get(MostWantedWrapper.class); + System.out.println(mostwanted.items); + return mostwanted.items; + } } diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/UsersRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/UsersRoutes.java index ab25bae5..3a4d3820 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/UsersRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/UsersRoutes.java @@ -14,6 +14,7 @@ import spark.utils.StringUtils; import javax.inject.Inject; +import java.util.ArrayList; import java.util.List; import java.util.Optional; diff --git a/AgentDiscoveries-Backend/src/main/resources/META-INF/persistence.xml b/AgentDiscoveries-Backend/src/main/resources/META-INF/persistence.xml index c6b3968b..baed554c 100644 --- a/AgentDiscoveries-Backend/src/main/resources/META-INF/persistence.xml +++ b/AgentDiscoveries-Backend/src/main/resources/META-INF/persistence.xml @@ -7,8 +7,8 @@ - - + + diff --git a/AgentDiscoveries-Backend/src/main/resources/config.properties b/AgentDiscoveries-Backend/src/main/resources/config.properties index db0ac4e3..d3b07414 100644 --- a/AgentDiscoveries-Backend/src/main/resources/config.properties +++ b/AgentDiscoveries-Backend/src/main/resources/config.properties @@ -1,8 +1,8 @@ # Database properties database.url = jdbc:mysql://localhost:3306/agentdiscoveries?useSSL=false -database.username = CIA -database.password = Amex1234 +database.username = agentdiscoveries +database.password = agentdiscoveries database.picture.bytes-limit = 1048576 database.picture.allowed-content-types = image/png, image/jpg, image/jpeg diff --git a/AgentDiscoveries-Frontend/app/src/components/nav.jsx b/AgentDiscoveries-Frontend/app/src/components/nav.jsx index eb6e0cb4..7b4b5933 100644 --- a/AgentDiscoveries-Frontend/app/src/components/nav.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/nav.jsx @@ -86,6 +86,10 @@ export default class NavigationBar extends React.Component { Today's Message +{/* //TODO */} + + Most Wanted + ); } From 91b401279e43db9eb87512f8bbf881b2ae0ccdb0 Mon Sep 17 00:00:00 2001 From: Cami Date: Mon, 14 Oct 2019 16:14:00 +0100 Subject: [PATCH 06/45] submitters local time displayed --- .../components/search-forms/search-result.jsx | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx b/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx index 24d2649f..cbe87681 100644 --- a/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx @@ -1,5 +1,6 @@ import * as React from 'react'; import {Panel} from 'react-bootstrap'; +import moment from 'moment-timezone'; export default class SearchResult extends React.Component { render() { @@ -24,10 +25,37 @@ export default class SearchResult extends React.Component { renderResultBody(result) { return Object.keys(result).map(key => { + if(this.isADate(result[key])){ + const time = moment(result[key]).format(); + console.log("TIME") + console.log(time) + + //console.log(time.format()); + //console.log(time.clone().tz("Europe/London").format()); + + return ( +
+

{`${key}: ${result[key]}`}

+

timeInSubmittersTimeZone: {time}

+
+ ); + + } + + console.log(); + return

{`${key}: ${result[key]}`}

; }); } + isADate(date){ + date = moment(date) + + console.log(date) + + return (date.isValid() && (date.year() !== 1970)) + } + getResultsHeader(results) { return results.length > 0 ? (results.length === 1 From d4e7b8d3d13dfb53102c922b59d86cd8ff6355af Mon Sep 17 00:00:00 2001 From: Cami Date: Mon, 14 Oct 2019 16:18:52 +0100 Subject: [PATCH 07/45] removing logs and extra lines --- .../app/src/components/search-forms/search-result.jsx | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx b/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx index cbe87681..93fd02a7 100644 --- a/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx @@ -27,11 +27,6 @@ export default class SearchResult extends React.Component { return Object.keys(result).map(key => { if(this.isADate(result[key])){ const time = moment(result[key]).format(); - console.log("TIME") - console.log(time) - - //console.log(time.format()); - //console.log(time.clone().tz("Europe/London").format()); return (
@@ -41,18 +36,12 @@ export default class SearchResult extends React.Component { ); } - - console.log(); - return

{`${key}: ${result[key]}`}

; }); } isADate(date){ date = moment(date) - - console.log(date) - return (date.isValid() && (date.year() !== 1970)) } From daee59ac49d8daf13bb9965665d82124e27ac939 Mon Sep 17 00:00:00 2001 From: Cami Date: Mon, 14 Oct 2019 16:50:00 +0100 Subject: [PATCH 08/45] formatting times --- .../app/src/components/search-forms/search-result.jsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx b/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx index 93fd02a7..e65e2cad 100644 --- a/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx @@ -26,7 +26,7 @@ export default class SearchResult extends React.Component { renderResultBody(result) { return Object.keys(result).map(key => { if(this.isADate(result[key])){ - const time = moment(result[key]).format(); + const time = moment(result[key]).format('H:mm:ss'); return (
@@ -34,7 +34,6 @@ export default class SearchResult extends React.Component {

timeInSubmittersTimeZone: {time}

); - } return

{`${key}: ${result[key]}`}

; }); From 0381454bcbd762ca75d39c651d8b2300c9f34349 Mon Sep 17 00:00:00 2001 From: Cami Date: Tue, 15 Oct 2019 10:55:09 +0100 Subject: [PATCH 09/45] fixing more of the local time stuff --- .../training/api/core/CustomisedGsonBuilder.java | 3 +++ .../app/src/components/search-forms/search-result.jsx | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/core/CustomisedGsonBuilder.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/core/CustomisedGsonBuilder.java index 8a10b5ad..140e3fa8 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/core/CustomisedGsonBuilder.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/core/CustomisedGsonBuilder.java @@ -7,9 +7,11 @@ import org.softwire.training.api.models.UserApiModel; import java.io.IOException; import java.time.LocalDate; +import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; +import java.util.TimeZone; public class CustomisedGsonBuilder { @@ -73,6 +75,7 @@ private static class ZonedDateTimeAdapter extends TypeAdapter { @Override public void write(JsonWriter jsonWriter, ZonedDateTime localDateTime) throws IOException { + if (localDateTime == null) { jsonWriter.nullValue(); } else { diff --git a/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx b/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx index e65e2cad..22a80089 100644 --- a/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx @@ -24,17 +24,19 @@ export default class SearchResult extends React.Component { } renderResultBody(result) { - return Object.keys(result).map(key => { + return Object.keys(result).map((key) => { + if(this.isADate(result[key])){ const time = moment(result[key]).format('H:mm:ss'); return ( -
-

{`${key}: ${result[key]}`}

-

timeInSubmittersTimeZone: {time}

+
+

{`${key}: ${result[key]}`}

+

Reporter's Local Time: {time}

); } + return

{`${key}: ${result[key]}`}

; }); } From af116601a328bcfc0697b15c51f381be9b4c3f27 Mon Sep 17 00:00:00 2001 From: zsolttek Date: Tue, 15 Oct 2019 11:12:12 +0100 Subject: [PATCH 10/45] NavBar got Fourmoms on --- .../db/migration/V10__Message_board.sql | 6 + .../app/src/components/nav.jsx | 6 + .../submit-forms/submit-message.jsx | 146 ++++++++++++++++++ 3 files changed, 158 insertions(+) create mode 100644 AgentDiscoveries-Backend/src/main/resources/db/migration/V10__Message_board.sql create mode 100644 AgentDiscoveries-Frontend/app/src/components/submit-forms/submit-message.jsx diff --git a/AgentDiscoveries-Backend/src/main/resources/db/migration/V10__Message_board.sql b/AgentDiscoveries-Backend/src/main/resources/db/migration/V10__Message_board.sql new file mode 100644 index 00000000..5b2515b9 --- /dev/null +++ b/AgentDiscoveries-Backend/src/main/resources/db/migration/V10__Message_board.sql @@ -0,0 +1,6 @@ +create table messages ( + MessageID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, + Message VARCHAR(255) NOT NULL, + UserID INT NULL, + FOREIGN KEY fk_messages_user_id (UserID) REFERENCES users(user_id) ON DELETE SET NULL +); \ No newline at end of file diff --git a/AgentDiscoveries-Frontend/app/src/components/nav.jsx b/AgentDiscoveries-Frontend/app/src/components/nav.jsx index eb6e0cb4..c17bc20b 100644 --- a/AgentDiscoveries-Frontend/app/src/components/nav.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/nav.jsx @@ -86,6 +86,9 @@ export default class NavigationBar extends React.Component { Today's Message + + Forum + ); } @@ -111,6 +114,9 @@ export default class NavigationBar extends React.Component { Region Summaries + + Forum + ); diff --git a/AgentDiscoveries-Frontend/app/src/components/submit-forms/submit-message.jsx b/AgentDiscoveries-Frontend/app/src/components/submit-forms/submit-message.jsx new file mode 100644 index 00000000..3d2553e4 --- /dev/null +++ b/AgentDiscoveries-Frontend/app/src/components/submit-forms/submit-message.jsx @@ -0,0 +1,146 @@ +import * as React from 'react'; +import {Button, Checkbox, ControlLabel, Form, FormControl, FormGroup} from 'react-bootstrap'; +import {apiGet, apiPost} from '../utilities/request-helper'; +import {Messages} from '../message'; + + +export default class Message extends React.Component { + constructor(props) { + super(props); + + this.state = { + locations: [], + + locationId: '', + status: '', + reportTitle: '', + reportBody: '', + sendExternal: false, + + messages: [] + }; + + this.onLocationChange = this.onLocationChange.bind(this); + this.onStatusChange = this.onStatusChange.bind(this); + this.onReportBodyChange = this.onReportBodyChange.bind(this); + this.onReportTitleChange = this.onReportTitleChange.bind(this); + this.onExternalChange = this.onExternalChange.bind(this); + this.onSubmit = this.onSubmit.bind(this); + } + + componentWillMount() { + apiGet('locations') + .then(results => this.setState({ locations: results })) + .catch(() => this.addMessage('Error fetching locations, please try again later', 'danger')); + } + + render() { + return ( +
+
+

Submit Location Report

+ + + + + Location + + + {this.state.locations.map(location => + )} + + + + Status + + + + Title + + + + Report + + + + + Send to external partner + + + + +
+ ); + } + + onLocationChange(event) { + this.setState({ locationId: event.target.value && parseInt(event.target.value) }); + } + + onStatusChange(event) { + this.setState({ status: event.target.value && parseInt(event.target.value) }); + } + + onReportBodyChange(event) { + this.setState({ reportBody: event.target.value }); + } + onReportTitleChange(event) { + this.setState({ reportTitle: event.target.value}); + } + + onExternalChange(event) { + this.setState({ sendExternal: event.target.checked }); + } + + onSubmit(event) { + event.preventDefault(); + + this.setState({ messages: [] }); + + const body = { + locationId: this.state.locationId, + status: this.state.status, + reportBody: this.state.reportBody, + reportTitle: this.state.reportTitle, + sendExternal: this.state.sendExternal + }; + + apiPost('reports/locationstatuses', body) + .then(() => this.addMessage('Report submitted', 'info')) + .catch(() => this.addMessage('Error submitting report, please try again later', 'danger')); + + if (this.state.sendExternal) { + apiPost('external/reports', body) + .then(() => this.addMessage('Report submitted to external partner', 'info')) + .catch(() => this.addMessage('Error submitting report externally, please try again later', 'danger')); + } + } + + addMessage(message, type) { + this.setState(oldState => { + return { messages: [...oldState.messages, { message: message, type: type }] }; + }); + } +} From 4dc9ba2fbc63aef6264a5d9db9e83bfced86256a Mon Sep 17 00:00:00 2001 From: zsolttek Date: Tue, 15 Oct 2019 11:15:54 +0100 Subject: [PATCH 11/45] NavBar Done for fourm --- AgentDiscoveries-Frontend/app/src/components/nav.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AgentDiscoveries-Frontend/app/src/components/nav.jsx b/AgentDiscoveries-Frontend/app/src/components/nav.jsx index c17bc20b..fd5a952d 100644 --- a/AgentDiscoveries-Frontend/app/src/components/nav.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/nav.jsx @@ -114,10 +114,10 @@ export default class NavigationBar extends React.Component { Region Summaries - - Forum - + + Forum + ); } From c63d50ad5bcde65bf938712748c22bca4401aabb Mon Sep 17 00:00:00 2001 From: zee Date: Tue, 15 Oct 2019 11:22:32 +0100 Subject: [PATCH 12/45] most wanted suspect images --- .../training/api/models/MostWantedApiModel.java | 6 +++--- .../api/models/MostWantedSuspectImage.java | 12 ++++++++++++ .../training/api/routes/v1/AgentsRoutes.java | 15 +++++++++------ .../app/src/components/nav.jsx | 1 - 4 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/MostWantedSuspectImage.java diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/MostWantedApiModel.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/MostWantedApiModel.java index 10cd9293..672d2b64 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/MostWantedApiModel.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/MostWantedApiModel.java @@ -6,7 +6,7 @@ public class MostWantedApiModel { String title; String description; - String image; + MostWantedSuspectImage[] images; public String getTitle() { return title; @@ -16,7 +16,7 @@ public String getDescription() { return description; } - public String getImage() { - return image; + public MostWantedSuspectImage[] getImages() { + return images; } } diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/MostWantedSuspectImage.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/MostWantedSuspectImage.java new file mode 100644 index 00000000..474cad54 --- /dev/null +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/models/MostWantedSuspectImage.java @@ -0,0 +1,12 @@ +package org.softwire.training.api.models; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class MostWantedSuspectImage { + String original; + + public String getOriginal() { + return original; + } +} diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java index 929c5520..05c572a7 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java @@ -6,10 +6,7 @@ import org.glassfish.jersey.jackson.JacksonFeature; import org.softwire.training.api.core.JsonRequestUtils; import org.softwire.training.api.core.PermissionsVerifier; -import org.softwire.training.api.models.ErrorCode; -import org.softwire.training.api.models.FailedRequestException; -import org.softwire.training.api.models.MostWantedApiModel; -import org.softwire.training.api.models.MostWantedWrapper; +import org.softwire.training.api.models.*; import org.softwire.training.db.daos.AgentsDao; import org.softwire.training.models.Agent; import spark.Request; @@ -92,10 +89,16 @@ public Agent editCallSign (Request req, Response res, int agentID) { public MostWantedApiModel[] mostWanted (Request req, Response res) { Client client = ClientBuilder.newBuilder().register(JacksonFeature.class).hostnameVerifier((s1, s2) -> true).build(); MostWantedWrapper mostwanted = client - .target("https://api.fbi.gov/@wanted?pageSize=10&page=1&sort_on=publication&sort_order=desc&person_classification=main&status=na") + .target("https://api.fbi.gov/@wanted?pageSize=10&page=1&sort_on=modified&sort_order=desc&person_classification=main&status=na") .request(MediaType.APPLICATION_JSON_TYPE) .get(MostWantedWrapper.class); - System.out.println(mostwanted.items); + +// List myList = new ArrayList<>(); +// +// for (MostWantedWrapper : mostwanted) +// { +// +// } return mostwanted.items; } } diff --git a/AgentDiscoveries-Frontend/app/src/components/nav.jsx b/AgentDiscoveries-Frontend/app/src/components/nav.jsx index 7b4b5933..434de7c0 100644 --- a/AgentDiscoveries-Frontend/app/src/components/nav.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/nav.jsx @@ -86,7 +86,6 @@ export default class NavigationBar extends React.Component { Today's Message -{/* //TODO */} Most Wanted From b8ba8984cc13b51c5636d773b9274623efde402a Mon Sep 17 00:00:00 2001 From: Cami Date: Tue, 15 Oct 2019 14:22:44 +0100 Subject: [PATCH 13/45] error message works for incorrect timezone --- .../training/api/routes/v1/LocationsRoutes.java | 1 + .../app/src/components/admin/location-form.jsx | 10 +++++++++- .../app/src/components/utilities/request-helper.js | 10 ++++++++-- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationsRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationsRoutes.java index e5ce865d..b3e45faa 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationsRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationsRoutes.java @@ -60,6 +60,7 @@ public List readEntities(Request req, Response res){ @Override public Location updateEntity(Request req, Response res, int id) { + Location location = JsonRequestUtils.readBodyAsType(req, Location.class); if (location.getLocationId() != id && location.getLocationId() != 0) { diff --git a/AgentDiscoveries-Frontend/app/src/components/admin/location-form.jsx b/AgentDiscoveries-Frontend/app/src/components/admin/location-form.jsx index 8dec0c74..343ad59c 100644 --- a/AgentDiscoveries-Frontend/app/src/components/admin/location-form.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/admin/location-form.jsx @@ -139,7 +139,9 @@ export default class LocationForm extends React.Component { request .then(() => window.location.hash = '#/admin/locations') - .catch(error => this.setState({ message: { message: error.message, type: 'danger' } })); + .catch(error => { + this.handleError(error) + }); } loadLocation(id) { @@ -147,4 +149,10 @@ export default class LocationForm extends React.Component { .then(result => this.setState(result)) .catch(error => this.setState({ message: { message: error.message, type: 'danger' } })); } + + + handleError(error){ + error.response.json().then(result => { + this.setState({ message: { message: result.message, type: 'danger' } }); + })} } diff --git a/AgentDiscoveries-Frontend/app/src/components/utilities/request-helper.js b/AgentDiscoveries-Frontend/app/src/components/utilities/request-helper.js index 901b836f..52f225d6 100644 --- a/AgentDiscoveries-Frontend/app/src/components/utilities/request-helper.js +++ b/AgentDiscoveries-Frontend/app/src/components/utilities/request-helper.js @@ -25,7 +25,13 @@ export function apiRequest(apiPath, method, body) { } else { throw new ApiError(response); } - }); + }) +// .catch(error => { +// error.response.json().then(result => { +// throw new Error(result.message); +// console.log(result); +// }) +// }) } // Generic API request methods. Non-POST methods may take an optional 'id' @@ -41,7 +47,7 @@ export function apiPost(apiPath, body) { export function apiPut(apiPath, body, id) { const path = id ? `${apiPath}/${id}` : apiPath; - return apiRequest(path, 'PUT', body); + return apiRequest(path, 'PUT', body) } export function apiDelete(apiPath, id) { From 20df72203261c215780eb7ccecba5d06bc27c7d3 Mon Sep 17 00:00:00 2001 From: Jack Mead Date: Tue, 15 Oct 2019 15:36:41 +0100 Subject: [PATCH 14/45] Add json transformer to token check to prevent console warning --- .../java/org/softwire/training/AgentDiscoveriesApplication.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/AgentDiscoveriesApplication.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/AgentDiscoveriesApplication.java index 82003916..b70268fc 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/AgentDiscoveriesApplication.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/AgentDiscoveriesApplication.java @@ -63,7 +63,7 @@ public void run() { path("/api", () -> { before("/*", tokenRoutes::validateToken); - get("/checktoken", (req, res) -> "Token is valid"); + get("/checktoken", (req, res) -> "Token is valid", responseTransformer); path("/legacy", () -> { before("/*", (request, response) -> response.type("text/plain")); From 18e1a6b6cd58650ddf8bb03440506c37bfab3da0 Mon Sep 17 00:00:00 2001 From: Cami Date: Tue, 15 Oct 2019 15:47:58 +0100 Subject: [PATCH 15/45] error messages should now print correctly --- .../training/api/routes/v1/AgentsRoutes.java | 24 +++++++++++++++---- .../api/routes/v1/LocationsRoutes.java | 11 ++++++++- .../training/api/routes/v1/RegionsRoutes.java | 4 ++++ .../training/api/routes/v1/UsersRoutes.java | 6 +++++ .../src/components/admin/location-form.jsx | 10 ++++++-- .../app/src/components/admin/region-form.jsx | 11 +++++++-- .../app/src/components/admin/user-form.jsx | 11 ++++++--- 7 files changed, 65 insertions(+), 12 deletions(-) diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java index 22598484..451a45d8 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java @@ -1,6 +1,7 @@ package org.softwire.training.api.routes.v1; import org.apache.commons.lang3.StringUtils; +import org.eclipse.jetty.server.Authentication; import org.softwire.training.api.core.JsonRequestUtils; import org.softwire.training.api.core.PermissionsVerifier; import org.softwire.training.api.models.ErrorCode; @@ -54,11 +55,26 @@ public List readAgents(Request req, Response res) { public Agent updateAgent(Request req, Response res, int id) { permissionsVerifier.verifyIsAdminOrRelevantAgent(req, id); - Agent agent = JsonRequestUtils.readBodyAsType(req, Agent.class); - agent.setAgentId(id); - agentsDao.updateAgent(agent); - return agent; + try{ + Agent agent = JsonRequestUtils.readBodyAsType(req, Agent.class); + + agent.setAgentId(id); + agentsDao.updateAgent(agent); + + if (agent.getFirstName().length() > 20){ + throw new FailedRequestException(ErrorCode.INVALID_INPUT, "first name too long (max 20 characters)"); + } + + if (agent.getLastName().length() > 20){ + throw new FailedRequestException(ErrorCode.INVALID_INPUT, "Last name too long (max 20 characters)"); + } + + return agent; + } catch (Exception e){ + throw new FailedRequestException(ErrorCode.INVALID_INPUT, "Rank is too high (max 11 digits)."); + } + } public Object deleteAgent(Request req, Response res, int id) { diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationsRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationsRoutes.java index b3e45faa..c582ca8c 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationsRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationsRoutes.java @@ -1,11 +1,13 @@ package org.softwire.training.api.routes.v1; +import org.eclipse.jetty.server.Authentication; import org.softwire.training.api.core.JsonRequestUtils; import org.softwire.training.api.core.PermissionsVerifier; import org.softwire.training.api.models.ErrorCode; import org.softwire.training.api.models.FailedRequestException; import org.softwire.training.db.daos.LocationsDao; import org.softwire.training.models.Location; +import org.softwire.training.db.daos.RegionsDao; import spark.Request; import spark.Response; import spark.utils.StringUtils; @@ -14,16 +16,19 @@ import java.time.DateTimeException; import java.time.ZoneId; import java.util.List; +import java.util.Optional; public class LocationsRoutes implements EntityCRUDRoutes { private final LocationsDao locationsDao; private final PermissionsVerifier permissionsVerifier; + private final RegionsDao regionsDao; @Inject - public LocationsRoutes(LocationsDao locationsDao, PermissionsVerifier permissionsVerifier) { + public LocationsRoutes(LocationsDao locationsDao, PermissionsVerifier permissionsVerifier, RegionsDao regionsDao) { this.locationsDao = locationsDao; this.permissionsVerifier = permissionsVerifier; + this.regionsDao = regionsDao; } @Override @@ -77,6 +82,10 @@ public Location updateEntity(Request req, Response res, int id) { private void validateLocationModel(Location location) { + if(regionsDao.getRegion(location.getRegionId()).equals(Optional.empty())){ + throw new FailedRequestException(ErrorCode.INVALID_INPUT, "how dare you"); + } + if (location.getSiteName().length() > 20) { throw new FailedRequestException(ErrorCode.INVALID_INPUT, "site name is too long (max 20 chars)."); } diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/RegionsRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/RegionsRoutes.java index 85705715..8eee7744 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/RegionsRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/RegionsRoutes.java @@ -33,6 +33,10 @@ public Region createRegion(Request req, Response res) { throw new FailedRequestException(ErrorCode.INVALID_INPUT, "regionId cannot be specified on create"); } + if (region.getName().length() > 50) { + throw new FailedRequestException(ErrorCode.INVALID_INPUT, "Region name too long (50 characters max)."); + } + int newRegionId = regionsDao.createRegion(region); // Create requests should return 201 diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/UsersRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/UsersRoutes.java index ab25bae5..b1a0be3a 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/UsersRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/UsersRoutes.java @@ -41,12 +41,18 @@ public UserApiModel createEntity(Request req, Response res) { throw new FailedRequestException(ErrorCode.INVALID_INPUT, "userId cannot be specified on create"); } + if (userApiModel.getUsername().length() > 20){ + throw new FailedRequestException(ErrorCode.INVALID_INPUT, "Username cannot be greater than 20 characters."); + + } + User user = new User( userApiModel.getUsername(), passwordHasher.hashPassword(userApiModel.getPassword()), userApiModel.isAdmin(), userApiModel.getAgentId()); + int newUserId = usersDao.addUser(user); // Set the userId and for security remove the password diff --git a/AgentDiscoveries-Frontend/app/src/components/admin/location-form.jsx b/AgentDiscoveries-Frontend/app/src/components/admin/location-form.jsx index 343ad59c..1dc76491 100644 --- a/AgentDiscoveries-Frontend/app/src/components/admin/location-form.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/admin/location-form.jsx @@ -118,7 +118,11 @@ export default class LocationForm extends React.Component { } onRegionIdChange(event) { - this.setState({ regionId: parseInt(event.target.value) }); + if(event.target.value < 100000 ){ + const newRegionId = event.target.value === '' ? null : event.target.value; + this.setState({ regionId: newRegionId }); + } + // this.setState({ regionId: parseInt(event.target.value) }); } onSubmit(event) { @@ -147,7 +151,9 @@ export default class LocationForm extends React.Component { loadLocation(id) { apiGet('locations', id) .then(result => this.setState(result)) - .catch(error => this.setState({ message: { message: error.message, type: 'danger' } })); + .catch(error => { + this.handleError(error) + }); } diff --git a/AgentDiscoveries-Frontend/app/src/components/admin/region-form.jsx b/AgentDiscoveries-Frontend/app/src/components/admin/region-form.jsx index e833347c..7029e0b5 100644 --- a/AgentDiscoveries-Frontend/app/src/components/admin/region-form.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/admin/region-form.jsx @@ -61,12 +61,19 @@ export default class RegionForm extends React.Component { request .then(() => window.location.hash = '#/admin/regions') - .catch(error => this.setState({ message: { message: error.message, type: 'danger' } })); + .catch(error => this.handleError(error)); } loadRegion(id) { apiGet('regions', id) .then(result => this.setState({ name: result.name, locations: result.locations.join(', ') })) - .catch(error => this.setState({ message: { message: error.message, type: 'danger' } })); + .catch(error => this.handleError(error)); } + + handleError(error){ + error.response.json().then(result => { + console.log(result); + this.setState({ message: { message: result.message, type: 'danger' } }); + })} + } diff --git a/AgentDiscoveries-Frontend/app/src/components/admin/user-form.jsx b/AgentDiscoveries-Frontend/app/src/components/admin/user-form.jsx index b185eecf..17c9ec63 100644 --- a/AgentDiscoveries-Frontend/app/src/components/admin/user-form.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/admin/user-form.jsx @@ -123,7 +123,7 @@ export default class UserForm extends React.Component { : apiPost('users', user); }) .then(() => window.location.hash = '#/admin/users') - .catch(error => this.setState({ message: { message: error.message, type: 'danger' } })); + .catch(error => this.handleError(error)); } loadUser(id) { @@ -134,12 +134,17 @@ export default class UserForm extends React.Component { this.loadAgent(result.agentId); } }) - .catch(error => this.setState({ message: { message: error.message, type: 'danger' } })); + .catch(error => this.handleError(error)); } loadAgent(id) { apiGet('agents', id) .then(result => this.setState({ isAgent: true, agent: result })) - .catch(error => this.setState({ message: { message: error.message, type: 'danger' } })); + .catch(error => this.handleError(error)); } + + handleError(error){ + error.response.json().then(result => { + this.setState({ message: { message: result.message, type: 'danger' } }); + })} } From d0f784b17d45004d50f652d9ae37b054dbe5cdf5 Mon Sep 17 00:00:00 2001 From: Cami Date: Tue, 15 Oct 2019 15:52:31 +0100 Subject: [PATCH 16/45] fixing a error message instead of how dare you --- .../org/softwire/training/api/routes/v1/LocationsRoutes.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationsRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationsRoutes.java index c582ca8c..71ba363f 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationsRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/LocationsRoutes.java @@ -83,7 +83,7 @@ public Location updateEntity(Request req, Response res, int id) { private void validateLocationModel(Location location) { if(regionsDao.getRegion(location.getRegionId()).equals(Optional.empty())){ - throw new FailedRequestException(ErrorCode.INVALID_INPUT, "how dare you"); + throw new FailedRequestException(ErrorCode.INVALID_INPUT, "this regionId doesn't exist, try again"); } if (location.getSiteName().length() > 20) { From 5e7f5fa9b323de4943b8afc35a1905aee93381b1 Mon Sep 17 00:00:00 2001 From: Cami Date: Tue, 15 Oct 2019 15:55:55 +0100 Subject: [PATCH 17/45] the errors should be sorted, the catch is seperate for rank --- .../training/api/routes/v1/AgentsRoutes.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java index 451a45d8..b3256c8c 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java @@ -58,23 +58,25 @@ public Agent updateAgent(Request req, Response res, int id) { try{ Agent agent = JsonRequestUtils.readBodyAsType(req, Agent.class); + } catch (Exception e){ + throw new FailedRequestException(ErrorCode.INVALID_INPUT, "Rank is too high (max 11 digits)."); + } - agent.setAgentId(id); - agentsDao.updateAgent(agent); + Agent agent = JsonRequestUtils.readBodyAsType(req, Agent.class); - if (agent.getFirstName().length() > 20){ - throw new FailedRequestException(ErrorCode.INVALID_INPUT, "first name too long (max 20 characters)"); - } + agent.setAgentId(id); + agentsDao.updateAgent(agent); - if (agent.getLastName().length() > 20){ - throw new FailedRequestException(ErrorCode.INVALID_INPUT, "Last name too long (max 20 characters)"); - } + if (agent.getFirstName().length() > 20){ + throw new FailedRequestException(ErrorCode.INVALID_INPUT, "first name too long (max 20 characters)"); + } - return agent; - } catch (Exception e){ - throw new FailedRequestException(ErrorCode.INVALID_INPUT, "Rank is too high (max 11 digits)."); + if (agent.getLastName().length() > 20){ + throw new FailedRequestException(ErrorCode.INVALID_INPUT, "Last name too long (max 20 characters)"); } + return agent; + } public Object deleteAgent(Request req, Response res, int id) { From c6805c24d0d4f7a61bf6439bcd7c63d28bbb23e1 Mon Sep 17 00:00:00 2001 From: zee Date: Tue, 15 Oct 2019 16:07:34 +0100 Subject: [PATCH 18/45] most wanted added to page with images and text --- .../training/AgentDiscoveriesApplication.java | 5 +- .../training/api/routes/v1/AgentsRoutes.java | 6 --- .../app/sass/styles.scss | 11 +++++ .../app/src/components/app.jsx | 2 + .../app/src/components/mostwanted.jsx | 48 +++++++++++++++++++ 5 files changed, 64 insertions(+), 8 deletions(-) create mode 100644 AgentDiscoveries-Frontend/app/src/components/mostwanted.jsx diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/AgentDiscoveriesApplication.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/AgentDiscoveriesApplication.java index eb5cc40d..daa511d1 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/AgentDiscoveriesApplication.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/AgentDiscoveriesApplication.java @@ -57,13 +57,12 @@ public void run() { staticFileLocation("/frontend"); // Setup of all the routes path("/v1", () -> { - get("/mostwanted", (req, res) -> agentsRoutes.mostWanted(req, res), responseTransformer); // Endpoint used to get an authorisation token post("/token", tokenRoutes::createToken, responseTransformer); path("/api", () -> { before("/*", tokenRoutes::validateToken); - get("/checktoken", (req, res) -> "Token is valid"); + get("/checktoken", (req, res) -> "{message: 'Token is valid'}"); path("/legacy", () -> { before("/*", (request, response) -> response.type("text/plain")); @@ -83,6 +82,8 @@ public void run() { post("/decodemessage", messageProcessorRoutes::decodeMessage, responseTransformer); post("/encodemessage", messageProcessorRoutes::encodeMessage, responseTransformer); + get("/mostwanted", (req, res) -> agentsRoutes.mostWanted(req, res), responseTransformer); + // API endpoint to initiate shutdown put("/operations/shutdown", this::shutdown); }); diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java index 05c572a7..b808b076 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java @@ -93,12 +93,6 @@ public MostWantedApiModel[] mostWanted (Request req, Response res) { .request(MediaType.APPLICATION_JSON_TYPE) .get(MostWantedWrapper.class); -// List myList = new ArrayList<>(); -// -// for (MostWantedWrapper : mostwanted) -// { -// -// } return mostwanted.items; } } diff --git a/AgentDiscoveries-Frontend/app/sass/styles.scss b/AgentDiscoveries-Frontend/app/sass/styles.scss index 6e9078e2..1577037d 100644 --- a/AgentDiscoveries-Frontend/app/sass/styles.scss +++ b/AgentDiscoveries-Frontend/app/sass/styles.scss @@ -108,4 +108,15 @@ overflow: auto; .table-wrapper-scroll-y { display: block; +} + +.mugshot { +text-align: center; + +} + +.mostwantedportrait { +text-align: center; +box-sizing: none; +display: inline-block; } \ No newline at end of file diff --git a/AgentDiscoveries-Frontend/app/src/components/app.jsx b/AgentDiscoveries-Frontend/app/src/components/app.jsx index 760d069f..2714b60e 100644 --- a/AgentDiscoveries-Frontend/app/src/components/app.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/app.jsx @@ -17,6 +17,7 @@ import TodaysCodePage from './todays-code-page'; import LocationForm from './admin/location-form'; import RegionForm from './admin/region-form'; import UserForm from './admin/user-form'; +import MostWanted from './mostwanted'; import Error from './error'; import {apiGet} from './utilities/request-helper.js'; @@ -49,6 +50,7 @@ export default class App extends React.Component { } /> } /> + } /> } /> } /> } /> diff --git a/AgentDiscoveries-Frontend/app/src/components/mostwanted.jsx b/AgentDiscoveries-Frontend/app/src/components/mostwanted.jsx new file mode 100644 index 00000000..86e96664 --- /dev/null +++ b/AgentDiscoveries-Frontend/app/src/components/mostwanted.jsx @@ -0,0 +1,48 @@ +import * as React from 'react'; +import {apiGet} from './utilities/request-helper'; +import {errorLogAndRedirect} from './error'; + +import {Table} from 'react-bootstrap'; + +export default class MostWanted extends React.Component { + constructor(props) { + super(props); + this.state = { + mostwanted: [] + }; + } + + getMostWanted() { + apiGet('mostwanted') + .then(mostwanted => { + this.setState({ mostwanted: mostwanted }); + }) + .catch(errorLogAndRedirect); + } + + componentWillMount() { + this.getMostWanted(); + } + + render() { + if(this.state.mostwanted.length === 0){ + return
; + } + + return ( +
+ { + this.state.mostwanted.map(wantedIndividual => { + return ( +
+

{wantedIndividual.title}

+ +

Crime: {wantedIndividual.description}

+
+ ); + }) + } +
+ ); + } +} From 93078da83095c0c547b1197fe0062441794c7adb Mon Sep 17 00:00:00 2001 From: Cami Date: Wed, 16 Oct 2019 10:02:04 +0100 Subject: [PATCH 19/45] removing extra lines and removing comments --- .../org/softwire/training/api/routes/v1/AgentsRoutes.java | 1 - .../org/softwire/training/api/routes/v1/UsersRoutes.java | 1 - .../app/src/components/admin/location-form.jsx | 6 ++---- .../app/src/components/utilities/request-helper.js | 6 ------ 4 files changed, 2 insertions(+), 12 deletions(-) diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java index b3256c8c..fdcafa88 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java @@ -55,7 +55,6 @@ public List readAgents(Request req, Response res) { public Agent updateAgent(Request req, Response res, int id) { permissionsVerifier.verifyIsAdminOrRelevantAgent(req, id); - try{ Agent agent = JsonRequestUtils.readBodyAsType(req, Agent.class); } catch (Exception e){ diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/UsersRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/UsersRoutes.java index b1a0be3a..e4918369 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/UsersRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/UsersRoutes.java @@ -52,7 +52,6 @@ public UserApiModel createEntity(Request req, Response res) { userApiModel.isAdmin(), userApiModel.getAgentId()); - int newUserId = usersDao.addUser(user); // Set the userId and for security remove the password diff --git a/AgentDiscoveries-Frontend/app/src/components/admin/location-form.jsx b/AgentDiscoveries-Frontend/app/src/components/admin/location-form.jsx index 1dc76491..d584047c 100644 --- a/AgentDiscoveries-Frontend/app/src/components/admin/location-form.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/admin/location-form.jsx @@ -119,10 +119,9 @@ export default class LocationForm extends React.Component { onRegionIdChange(event) { if(event.target.value < 100000 ){ - const newRegionId = event.target.value === '' ? null : event.target.value; - this.setState({ regionId: newRegionId }); + const newRegionId = event.target.value === '' ? null : event.target.value; + this.setState({ regionId: newRegionId }); } - // this.setState({ regionId: parseInt(event.target.value) }); } onSubmit(event) { @@ -156,7 +155,6 @@ export default class LocationForm extends React.Component { }); } - handleError(error){ error.response.json().then(result => { this.setState({ message: { message: result.message, type: 'danger' } }); diff --git a/AgentDiscoveries-Frontend/app/src/components/utilities/request-helper.js b/AgentDiscoveries-Frontend/app/src/components/utilities/request-helper.js index 52f225d6..0afde436 100644 --- a/AgentDiscoveries-Frontend/app/src/components/utilities/request-helper.js +++ b/AgentDiscoveries-Frontend/app/src/components/utilities/request-helper.js @@ -26,12 +26,6 @@ export function apiRequest(apiPath, method, body) { throw new ApiError(response); } }) -// .catch(error => { -// error.response.json().then(result => { -// throw new Error(result.message); -// console.log(result); -// }) -// }) } // Generic API request methods. Non-POST methods may take an optional 'id' From 6c0ac0ee61b68681a0b53ef5aa41e41b13cc0836 Mon Sep 17 00:00:00 2001 From: Cami Date: Wed, 16 Oct 2019 10:14:06 +0100 Subject: [PATCH 20/45] moving agentid check --- .../org/softwire/training/api/routes/v1/AgentsRoutes.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java index fdcafa88..04cea3dc 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java @@ -63,9 +63,6 @@ public Agent updateAgent(Request req, Response res, int id) { Agent agent = JsonRequestUtils.readBodyAsType(req, Agent.class); - agent.setAgentId(id); - agentsDao.updateAgent(agent); - if (agent.getFirstName().length() > 20){ throw new FailedRequestException(ErrorCode.INVALID_INPUT, "first name too long (max 20 characters)"); } @@ -74,6 +71,9 @@ public Agent updateAgent(Request req, Response res, int id) { throw new FailedRequestException(ErrorCode.INVALID_INPUT, "Last name too long (max 20 characters)"); } + agent.setAgentId(id); + agentsDao.updateAgent(agent); + return agent; } From 6c9d66657f56f5aa8ccfb2c7007f69502467f906 Mon Sep 17 00:00:00 2001 From: Cami Date: Wed, 16 Oct 2019 10:40:01 +0100 Subject: [PATCH 21/45] fixing indentation stuffs --- .../app/src/components/admin/location-form.jsx | 14 +++++++------- .../app/src/components/admin/region-form.jsx | 6 +++--- .../app/src/components/admin/user-form.jsx | 6 +++--- .../src/components/search-forms/search-result.jsx | 8 ++++---- .../app/src/components/utilities/request-helper.js | 4 ++-- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/AgentDiscoveries-Frontend/app/src/components/admin/location-form.jsx b/AgentDiscoveries-Frontend/app/src/components/admin/location-form.jsx index d584047c..8802acff 100644 --- a/AgentDiscoveries-Frontend/app/src/components/admin/location-form.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/admin/location-form.jsx @@ -118,10 +118,10 @@ export default class LocationForm extends React.Component { } onRegionIdChange(event) { - if(event.target.value < 100000 ){ + if(event.target.value < 100000 ){ const newRegionId = event.target.value === '' ? null : event.target.value; this.setState({ regionId: newRegionId }); - } + } } onSubmit(event) { @@ -143,20 +143,20 @@ export default class LocationForm extends React.Component { request .then(() => window.location.hash = '#/admin/locations') .catch(error => { - this.handleError(error) - }); + this.handleError(error); + }); } loadLocation(id) { apiGet('locations', id) .then(result => this.setState(result)) .catch(error => { - this.handleError(error) + this.handleError(error); }); } handleError(error){ error.response.json().then(result => { - this.setState({ message: { message: result.message, type: 'danger' } }); - })} + this.setState({ message: { message: result.message, type: 'danger' } }); + });} } diff --git a/AgentDiscoveries-Frontend/app/src/components/admin/region-form.jsx b/AgentDiscoveries-Frontend/app/src/components/admin/region-form.jsx index 7029e0b5..f0e80174 100644 --- a/AgentDiscoveries-Frontend/app/src/components/admin/region-form.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/admin/region-form.jsx @@ -72,8 +72,8 @@ export default class RegionForm extends React.Component { handleError(error){ error.response.json().then(result => { - console.log(result); - this.setState({ message: { message: result.message, type: 'danger' } }); - })} + console.log(result); + this.setState({ message: { message: result.message, type: 'danger' } }); + });} } diff --git a/AgentDiscoveries-Frontend/app/src/components/admin/user-form.jsx b/AgentDiscoveries-Frontend/app/src/components/admin/user-form.jsx index 17c9ec63..28997751 100644 --- a/AgentDiscoveries-Frontend/app/src/components/admin/user-form.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/admin/user-form.jsx @@ -143,8 +143,8 @@ export default class UserForm extends React.Component { .catch(error => this.handleError(error)); } - handleError(error){ - error.response.json().then(result => { + handleError(error){ + error.response.json().then(result => { this.setState({ message: { message: result.message, type: 'danger' } }); - })} + });} } diff --git a/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx b/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx index 22a80089..1f36a515 100644 --- a/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx @@ -30,10 +30,10 @@ export default class SearchResult extends React.Component { const time = moment(result[key]).format('H:mm:ss'); return ( -
+

{`${key}: ${result[key]}`}

Reporter's Local Time: {time}

-
+
); } @@ -42,8 +42,8 @@ export default class SearchResult extends React.Component { } isADate(date){ - date = moment(date) - return (date.isValid() && (date.year() !== 1970)) + date = moment(date); + return (date.isValid() && (date.year() !== 1970)); } getResultsHeader(results) { diff --git a/AgentDiscoveries-Frontend/app/src/components/utilities/request-helper.js b/AgentDiscoveries-Frontend/app/src/components/utilities/request-helper.js index 0afde436..901b836f 100644 --- a/AgentDiscoveries-Frontend/app/src/components/utilities/request-helper.js +++ b/AgentDiscoveries-Frontend/app/src/components/utilities/request-helper.js @@ -25,7 +25,7 @@ export function apiRequest(apiPath, method, body) { } else { throw new ApiError(response); } - }) + }); } // Generic API request methods. Non-POST methods may take an optional 'id' @@ -41,7 +41,7 @@ export function apiPost(apiPath, body) { export function apiPut(apiPath, body, id) { const path = id ? `${apiPath}/${id}` : apiPath; - return apiRequest(path, 'PUT', body) + return apiRequest(path, 'PUT', body); } export function apiDelete(apiPath, id) { From eff08cf86ac73d1e64d461ee15afa78944c71586 Mon Sep 17 00:00:00 2001 From: Jacob Date: Wed, 16 Oct 2019 11:00:46 +0100 Subject: [PATCH 22/45] Start of Forum --- AgentDiscoveries-Frontend/app/src/components/nav.jsx | 3 +++ .../app/src/components/search-forms/search-result.jsx | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/AgentDiscoveries-Frontend/app/src/components/nav.jsx b/AgentDiscoveries-Frontend/app/src/components/nav.jsx index eb6e0cb4..71a571a7 100644 --- a/AgentDiscoveries-Frontend/app/src/components/nav.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/nav.jsx @@ -61,6 +61,9 @@ export default class NavigationBar extends React.Component { {this.state.isAgent ? this.renderAgentOptions() : null} {this.state.isAdmin ? this.renderAdminOptions() : null} ); } diff --git a/AgentDiscoveries-Frontend/app/src/components/search-forms/search-location-reports.jsx b/AgentDiscoveries-Frontend/app/src/components/search-forms/search-location-reports.jsx index 8bd69357..c92b55c7 100644 --- a/AgentDiscoveries-Frontend/app/src/components/search-forms/search-location-reports.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/search-forms/search-location-reports.jsx @@ -109,6 +109,8 @@ export default class LocationReportsSearch extends React.Component { const url = 'reports/locationstatuses?' + QueryString.stringify(params); + console.log(url); + apiGet(url) .then(results => this.setState({ results: results, message: {} })) .catch(error => this.setState({ message: { message: error.message, type: 'danger' } })); diff --git a/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx b/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx index 1f36a515..9676adba 100644 --- a/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/search-forms/search-result.jsx @@ -1,25 +1,63 @@ import * as React from 'react'; import {Panel} from 'react-bootstrap'; import moment from 'moment-timezone'; +import {Button} from 'react-bootstrap'; +import Link from 'react-router-dom/Link'; export default class SearchResult extends React.Component { + + //constructor + + + + render() { + return (
{this.getResultsHeader(this.props.results)} {this.renderResults(this.props.results)} + {this.renderEditButton()}
); } renderResults(results) { + + console.log("results") + console.log(results) + + + return results.map((result, index) => { - return ( - - Result - {this.renderResultBody(result)} - - ); + + const url = '/submit/location/edit/' + results[index].reportId + console.log("url") + console.log(url) + + console.log("index") + console.log(index) + + if (this.props.isPersonal){ + return ( + + Result + {this.renderResultBody(result)} + + + + + + + ); + } else { + return ( + + Result + {this.renderResultBody(result)} + + ); + } }); } @@ -53,4 +91,7 @@ export default class SearchResult extends React.Component { :

{`${results.length} results`}

) : ''; } + + renderEditButton() { + } } diff --git a/AgentDiscoveries-Frontend/app/src/components/submit-forms/submit-location-report.jsx b/AgentDiscoveries-Frontend/app/src/components/submit-forms/submit-location-report.jsx index 5166ea97..244f5736 100644 --- a/AgentDiscoveries-Frontend/app/src/components/submit-forms/submit-location-report.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/submit-forms/submit-location-report.jsx @@ -1,6 +1,6 @@ import * as React from 'react'; import {Button, Checkbox, ControlLabel, Form, FormControl, FormGroup} from 'react-bootstrap'; -import {apiGet, apiPost} from '../utilities/request-helper'; +import {apiGet, apiPost, apiPut} from '../utilities/request-helper'; import {Messages} from '../message'; @@ -10,7 +10,6 @@ export default class LocationReportSubmit extends React.Component { this.state = { locations: [], - locationId: '', status: '', reportTitle: '', @@ -26,6 +25,11 @@ export default class LocationReportSubmit extends React.Component { this.onReportTitleChange = this.onReportTitleChange.bind(this); this.onExternalChange = this.onExternalChange.bind(this); this.onSubmit = this.onSubmit.bind(this); + + if (this.props.id) { + this.loadLocation(this.props.id); + } + } componentWillMount() { @@ -34,6 +38,8 @@ export default class LocationReportSubmit extends React.Component { .catch(() => this.addMessage('Error fetching locations, please try again later', 'danger')); } + + render() { return (
@@ -127,15 +133,14 @@ export default class LocationReportSubmit extends React.Component { sendExternal: this.state.sendExternal }; - apiPost('reports/locationstatuses', body) - .then(() => this.addMessage('Report submitted', 'info')) - .catch(() => this.addMessage('Error submitting report, please try again later', 'danger')); + console.log(body); - if (this.state.sendExternal) { - apiPost('external/reports', body) - .then(() => this.addMessage('Report submitted to external partner', 'info')) - .catch(() => this.addMessage('Error submitting report externally, please try again later', 'danger')); - } + const request = this.props.id + ? apiPut('reports/locationstatuses', body, this.props.id) + : apiPost('reports/locationstatuses', body); + request + .then(window.location.hash = '#/myReports') + .catch(error => console.log(error)); } addMessage(message, type) { @@ -143,4 +148,12 @@ export default class LocationReportSubmit extends React.Component { return { messages: [...oldState.messages, { message: message, type: type }] }; }); } + + loadLocation(id) { + apiGet('reports/locationstatuses', id) + .then(result => this.setState(result)) + .catch(error => { + this.handleError(error); + }); + } } From 7fc524824c627fc1aa03bd9b07af680d16f11afc Mon Sep 17 00:00:00 2001 From: zsolttek Date: Thu, 17 Oct 2019 10:52:40 +0100 Subject: [PATCH 28/45] Message Board - it's working, few things have to be done for better UI --- .../training/AgentDiscoveriesApplication.java | 8 ++ .../api/core/PermissionsVerifier.java | 4 + .../api/routes/v1/ForumMessageRoutes.java | 52 +++++++ .../training/db/daos/ForumMessageDao.java | 28 ++++ .../training/models/ForumMessage.java | 40 ++++++ .../app/src/components/app.jsx | 3 +- .../app/src/components/nav.jsx | 4 +- .../submit-forms/forum-messages.jsx | 14 ++ .../submit-forms/submit-message.jsx | 128 +++++------------- 9 files changed, 182 insertions(+), 99 deletions(-) create mode 100644 AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/ForumMessageRoutes.java create mode 100644 AgentDiscoveries-Backend/src/main/java/org/softwire/training/db/daos/ForumMessageDao.java create mode 100644 AgentDiscoveries-Backend/src/main/java/org/softwire/training/models/ForumMessage.java create mode 100644 AgentDiscoveries-Frontend/app/src/components/submit-forms/forum-messages.jsx diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/AgentDiscoveriesApplication.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/AgentDiscoveriesApplication.java index 82003916..2de3cee6 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/AgentDiscoveriesApplication.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/AgentDiscoveriesApplication.java @@ -44,6 +44,7 @@ public class AgentDiscoveriesApplication implements Runnable { @Inject MessageProcessorRoutes messageProcessorRoutes; @Inject ExternalReportRoutes externalReportRoutes; @Inject PictureRoutes pictureRoutes; + @Inject ForumMessageRoutes forumMessageRoutes; @Override public void run() { @@ -75,6 +76,7 @@ public void run() { path("/reports/locationstatuses", () -> reportsRouteGroup(locationStatusReportsRoutes)); path("/reports/regionsummaries", () -> reportsRouteGroup(regionSummaryReportsRoutes)); path("/external", this::externalRouteGroup); + path("/forum", this::forumRouteGroup); setupBasicEntityCrudRoutes("/locations", locationsRoutes); get("/locations", locationsRoutes::readEntities, responseTransformer); @@ -103,6 +105,12 @@ public void run() { get("/healthcheck", (req, res) -> "Server started okay!"); } + private void forumRouteGroup() { + get("", (req, res) -> forumMessageRoutes.readForum(req, res), responseTransformer ); + post("/add", (req, res) -> forumMessageRoutes.createForumMessage(req, res), responseTransformer); + + } + private void executivesSummaryGroup() { post("/generate", executiveSummaryRoutes::readExecutiveSummary); } diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/core/PermissionsVerifier.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/core/PermissionsVerifier.java index 56831cce..9ac9d881 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/core/PermissionsVerifier.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/core/PermissionsVerifier.java @@ -31,6 +31,10 @@ public void verifyIsAdminOrRelevantAgent(Request req, int relevantAgentId) { verifyUser(req, user -> user.isAdmin() || (user.getAgentId() != null && user.getAgentId() == relevantAgentId)); } + public void verifyisAgentorAdmin(Request req) { + verifyUser(req, user -> user.isAdmin() || (user.getAgentId() != null)); + } + public void verifyIsAgent(Request req) { verifyUser(req, user -> user.getAgentId() != null); } diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/ForumMessageRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/ForumMessageRoutes.java new file mode 100644 index 00000000..cac13e3a --- /dev/null +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/ForumMessageRoutes.java @@ -0,0 +1,52 @@ +package org.softwire.training.api.routes.v1; + +import org.softwire.training.api.core.JsonRequestUtils; +import org.softwire.training.api.core.PermissionsVerifier; +import org.softwire.training.api.models.ErrorCode; +import org.softwire.training.api.models.FailedRequestException; +import org.softwire.training.db.daos.ForumMessageDao; +import org.softwire.training.models.ForumMessage; +import spark.Request; +import spark.Response; + +import javax.inject.Inject; +import java.util.List; + +public class ForumMessageRoutes { + + private final ForumMessageDao forumMessageDao; + private final PermissionsVerifier permissionsVerifier; + + @Inject + public ForumMessageRoutes(ForumMessageDao forumMessageDao, PermissionsVerifier permissionsVerifier) { + this.forumMessageDao = forumMessageDao; + this.permissionsVerifier = permissionsVerifier; + } + + public List readForum(Request req, Response res) { + permissionsVerifier.verifyisAgentorAdmin(req); + return forumMessageDao.getForumMessages(); + } + + public ForumMessage createForumMessage(Request req, Response res) { + ForumMessage forumMessageModel = JsonRequestUtils.readBodyAsType(req, ForumMessage.class); + permissionsVerifier.verifyisAgentorAdmin(req); + + forumMessageModel.setUserId(req.attribute("user_id")); + + int MessageId = forumMessageDao.createForum(forumMessageModel); + forumMessageModel.setMessageId(MessageId); + + // Create requests should return 201 + res.status(201); + + return forumMessageModel; + } + + public ForumMessage readForum(Request req, Response res, int id) { + permissionsVerifier.verifyisAgentorAdmin(req); + return forumMessageDao.getForumMessage(id) + .orElseThrow(() -> new FailedRequestException(ErrorCode.NOT_FOUND, "Forum not found")); + } + +} \ No newline at end of file diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/db/daos/ForumMessageDao.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/db/daos/ForumMessageDao.java new file mode 100644 index 00000000..562a9db6 --- /dev/null +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/db/daos/ForumMessageDao.java @@ -0,0 +1,28 @@ +package org.softwire.training.db.daos; + +import org.softwire.training.models.ForumMessage; + +import javax.inject.Inject; +import javax.persistence.EntityManagerFactory; +import java.util.List; +import java.util.Optional; + +public class ForumMessageDao { + + private DaoHelper helper; + + @Inject + public ForumMessageDao(EntityManagerFactory entityManagerFactory) { + this.helper = new DaoHelper<>(entityManagerFactory); + } + + public Optional getForumMessage(int MessageId) { return helper.getEntity(ForumMessage.class, MessageId);} + + public List getForumMessages() { return helper.getEntities(ForumMessage.class);} + + public int createForum(ForumMessage forumMessage) { + helper.createEntity(forumMessage); + return forumMessage.getMessageId(); + } + +} diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/models/ForumMessage.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/models/ForumMessage.java new file mode 100644 index 00000000..a7531dc4 --- /dev/null +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/models/ForumMessage.java @@ -0,0 +1,40 @@ +package org.softwire.training.models; + +import javax.persistence.*; + +@Entity +@Table(name = "messages") +public class ForumMessage { + + private int MessageId; + private String Message; + private int UserId; + + public ForumMessage() {} + + public ForumMessage(int messageId, String message, int userId) { + MessageId = messageId; + Message = message; + UserId = userId; + } + + @Id + @Column(name = "MessageId", nullable = false) + @GeneratedValue(strategy = GenerationType.IDENTITY) + public int getMessageId() { return MessageId; } + + public void setMessageId(int messageId) { this.MessageId = messageId; } + + @Column(name = "Message", nullable = false) + public String getMessage() { return Message; } + + public void setMessage(String Message) { this.Message = Message; } + + + @Column(name = "UserId") + public int getUserId() { + return UserId; + } + + public void setUserId(int userId) { UserId = userId; } +} diff --git a/AgentDiscoveries-Frontend/app/src/components/app.jsx b/AgentDiscoveries-Frontend/app/src/components/app.jsx index 760d069f..74facf13 100644 --- a/AgentDiscoveries-Frontend/app/src/components/app.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/app.jsx @@ -7,7 +7,7 @@ import Page from './page'; import Profile from './profile/profile'; import EditProfilePicture from './profile/edit-profile-picture'; import EditProfileCallSign from './profile/edit-profile-callsign'; - +import Forum from './submit-forms/submit-message'; import LocationReportSearch from './search-forms/search-location-reports'; import RegionSummarySearch from './search-forms/search-region-summaries'; import LocationReportSubmit from './submit-forms/submit-location-report'; @@ -35,6 +35,7 @@ export default class App extends React.Component { } /> } /> } /> + } /> } /> } /> diff --git a/AgentDiscoveries-Frontend/app/src/components/nav.jsx b/AgentDiscoveries-Frontend/app/src/components/nav.jsx index fd5a952d..d4f870ff 100644 --- a/AgentDiscoveries-Frontend/app/src/components/nav.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/nav.jsx @@ -86,7 +86,7 @@ export default class NavigationBar extends React.Component { Today's Message - + Forum @@ -115,7 +115,7 @@ export default class NavigationBar extends React.Component { Region Summaries - + Forum diff --git a/AgentDiscoveries-Frontend/app/src/components/submit-forms/forum-messages.jsx b/AgentDiscoveries-Frontend/app/src/components/submit-forms/forum-messages.jsx new file mode 100644 index 00000000..3cc204dc --- /dev/null +++ b/AgentDiscoveries-Frontend/app/src/components/submit-forms/forum-messages.jsx @@ -0,0 +1,14 @@ +import * as React from 'react'; + +export default class ForumMessages extends React.Component { + + render() { + return ( +
+ { + this.props.forum.map(message =>

{message.Message}

) + } +
+ ); + } +} \ No newline at end of file diff --git a/AgentDiscoveries-Frontend/app/src/components/submit-forms/submit-message.jsx b/AgentDiscoveries-Frontend/app/src/components/submit-forms/submit-message.jsx index 3d2553e4..94ce4f65 100644 --- a/AgentDiscoveries-Frontend/app/src/components/submit-forms/submit-message.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/submit-forms/submit-message.jsx @@ -1,141 +1,77 @@ import * as React from 'react'; -import {Button, Checkbox, ControlLabel, Form, FormControl, FormGroup} from 'react-bootstrap'; +import {Button, ControlLabel, Form, FormControl, FormGroup} from 'react-bootstrap'; import {apiGet, apiPost} from '../utilities/request-helper'; import {Messages} from '../message'; +import ForumMessages from './forum-messages'; - -export default class Message extends React.Component { +export default class Forum extends React.Component { constructor(props) { super(props); this.state = { - locations: [], + posts: [], - locationId: '', - status: '', - reportTitle: '', - reportBody: '', - sendExternal: false, + Message: '', messages: [] + }; - this.onLocationChange = this.onLocationChange.bind(this); - this.onStatusChange = this.onStatusChange.bind(this); - this.onReportBodyChange = this.onReportBodyChange.bind(this); - this.onReportTitleChange = this.onReportTitleChange.bind(this); - this.onExternalChange = this.onExternalChange.bind(this); - this.onSubmit = this.onSubmit.bind(this); + this.onMessageChange = this.onMessageChange.bind(this); + this.onPost = this.onPost.bind(this); + } componentWillMount() { - apiGet('locations') - .then(results => this.setState({ locations: results })) - .catch(() => this.addMessage('Error fetching locations, please try again later', 'danger')); + apiGet('forum') + .then(results => this.setState({ posts: results })) + .catch(() => this.addMessage('Error fetching messages, please try again later', 'danger')); } render() { return (
-
-

Submit Location Report

+ +

Agent Forum

+ + - Location - - - {this.state.locations.map(location => - )} - - - - Status - - - - Title - - - - Report + Message Board - - - Send to external partner - - - + +
); } - onLocationChange(event) { - this.setState({ locationId: event.target.value && parseInt(event.target.value) }); + onMessageChange(event) { + this.setState({ Message: event.target.value }); } - onStatusChange(event) { - this.setState({ status: event.target.value && parseInt(event.target.value) }); - } - - onReportBodyChange(event) { - this.setState({ reportBody: event.target.value }); - } - onReportTitleChange(event) { - this.setState({ reportTitle: event.target.value}); - } - - onExternalChange(event) { - this.setState({ sendExternal: event.target.checked }); - } - - onSubmit(event) { + onPost(event) { event.preventDefault(); - this.setState({ messages: [] }); - const body = { - locationId: this.state.locationId, - status: this.state.status, - reportBody: this.state.reportBody, - reportTitle: this.state.reportTitle, - sendExternal: this.state.sendExternal + Message: this.state.Message }; - apiPost('reports/locationstatuses', body) - .then(() => this.addMessage('Report submitted', 'info')) - .catch(() => this.addMessage('Error submitting report, please try again later', 'danger')); + apiPost('forum/add', body) + .then(() => this.addMessage('Message submitted', 'info')) + .catch(() => this.addMessage('Error submitting message, please try again later', 'danger')) + .finally(() => { window.location.reload; }); - if (this.state.sendExternal) { - apiPost('external/reports', body) - .then(() => this.addMessage('Report submitted to external partner', 'info')) - .catch(() => this.addMessage('Error submitting report externally, please try again later', 'danger')); - } } addMessage(message, type) { From f692cbcdc7913405d36348b4307a3ef20f07cee0 Mon Sep 17 00:00:00 2001 From: zsolttek Date: Thu, 17 Oct 2019 11:07:36 +0100 Subject: [PATCH 29/45] tidy up --- .../org/softwire/training/api/routes/v1/AgentsRoutes.java | 7 ------- AgentDiscoveries-Frontend/app/src/components/nav.jsx | 6 ++---- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java index 2dde8c27..1033adf5 100644 --- a/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java +++ b/AgentDiscoveries-Backend/src/main/java/org/softwire/training/api/routes/v1/AgentsRoutes.java @@ -3,11 +3,7 @@ import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import org.apache.commons.lang3.StringUtils; -<<<<<<< HEAD import org.glassfish.jersey.jackson.JacksonFeature; -======= -import org.eclipse.jetty.server.Authentication; ->>>>>>> 4b547deec534066f104174fba4ad1bbabe6b5a31 import org.softwire.training.api.core.JsonRequestUtils; import org.softwire.training.api.core.PermissionsVerifier; import org.softwire.training.api.models.ErrorCode; @@ -18,13 +14,10 @@ import org.softwire.training.models.Agent; import spark.Request; import spark.Response; - import javax.inject.Inject; import javax.ws.rs.core.MediaType; import java.util.List; -import java.time.LocalDate; import java.util.NoSuchElementException; -import java.util.Optional; public class AgentsRoutes { diff --git a/AgentDiscoveries-Frontend/app/src/components/nav.jsx b/AgentDiscoveries-Frontend/app/src/components/nav.jsx index a524ec06..08d1d722 100644 --- a/AgentDiscoveries-Frontend/app/src/components/nav.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/nav.jsx @@ -86,14 +86,12 @@ export default class NavigationBar extends React.Component { Today's Message -<<<<<<< HEAD + Forum -======= -{/* //TODO */} + Most Wanted ->>>>>>> 372e03e1d64be16a9709a0ee437c44c4817e5513 ); From 515f25613516f12eb634a3ce0316a4a63411e0d1 Mon Sep 17 00:00:00 2001 From: zee Date: Thu, 17 Oct 2019 11:24:04 +0100 Subject: [PATCH 30/45] Working wanted poage --- .../app/sass/styles.scss | 7 +- .../app/src/components/mostwanted.jsx | 82 ++++++++++++++---- AgentDiscoveries-Frontend/app/static/Dan.jpg | Bin 0 -> 79224 bytes .../app/static/Henry.jpg | Bin 0 -> 106545 bytes AgentDiscoveries-Frontend/app/static/Jack.jpg | Bin 0 -> 620891 bytes AgentDiscoveries-Frontend/app/static/Luan.jpg | Bin 0 -> 104047 bytes AgentDiscoveries-Frontend/app/static/Mdog.jpg | Bin 0 -> 52297 bytes AgentDiscoveries-Frontend/app/static/Mike.jpg | Bin 0 -> 60430 bytes .../app/static/Sandris.jpg | Bin 0 -> 101723 bytes 9 files changed, 73 insertions(+), 16 deletions(-) create mode 100644 AgentDiscoveries-Frontend/app/static/Dan.jpg create mode 100644 AgentDiscoveries-Frontend/app/static/Henry.jpg create mode 100644 AgentDiscoveries-Frontend/app/static/Jack.jpg create mode 100644 AgentDiscoveries-Frontend/app/static/Luan.jpg create mode 100644 AgentDiscoveries-Frontend/app/static/Mdog.jpg create mode 100644 AgentDiscoveries-Frontend/app/static/Mike.jpg create mode 100644 AgentDiscoveries-Frontend/app/static/Sandris.jpg diff --git a/AgentDiscoveries-Frontend/app/sass/styles.scss b/AgentDiscoveries-Frontend/app/sass/styles.scss index 42a7899d..abc94229 100644 --- a/AgentDiscoveries-Frontend/app/sass/styles.scss +++ b/AgentDiscoveries-Frontend/app/sass/styles.scss @@ -114,10 +114,15 @@ body { padding: auto; } -.mostwantedportrait { +.mostwantedportrait classA { text-align: center; display: inline-table; max-width: 20%; + +}.mostwantedportrait classB { + text-align: center; + display: inline-table; + max-width: 25%; } .mostwanted-title { diff --git a/AgentDiscoveries-Frontend/app/src/components/mostwanted.jsx b/AgentDiscoveries-Frontend/app/src/components/mostwanted.jsx index 63e12eb7..b6830aeb 100644 --- a/AgentDiscoveries-Frontend/app/src/components/mostwanted.jsx +++ b/AgentDiscoveries-Frontend/app/src/components/mostwanted.jsx @@ -1,17 +1,24 @@ import * as React from 'react'; import {apiGet} from './utilities/request-helper'; import {errorLogAndRedirect} from './error'; -import logo from '../../static/wanted.png' +import logo from '../../static/wanted.png'; import {Link} from 'react-router-dom'; - -import {Table} from 'react-bootstrap'; +import dan from '../../static/Dan.jpg'; +import sandris from '../../static/Sandris.jpg'; +import henry from '../../static/Henry.jpg'; +import mdog from '../../static/Mdog.jpg'; +import mike from '../../static/Mike.jpg'; +import luan from '../../static/Luan.jpg'; +import mead from '../../static/Jack.jpg'; export default class MostWanted extends React.Component { constructor(props) { super(props); this.state = { - mostwanted: [] + mostwanted: [], + showCustom: false }; + this.loadCustomWantedPosters = this.loadCustomWantedPosters.bind(this); } getMostWanted() { @@ -26,26 +33,71 @@ export default class MostWanted extends React.Component { this.getMostWanted(); } + loadCustomWantedPosters() { + + this.setState( { + showCustom: true, + mostwanted: [ + { + title: 'The Smoker', + images: [ {original: dan}], + description: 'Being good at Frontend programming, vapes huge clouds' + }, + { + title: 'The Ball Kicker', + images: [ {original: luan} ], + description: 'Known for foosball enthusiasm' + }, + { + title: 'Mdoggy-Dog', + images: [ {original: mdog} ], + description: 'Last seen putting Rich in his car...' + }, + { + title: 'The Heartbreaker', + images: [ {original: mike} ], + description: 'Recently known as "The Heartbroken"' + }, + { + title: 'Known alias "Can of Coke"', + images: [ {original: sandris} ], + description: 'Proud of his Li... Lat... heritage ' + }, + { + title: 'The Duck', + images: [ {original: henry} ], + description: 'Using ducks in criminal activity' + }, + { + title: 'The Lint Master', + images: [ {original: mead} ], + description: 'Ring leader, ' + }, + ], + }); + } + + render() { if(this.state.mostwanted.length === 0){ - return
; + return
; } return ( -
- -
+
+ +
{ this.state.mostwanted.map(wantedIndividual => { return ( -
- -

{wantedIndividual.title}

- -

{wantedIndividual.description}

+
+ +

{wantedIndividual.title}

+ +

{wantedIndividual.description}

-
- ); +
+ ); }) }
diff --git a/AgentDiscoveries-Frontend/app/static/Dan.jpg b/AgentDiscoveries-Frontend/app/static/Dan.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3215253c3654e8e1101a11fef494caab37d6f91a GIT binary patch literal 79224 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 jAtsE3Ad^xfZ94;qrhXdavaOE#bNw<kA literal 0 HcmV?d00001 diff --git a/AgentDiscoveries-Frontend/app/static/Henry.jpg b/AgentDiscoveries-Frontend/app/static/Henry.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b15104c4ec1554c3b191d6dffb9ff65670ee7f50 GIT binary patch literal 106545 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 E^PD5#AZl20BS#IQkRI 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 z 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

m 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�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 z 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