FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
ameliabooking
/
src
/
Domain
/
Factory
/
Settings
Edit File: SettingsFactory.php
<?php /** * @copyright © TMS-Plugins. All rights reserved. * @licence See LICENCE.md for license details. */ namespace AmeliaBooking\Domain\Factory\Settings; use AmeliaBooking\Domain\Entity\Settings\GeneralSettings; use AmeliaBooking\Domain\Entity\Settings\GoogleMeetSettings; use AmeliaBooking\Domain\Entity\Settings\LessonSpaceSettings; use AmeliaBooking\Domain\Entity\Settings\MicrosoftTeamsSettings; use AmeliaBooking\Domain\Entity\Settings\PaymentSettings; use AmeliaBooking\Domain\Entity\Settings\Settings; use AmeliaBooking\Domain\Entity\Settings\ZoomSettings; use AmeliaBooking\Domain\ValueObjects\Json; /** * Class SettingsFactory * * @package AmeliaBooking\Domain\Factory\Settings */ class SettingsFactory { /** * @param Json $entityJsonData * @param array $globalSettings * * @return Settings */ public static function create($entityJsonData, $globalSettings) { $entitySettings = new Settings(); $generalSettings = new GeneralSettings(); $zoomSettings = new ZoomSettings(); $paymentSettings = new PaymentSettings(); $lessonSpaceSetings = new LessonSpaceSettings(); $googleMeetSettings = new GoogleMeetSettings(); $microsoftTeamsSettings = new MicrosoftTeamsSettings(); $data = $entityJsonData ? json_decode($entityJsonData->getValue(), true) : []; $isOldEntitySettings = !isset($data['activation']['version']); if (isset($data['general']['defaultAppointmentStatus'])) { $generalSettings->setDefaultAppointmentStatus($data['general']['defaultAppointmentStatus']); } else { $generalSettings->setDefaultAppointmentStatus($globalSettings['general']['defaultAppointmentStatus']); } if (isset($data['general']['minimumTimeRequirementPriorToBooking'])) { $generalSettings->setMinimumTimeRequirementPriorToBooking( $data['general']['minimumTimeRequirementPriorToBooking'] ); } else { $generalSettings->setMinimumTimeRequirementPriorToBooking( $globalSettings['general']['minimumTimeRequirementPriorToBooking'] ); } if (isset($data['general']['minimumTimeRequirementPriorToCanceling'])) { $generalSettings->setMinimumTimeRequirementPriorToCanceling( $data['general']['minimumTimeRequirementPriorToCanceling'] ); } else { $generalSettings->setMinimumTimeRequirementPriorToCanceling( $globalSettings['general']['minimumTimeRequirementPriorToCanceling'] ); } if (isset($data['general']['minimumTimeRequirementPriorToRescheduling'])) { $generalSettings->setMinimumTimeRequirementPriorToRescheduling( $data['general']['minimumTimeRequirementPriorToRescheduling'] ); } else { $generalSettings->setMinimumTimeRequirementPriorToRescheduling( $globalSettings['general']['minimumTimeRequirementPriorToRescheduling'] ); } if ($isOldEntitySettings && !isset($globalSettings['general']['minimumTimeRequirementPriorToCanceling'])) { $generalSettings->setMinimumTimeRequirementPriorToRescheduling( $generalSettings->getMinimumTimeRequirementPriorToCanceling() ); } if (!empty($data['general']['numberOfDaysAvailableForBooking'])) { $generalSettings->setNumberOfDaysAvailableForBooking( $data['general']['numberOfDaysAvailableForBooking'] ); } else { $generalSettings->setNumberOfDaysAvailableForBooking( $globalSettings['general']['numberOfDaysAvailableForBooking'] ); } if (isset($data['zoom']['enabled'])) { $zoomSettings->setEnabled($data['zoom']['enabled']); } else { $zoomSettings->setEnabled($globalSettings['zoom']['enabled']); } if (isset($data['lessonSpace']['enabled'])) { $lessonSpaceSetings->setEnabled($data['lessonSpace']['enabled']); } else { $lessonSpaceSetings->setEnabled($globalSettings['lessonSpace']['enabled']); } if (isset($data['googleMeet']['enabled'])) { $googleMeetSettings->setEnabled($data['googleMeet']['enabled']); } else { $googleMeetSettings->setEnabled($globalSettings['googleCalendar']['enableGoogleMeet']); } if (isset($data['microsoftTeams']['enabled'])) { $microsoftTeamsSettings->setEnabled($data['microsoftTeams']['enabled']); } else { $microsoftTeamsSettings->setEnabled($globalSettings['outlookCalendar']['enableMicrosoftTeams']); } $entitySettings->setGeneralSettings($generalSettings); $entitySettings->setZoomSettings($zoomSettings); $entitySettings->setLessonSpaceSettings($lessonSpaceSetings); $entitySettings->setGoogleMeetSettings($googleMeetSettings); $entitySettings->setMicrosoftTeamsSettings($microsoftTeamsSettings); return $entitySettings; } }
Save
Back