datesUtils::daysSince($trialStartDate);
if ($daysSince > 30) {
return 0;
}
return 30 - $daysSince;
}
/**
* Start an artist premium trial for an organization.
*
* @param Organization $organization The organization to start the trial for
* @param NewStructureArtistPremiumTrialRequest $request The trial request data
*
* @throws \Doctrine\DBAL\Exception
* @throws \JsonException
*/
public function startArtistPremiumTrialForNewStructure(
Organization $organization,
NewStructureArtistPremiumTrialRequest $request
): void
{
// Update settings
$settings = $organization->getSettings();
$settings->setProductBeforeTrial($organization->getSettings()->getProduct());
$settings->setTrialActive(true);
$settings->setLastTrialStartDate(DatesUtils::new());
$settings->setProduct(SettingsProductEnum::ARTIST_PREMIUM);
$this->entityManager->persist($settings);
$this->entityManager->flush();
$dolibarrSocietyId = $this->dolibarrApiService->getSocietyId($organization->getId());
// Create contract in dolibarr
$dolibarrProductId = $this->dolibarrUtils->getProductId(
SettingsProductEnum::ARTIST_PREMIUM, true
);
$contractId = $this->dolibarrApiService->createContract(
$dolibarrSocietyId, $dolibarrProductId, true, 1
);
$this->dolibarrApiService->createContractLine($contractId, $dolibarrProductId, 1);
// Maj le représentant commercial dans dolibarr
$this->dolibarrUtils->updateSocietyCommercialsWithApi($dolibarrSocietyId);
// Met à jour le produit dans Dolibarr
$productName = $this->dolibarrUtils->getDolibarrProductName(SettingsProductEnum::ARTIST_PREMIUM, true);
$this->dolibarrApiService->updateSocietyProduct($dolibarrSocietyId, $productName);
// Ajoute une entrée aux actions commerciales dolibarr
$message = sprintf(
'Action réalisé par : %s %s.
Fonction : %s
Mail:%s
Tel:%s',
$request->getRepresentativeFirstName(),
$request->getRepresentativeLastName(),
$request->getRepresentativeFunction(),
$request->getRepresentativeEmail(),
$request->getRepresentativePhone()
);
$this->dolibarrUtils->addActionComm(
$dolibarrSocietyId, 'Ouverture de la période d\'essai (nouvelle structure)', $message
);
}
}