<?php
namespace App\Service;
use App\Entity\FilmProject;
use App\Entity\FilmProjectDetails;
use App\Entity\FilmProjectFunding;
use App\Entity\FilmProjectMember;
use App\Entity\FilmProjectOriginal;
use App\Entity\FilmProjectSponsor;
use App\Entity\FilmProjectStoryImpact;
use App\Entity\FilmProjectTimeline;
use App\Entity\PaymentDetails;
use App\Entity\Product;
use App\Entity\User;
use App\Repository\FilmProjectMemberRepository;
use App\Repository\UserRepository;
use App\Serializer\FilmProjectObjectConverter;
use App\Service\Xero\ContactService;
use App\Service\Xero\InvoiceService;
use App\String\Constant;
use App\Utility\PdfExporter;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Snappy\Pdf;
use Twig\Environment;
class FilmApplicationService
{
private OrderDetailsService $orderDetailsService;
private SalesforceService $salesforceService;
private WordpressService $wpService;
private EntityManagerInterface $em;
private MerchantWarriorService $mwService;
private ContactService $xeroContactService;
private InvoiceService $invoiceService;
private MailService $mailService;
private SettingService $settingService;
private UserService $userService;
private Environment $twig;
private Pdf $pdf;
private UserRepository $userRepository;
private FilmProjectMemberRepository $filmProjectMemberRepository;
public function __construct(OrderDetailsService $orderDetailsService, SalesforceService $salesforceService, WordpressService $wpService, EntityManagerInterface $em, MerchantWarriorService $mwService, ContactService $xeroContactService, InvoiceService $invoiceService, MailService $mailService, SettingService $settingService, UserService $userService, Environment $twig, Pdf $pdf, UserRepository $userRepository, FilmProjectMemberRepository $filmProjectMemberRepository)
{
$this->orderDetailsService = $orderDetailsService;
$this->salesforceService = $salesforceService;
$this->wpService = $wpService;
$this->em = $em;
$this->xeroContactService = $xeroContactService;
$this->invoiceService = $invoiceService;
$this->mwService = $mwService;
$this->mailService = $mailService;
$this->settingService = $settingService;
$this->userService = $userService;
$this->twig = $twig;
$this->pdf = $pdf;
$this->userRepository = $userRepository;
$this->filmProjectMemberRepository = $filmProjectMemberRepository;
}
/**
* Create film project skeleton object
*
* @param User $user
* @return FilmProject
*/
public function createFilmProjectObj(User $user)
{
$filmProjectAdmin = (new FilmProjectMember())->setRole('Administrator');
$filmProjectProducer = (new FilmProjectMember())->setRole('Producer');
$filmProjectDirector = (new FilmProjectMember())->setRole('Director');
$filmProjectDetails = new FilmProjectDetails();
$filmProjectStoryImpact = new FilmProjectStoryImpact();
$filmProjectTimeline = new FilmProjectTimeline();
$filmProjectFunding = new FilmProjectFunding();
$filmApplicationOrder = $this->orderDetailsService->createFilmApplicationOrderObj($user);
$filmProject = (new FilmProject())
->setStatus('draft')
->setFilmProjectAdmin($filmProjectAdmin)
->setFilmProjectProducer($filmProjectProducer)
->setFilmProjectDirector($filmProjectDirector)
->setFilmProjectDetails($filmProjectDetails)
->setFilmProjectStoryImpact($filmProjectStoryImpact)
->setFilmProjectTimeline($filmProjectTimeline)
->setFilmProjectFunding($filmProjectFunding)
->setOwner($user)
->setOrderDetails($filmApplicationOrder)
->setProduct($this->settingService->getDefaultDonationProduct())
;
$filmApplicationOrder->setFilmProject($filmProject);
return $filmProject;
}
/**
* Create campaign salesforce object along with its relations
*
* @param FilmProject $entityInstance
* @return void
*/
public function createCampaignSalesforce(FilmProject $entityInstance)
{
// Create salesforce objects before invoice creation
$filmProjectAdmin = $entityInstance->getFilmProjectAdmin();
$filmProjectProducer = $entityInstance->getFilmProjectProducer();
$filmProjectDirector = $entityInstance->getFilmProjectDirector();
$projectMembers = [$filmProjectAdmin, $filmProjectProducer, $filmProjectDirector];
foreach ($projectMembers as $projectMember) {
// $this->em->persist($projectMember);
// $this->em->flush();
$accountSalesforceId = $this->salesforceService->createAccountFromFilmProjectMember($projectMember);
if ($accountSalesforceId) {
$projectMember->setAccountSalesforceId($accountSalesforceId);
}
$salesforceId = $this->salesforceService->createContactFromFilmMember($projectMember);
$projectMember->setSalesforceId($salesforceId);
$this->em->persist($projectMember);
$this->em->flush();
}
$salesforceId = $this->salesforceService->createCampaign($entityInstance);
$entityInstance->setSalesforceId($salesforceId);
$this->em->persist($entityInstance);
$this->em->flush();
}
public function updateCampaignSalesforce(FilmProject $entityInstance)
{
// Create salesforce objects before invoice creation
$filmProjectAdmin = $entityInstance->getFilmProjectAdmin();
$filmProjectProducer = $entityInstance->getFilmProjectProducer();
$filmProjectDirector = $entityInstance->getFilmProjectDirector();
$filmProjectMembers = $entityInstance->getFilmProjectMembers()->toArray();
$projectMembers = [$filmProjectAdmin, $filmProjectProducer, $filmProjectDirector];
$projectMembers = array_merge($projectMembers, $filmProjectMembers);
foreach ($projectMembers as $projectMember) {
// $accountSalesforceId = $projectMember->getAccountSalesforceId();
// if (empty($accountSalesforceId) && !empty($projectMember->getOrganisation())) {
// $accountSalesforceId = $this->salesforceService->createAccountFromFilmProjectMember($projectMember);
// if ($accountSalesforceId) $projectMember->setAccountSalesforceId($accountSalesforceId);
// }
if (!empty($projectMember->getOrganisation())) {
$accountSalesforceId = $this->salesforceService->createAccountFromFilmProjectMember($projectMember);
if ($accountSalesforceId) {
$projectMember->setAccountSalesforceId($accountSalesforceId);
}
}
$salesforceId = $projectMember->getSalesforceId();
if (empty($salesforceId)) {
$salesforceId = $this->salesforceService->createContactFromFilmMember($projectMember);
$projectMember->setSalesforceId($salesforceId);
} else {
$this->salesforceService->createContactFromFilmMember($projectMember);
}
$this->em->persist($projectMember);
$this->em->flush();
}
$salesforceId = $this->salesforceService->updateCampaign($entityInstance);
$entityInstance->setModifiedAt(new \DateTime('now'));
$this->em->persist($entityInstance);
$this->em->flush();
}
public function updateCampaignSalesforceAdmin(FilmProject $entityInstance) {
$salesforceId = $this->salesforceService->updateCampaignAdmin($entityInstance);
}
public function createTransactionSalesforce(FilmProject $entityInstance)
{
$id = $this->salesforceService->createFilmApplicationTransaction($entityInstance);
$orderDetails = $entityInstance->getOrderDetails();
$orderDetails->setSalesforceId($id);
$this->em->persist($orderDetails);
$this->em->flush();
}
/**
* Create invoice from film project application
*
* @param User $user
* @param FilmProject $filmProject
* @return void
*/
public function createFilmProjectInvoice(?User $user = null, FilmProject $filmProject, $isUpdate = false)
{
$orderDetails = $filmProject->getOrderDetails();
$xeroId = $this->xeroContactService->findContactByprojectName($filmProject) ?? $this->xeroContactService->createContactByProjectName($filmProject);
if (empty($xeroId)) {
throw new \LogicException("xero ID doesn\'t get created successfully");
}
// $userInformation = $user->getUserInformation();
// $userInformation->setXeroId($xeroId);
// $this->em->persist($userInformation);
$defaultProduct = $this->getDefaultProduct();
$orderDetails = $this->invoiceService->createFilmInvoice($filmProject, $defaultProduct, $xeroId, $orderDetails, $user); // XERO CREATE INVOICE
$orderDetails->setXeroContactId($xeroId);
$this->em->persist($orderDetails);
$filmProject->setXeroId($xeroId); // Finally set xero ID on project
$this->em->persist($filmProject);
$this->em->flush();
}
/**
* Set film project to draft
*
* @param FilmProject $filmProject
* @return void
*/
public function setFilmProjectToDraft(FilmProject $filmProject)
{
$filmProject->setStatus('draft');
if ( $filmProject->getResubmitCount() ) {
$filmProject->setStatus('resubmit');
}
$this->em->persist($filmProject);
$this->em->flush();
}
/**
* Set film project to ready for review
*
* @param FilmProject $filmProject
* @return void
*/
public function setFilmProjectToReadyForReview(FilmProject $filmProject)
{
$filmProject->setStatus('ready for review');
$filmProject->setCreatedAt(new \DateTime('now'));
$this->em->persist($filmProject);
$this->em->flush();
}
/**
* Set film project created date to today
*
* @param FilmProject $filmProject
* @return void
*/
public function setFilmProjectCreatedDateToday(FilmProject $filmProject)
{
$currentDatetime = new \DateTime('now');
$filmProject->setCreatedAt($currentDatetime);
$this->em->persist($filmProject);
$this->em->flush();
}
/**
* Update Wordpress object
*
* @param FilmProject $filmProject
* @return void
*/
public function updateWordpressObject(FilmProject $filmProject)
{
$this->wpService->updateWpFilmProject($filmProject);
$this->wpService->createProjectUpdate($filmProject, $this->filmProjectMemberRepository);
}
public function createWordpressObject(FilmProject $filmProject)
{
// Create wordpress project
$wordpressId = $this->wpService->createWpFilmProject($filmProject);
$filmProject->setWordpressId($wordpressId);
$filmProject->setWordpressStatus(Constant::WP_STATUS_DRAFT);
$this->em->persist($filmProject);
$this->em->flush();
}
/**
* Approve film project
*
* @param FilmProject $filmProject
* @return void
*/
public function approveFilmProject(FilmProject $filmProject)
{
$filmProject
->setStatus('approved')
->setNote(null)
;
// Create wordpress users for each member in the project
// $this->createUserProject($filmProject);
// Create wordpress project
// $wordpressId = $this->wpService->createWpFilmProject($filmProject);
// $filmProject->setWordpressId($wordpressId);
// $filmProject->setWordpressStatus(Constant::WP_STATUS_DRAFT);
// Update project members
$projectOwner = $filmProject->getOwner();
$projectOwnerEmail = $projectOwner->getEmail();
$allProjectMembers = $filmProject->getAllMembers();
foreach($allProjectMembers as $projectMember) {
$existingUser = $this->userRepository->findOneBy(['email' => $projectMember->getEmail()]);
if ($existingUser) {
if ($projectOwnerEmail == $projectMember->getEmail()) {
$projectMember->setIsActive(true);
$this->wpService->addMemberFromProject($projectMember, $existingUser);
}
}
}
// Update wordpress donation
if ($filmProject->getDonations()) {
$this->wpService->updateFilmObjectDonationByProject($filmProject);
}
// Approve campaign in Salesforce
$this->salesforceService->approveCampaign($filmProject);
$this->em->persist($filmProject);
$this->em->flush();
}
/**
* Ask to decline film project
*
* @param FilmProject $filmProject
* @return void
*/
public function declineFilmProject(FilmProject $filmProject)
{
$filmProject
->setStatus('declined')
->setResubmitCount(0)
;
// Update salesforce object to be declined
$this->salesforceService->declineCampaign($filmProject);
$this->em->persist($filmProject);
$this->em->flush();
// Send email to filmmaker
$this->mailService->sendFilmProjectEmail(Constant::MAIL_FILM_DECLINED, $filmProject);
}
/**
* Ask to resubmit film project
*
* @param FilmProject $filmProject
* @return void
*/
public function resubmitFilmProject(FilmProject $filmProject)
{
$filmProject
->setStatus('resubmit')
->setResubmitCount(+1)
;
// Update salesforce object to be asked to resubmit
$this->salesforceService->resubmitCampaign($filmProject);
$this->em->persist($filmProject);
$this->em->flush();
// Send email to filmmaker admin
$this->mailService->sendFilmProjectEmail(Constant::MAIL_FILM_ASK_TO_RESUBMIT, $filmProject);
}
/**
* Process film application payment
*
* @param FilmProject $filmProject
* @return void
*/
public function proceedPayment(FilmProject $filmProject)
{
$orderDetails = $filmProject->getOrderDetails();
$orderBillingDetails = $orderDetails->getOrderBillingDetails();
if ($orderBillingDetails->getCardId()) { // If use previous credit card
$orderDetails = $this->mwService->processCardByCardId($orderDetails, $orderBillingDetails->getCardId(), true);
} else { // New payment
$orderDetails = $this->mwService->processCard($orderDetails, $orderBillingDetails->getSavedCreditCardNumber(), true); // Process card with addCard value 1
$orderBillingDetails = $orderDetails->getOrderBillingDetails();
if (!empty($orderBillingDetails->getCardId())){ // Save credit card to DB
$user = $orderDetails->getUser();
$this->userService->saveUserCreditCard($user, $orderBillingDetails->getCardId());
}
}
$this->updateOrderDetails($orderDetails);
$this->changePaymentObjectToPaid($orderDetails->getPaymentDetails());
}
/**
* Send email
*
* @param FilmProject $filmProject
* @return void
*/
public function sendEmail(FilmProject $filmProject, Environment $twig = null)
{
// $this->mailService->sendFilmProjectEmail(Constant::MAIL_FILM_SUBMITTED, $filmProject);
$orderDetails = $filmProject->getOrderDetails();
// TODO: re-enable once Villar set up wkhtmltopdf on staging site
// Generate pdf report as well
$pdfExporter = new PdfExporter($this->twig, $this->pdf);
$projectPdf = $pdfExporter->convertProjectToPdf($filmProject, true);
$pdf = $pdfExporter->convertFilmReceiptPdf($orderDetails, true, true);
$attachmentPath = [
[
'path' => '',
'filename' => $filmProject->getTitle() .' receipt.pdf',
'pdf' => $pdf,
],
[
'path' => '',
'filename' => $filmProject->getTitle() .' report.pdf',
'pdf' => $projectPdf,
]
];
$this->mailService->sendFilmProjectEmail(Constant::MAIL_FILM_PAYMENT_RECEIVED, $filmProject, $attachmentPath);
}
public function sendApprovedEmail(FilmProject $filmProject)
{
if (!$filmProject->getResubmitCount()) {
$this->mailService->sendFilmProjectEmail(Constant::MAIL_FILM_APPROVED, $filmProject);
} else {
$this->mailService->sendFilmProjectEmail('MAIL_FILM_RESUBMIT_APPROVED', $filmProject);
}
$this->sendMemberInvitationEmail($filmProject);
}
public function sendMemberInvitationEmail(FilmProject $filmProject)
{
$filmProjectTeam = [];
$filmAdmin = $filmProject->getFilmProjectAdmin();
$filmProducer = $filmProject->getFilmProjectProducer();
$filmDirector = $filmProject->getFilmProjectDirector();
if (!$filmAdmin->isIsSent()) {
array_push($filmProjectTeam, $filmAdmin);
$filmAdmin->approveSentEmail();
$this->em->persist($filmAdmin);
}
if (!$filmProducer->isIsSent()) {
array_push($filmProjectTeam, $filmProducer);
$filmProducer->approveSentEmail();
$this->em->persist($filmProducer);
}
if (!$filmDirector->isIsSent()) {
array_push($filmProjectTeam, $filmDirector);
$filmDirector->approveSentEmail();
$this->em->persist($filmDirector);
}
foreach($filmProject->getFilmProjectMembers() as $filmProjectMember) {
if (!$filmProjectMember->isIsSent()) {
array_push($filmProjectTeam, $filmProjectMember);
$filmProjectMember->approveSentEmail();
$this->em->persist($filmProjectMember);
}
}
// Check if user exists as filmmaker or donor
$isSentEmails = [];
$owner = $filmProject->getOwner();
foreach ($filmProjectTeam as $member) {
if (!in_array($member->getEmail(), $isSentEmails)) {
if ($member->getEmail() != $owner->getEmail()) {
$status = Constant::MAIL_FILM_MEMBER_STATUS;
$user = $this->userRepository->findOneBy(['email' => $member->getEmail()]);
if($user) {
// if ($user->isFilmmaker()) {
$status = Constant::MAIL_FILMMAKER_FILM_MEMBER_STATUS;
// }
}
$this->mailService->sendFilmMemberEmail($status, $filmProject, $member);
array_push($isSentEmails, $member->getEmail());
}
}
}
$this->em->flush();
}
/**
* Get default film application product
*
* @return Product|null
*/
public function getDefaultProduct(): ?Product
{
return $this->settingService->getDefaultFilmApplicationProduct();
}
protected function changePaymentObjectToPaid(PaymentDetails $paymentDetails)
{
$paymentDetails->setPaid();
$this->em->persist($paymentDetails);
$this->em->flush();
}
protected function updateOrderDetails($orderDetails)
{
$orderDetails->setModifiedAt(new \DateTime('now'));
$this->em->persist($orderDetails);
$this->em->flush();
}
public function createOriginalCopy($entityInstance)
{
$filmProjectConverter = new FilmProjectObjectConverter();
$filmProjectOriginalCopy = $entityInstance->getfilmprojectOriginal();
if (empty($filmProjectOriginalCopy)) {
$filmProjectArr = $filmProjectConverter->serializeFilmProjectDocument($entityInstance);
$filmProjectOriginalCopy = (new FilmProjectOriginal())
->setFilmProject($entityInstance)
->setData($filmProjectArr);
;
$this->em->persist($filmProjectOriginalCopy);
$this->em->flush();
}
}
/**
* Publish project on Wordpress
*
* @param FilmProject $filmProject
* @return void
*/
public function publishProject(FilmProject $filmProject)
{
$this->wpService->setProjectStatus($filmProject, Constant::WP_STATUS_PUBLISH);
$filmProject->setWordpressStatus(Constant::WP_STATUS_PUBLISH);
$this->em->persist($filmProject);
$this->em->flush();
}
/**
* Unpublish project on Wordpress
*
* @param FilmProject $filmProject
* @return void
*/
public function unpublishProject(FilmProject $filmProject)
{
$this->wpService->setProjectStatus($filmProject, Constant::WP_STATUS_DRAFT);
$filmProject->setWordpressStatus(Constant::WP_STATUS_DRAFT);
$this->em->persist($filmProject);
$this->em->flush();
}
/**
* Archive project on Wordpress
*
* @param FilmProject $filmProject
* @return void
*/
public function archiveProject(FilmProject $filmProject)
{
$this->wpService->deleteProject($filmProject);
$filmProject->setWordpressStatus(Constant::WP_STATUS_ARCHIVED_ALT);
$this->em->persist($filmProject);
$this->em->flush();
}
public function makePrivateProject(FilmProject $filmProject, string $password)
{
$this->wpService->setProjectPrivate($filmProject, $password);
$filmProject->setWordpressStatus(Constant::WP_STATUS_PROTECTED);
$filmProject->setWordpressPassword($password);
$this->em->persist($filmProject);
$this->em->flush();
}
public function makeHiddenProject(FilmProject $filmProject)
{
$this->wpService->setProjectHidden($filmProject);
$filmProject->setWordpressStatus(Constant::WP_STATUS_PRIVATE);
$this->em->persist($filmProject);
$this->em->flush();
}
public function createUserProject(FilmProject $filmProject)
{
$administrator = $filmProject->getFilmProjectAdmin();
$producer = $filmProject->getFilmProjectProducer();
$director = $filmProject->getFilmProjectDirector();
$filmProjectMembers = $filmProject->getFilmProjectMembers()->toArray();
$projectMembers = [$administrator, $producer, $director];
$projectMembers = array_merge($projectMembers, $filmProjectMembers);
foreach ($projectMembers as $projectMember) {
$wordpressId = $projectMember->getWordpressId();
if (empty($wordpressId)) {
// Start the user creation procedure
$user = $this->userRepository->findOneBy(['email' => $projectMember->getEmail()]);
if (empty($user)) {
$users = $this->filmProjectMemberRepository->findBy(['email' => $projectMember->getEmail()]);
if (!empty($users)) {
}
} else {
$userInformation = $user->getUserInformation(); // Main User will always have wordpress ID attached
$wordpressId = $userInformation->getWordpressId();
}
}
$projectMember->setWordpressId($wordpressId);
$this->em->persist($projectMember);
}
$this->em->flush();
}
/**
* hide donation box
*
* @param FilmProject $filmProject
* @return void
*/
public function hideDonationBox(FilmProject $filmProject)
{
$filmProject->setIsHideDonationBox(true);
$this->wpService->setDonationBoxStatus($filmProject);
$this->em->persist($filmProject);
$this->em->flush();
}
/**
* Show donation box
*
* @param FilmProject $filmProject
* @return void
*/
public function showDonationBox(FilmProject $filmProject)
{
$filmProject->setIsHideDonationBox(false);
$this->wpService->setDonationBoxStatus($filmProject);
$this->em->persist($filmProject);
$this->em->flush();
}
/**
* generate film project sponsors from partner name comma separated text
*
* @param FilmProject $filmProject
* @return void
*/
public function generateSponsorsFromText(FilmProject $filmProject)
{
$filmProjectStoryImpact = $filmProject->getFilmProjectStoryImpact();
$filmImpactPartnerString = $filmProjectStoryImpact->getPartnerName();
if ($filmImpactPartnerString) {
$filmImpactPartnerArr = explode(',', $filmImpactPartnerString);
foreach ($filmImpactPartnerArr as $item) {
$impactPartner = (new FilmProjectSponsor())
->setName($item)
;
$filmProject->addFilmProjectSponsor($impactPartner);
}
}
$this->em->persist($filmProject);
$this->em->flush();
}
/**
* Generate text from sponsors
*
* @param FilmProject $filmProject
* @return void
*/
public function generateTextFromSponsors(FilmProject $filmProject)
{
$filmProjectSponsors = $filmProject->getFilmProjectSponsors();
$textArr = [];
if ($filmProjectSponsors) {
foreach($filmProjectSponsors as $filmProjectSponsor) {
$partnerName = $filmProjectSponsor->getName();
array_push($textArr, $partnerName);
}
}
$filmProjectStoryImpact = $filmProject->getFilmProjectStoryImpact();
$filmProjectStoryImpact->setPartnerName(implode(', ', $textArr));
}
public function checkIsProjectImage(FilmProject $filmProject)
{
$filmProjectDetails = $filmProject->getFilmProjectDetails();
$heroImage = $filmProjectDetails->getProjectHeroImage();
if (empty($heroImage) || $heroImage == '') return false;
return true;
}
public function checkIsProjectImageName(FilmProject $filmProject)
{
$filmProjectDetails = $filmProject->getFilmProjectDetails();
$heroImage = $filmProjectDetails->getProjectHeroImage();
if (strlen($heroImage) > 50) {
return false;
}
return true;
}
public function setExistingActiveMembers(FilmProject $filmProject)
{
$filmProjectMembers = $filmProject->getFilmProjectMembers(); // only newly added members
foreach ($filmProjectMembers as $member) {
if (!$member->getEmail() || $member->isIsActive()) {
continue;
}
$currentMembers = $this->filmProjectMemberRepository->findMemberByEmailAndProject($member->getEmail(), $filmProject->getId());
foreach($currentMembers as $currentMember) {
if (($currentMember->getEmail() == $member->getEmail()) && $currentMember->isIsActive()) { // if email same and already an active member
$member->setIsActive(true);
$member->setIsSent(true);
// Finally, added this member directly to Wordpress
$user = $this->userRepository->findOneBy(['email' => $member->getEmail()]);
if ($user) {
$userInformation = $user->getUserInformation(); // Main User will always have wordpress ID attached
$wordpressId = $userInformation->getWordpressId();
$member->setWordpressId($wordpressId);
$this->em->persist($member);
$this->em->flush();
$this->wpService->addMemberFromProject($member, $user);
}
continue;
}
}
}
}
public function resetProjectCrewMembers(FilmProject $filmProject)
{
$this->resetProjectAdmins($filmProject);
$this->resetWordpressIdCrewMembers($filmProject);
$this->wpService->resetCrewMembers($filmProject);
}
public function resetProjectAdmins(FilmProject $filmProject)
{
$filmAdmin = $filmProject->getFilmProjectAdmin();
$filmProducer = $filmProject->getFilmProjectProducer();
$filmDirector = $filmProject->getFilmProjectDirector();
$filmProjectAdmins = [$filmAdmin, $filmProducer, $filmDirector];
foreach ($filmProjectAdmins as $filmProjectAdmin) {
$user = $this->userRepository->findOneBy(['email' => $filmProjectAdmin->getEmail()]);
if ($user) {
$this->wpService->addMemberFromProject($filmProjectAdmin, $user);
} else {
$this->wpService->addNonMemberFromProject($filmProjectAdmin);
}
}
}
public function resetWordpressIdCrewMembers(FilmProject $filmProject)
{
$filmProjectMembers = $filmProject->getFilmProjectMembers();
foreach($filmProjectMembers as $member) {
if (!$member->getWordpressId()) {
continue;
}
$user = $this->userRepository->findOneBy(['email' => $member->getEmail()]);
if ($user) {
$userInformation = $user->getUserInformation();
$newWpId = $userInformation->getWordpressId();
$member->setWordpressId($newWpId);
} else {
$member->setWordpressId(null);
}
$this->em->persist($member);
}
$this->em->flush();
}
}