feat: add share functionality for cutting resource with route and controller method

This commit is contained in:
Yoga Pangestu 2026-08-13 23:37:04 +07:00
parent 95df2e9dc7
commit 863d0e7b98
3 changed files with 13 additions and 4 deletions

View File

@ -49,6 +49,13 @@ public function show(Cutting $cutting): Response
]);
}
public function share(Cutting $cutting): Response
{
return Inertia::render('admin/manage/cutting/show', [
'cutting' => $this->service->getForShow($cutting),
]);
}
public function store(CuttingRequest $request): RedirectResponse
{
return $this->handleAction(

View File

@ -1,3 +1,5 @@
import { Briefcase, ChevronDown, Copy, MessageCircle, Pencil, Share2, Trash2 } from 'lucide-react';
import { useState } from 'react';
import { RowActions } from '@/components/data-display';
import { ImagePreviewButton } from '@/components/dialogs';
import { Button } from '@/components/ui/button';
@ -10,13 +12,11 @@ import {
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';
import { useCan } from '@/hooks/use-can';
import { formatNumber } from '@/lib/format';
import { show as cuttingShow } from '@/routes/admin/manage/cuttings';
import { Briefcase, ChevronDown, Copy, MessageCircle, Pencil, Share2, Trash2 } from 'lucide-react';
import { useState } from 'react';
import { share as cuttingShare } from '@/routes/admin/manage/cuttings';
import type { Cutting } from './columns';
function generateShareLink(cuttingId: number): string {
return window.location.origin + cuttingShow.url(cuttingId);
return window.location.origin + cuttingShare.url(cuttingId);
}
function generateWhatsappText(cutting: Cutting): string {

View File

@ -53,6 +53,7 @@
Route::resource('raw-materials', RawMaterialController::class)->except(['show'])->middleware('permission:raw_materials.view|raw_materials.create|raw_materials.update|raw_materials.delete');
Route::post('raw-materials/{rawMaterial}/toggle-status', [RawMaterialController::class, 'toggleStatus'])->name('raw-materials.toggle-status')->middleware('permission:raw_materials.toggle_status');
Route::get('raw-materials/{rawMaterial}/variants', [RawMaterialController::class, 'variants'])->name('raw-materials.variants')->middleware('permission:raw_materials.view');
Route::get('raw-materials/{rawMaterial}/variants/{variant}/edit', [RawMaterialVariantController::class, 'edit'])->name('raw-materials.variants.edit')->middleware('permission:raw_materials.update');
Route::put('raw-materials/{rawMaterial}/variants/{variant}', [RawMaterialVariantController::class, 'update'])->name('raw-materials.variants.update')->middleware('permission:raw_materials.update');
Route::delete('raw-materials/{rawMaterial}/variants/{variant}', [RawMaterialVariantController::class, 'destroy'])->name('raw-materials.variants.destroy')->middleware('permission:raw_materials.delete');
@ -66,6 +67,7 @@
Route::resource('purchases', PurchaseController::class)->except(['show'])->middleware('permission:purchases.view|purchases.create|purchases.update|purchases.delete');
Route::resource('cuttings', CuttingController::class)->middleware('permission:cuttings.view|cuttings.create|cuttings.update|cuttings.delete');
Route::get('cuttings/{cutting}/share', [CuttingController::class, 'share'])->name('cuttings.share');
Route::resource('transactions', TransactionController::class)->except(['show'])->middleware('permission:orders.view|orders.create|orders.update|orders.delete');
Route::patch('transactions/{transaction}/status', [TransactionController::class, 'updateStatus'])->name('transactions.updateStatus')->middleware('permission:orders.update');