Fixed registration request orphan
Change-Id: I1c8664d6a175ef4c58145798fe7699466bcbaab7 Signed-off-by: smarcet <smarcet@gmail.com>
This commit is contained in:
parent
789d8eede1
commit
f59e5ba5dd
@ -128,7 +128,7 @@ class PresentationSpeaker extends SilverstripeBaseModel
|
||||
private $phone_number;
|
||||
|
||||
/**
|
||||
* @ORM\ManyToOne(targetEntity="SpeakerRegistrationRequest", cascade={"persist"}), orphanRemoval=true
|
||||
* @ORM\ManyToOne(targetEntity="SpeakerRegistrationRequest", cascade={"persist","remove"}), orphanRemoval=true
|
||||
* @ORM\JoinColumn(name="RegistrationRequestID", referencedColumnName="ID")
|
||||
* @var SpeakerRegistrationRequest
|
||||
*/
|
||||
|
@ -16,6 +16,8 @@ use models\utils\RandomGenerator;
|
||||
use models\utils\SilverstripeBaseModel;
|
||||
use Doctrine\ORM\Mapping AS ORM;
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use phpDocumentor\Reflection\Types\Parent_;
|
||||
|
||||
/**
|
||||
* Class SpeakerRegistrationRequest
|
||||
* @ORM\Entity(repositoryClass="App\Repositories\Summit\DoctrineSpeakerRegistrationRequestRepository")
|
||||
@ -124,6 +126,29 @@ class SpeakerRegistrationRequest extends SilverstripeBaseModel
|
||||
return $this->speaker;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getSpeakerId(){
|
||||
try {
|
||||
return is_null($this->speaker) ? 0 : $this->speaker->getId();
|
||||
}
|
||||
catch(\Exception $ex){
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function hasSpeaker():bool{
|
||||
return $this->getSpeakerId() > 0;
|
||||
}
|
||||
|
||||
public function clearSpeaker(){
|
||||
$this->speaker = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param PresentationSpeaker $speaker
|
||||
*/
|
||||
@ -184,4 +209,10 @@ class SpeakerRegistrationRequest extends SilverstripeBaseModel
|
||||
$this->confirmation_date = new \DateTime('now', new \DateTimeZone('UTC'));
|
||||
$this->is_confirmed = true;
|
||||
}
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->is_confirmed = false;
|
||||
}
|
||||
}
|
@ -331,7 +331,7 @@ final class MemberService
|
||||
// check speaker registration request by email and no member set
|
||||
Log::debug(sprintf("MemberService::registerExternalUserById trying to get former registration request by email %s", $email));
|
||||
$request = $this->speaker_registration_request_repository->getByEmail($email);
|
||||
if(!is_null($request)){
|
||||
if(!is_null($request) && $request->hasSpeaker()){
|
||||
Log::debug(sprintf("MemberService::registerExternalUserById got former registration request by email %s", $email));
|
||||
$speaker = $request->getSpeaker();
|
||||
if(!is_null($speaker))
|
||||
@ -340,6 +340,7 @@ final class MemberService
|
||||
$speaker->setMember($member);
|
||||
}
|
||||
}
|
||||
|
||||
if($is_new)
|
||||
Event::fire(new NewMember($member->getId()));
|
||||
|
||||
|
@ -216,4 +216,25 @@ final class DoctrineTest extends TestCase
|
||||
|
||||
$con2->rollBack();
|
||||
}
|
||||
|
||||
public function testRegistrationSpeaker(){
|
||||
$speaker_repo = EntityManager::getRepository(\models\summit\PresentationSpeaker::class);
|
||||
$speaker = new \models\summit\PresentationSpeaker();
|
||||
$registration_request = new \models\summit\SpeakerRegistrationRequest();
|
||||
$speaker->setTitle("test title");
|
||||
$speaker->setBio("this is the bio");
|
||||
$speaker->setFirstName("this is the name");
|
||||
$speaker->setLastName("this is the last name");
|
||||
$registration_request->setEmail("test2@test.com");
|
||||
|
||||
$speaker->setRegistrationRequest($registration_request);
|
||||
|
||||
$em = Registry::getManager(SilverstripeBaseModel::EntityManager);
|
||||
$em->persist($speaker);
|
||||
$em->flush();
|
||||
|
||||
$speaker_repo->delete($speaker);
|
||||
|
||||
$em->flush();
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user