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 ); } }