Added Affiliation data to speaker json

Change-Id: I46286e55c8d9a67a267276b5f18025d1adc87408
This commit is contained in:
Sebastian Marcet 2017-03-03 16:46:39 -03:00
parent ce175eb5be
commit aeb15ac0ca
4 changed files with 33 additions and 7 deletions

View File

@ -80,6 +80,16 @@ class PresentationSpeakerSerializer extends SilverStripeSerializer
$values['last_name'] = $last_name;
}
$affiliations = [];
if($speaker->hasMember()) {
$member = $speaker->getMember();
foreach ($member->getCurrentAffiliations() as $affiliation) {
$affiliations[] = SerializerRegistry::getInstance()->getSerializer($affiliation)->serialize('organization');
}
}
$values['affiliations'] = $affiliations;
if (!empty($expand)) {
foreach (explode(',', $expand) as $relation) {
switch (trim($relation)) {

View File

@ -89,16 +89,17 @@ final class SerializerRegistry
$this->registry['SummitLocationImage'] = SummitLocationImageSerializer::class;
// member
$this->registry['Member'] = [
$this->registry['Member'] = [
self::SerializerType_Public => PublicMemberSerializer::class,
self::SerializerType_Private => OwnMemberSerializer::class
];
$this->registry['Group'] = GroupSerializer::class;
$this->registry['Affiliation'] = AffiliationSerializer::class;
$this->registry['Organization'] = OrganizationSerializer::class;
$this->registry['Group'] = GroupSerializer::class;
$this->registry['Affiliation'] = AffiliationSerializer::class;
$this->registry['Organization'] = OrganizationSerializer::class;
// push notification
$this->registry['SummitPushNotification'] = SummitPushNotificationSerializer::class;
$this->registry['SummitPushNotification'] = SummitPushNotificationSerializer::class;
// teams
$this->registry['ChatTeam'] = ChatTeamSerializer::class;

View File

@ -13,6 +13,7 @@
**/
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Criteria;
use Doctrine\ORM\Mapping as ORM;
use models\exceptions\ValidationException;
use models\summit\Summit;
@ -48,6 +49,20 @@ class Member extends SilverstripeBaseModel
return $this->affiliations;
}
/**
* @return Affiliation[]
*/
public function getCurrentAffiliations(){
$criteria = Criteria::create()
->where(Criteria::expr()->eq("is_current", true))
->andWhere(Criteria::expr()->eq("end_date", null))
->orderBy([
"start_date" => Criteria::ASC,
]);
return $this->affiliations->matching($criteria);
}
/**
* @return Group[]
*/
@ -446,7 +461,7 @@ class Member extends SilverstripeBaseModel
->select('distinct f')
->from('models\summit\SummitEventFeedback','f')
->join('f.event','e')
->join('f.owner','o')
->join('f.owner','o')
->join('e.summit','s')
->where('s.id = :summit_id and o.id = :owner_id and e.published = 1')
->setParameter('summit_id', $summit->getId())

View File

@ -128,7 +128,7 @@ final class OAuth2SummitApiTest extends ProtectedApiTest
);
$content = $response->getContent();
$summit = json_decode($content);
$summit = json_decode($content);
$this->assertTrue(!is_null($summit));
$this->assertTrue(count($summit->schedule) > 0);
$this->assertResponseStatus(200);