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

@ -93,6 +93,7 @@ final class SerializerRegistry
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;

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[]
*/