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;
|
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")
|
* @ORM\JoinColumn(name="RegistrationRequestID", referencedColumnName="ID")
|
||||||
* @var SpeakerRegistrationRequest
|
* @var SpeakerRegistrationRequest
|
||||||
*/
|
*/
|
||||||
|
@ -16,6 +16,8 @@ use models\utils\RandomGenerator;
|
|||||||
use models\utils\SilverstripeBaseModel;
|
use models\utils\SilverstripeBaseModel;
|
||||||
use Doctrine\ORM\Mapping AS ORM;
|
use Doctrine\ORM\Mapping AS ORM;
|
||||||
use Doctrine\Common\Collections\ArrayCollection;
|
use Doctrine\Common\Collections\ArrayCollection;
|
||||||
|
use phpDocumentor\Reflection\Types\Parent_;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class SpeakerRegistrationRequest
|
* Class SpeakerRegistrationRequest
|
||||||
* @ORM\Entity(repositoryClass="App\Repositories\Summit\DoctrineSpeakerRegistrationRequestRepository")
|
* @ORM\Entity(repositoryClass="App\Repositories\Summit\DoctrineSpeakerRegistrationRequestRepository")
|
||||||
@ -124,6 +126,29 @@ class SpeakerRegistrationRequest extends SilverstripeBaseModel
|
|||||||
return $this->speaker;
|
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
|
* @param PresentationSpeaker $speaker
|
||||||
*/
|
*/
|
||||||
@ -184,4 +209,10 @@ class SpeakerRegistrationRequest extends SilverstripeBaseModel
|
|||||||
$this->confirmation_date = new \DateTime('now', new \DateTimeZone('UTC'));
|
$this->confirmation_date = new \DateTime('now', new \DateTimeZone('UTC'));
|
||||||
$this->is_confirmed = true;
|
$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
|
// 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));
|
Log::debug(sprintf("MemberService::registerExternalUserById trying to get former registration request by email %s", $email));
|
||||||
$request = $this->speaker_registration_request_repository->getByEmail($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));
|
Log::debug(sprintf("MemberService::registerExternalUserById got former registration request by email %s", $email));
|
||||||
$speaker = $request->getSpeaker();
|
$speaker = $request->getSpeaker();
|
||||||
if(!is_null($speaker))
|
if(!is_null($speaker))
|
||||||
@ -340,6 +340,7 @@ final class MemberService
|
|||||||
$speaker->setMember($member);
|
$speaker->setMember($member);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if($is_new)
|
if($is_new)
|
||||||
Event::fire(new NewMember($member->getId()));
|
Event::fire(new NewMember($member->getId()));
|
||||||
|
|
||||||
|
@ -216,4 +216,25 @@ final class DoctrineTest extends TestCase
|
|||||||
|
|
||||||
$con2->rollBack();
|
$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