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!']); } }