diff --git a/src/main/java/edu/group5/app/model/donation/DonationService.java b/src/main/java/edu/group5/app/model/donation/DonationService.java index 270b00e..0b6aafd 100644 --- a/src/main/java/edu/group5/app/model/donation/DonationService.java +++ b/src/main/java/edu/group5/app/model/donation/DonationService.java @@ -55,7 +55,7 @@ public boolean donate(Customer customer, int orgNumber, BigDecimal amount) { if (org == null) { return false; } - Donation donation = new Donation(customer.getUserId(), org.getOrgNumber(), + Donation donation = new Donation(customer.getUserId(), org.orgNumber(), amount, Timestamp.from(Instant.now())); donationRepository.addDonation(donation); return true; diff --git a/src/main/java/edu/group5/app/model/organization/OrganizationRepository.java b/src/main/java/edu/group5/app/model/organization/OrganizationRepository.java index 98e2f0a..e48be9e 100644 --- a/src/main/java/edu/group5/app/model/organization/OrganizationRepository.java +++ b/src/main/java/edu/group5/app/model/organization/OrganizationRepository.java @@ -1,58 +1,63 @@ package edu.group5.app.model.organization; import edu.group5.app.model.Repository; +import tools.jackson.core.type.TypeReference; import tools.jackson.databind.ObjectMapper; import java.util.HashMap; import java.util.Map; -import java.util.Objects; /** * Handles the business logic associated with organizations */ public class OrganizationRepository extends Repository { + private final HashMap grandMap; - @SuppressWarnings("unchecked") public OrganizationRepository(Object[] input) { + grandMap = new HashMap<>(); + ObjectMapper mapper = new ObjectMapper(); - if (input == null) { - throw new NullPointerException("Input cannot be null"); - } for (Object obj : input) { - Map map = (Map) obj; + HashMap contentMap = + mapper.convertValue(obj, new TypeReference>() {}); + + String orgNumberStr = ((String) contentMap.get("org_number")).replaceAll("\\s", ""); + int orgNumber = Integer.parseInt(orgNumberStr); - int orgNumber = Integer.parseInt((String) map.get("org_number")); - String name = (String) map.get("name"); + String name = (String) contentMap.get("name"); - boolean trusted = - "approved".equalsIgnoreCase((String) map.get("status")); - String url = (String) map.get("url"); - - boolean isPreApproved = (Boolean) map.get("is_pre_approved"); + boolean trusted = "approved".equalsIgnoreCase((String) contentMap.get("status")); - Organization organization = new Organization( - orgNumber, name, trusted, url, - isPreApproved, - "" // description not included in API - ); + String websiteURL = (String) contentMap.get("url"); + + boolean isPreApproved = true; + if (!contentMap.containsKey("is_pre_approved")) { + isPreApproved = false; + } else if ((boolean)contentMap.get("is_pre_approved") == false) { + isPreApproved = false; + } - content.put(orgNumber, organization); + String description = "Information about " + name; + + Organization org = new Organization(orgNumber, name, trusted, websiteURL, isPreApproved, description); + + grandMap.put(org.orgNumber(), org); } -} + } - /** - * Gets all trusted organizations in the repository - * @return all organizations with trusted = true - */ - public Map getTrustedOrganizations() { +/** + * Gets all trusted organizations in the repository + * @return all organizations with trusted = true + */ +public Map getTrustedOrganizations() { Map trustedOrganizations = new HashMap<>(); - content.forEach((orgNr, org) -> { - if (org.trusted()) { - trustedOrganizations.put(orgNr, org); - } + grandMap.forEach((orgNr, org) -> { + if (org.trusted()) { + trustedOrganizations.put(orgNr, org); + } }); return trustedOrganizations; - } +} } diff --git a/src/test/java/edu/group5/app/model/organization/OrganizationTest.java b/src/test/java/edu/group5/app/model/organization/OrganizationTest.java index 7f1b898..3e3f338 100644 --- a/src/test/java/edu/group5/app/model/organization/OrganizationTest.java +++ b/src/test/java/edu/group5/app/model/organization/OrganizationTest.java @@ -20,7 +20,7 @@ void constructor_CreatesAnOrganizationWhenInputIsValid() { assertAll( () -> assertEquals(1, org.orgNumber()), () -> assertEquals("Org", org.name()), - () -> assertTrue(org.trusted()), + () -> assertTrue(org.status()), () -> assertEquals("org.com", org.websiteURL()), () -> assertTrue(org.isPreApproved()), () -> assertEquals("Org description", org.description())