diff --git a/app/Http/Controllers/Apis/Protected/Main/OAuth2MembersApiController.php b/app/Http/Controllers/Apis/Protected/Main/OAuth2MembersApiController.php index cd5f2228..9df2acae 100644 --- a/app/Http/Controllers/Apis/Protected/Main/OAuth2MembersApiController.php +++ b/app/Http/Controllers/Apis/Protected/Main/OAuth2MembersApiController.php @@ -26,6 +26,8 @@ use utils\OrderParser; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Log; use utils\PagingInfo; +use utils\PagingResponse; + /** * Class OAuth2MembersApiController * @package App\Http\Controllers @@ -172,6 +174,48 @@ final class OAuth2MembersApiController extends OAuth2ProtectedController ); } + + /** + * @param $member_id + * @return mixed + */ + public function getMemberAffiliations($member_id){ + try { + + $member = $this->repository->getById($member_id); + if(is_null($member)) return $this->error404(); + $affiliations = $member->getAffiliations()->toArray(); + + $response = new PagingResponse + ( + count($affiliations), + count($affiliations), + 1, + 1, + $affiliations + ); + + return $this->ok($response->toArray($expand = Input::get('expand',''))); + + } + catch (EntityNotFoundException $ex1) { + Log::warning($ex1); + return $this->error404(); + } + catch (ValidationException $ex2) { + Log::warning($ex2); + return $this->error412($ex2->getMessages()); + } + catch(FilterParserException $ex3){ + Log::warning($ex3); + return $this->error412($ex3->getMessages()); + } + catch (\Exception $ex) { + Log::error($ex); + return $this->error500($ex); + } + } + /** * @param int $member_id * @param int $affiliation_id diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitAttendeesApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitAttendeesApiController.php index 4cf0dcab..bdbb152e 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitAttendeesApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitAttendeesApiController.php @@ -449,7 +449,7 @@ final class OAuth2SummitAttendeesApiController extends OAuth2ProtectedController $rules = [ 'member_id' => 'required|integer', - 'share_contact_info' => 'sometimes|boolean', + 'shared_contact_info' => 'sometimes|boolean', 'summit_hall_checked_in' => 'sometimes|boolean', 'summit_hall_checked_in_date' => 'sometimes|date_format:U', ]; @@ -533,7 +533,7 @@ final class OAuth2SummitAttendeesApiController extends OAuth2ProtectedController $rules = [ 'member_id' => 'required|integer', - 'share_contact_info' => 'sometimes|boolean', + 'shared_contact_info' => 'sometimes|boolean', 'summit_hall_checked_in' => 'sometimes|boolean', 'summit_hall_checked_in_date' => 'sometimes|date_format:U', ]; diff --git a/app/Http/routes.php b/app/Http/routes.php index 47aa6cab..a08c9a80 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -102,7 +102,7 @@ Route::group([ Route::group(['prefix'=>'{member_id}'], function(){ Route::group(['prefix' => 'affiliations'], function(){ - + Route::get('', [ 'middleware' => 'auth.user:administrators|summit-front-end-administrators', 'uses' => 'OAuth2MembersApiController@getMemberAffiliations']); Route::group(['prefix' => '{affiliation_id}'], function(){ Route::put('', [ 'middleware' => 'auth.user:administrators|summit-front-end-administrators', 'uses' => 'OAuth2MembersApiController@updateAffiliation']); Route::delete('', [ 'middleware' => 'auth.user:administrators|summit-front-end-administrators', 'uses' => 'OAuth2MembersApiController@deleteAffiliation']); diff --git a/app/Models/Foundation/Summit/Factories/SummitAttendeeFactory.php b/app/Models/Foundation/Summit/Factories/SummitAttendeeFactory.php index 1ea8b72d..b1aee260 100644 --- a/app/Models/Foundation/Summit/Factories/SummitAttendeeFactory.php +++ b/app/Models/Foundation/Summit/Factories/SummitAttendeeFactory.php @@ -41,8 +41,8 @@ final class SummitAttendeeFactory $attendee->setMember($member); $attendee->setSummit($summit); - if(isset($data['share_contact_info'])) - $attendee->setShareContactInfo($data['share_contact_info']); + if(isset($data['shared_contact_info'])) + $attendee->setShareContactInfo($data['shared_contact_info']); if(isset($data['summit_hall_checked_in'])) $attendee->setSummitHallCheckedIn($data['summit_hall_checked_in']); diff --git a/app/Services/Model/MemberService.php b/app/Services/Model/MemberService.php index df02e83b..a0b60b5b 100644 --- a/app/Services/Model/MemberService.php +++ b/app/Services/Model/MemberService.php @@ -120,11 +120,11 @@ final class MemberService implements IMemberService public function deleteRSVP(Member $member, $rsvp_id) { return $this->tx_service->transaction(function() use($member, $rsvp_id){ - $affiliation = $member->getRsvpById($rsvp_id); - if(is_null($affiliation)) + $rsvp = $member->getRsvpById($rsvp_id); + if(is_null($rsvp)) throw new EntityNotFoundException(sprintf("rsvp id %s does not belongs to member id %s", $rsvp_id, $member->getId())); - $member->removeAffiliation($affiliation); + $member->removeRsvp($rsvp); }); } } \ No newline at end of file diff --git a/database/seeds/ApiEndpointsSeeder.php b/database/seeds/ApiEndpointsSeeder.php index f783daa5..a70daa01 100644 --- a/database/seeds/ApiEndpointsSeeder.php +++ b/database/seeds/ApiEndpointsSeeder.php @@ -705,6 +705,12 @@ class ApiEndpointsSeeder extends Seeder 'http_method' => 'GET', 'scopes' => [sprintf('%s/members/read/me', $current_realm)], ], + [ + 'name' => 'get-member-affiliations', + 'route' => '/api/v1/members/{member_id}/affiliations', + 'http_method' => 'GET', + 'scopes' => [sprintf('%s/members/read', $current_realm)], + ], [ 'name' => 'update-member-affiliation', 'route' => '/api/v1/members/{member_id}/affiliations/{affiliation_id}', diff --git a/tests/OAuth2MembersApiTest.php b/tests/OAuth2MembersApiTest.php index 1623686e..80acbf85 100644 --- a/tests/OAuth2MembersApiTest.php +++ b/tests/OAuth2MembersApiTest.php @@ -171,4 +171,30 @@ final class OAuth2MembersApiTest extends ProtectedApiTest $this->assertTrue(!is_null($affiliation)); return $affiliation; } + + public function testGetMemberAffiliation($member_id = 11624) + { + + $params = [ + //AND FILTER + 'member_id' => $member_id + ]; + + $headers = ["HTTP_Authorization" => " Bearer " . $this->access_token]; + $response = $this->action( + "GET", + "OAuth2MembersApiController@getMemberAffiliations", + $params, + [], + [], + [], + $headers + ); + + $content = $response->getContent(); + $affiliations = json_decode($content); + $this->assertTrue(!is_null($affiliations)); + $this->assertResponseStatus(200); + } + } \ No newline at end of file