Big improvement on pricing estimation logic in CP

This commit is contained in:
Pinga 2025-02-12 15:01:06 +02:00
parent a9e84a855e
commit 73e19087ae
6 changed files with 305 additions and 287 deletions

View file

@ -756,4 +756,26 @@ class DapiController extends Controller
return $response;
}
public function domainPrice(Request $request, Response $response): Response
{
$params = $request->getQueryParams();
$db = $this->container->get('db');
$domain_name = $params['domain_name'] ?? '';
$date_add = (int) ($params['date_add'] ?? 12);
$command = $params['command'] ?? 'create';
$currency = $params['currency'] ?? 'USD';
$registrar_id = !empty($params['registrar_id']) ? $params['registrar_id'] : ($_SESSION['auth_registrar_id'] ?? null);
$parts = extractDomainAndTLD($domain_name);
$domain_extension = $parts['tld'];
$tld_id = $db->selectValue('SELECT id FROM domain_tld WHERE tld = ?', [ '.'.$domain_extension ]);
$result = getDomainPrice($db, $domain_name, $tld_id, $date_add, $command, $registrar_id, $currency);
$response->getBody()->write(json_encode($result));
return $response->withHeader('Content-Type', 'application/json');
}
}

View file

@ -921,12 +921,20 @@ class DomainsController extends Controller
$registrars = $db->select("SELECT id, clid, name FROM registrar");
if ($_SESSION["auth_roles"] != 0) {
$registrar = true;
$currency = $_SESSION['_currency'] ?? 'USD';
if (!empty($_SESSION['auth_registrar_id'])) {
$currency = $db->selectValue(
'SELECT currency FROM registrar WHERE id = ?',
[$_SESSION['auth_registrar_id']]
) ?? 'USD'; // Default to USD if no result
}
} else {
$registrar = null;
$currency = $_SESSION['_currency'] ?? 'USD';
}
$registry_currency = $_SESSION['registry_currency'] ?? 'USD';
$locale = (isset($_SESSION['_lang']) && !empty($_SESSION['_lang'])) ? $_SESSION['_lang'] : 'en_US';
$currency = $_SESSION['_currency'] ?? 'USD'; // Default to USD if not set
$formatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
$formatter->setTextAttribute(\NumberFormatter::CURRENCY_CODE, $currency);
@ -947,6 +955,7 @@ class DomainsController extends Controller
'registrar' => $registrar,
'launch_phases' => $launch_phases,
'currency' => $currency,
'registry_currency' => $registry_currency,
]);
}
@ -1899,10 +1908,19 @@ class DomainsController extends Controller
$registrars = $db->select("SELECT id, clid, name FROM registrar");
if ($_SESSION["auth_roles"] != 0) {
$registrar = true;
$currency = $_SESSION['_currency'] ?? 'USD';
if (!empty($_SESSION['auth_registrar_id'])) {
$currency = $db->selectValue(
'SELECT currency FROM registrar WHERE id = ?',
[$_SESSION['auth_registrar_id']]
) ?? 'USD'; // Default to USD if no result
}
} else {
$registrar = null;
$currency = $_SESSION['_currency'] ?? 'USD';
}
$registry_currency = $_SESSION['registry_currency'] ?? 'USD';
$uri = $request->getUri()->getPath();
if ($args) {
@ -1943,7 +1961,6 @@ class DomainsController extends Controller
$maxYears = 10 - $yearsUntilExpiration;
$locale = (isset($_SESSION['_lang']) && !empty($_SESSION['_lang'])) ? $_SESSION['_lang'] : 'en_US';
$currency = $_SESSION['_currency'] ?? 'USD'; // Default to USD if not set
$formatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
$formatter->setTextAttribute(\NumberFormatter::CURRENCY_CODE, $currency);
@ -1970,7 +1987,8 @@ class DomainsController extends Controller
'currentUri' => $uri,
'currencySymbol' => $symbol,
'currencyPosition' => $position,
'currency' => $currency
'currency' => $currency,
'registry_currency' => $registry_currency
]);
} else {
// Domain does not exist, redirect to the domains view
@ -2661,12 +2679,20 @@ class DomainsController extends Controller
$registrars = $db->select("SELECT id, clid, name FROM registrar");
if ($_SESSION["auth_roles"] != 0) {
$registrar = true;
$currency = $_SESSION['_currency'] ?? 'USD';
if (!empty($_SESSION['auth_registrar_id'])) {
$currency = $db->selectValue(
'SELECT currency FROM registrar WHERE id = ?',
[$_SESSION['auth_registrar_id']]
) ?? 'USD'; // Default to USD if no result
}
} else {
$registrar = null;
$currency = $_SESSION['_currency'] ?? 'USD';
}
$registry_currency = $_SESSION['registry_currency'] ?? 'USD';
$locale = (isset($_SESSION['_lang']) && !empty($_SESSION['_lang'])) ? $_SESSION['_lang'] : 'en_US';
$currency = $_SESSION['_currency'] ?? 'USD'; // Default to USD if not set
$formatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
$formatter->setTextAttribute(\NumberFormatter::CURRENCY_CODE, $currency);
@ -2683,7 +2709,8 @@ class DomainsController extends Controller
'registrar' => $registrar,
'currencySymbol' => $symbol,
'currencyPosition' => $position,
'currency' => $currency
'currency' => $currency,
'registry_currency' => $registry_currency
]);
}