78 خطوط
2.6 KiB
PHP
78 خطوط
2.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\LeadStatus;
|
|
use App\Services\ActivityLogger;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
|
|
class LeadStatusController extends Controller
|
|
{
|
|
public function index(): JsonResponse
|
|
{
|
|
return response()->json(LeadStatus::orderBy('sort_order')->get());
|
|
}
|
|
|
|
public function store(Request $request): JsonResponse
|
|
{
|
|
$validated = $request->validate([
|
|
'name' => 'required|string|max:255',
|
|
'slug' => 'required|string|max:80|unique:lead_statuses,slug',
|
|
'color' => 'nullable|string|max:20',
|
|
'icon' => 'nullable|string|max:255',
|
|
'sort_order' => 'nullable|integer',
|
|
'is_active' => 'nullable|boolean',
|
|
'is_default' => 'nullable|boolean',
|
|
'is_won' => 'nullable|boolean',
|
|
'is_lost' => 'nullable|boolean',
|
|
]);
|
|
|
|
$status = LeadStatus::create($validated);
|
|
|
|
ActivityLogger::log('lead_status_created', "Status {$status->name} created");
|
|
|
|
return response()->json($status, 201);
|
|
}
|
|
|
|
public function update(Request $request, LeadStatus $leadStatus): JsonResponse
|
|
{
|
|
$validated = $request->validate([
|
|
'name' => 'sometimes|string|max:255',
|
|
'slug' => 'nullable|string|max:80|unique:lead_statuses,slug,' . $leadStatus->id,
|
|
'color' => 'nullable|string|max:20',
|
|
'icon' => 'nullable|string|max:255',
|
|
'sort_order' => 'nullable|integer',
|
|
'is_active' => 'nullable|boolean',
|
|
'is_default' => 'nullable|boolean',
|
|
'is_won' => 'nullable|boolean',
|
|
'is_lost' => 'nullable|boolean',
|
|
]);
|
|
|
|
$leadStatus->update($validated);
|
|
|
|
ActivityLogger::log('lead_status_updated', "Status {$leadStatus->name} updated");
|
|
|
|
return response()->json($leadStatus);
|
|
}
|
|
|
|
public function destroy(LeadStatus $leadStatus): JsonResponse
|
|
{
|
|
$leadStatus->delete();
|
|
ActivityLogger::log('lead_status_deleted', "Status {$leadStatus->name} deleted");
|
|
return response()->json(['message' => 'وضعیت حذف شد']);
|
|
}
|
|
|
|
public function reorder(Request $request): JsonResponse
|
|
{
|
|
$request->validate(['order' => 'required|array', 'order.*.id' => 'exists:lead_statuses,id', 'order.*.sort_order' => 'required|integer']);
|
|
|
|
foreach ($request->order as $item) {
|
|
LeadStatus::where('id', $item['id'])->update(['sort_order' => $item['sort_order']]);
|
|
}
|
|
|
|
return response()->json(['message' => 'مرتبسازی انجام شد']);
|
|
}
|
|
}
|