Fixed mapping for speaker add
Change-Id: I32a1e565ef35fcecfce1dd1c4cb8a6856f35421e
This commit is contained in:
@@ -224,7 +224,7 @@ class Member extends SilverstripeBaseModel
|
||||
|
||||
/**
|
||||
* @var PresentationSpeaker
|
||||
* @ORM\OneToOne(targetEntity="models\summit\PresentationSpeaker", mappedBy="member")
|
||||
* @ORM\OneToOne(targetEntity="models\summit\PresentationSpeaker", mappedBy="member", cascade={"persist"})
|
||||
*/
|
||||
private $speaker;
|
||||
|
||||
@@ -1284,6 +1284,14 @@ SQL;
|
||||
}
|
||||
}
|
||||
|
||||
public function setSpeaker(PresentationSpeaker $speaker){
|
||||
$this->speaker = $speaker;
|
||||
}
|
||||
|
||||
public function clearSpeaker(){
|
||||
$this->speaker = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
|
||||
@@ -161,8 +161,9 @@ class PresentationSpeaker extends SilverstripeBaseModel
|
||||
private $photo;
|
||||
|
||||
/**
|
||||
* @ORM\OneToOne(targetEntity="models\main\Member",inversedBy="speaker")
|
||||
* @ORM\JoinColumn(name="MemberID", referencedColumnName="ID")
|
||||
* Owning side
|
||||
* @ORM\OneToOne(targetEntity="models\main\Member",inversedBy="speaker", cascade={"persist"})
|
||||
* @ORM\JoinColumn(name="MemberID", referencedColumnName="ID", nullable=triue)
|
||||
* @var Member
|
||||
*/
|
||||
private $member;
|
||||
@@ -1023,6 +1024,7 @@ class PresentationSpeaker extends SilverstripeBaseModel
|
||||
*/
|
||||
public function setMember(Member $member){
|
||||
$this->member = $member;
|
||||
$member->setSpeaker($this);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -35,15 +35,7 @@ final class DoctrineMemberRepository
|
||||
*/
|
||||
public function getByEmail($email)
|
||||
{
|
||||
return $this->getEntityManager()
|
||||
->createQueryBuilder()
|
||||
->select("m")
|
||||
->from(\models\main\Member::class, "m")
|
||||
->where("m.email = :email")
|
||||
->setParameter("email", trim($email))
|
||||
->setMaxResults(1)
|
||||
->getQuery()
|
||||
->getOneOrNullResult();
|
||||
$this->findOneBy(['email' => trim($email)]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -192,7 +192,7 @@ final class SpeakerService
|
||||
|
||||
if ($member_id > 0) {
|
||||
$member = $this->member_repository->getById($member_id);
|
||||
if (is_null($member))
|
||||
if (is_null($member) || !$member instanceof Member)
|
||||
throw new EntityNotFoundException(sprintf("member id %s does not exists!", $member_id));
|
||||
|
||||
$existent_speaker = $this->speaker_repository->getByMember($member);
|
||||
@@ -209,13 +209,9 @@ final class SpeakerService
|
||||
$speaker->setMember($member);
|
||||
}
|
||||
|
||||
$this->updateSpeakerMainData($speaker, $data);
|
||||
|
||||
if ($member_id == 0 && !empty($emai)) {
|
||||
$member = $this->member_repository->getByEmail($email);
|
||||
if (is_null($member)) {
|
||||
$this->registerSpeaker($speaker, $email);
|
||||
} else {
|
||||
$existent_speaker = $this->speaker_repository->getByMember($member);
|
||||
if (!is_null($existent_speaker))
|
||||
throw new ValidationException
|
||||
@@ -228,9 +224,16 @@ final class SpeakerService
|
||||
|
||||
);
|
||||
$speaker->setMember($member);
|
||||
|
||||
}
|
||||
|
||||
if(!$speaker->hasMember()){
|
||||
$this->registerSpeaker($speaker, $email);
|
||||
}
|
||||
}
|
||||
|
||||
$this->updateSpeakerMainData($speaker, $data);
|
||||
|
||||
$this->speaker_repository->add($this->updateSpeakerRelations($speaker, $data));
|
||||
|
||||
$email_request = new SpeakerCreationEmailCreationRequest();
|
||||
|
||||
Reference in New Issue
Block a user