212 lines
8.2 KiB
PHP
212 lines
8.2 KiB
PHP
<?php
|
|
|
|
class RegistrationFormSettings {
|
|
|
|
const DAYS_LODGING = 'registration_form_days_lodging';
|
|
const DAYS_NO_LODGING = 'registration_form_days_no_lodging';
|
|
const VAT_MULTIPLIER = 'registration_form_vat_multiplier';
|
|
const ONE_DAY_PRICE_PROM = 'registration_form_one_day_price_prom';
|
|
const ONE_DAY_PRICE_NORMAL = 'registration_form_one_day_price_normal';
|
|
|
|
private static $defaults = array(
|
|
'registration_form_days_lodging' => "3/4 listopada\n4/5 listopada",
|
|
'registration_form_days_no_lodging' => "3 listopada\n4 listopada\n5 listopada",
|
|
'registration_form_vat_multiplier' => '1.23',
|
|
'registration_form_one_day_price_prom' => '1300',
|
|
'registration_form_one_day_price_normal' => '1600',
|
|
);
|
|
|
|
private static $priceParameterIds = array(
|
|
'full_conference' => 1,
|
|
'single_room' => 2,
|
|
'accompanying_person' => 3,
|
|
'english_conference' => 4,
|
|
'legacy_one_day' => 5,
|
|
);
|
|
|
|
public static function GetSettings() {
|
|
$variables = self::GetVariables();
|
|
$vatMultiplier = self::NormalizeNumber(self::GetVariableValue($variables, self::VAT_MULTIPLIER));
|
|
|
|
if (!$vatMultiplier) {
|
|
$vatMultiplier = self::$defaults[self::VAT_MULTIPLIER];
|
|
}
|
|
|
|
return array(
|
|
'days_lodging_text' => self::GetVariableValue($variables, self::DAYS_LODGING),
|
|
'days_no_lodging_text' => self::GetVariableValue($variables, self::DAYS_NO_LODGING),
|
|
'days_lodging' => self::ParseList(self::GetVariableValue($variables, self::DAYS_LODGING)),
|
|
'days_no_lodging' => self::ParseList(self::GetVariableValue($variables, self::DAYS_NO_LODGING)),
|
|
'vat_multiplier' => (float)$vatMultiplier,
|
|
'one_day_price_prom' => (float)self::NormalizeNumber(self::GetVariableValue($variables, self::ONE_DAY_PRICE_PROM)),
|
|
'one_day_price_normal' => (float)self::NormalizeNumber(self::GetVariableValue($variables, self::ONE_DAY_PRICE_NORMAL)),
|
|
'prices' => self::GetPriceSettings((float)$vatMultiplier),
|
|
);
|
|
}
|
|
|
|
public static function SaveSettings($post) {
|
|
self::SaveVariable(self::DAYS_LODGING, self::NormalizeListText($post[self::DAYS_LODGING]), 'Dni udzialu - jeden dzien z noclegiem');
|
|
self::SaveVariable(self::DAYS_NO_LODGING, self::NormalizeListText($post[self::DAYS_NO_LODGING]), 'Dni udzialu - jeden dzien bez noclegu');
|
|
self::SaveVariable(self::VAT_MULTIPLIER, self::NormalizeNumber($post[self::VAT_MULTIPLIER]), 'Mnoznik VAT dla cen formularza rejestracji');
|
|
self::SaveVariable(self::ONE_DAY_PRICE_PROM, self::NormalizeNumber($post[self::ONE_DAY_PRICE_PROM]), 'Cena netto promocyjna - jeden dzien');
|
|
self::SaveVariable(self::ONE_DAY_PRICE_NORMAL, self::NormalizeNumber($post[self::ONE_DAY_PRICE_NORMAL]), 'Cena netto normalna - jeden dzien');
|
|
|
|
foreach (self::$priceParameterIds as $key => $id) {
|
|
if (!isset($post['price'][$id])) {
|
|
continue;
|
|
}
|
|
|
|
$objParam = MfParametersDAL::GetById($id);
|
|
if (!$objParam || $objParam->GetId() == '-1') {
|
|
continue;
|
|
}
|
|
|
|
$price = isset($post['price'][$id]) ? self::NormalizeNumber($post['price'][$id]) : '';
|
|
$priceProm = isset($post['price_prom'][$id]) ? self::NormalizeNumber($post['price_prom'][$id]) : '';
|
|
$objParam->setPrice($price);
|
|
$objParam->setPriceProm($priceProm);
|
|
MfParametersDAL::Save($objParam);
|
|
}
|
|
}
|
|
|
|
public static function Validate($post) {
|
|
$errors = array();
|
|
$required = array(
|
|
self::DAYS_LODGING => 'Podaj dni dla opcji z noclegiem.',
|
|
self::DAYS_NO_LODGING => 'Podaj dni dla opcji bez noclegu.',
|
|
self::VAT_MULTIPLIER => 'Podaj mnoznik VAT.',
|
|
self::ONE_DAY_PRICE_PROM => 'Podaj cene promocyjna za jeden dzien.',
|
|
self::ONE_DAY_PRICE_NORMAL => 'Podaj cene normalna za jeden dzien.',
|
|
);
|
|
|
|
foreach ($required as $field => $message) {
|
|
if (!isset($post[$field]) || trim($post[$field]) === '') {
|
|
$errors[$field] = $message;
|
|
}
|
|
}
|
|
|
|
foreach (array(self::VAT_MULTIPLIER, self::ONE_DAY_PRICE_PROM, self::ONE_DAY_PRICE_NORMAL) as $field) {
|
|
if (isset($post[$field]) && trim($post[$field]) !== '' && !self::IsNumber($post[$field])) {
|
|
$errors[$field] = 'Pole musi byc liczba.';
|
|
}
|
|
}
|
|
|
|
if (isset($post['price']) && is_array($post['price'])) {
|
|
foreach ($post['price'] as $id => $value) {
|
|
if (trim($value) !== '' && !self::IsNumber($value)) {
|
|
$errors['price_' . $id] = 'Cena musi byc liczba.';
|
|
}
|
|
}
|
|
}
|
|
|
|
if (isset($post['price_prom']) && is_array($post['price_prom'])) {
|
|
foreach ($post['price_prom'] as $id => $value) {
|
|
if (trim($value) !== '' && !self::IsNumber($value)) {
|
|
$errors['price_prom_' . $id] = 'Cena promocyjna musi byc liczba.';
|
|
}
|
|
}
|
|
}
|
|
|
|
return $errors;
|
|
}
|
|
|
|
public static function GetOneDayPrice($discountType) {
|
|
$settings = self::GetSettings();
|
|
return $discountType == 2 ? $settings['one_day_price_normal'] : $settings['one_day_price_prom'];
|
|
}
|
|
|
|
public static function GetVatMultiplier() {
|
|
$settings = self::GetSettings();
|
|
return $settings['vat_multiplier'];
|
|
}
|
|
|
|
private static function GetPriceSettings($vatMultiplier) {
|
|
$prices = array();
|
|
|
|
foreach (self::$priceParameterIds as $key => $id) {
|
|
$objParam = MfParametersDAL::GetById($id);
|
|
$net = $objParam && $objParam->GetId() != '-1' ? (float)$objParam->GetPrice() : 0;
|
|
$prom = $objParam && $objParam->GetId() != '-1' ? (float)$objParam->GetPriceProm() : 0;
|
|
|
|
$prices[$key] = array(
|
|
'id' => $id,
|
|
'name' => $objParam && $objParam->GetId() != '-1' ? $objParam->GetName() : '',
|
|
'price' => $net,
|
|
'price_prom' => $prom,
|
|
'price_vat' => $net * $vatMultiplier,
|
|
'price_prom_vat' => $prom * $vatMultiplier,
|
|
);
|
|
}
|
|
|
|
$prices['one_day'] = array(
|
|
'price_prom' => (float)self::GetVariableRaw(self::ONE_DAY_PRICE_PROM),
|
|
'price_normal' => (float)self::GetVariableRaw(self::ONE_DAY_PRICE_NORMAL),
|
|
);
|
|
|
|
return $prices;
|
|
}
|
|
|
|
private static function GetVariables() {
|
|
$variables = array();
|
|
$db = Registry::Get('db');
|
|
$stmt = $db->execute("select variable,value,description from wp_setup order by variable,value");
|
|
$array = $stmt->FetchAllAssoc();
|
|
|
|
foreach ($array as $variable) {
|
|
$variables[$variable['variable']] = array(
|
|
'variable' => $variable['variable'],
|
|
'value' => $variable['value'],
|
|
'description' => $variable['description'],
|
|
);
|
|
}
|
|
|
|
return $variables;
|
|
}
|
|
|
|
private static function GetVariableValue($variables, $name) {
|
|
if (isset($variables[$name])) {
|
|
return $variables[$name]['value'];
|
|
}
|
|
|
|
return self::$defaults[$name];
|
|
}
|
|
|
|
private static function GetVariableRaw($name) {
|
|
$variables = self::GetVariables();
|
|
return self::NormalizeNumber(self::GetVariableValue($variables, $name));
|
|
}
|
|
|
|
private static function SaveVariable($name, $value, $description) {
|
|
SetupDAL::SaveVariable($name, $value, $description);
|
|
}
|
|
|
|
private static function ParseList($text) {
|
|
$text = str_replace(array("\r\n", "\r"), "\n", $text);
|
|
$items = explode("\n", $text);
|
|
$return = array();
|
|
|
|
foreach ($items as $item) {
|
|
$item = trim($item);
|
|
if ($item !== '') {
|
|
$return[] = $item;
|
|
}
|
|
}
|
|
|
|
return $return;
|
|
}
|
|
|
|
private static function NormalizeListText($text) {
|
|
return implode("\n", self::ParseList($text));
|
|
}
|
|
|
|
private static function NormalizeNumber($value) {
|
|
return str_replace(',', '.', trim($value));
|
|
}
|
|
|
|
private static function IsNumber($value) {
|
|
return is_numeric(self::NormalizeNumber($value));
|
|
}
|
|
}
|
|
|
|
?>
|