Something went wrong. Try again.
Store your seeds
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106<?php
declare(strict_types=1);
namespace App\Http\Controllers;
use App\Enums\SeedSpecies;use App\Http\Requests\SeedRequest;use App\Models\Seed;use Illuminate\Contracts\View\View;use Illuminate\Http\RedirectResponse;use Illuminate\Http\Request;use Illuminate\Support\Facades\Auth;use Illuminate\Support\Facades\DB;use Illuminate\Support\Facades\Gate;
class SeedController extends Controller{ /** * Display a listing of the resource. */ public function index(Request $request): View { $species = $request->species;
$user = Auth::user();
$seeds = $user ->seeds() ->when(in_array($species, SeedSpecies::values()), fn ($query) => $query->where('species', $species)) ->latest() ->get();
$seedSpecies = SeedSpecies::cases();
$speciesWithCounts = Seed::getSpeciesWithCounts($user);
return view('seed.index', compact(['seeds', 'seedSpecies', 'speciesWithCounts'])); }
/** * Store a newly created resource in storage. */ public function store(SeedRequest $request): RedirectResponse { $data = $request->safe()->except('efforts');
$efforts = $request->validated('efforts');
DB::transaction(function () use ($data, $efforts): void { $seed = Auth::user()->seeds()->create($data);
$seed->efforts()->createMany($efforts ?? []); });
return to_route('seeds.index')->with(['success' => 'Seed planted successfully!']); }
/** * Display the specified resource. */ public function show(Seed $seed): View { Gate::authorize('view', $seed);
return view('seed.show', ['seed' => $seed]); }
/** * Update the specified resource in storage. */ public function update(SeedRequest $request, Seed $seed): RedirectResponse { Gate::authorize('update', $seed);
$data = collect($request->safe()->only([ 'name', 'species', 'essence', 'sprouts', ]))->toArray();
$efforts = $request->validated('efforts');
DB::transaction(function () use ($seed, $data, $efforts): void { $seed->update($data);
$seed->efforts()->delete();
$seed->efforts()->createMany($efforts ?? []); });
return to_route('seed.show', $seed)->with(['success' => 'Seed updated successfully!']);
}
/** * Remove the specified resource from storage. */ public function destroy(Seed $seed): RedirectResponse { Gate::authorize('delete', $seed);
$seed->delete();
return to_route('seeds.index')->with(['success' => 'Seed deleted successfully!']); }}