throw new RuntimeException("Organization does not exist", 404); } $organization = new Organization($id, $requestObject->orgAddress1, $requestObject->orgAddress2, $requestObject->orgCity, $requestObject->orgDescription, $requestObject->orgHours, $requestObject->orgName, $requestObject->orgPhone, $requestObject->orgState, $requestObject->orgType, $requestObject->orgZip); $organization->update($pdo); $reply->message = "Organization updated OK"; } else { if ($method === "POST") { $organization = new Organization(null, $requestObject->orgAddress1, $requestObject->orgAddress2, $requestObject->orgCity, $requestObject->orgDescription, $requestObject->orgHours, $requestObject->orgName, $requestObject->orgPhone, $requestObject->orgState, $requestObject->orgType, $requestObject->orgZip); $organization->insert($pdo); $reply->message = "Organization created OK"; } } } else { if ($method === "DELETE") { //verifyXsrf(); $organization = Organization::getOrganizationByOrgId($pdo, $id); if ($organization === null) { throw new RuntimeException("Organization does not exist", 404); } $organization->delete($pdo); $deletedObject = new stdClass(); $deletedObject->organizationId = $id; $reply->message = "Organization deleted OK"; } } } else { //if not an admin, and attempting a method other than get, throw an exception if (empty($method) === false && $method !== "GET") { throw new RuntimeException("Only administrators are allowed to modify entries", 401); } }
//get the listing based on the given field TODO I think this needs fixing. TF if (empty($id) === false) { $reply->data = Listing::getListingByListingId($pdo, $id); } elseif (empty($orgId) === false) { $reply->data = Listing::getListingByOrgId($pdo, $orgId)->toArray(); } elseif (empty($postTime) === false) { $reply->data = Listing::getListingByListingPostTime($pdo, $listingPostTime)->toArray(); } elseif (empty($parentId) === false) { $reply->data = Listing::getListingByParentId($pdo, $listingParentId)->toArray(); } elseif (empty($typeId) === false) { $reply->data = Listing::getListingByTypeId($pdo, $listingTypeId)->toArray(); } else { //sets up if block to determine if the current organization is a giver ('G') or a receiver ('R') //if organization is 'G' then show only the listings pertaining to that organization //if organization is 'R' then show all listings $currentOrgType = Organization::getOrganizationByOrgId($pdo, $_SESSION["volunteer"]->getOrgId()); if ($currentOrgType !== null && $currentOrgType->getOrgType() === 'G') { $reply->data = Listing::getListingByOrgId($pdo, $_SESSION["volunteer"]->getOrgId())->toArray(); } elseif ($currentOrgType !== null && $currentOrgType->getOrgType() === 'R') { $reply->data = Listing::getAllListings($pdo)->toArray(); } } } //verify admin and verify object not empty //if the session belongs to an admin, allow post, put, and delete methods if (empty($_SESSION["volunteer"]) === false && $_SESSION["volunteer"]->getVolIsAdmin() === true) { if ($method === "PUT" || $method === "POST") { //verifyXsrf(); $requestContent = file_get_contents("php://input"); $requestObject = json_decode($requestContent); //make sure all fields are present, in order to prevent database issues
/** * test getting an organization that does not exist */ public function testGetInvalidOrganizationByOrgId() { //grab an id that exceeds the maximum allowable value $organization = Organization::getOrganizationByOrgId($this->getPDO(), BreadBasketTest::INVALID_KEY); $this->assertNull($organization); }
/** * test putting a valid organization into the API */ public function testValidPut() { //create a new organization, and insert into the database $organization = new Organization(null, $this->VALID_ADDRESS1, $this->VALID_ADDRESS2, $this->VALID_CITY, $this->VALID_DESCRIPTION, $this->VALID_HOURS, $this->VALID_NAME, $this->VALID_PHONE, $this->VALID_STATE, $this->VALID_TYPE, $this->VALID_ZIP); $organization->insert($this->getPDO()); //update the organization $organization->setOrgName($this->VALID_NAME_ALT); //send the info to update to the API $response = $this->guzzle->put('https://bootcamp-coders.cnm.edu/~bbrown52/bread-basket/public_html/php/api/organization/' . $organization->getOrgId(), ['allow-redirects' => ['strict' => true], 'json' => $organization, 'headers' => ['X-XSRF-TOKEN' => $this->token]]); //ensure the response was sent, and the api returned a positive status $this->assertSame($response->getStatusCode(), 200); $body = $response->getBody(); $retrievedOrg = json_decode($body); $this->assertSame(200, $retrievedOrg->status); //pull the value from the DB, and make sure it was properly updated $neworg = Organization::getOrganizationByOrgId($this->getPDO(), $organization->getOrgId()); $this->assertSame($neworg->getOrgName(), $this->VALID_NAME_ALT); }