Add member overview getter

This commit is contained in:
philipp lang 2020-08-15 02:03:11 +02:00
parent a5881ffe5f
commit 817c939978
4 changed files with 81 additions and 2 deletions

View File

@ -169,6 +169,20 @@ class Api {
}); });
} }
public function memberOverviewOf($groupId) {
$url = self::$url.'/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/'.$groupId.'/flist';
$response = $this->http()->get($url);
return collect($response['data'])->map(function($member) use ($groupId) {
$member = collect($member)->mapWithKeys(function($value, $key) {
return [ str_replace('entries_', '', $key) => $value ];
});
$member['gruppierungId'] = $groupId;
return $member;
});
}
private function singleMemberFallback($groupId, $memberId) { private function singleMemberFallback($groupId, $memberId) {
$url = self::$url.'/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/'.$groupId.'/flist'; $url = self::$url.'/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/'.$groupId.'/flist';
$response = $this->http()->get($url); $response = $this->http()->get($url);

View File

@ -45,6 +45,12 @@ class Group implements Arrayable {
return Member::fromNami(Nami::member($this->id, $id)); return Member::fromNami(Nami::member($this->id, $id));
} }
public function memberOverview() {
return Nami::memberOverviewOf($this->id)->map(function($member) {
return Member::fromNami($member);
});
}
public function activities(): Collection { public function activities(): Collection {
return Nami::activities($this->id); return Nami::activities($this->id);
} }

View File

@ -90,7 +90,7 @@ class PullMemberTest extends TestCase
/** /**
* @dataProvider dataProvider * @dataProvider dataProvider
*/ */
public function test_get_attribute_of_overview($key, $values) { public function test_get_attribute_of_member_collection($key, $values) {
Http::fake(array_merge($this->login(), [ Http::fake(array_merge($this->login(), [
'https://nami.dpsg.de/ica/rest/nami/gruppierungen/filtered-for-navigation/gruppierung/node/root' => Http::response($this->groupsResponse, 200), 'https://nami.dpsg.de/ica/rest/nami/gruppierungen/filtered-for-navigation/gruppierung/node/root' => Http::response($this->groupsResponse, 200),
'https://nami.dpsg.de/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/103/flist' => Http::response($this->fakeJson('member_overview.json'), 200), 'https://nami.dpsg.de/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/103/flist' => Http::response($this->fakeJson('member_overview.json'), 200),
@ -110,6 +110,27 @@ class PullMemberTest extends TestCase
Http::assertSentCount(6); Http::assertSentCount(6);
} }
/**
* @dataProvider overviewDataProvider
*/
public function test_get_attribute_of_member_overview($key, $values) {
Http::fake(array_merge($this->login(), [
'https://nami.dpsg.de/ica/rest/nami/gruppierungen/filtered-for-navigation/gruppierung/node/root' => Http::response($this->groupsResponse, 200),
'https://nami.dpsg.de/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/103/flist' => Http::response($this->fakeJson('member_overview.json'), 200)
]));
$this->setCredentials();
Nami::login();
$members = Nami::group(103)->memberOverview();
foreach ($members as $i => $m) {
$this->assertSame($values[$i], $m->toArray()[$key]);
}
Http::assertSentCount(4);
}
/** /**
* @dataProvider relationProvider * @dataProvider relationProvider
*/ */

View File

@ -43,7 +43,45 @@
"entries_telefax":"+55111" "entries_telefax":"+55111"
}, },
{ {
"id": 17 "id": 17,
"entries_ersteTaetigkeitId":null,
"entries_genericField1":"",
"entries_version":58,
"entries_telefon3":"+22222",
"entries_telefon2":"+49172",
"entries_telefon1":"+49668",
"descriptor":"Nach2, Jane",
"entries_id":16,
"entries_staatsangehoerigkeit":"deutsch",
"representedClass":"de.iconcept.nami.entity.mitglied.Mitglied",
"entries_rover":"",
"entries_pfadfinder":"",
"entries_mitgliedsNummer":90166,
"entries_wiederverwendenFlag":false,
"entries_ersteUntergliederungId":null,
"entries_rowCssClass":" ",
"entries_vorname":"Jane",
"entries_woelfling":"",
"entries_beitragsarten":"",
"entries_stufe":"Wölfling",
"entries_email":"test2@example.com",
"entries_konfession":"",
"entries_fixBeitrag":"",
"entries_emailVertretungsberechtigter":"test2p@example.com",
"entries_lastUpdated":"2015-02-03 15:20:07",
"entries_status":"Aktiv",
"entries_jungpfadfinder":"",
"entries_mglType":"Mitglied",
"entries_kontoverbindung":"",
"entries_geschlecht":"",
"entries_spitzname":"",
"entries_geburtsDatum":"1984-01-17 00:00:00",
"entries_staatangehoerigkeitText":"",
"entries_nachname":"Nach2",
"entries_eintrittsdatum":"",
"entries_austrittsDatum":"",
"entries_genericField2":"",
"entries_telefax":"+55222"
} }
], ],
"responseType": "OK", "responseType": "OK",