getTenantId()); $users = User::where('tenant_id', $this->getTenantId())->get(); $currencies = Currency::all(); return view('settings.index', compact('tenant', 'users', 'currencies')); } /** * Update organization settings. */ public function updateOrganization(Request $request) { $tenant = Tenant::find($this->getTenantId()); $validated = $request->validate([ 'name' => 'required|string|max:255', 'default_locale' => 'required|in:fa,en,ar', 'default_calendar' => 'required|in:jalali,gregorian', 'logo' => 'nullable|image|max:2048', ]); if ($request->hasFile('logo')) { // Delete old logo if ($tenant->logo) { Storage::disk('public')->delete($tenant->logo); } $validated['logo'] = $request->file('logo')->store('logos', 'public'); } $tenant->update($validated); return redirect() ->route('settings.index') ->with('success', __('settings.organization_updated')); } /** * Store a new user. */ public function storeUser(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|string|min:8|confirmed', 'roles' => 'nullable|array', ]); $validated['tenant_id'] = $this->getTenantId(); $validated['password'] = Hash::make($validated['password']); $validated['is_active'] = true; $roles = $validated['roles'] ?? []; unset($validated['roles']); $user = User::create($validated); if (!empty($roles)) { $user->assignRole($roles); } return redirect() ->route('settings.index') ->with('success', __('settings.user_created')); } /** * Update a user. */ public function updateUser(Request $request, User $user) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email,' . $user->id, 'password' => 'nullable|string|min:8|confirmed', 'roles' => 'nullable|array', ]); if (!empty($validated['password'])) { $validated['password'] = Hash::make($validated['password']); } else { unset($validated['password']); } $roles = $validated['roles'] ?? []; unset($validated['roles']); $user->update($validated); $user->syncRoles($roles); return redirect() ->route('settings.index') ->with('success', __('settings.user_updated')); } /** * Toggle user active status. */ public function toggleUser(User $user) { $user->update(['is_active' => !$user->is_active]); return redirect() ->route('settings.index') ->with('success', __('settings.user_status_updated')); } /** * Store a new currency. */ public function storeCurrency(Request $request) { $validated = $request->validate([ 'code' => 'required|string|max:10|unique:currencies,code', 'name' => 'required|string|max:100', 'symbol' => 'required|string|max:10', 'decimal_places' => 'required|integer|min:0|max:6', 'exchange_rate_to_usd' => 'required|numeric|min:0', ]); Currency::create($validated); return redirect() ->route('settings.index') ->with('success', __('settings.currency_created')); } /** * Update a currency. */ public function updateCurrency(Request $request, Currency $currency) { $validated = $request->validate([ 'name' => 'required|string|max:100', 'symbol' => 'required|string|max:10', 'decimal_places' => 'required|integer|min:0|max:6', 'exchange_rate_to_usd' => 'required|numeric|min:0', ]); $currency->update($validated); return redirect() ->route('settings.index') ->with('success', __('settings.currency_updated')); } /** * Toggle currency active status. */ public function toggleCurrency(Currency $currency) { $currency->update(['is_active' => !$currency->is_active]); return redirect() ->route('settings.index') ->with('success', __('settings.currency_status_updated')); } }