File: /home/marketing.cfbon.ru/public_html/app/Http/Controllers/Shops/ShopController.php
<?php
namespace App\Http\Controllers\Shops;
use App\Http\Controllers\Controller;
use App\Http\Requests\Shops\ChangeShopOpenRequest;
use App\Http\Requests\Shops\CoffeeShopRequest;
use App\Models\Shop;
use App\Services\MetroService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\File;
use Illuminate\View\View;
class ShopController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index() : View
    {
        return view('coffee-shops.index', [
            'coffeeShops' => Shop::all(),
        ]);
    }
    /**
     * Show the form for creating a new resource.
     */
    public function create(MetroService $metroService) : View
    {
        return view('coffee-shops.create', [
            'metroStations' => $metroService->getAllStations(),
        ]);
    }
    /**
     * Store a newly created resource in storage.
     */
    public function store(CoffeeShopRequest $request) : RedirectResponse
    {
        Shop::create([
            'number' => $request->input('number'),
            'address' => $request->input('address'),
            'metro_data' => $request->input('metro_data'),
            'latitude' => $request->input('latitude'),
            'longitude' => $request->input('longitude'),
            'phone' => $request->input('phone'),
            'working_days' => $request->input('working_days'),
            'worked_start' => $request->input('worked_start'),
            'worked_end' => $request->input('worked_end'),
            'weekend_days' => $request->input('weekend_days'),
            'weekend_start' => $request->input('weekend_start'),
            'weekend_end' => $request->input('weekend_end'),
            'is_open' => $request->input('is_open'),
        ]);
        return redirect()->route('coffee-shops.index')->with('success', 'Кофейня добавлена');
    }
    /**
     * Show the form for editing the specified resource.
     */
    public function edit(string $id, MetroService $metroService): View
    {
        $shop = Shop::findOrFail($id);
        return view('coffee-shops.edit', [
            'shop' => $shop,
            'metroStations' => $metroService->getAllStations(),
        ]);
    }
    /**
     * Update the specified resource in storage.
     */
    public function update(CoffeeShopRequest $request, string $id): RedirectResponse
    {
        $shop = Shop::findOrFail($id);
        $shop->update($request->validated());
        return redirect()->route('coffee-shops.edit', $shop->id)->with('success', 'Изменения сохранены');
    }
    /**
     * Remove the specified resource from storage.
     */
    public function destroy(string $id): RedirectResponse
    {
        $shop = Shop::findOrFail($id);
        $shop->delete();
        return redirect()->route('coffee-shops.index')->with('success', 'Кофейня успешно удалена');
    }
    public function changeShopOpen(Request $request, string $shopId): JsonResponse
    {
        $shop = Shop::findOrFail($shopId);
        $shop->update(['is_open' => $request->input('is_open')]);
        return response()->json(['message' => 'Updated']);
    }
}