GOOD SHELL MAS BOY
Server: Apache/2.4.52 (Ubuntu)
System: Linux vmi1836763.contaboserver.net 5.15.0-130-generic #140-Ubuntu SMP Wed Dec 18 17:59:53 UTC 2024 x86_64
User: www-data (33)
PHP: 8.4.10
Disabled: NONE
Upload Files
File: /var/www/admin.fixgini.com/app/Livewire/Country/Cities.php
<?php

namespace App\Livewire\Country;

use App\Models\City;
use App\Models\State;
use Livewire\Component;
use Livewire\WithPagination;

class Cities extends Component
{


    use WithPagination;

    public $name;
    public $state_id;
    public $country_id;

    public function changeCityStatus($stateId, $status)
    {
        if (!in_array($status, ['active', 'inactive'])) {
            session()->flash('error', 'Invalid status.');
            return $this->redirect(request()->header('Referer'), navigate: true);
        }
        $state = City::find($stateId);
        if ($state) {
            $state->status = $status;
            $state->save();
            session()->flash('success', 'State status updated successfully');
            return $this->redirect(request()->header('Referer'), navigate: true);
        } else {
            session()->flash('error', 'State not found.');
            return $this->redirect(request()->header('Referer'), navigate: true);
        }
    }

    public function saveCity()
    {
        $this->validate([
            'name' => 'required|unique:cities,name',
            'state_id' => 'required|exists:states,id'
        ], [
            'state_id' => 'The state is required.',
            'name' => 'The city name is required.'
        ]);
        // Find the country_id associated with the given state_id
        $state = State::find($this->state_id);
        if (!$state) {
            session()->flash('error', 'Invalid state selected.');
            return $this->redirect(request()->header('Referer'), navigate: true);
        }
        $this->country_id = $state->country_id;

        City::create([
            'name' => $this->name,
            'state_id' => $this->state_id,
            'country_id' => $this->country_id,
        ]);
        $this->addError('name', 'City added');
        $this->reset();
        $this->resetErrorBag();
    }

    public function deleteCity($cityId)
    {
        $state = City::find($cityId);
        if ($state) {
            $state->delete();
            session()->flash('success', 'City deleted successfully');
            return $this->redirect(request()->header('Referer'), navigate: true);
        } else {
            session()->flash('error', 'state not found');
            return $this->redirect(request()->header('Referer'), navigate: true);
        }
    }

    public function render()
    {
        // Fetch paginated states
        $cities = City::latest()->paginate();
        // Fetch all countries
        $states = State::all();
        // Pass data to the view
        return view('livewire.country.cities', compact('cities', 'states'));
    }
}