Steuerkram/src/Models/Setting.php

93 lines
3.4 KiB
PHP

<?php
declare(strict_types=1);
namespace Steuerkram\Models;
use Steuerkram\Database;
class Setting
{
public static function get(): array
{
return Database::fetchOne('SELECT * FROM company_settings WHERE id = 1') ?: [];
}
public static function isTestMode(): bool
{
$s = self::get();
return (bool)($s['test_mode'] ?? 1);
}
public static function update(array $data): void
{
$logoPosition = in_array($data['logo_position'] ?? '', ['center', 'left', 'right'])
? $data['logo_position']
: 'center';
Database::execute(
'UPDATE company_settings SET
firma=?, inhaber=?, strasse=?, plz=?, ort=?,
telefon=?, email=?, website=?,
ust_id=?, steuernummer=?, finanzamt=?,
iban=?, bic=?, bank_name=?,
ustva_steuernummer=?, ustva_bundesland=?,
invoice_nr_prefix=?, beleg_nr_prefix=?,
payment_days_default=?, test_mode=?, ki_vorschlag_aktiv=?, ocr_aktiv=?,
nextcloud_url=?, nextcloud_user=?, nextcloud_pass=?,
nextcloud_folder=?, nextcloud_done=?,
logo_max_width=?, logo_max_height=?,
logo_position=?, logo_margin_side=?, logo_margin_top=?
WHERE id=1',
[
$data['firma'] ?? '',
$data['inhaber'] ?? '',
$data['strasse'] ?? '',
$data['plz'] ?? '',
$data['ort'] ?? '',
$data['telefon'] ?? null,
$data['email'] ?? null,
$data['website'] ?? null,
$data['ust_id'] ?? null,
$data['steuernummer'] ?? null,
$data['finanzamt'] ?? null,
$data['iban'] ?? null,
$data['bic'] ?? null,
$data['bank_name'] ?? null,
$data['ustva_steuernummer'] ?? null,
$data['ustva_bundesland'] ?? null,
$data['invoice_nr_prefix'] ?? 'AR',
$data['beleg_nr_prefix'] ?? 'BLG',
(int)($data['payment_days_default'] ?? 14),
isset($data['test_mode']) ? 1 : 0,
isset($data['ki_vorschlag_aktiv']) ? 1 : 0,
isset($data['ocr_aktiv']) ? 1 : 0,
$data['nextcloud_url'] ?: null,
$data['nextcloud_user'] ?: null,
$data['nextcloud_pass'] ?: null,
$data['nextcloud_folder'] ?: '/Belege/Import',
$data['nextcloud_done'] ?: null,
max(50, (int)($data['logo_max_width'] ?? 600)),
max(20, (int)($data['logo_max_height'] ?? 100)),
$logoPosition,
max(0, (int)($data['logo_margin_side'] ?? 75)),
max(0, (int)($data['logo_margin_top'] ?? 6)),
]
);
}
public static function setLogo(string $path): void
{
Database::execute('UPDATE company_settings SET logo_path=? WHERE id=1', [$path]);
}
public static function deleteLogo(): void
{
$settings = self::get();
if (!empty($settings['logo_path'])) {
$fullPath = dirname(__DIR__, 2) . '/public/' . $settings['logo_path'];
if (file_exists($fullPath)) unlink($fullPath);
}
Database::execute('UPDATE company_settings SET logo_path=NULL WHERE id=1');
}
}