Updated member serializer
Added track_chairs collection Change-Id: I4c1c1abc15bdf4909525acdcea205af1f2fa4632 Signed-off-by: smarcet <smarcet@gmail.com>
This commit is contained in:
@@ -46,6 +46,7 @@ final class OwnMemberSerializer extends AbstractMemberSerializer
|
||||
'rsvp',
|
||||
'sponsor_memberships',
|
||||
'legal_agreements',
|
||||
'track_chairs',
|
||||
];
|
||||
|
||||
private static $expand_group_events = [
|
||||
@@ -146,6 +147,14 @@ final class OwnMemberSerializer extends AbstractMemberSerializer
|
||||
$values['legal_agreements'] = $res;
|
||||
}
|
||||
|
||||
if(in_array('track_chairs', $relations)){
|
||||
$res = [];
|
||||
foreach ($member->getTrackChairs() as $track_chair){
|
||||
$res[] = intval($track_chair->getId());
|
||||
}
|
||||
$values['track_chairs'] = $res;
|
||||
}
|
||||
|
||||
if (!empty($expand)) {
|
||||
foreach (explode(',', $expand) as $relation) {
|
||||
$relation = trim($relation);
|
||||
@@ -236,13 +245,24 @@ final class OwnMemberSerializer extends AbstractMemberSerializer
|
||||
if(is_null($summit)) break;
|
||||
$res = [];
|
||||
foreach ($member->getLegalAgreements() as $agreement){
|
||||
$rsvps[] = SerializerRegistry::getInstance()
|
||||
$res[] = SerializerRegistry::getInstance()
|
||||
->getSerializer($agreement)
|
||||
->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation));
|
||||
}
|
||||
$values['legal_agreements'] = $res;
|
||||
}
|
||||
break;
|
||||
case 'track_chairs':{
|
||||
if(!in_array('track_chairs', $relations)) break;
|
||||
$res = [];
|
||||
foreach ($member->getTrackChairs() as $trackChair){
|
||||
$res[] = SerializerRegistry::getInstance()
|
||||
->getSerializer($trackChair)
|
||||
->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation));
|
||||
}
|
||||
$values['track_chairs'] = $res;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ use models\summit\SummitEvent;
|
||||
use models\summit\SummitEventFeedback;
|
||||
use models\summit\SummitOrder;
|
||||
use models\summit\SummitRoomReservation;
|
||||
use models\summit\SummitTrackChair;
|
||||
use models\utils\SilverstripeBaseModel;
|
||||
use Doctrine\ORM\Mapping AS ORM;
|
||||
|
||||
@@ -297,6 +298,12 @@ class Member extends SilverstripeBaseModel
|
||||
*/
|
||||
protected $summit_attendance_metrics;
|
||||
|
||||
/**
|
||||
* @ORM\OneToMany(targetEntity="models\summit\SummitTrackChair", mappedBy="member", cascade={"persist","remove"}, orphanRemoval=true)
|
||||
* @var SummitTrackChair[]
|
||||
*/
|
||||
private $track_chairs;
|
||||
|
||||
/**
|
||||
* Member constructor.
|
||||
*/
|
||||
@@ -324,6 +331,7 @@ class Member extends SilverstripeBaseModel
|
||||
$this->summit_permission_groups = new ArrayCollection();
|
||||
$this->summit_attendance_metrics = new ArrayCollection();
|
||||
$this->legal_agreements = new ArrayCollection();
|
||||
$this->track_chairs = new ArrayCollection();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1868,4 +1876,28 @@ SQL;
|
||||
return $this->belongsToGroup(IGroup::FoundationMembers) && $this->legal_agreements->count() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SummitTrackChair $trackChair
|
||||
*/
|
||||
public function addTrackChair(SummitTrackChair $trackChair){
|
||||
if($this->track_chairs->contains($trackChair)) return;
|
||||
$this->track_chairs->add($trackChair);
|
||||
$trackChair->setMember($this);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SummitTrackChair $trackChair
|
||||
*/
|
||||
public function removeTrackChair(SummitTrackChair $trackChair){
|
||||
if(!$this->track_chairs->contains($trackChair)) return;
|
||||
$this->track_chairs->removeElement($trackChair);
|
||||
$trackChair->clearMember();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ArrayCollection|SummitTrackChair[]
|
||||
*/
|
||||
public function getTrackChairs(){
|
||||
return $this->track_chairs;
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@ class SummitTrackChair extends SilverstripeBaseModel
|
||||
{
|
||||
use SummitOwned;
|
||||
/**
|
||||
* @ORM\ManyToOne(targetEntity="models\main\Member")
|
||||
* @ORM\ManyToOne(targetEntity="models\main\Member", inversedBy="track_chairs")
|
||||
* @ORM\JoinColumn(name="MemberID", referencedColumnName="ID", onDelete="SET NULL")
|
||||
* @var Member
|
||||
*/
|
||||
@@ -146,4 +146,8 @@ class SummitTrackChair extends SilverstripeBaseModel
|
||||
parent::__construct();
|
||||
$this->categories = new ArrayCollection();
|
||||
}
|
||||
|
||||
public function clearMember():void{
|
||||
$this->member = null;
|
||||
}
|
||||
}
|
||||
@@ -5122,7 +5122,7 @@ SQL;
|
||||
|
||||
if(!$trackChair) {
|
||||
$trackChair = new SummitTrackChair();
|
||||
$trackChair->setMember($member);
|
||||
$member->addTrackChair($trackChair);
|
||||
$trackChair->setSummit($this);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
use App\Models\Foundation\Main\IGroup;
|
||||
|
||||
/**
|
||||
* Copyright 2016 OpenStack Foundation
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@@ -18,8 +20,16 @@ final class OAuth2MembersApiTest extends ProtectedApiTest
|
||||
|
||||
protected function setUp()
|
||||
{
|
||||
$this->setCurrentGroup(IGroup::TrackChairs);
|
||||
parent::setUp();
|
||||
self::insertTestData();
|
||||
self::$summit_permission_group->addMember(self::$member);
|
||||
self::$em->persist(self::$summit);
|
||||
self::$em->persist(self::$summit_permission_group);
|
||||
self::$em->flush();
|
||||
self::$summit->addTrackChair(self::$member, [ self::$defaultTrack ] );
|
||||
self::$em->persist(self::$summit);
|
||||
self::$em->flush();
|
||||
}
|
||||
|
||||
public function tearDown()
|
||||
@@ -155,7 +165,7 @@ final class OAuth2MembersApiTest extends ProtectedApiTest
|
||||
public function testGetMyMember()
|
||||
{
|
||||
$params = [
|
||||
'expand' => 'groups'
|
||||
'expand' => 'groups,track_chairs'
|
||||
];
|
||||
|
||||
$headers = array("HTTP_Authorization" => " Bearer " . $this->access_token);
|
||||
|
||||
Reference in New Issue
Block a user