Fixed mapping for speaker add

Change-Id: I32a1e565ef35fcecfce1dd1c4cb8a6856f35421e
This commit is contained in:
smarcet
2019-09-09 14:13:01 -03:00
parent c3b8959332
commit e8f7671797
4 changed files with 22 additions and 17 deletions

View File

@@ -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
*/

View File

@@ -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);
}
/**

View File

@@ -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)]);
}
/**

View File

@@ -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();