89 lines
3.9 KiB
PHP
89 lines
3.9 KiB
PHP
<?php
|
|
|
|
namespace Modules\Maintenance\Http\Controllers;
|
|
|
|
use App\Business;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller;
|
|
use Modules\Maintenance\Http\Controllers\Concerns\AuthorizesMaintenance;
|
|
use Modules\Maintenance\Utils\MaintenanceUtil;
|
|
|
|
class SettingsController extends Controller
|
|
{
|
|
use AuthorizesMaintenance;
|
|
|
|
public function __construct(
|
|
protected MaintenanceUtil $maintenanceUtil
|
|
) {}
|
|
|
|
public function index()
|
|
{
|
|
$this->authorizeMaintenanceAccess('maintenance.access');
|
|
|
|
$business_id = $this->maintenanceUtil->getBusinessId();
|
|
$settings = $this->maintenanceUtil->getMaintenanceSettings($business_id);
|
|
$accountingEnabled = $this->maintenanceUtil->isAccountingEnabled($business_id);
|
|
$assetEnabled = $this->maintenanceUtil->isAssetManagementEnabled($business_id);
|
|
$crmEnabled = $this->maintenanceUtil->isCrmEnabled($business_id);
|
|
|
|
return view('maintenance::settings.index', [
|
|
'settings' => $settings,
|
|
'accounting_enabled' => $accountingEnabled,
|
|
'asset_enabled' => $assetEnabled,
|
|
'crm_enabled' => $crmEnabled,
|
|
'accounts' => $accountingEnabled ? $this->maintenanceUtil->getAccountingAccountsDropdown($business_id) : [],
|
|
'asset_categories' => $assetEnabled ? $this->maintenanceUtil->getAssetCategoriesDropdown($business_id) : [],
|
|
'locations' => $this->maintenanceUtil->getLocationsDropdown($business_id),
|
|
]);
|
|
}
|
|
|
|
public function update(Request $request)
|
|
{
|
|
$this->authorizeMaintenanceAccess('maintenance.access');
|
|
|
|
$business_id = $this->maintenanceUtil->getBusinessId();
|
|
|
|
$existing = $this->maintenanceUtil->getMaintenanceSettings($business_id);
|
|
|
|
$data = $request->validate([
|
|
'expense_account_id' => 'nullable|integer',
|
|
'payment_account_id' => 'nullable|integer',
|
|
'default_asset_category_id' => 'nullable|integer',
|
|
'auto_post_journal' => 'sometimes|boolean',
|
|
'auto_create_asset' => 'sometimes|boolean',
|
|
'crm_sync_followup_on_equipment' => 'sometimes|boolean',
|
|
'crm_sync_followup_on_work_order' => 'sometimes|boolean',
|
|
'auto_pm_reminders' => 'sometimes|boolean',
|
|
'auto_create_pm_work_order' => 'sometimes|boolean',
|
|
'sync_pos_stock' => 'sometimes|boolean',
|
|
'deduct_pos_stock_on_consume' => 'sometimes|boolean',
|
|
'default_stock_location_id' => 'nullable|integer',
|
|
]);
|
|
|
|
$settings = array_merge($existing, [
|
|
'expense_account_id' => $data['expense_account_id'] ?? null,
|
|
'payment_account_id' => $data['payment_account_id'] ?? null,
|
|
'default_asset_category_id' => $data['default_asset_category_id'] ?? null,
|
|
'auto_post_journal' => $request->boolean('auto_post_journal'),
|
|
'auto_create_asset' => $request->boolean('auto_create_asset'),
|
|
'crm_sync_followup_on_equipment' => $request->boolean('crm_sync_followup_on_equipment'),
|
|
'crm_sync_followup_on_work_order' => $request->boolean('crm_sync_followup_on_work_order'),
|
|
'auto_pm_reminders' => $request->boolean('auto_pm_reminders'),
|
|
'auto_create_pm_work_order' => $request->boolean('auto_create_pm_work_order'),
|
|
'sync_pos_stock' => $request->boolean('sync_pos_stock'),
|
|
'deduct_pos_stock_on_consume' => $request->boolean('deduct_pos_stock_on_consume'),
|
|
'default_stock_location_id' => $data['default_stock_location_id'] ?? null,
|
|
]);
|
|
|
|
if (\Illuminate\Support\Facades\Schema::hasColumn('business', 'maintenance_settings')) {
|
|
Business::where('id', $business_id)->update([
|
|
'maintenance_settings' => json_encode($settings),
|
|
]);
|
|
}
|
|
|
|
return redirect()
|
|
->action([self::class, 'index'])
|
|
->with('status', 'تنظیمات نگهداری ذخیره شد.');
|
|
}
|
|
}
|