Files
panel/app/Http/Controllers/TaskController.php
2025-08-25 12:19:58 +03:30

216 lines
6.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Validator;
class TaskController extends Controller
{
/**
* Display a listing of tasks
*/
public function index(): JsonResponse
{
// Sample data - in real app, this would come from database
$tasks = [
[
'id' => 1,
'text' => 'Project Planning',
'start_date' => '2024-01-01',
'duration' => 5,
'progress' => 100,
'priority' => 'high',
'notes' => 'Initial project planning and requirements gathering',
'parent' => null
],
[
'id' => 2,
'text' => 'Design Phase',
'start_date' => '2024-01-06',
'duration' => 10,
'progress' => 60,
'priority' => 'medium',
'notes' => 'UI/UX design and wireframing',
'parent' => null
],
[
'id' => 3,
'text' => 'Development',
'start_date' => '2024-01-16',
'duration' => 15,
'progress' => 30,
'priority' => 'high',
'notes' => 'Core development work',
'parent' => null
],
[
'id' => 4,
'text' => 'Testing',
'start_date' => '2024-01-31',
'duration' => 7,
'progress' => 0,
'priority' => 'medium',
'notes' => 'Quality assurance and testing',
'parent' => null
],
[
'id' => 5,
'text' => 'Deployment',
'start_date' => '2024-02-07',
'duration' => 3,
'progress' => 0,
'priority' => 'critical',
'notes' => 'Production deployment and launch',
'parent' => null
],
[
'id' => 6,
'text' => 'Frontend Development',
'start_date' => '2024-01-16',
'duration' => 8,
'progress' => 40,
'priority' => 'high',
'notes' => 'Vue.js frontend development',
'parent' => 3
],
[
'id' => 7,
'text' => 'Backend Development',
'start_date' => '2024-01-24',
'duration' => 7,
'progress' => 20,
'priority' => 'high',
'notes' => 'Laravel backend development',
'parent' => 3
]
];
return response()->json([
'success' => true,
'data' => $tasks,
'message' => 'Tasks retrieved successfully'
]);
}
/**
* Store a newly created task
*/
public function store(Request $request): JsonResponse
{
$validator = Validator::make($request->all(), [
'text' => 'required|string|max:255',
'start_date' => 'required|date',
'duration' => 'required|integer|min:1',
'priority' => 'required|in:low,medium,high,critical',
'notes' => 'nullable|string',
'parent' => 'nullable|integer'
]);
if ($validator->fails()) {
return response()->json([
'success' => false,
'message' => 'Validation failed',
'errors' => $validator->errors()
], 422);
}
// In real app, save to database
$task = [
'id' => rand(1000, 9999), // Generate random ID for demo
'text' => $request->text,
'start_date' => $request->start_date,
'duration' => $request->duration,
'progress' => 0,
'priority' => $request->priority,
'notes' => $request->notes,
'parent' => $request->parent
];
return response()->json([
'success' => true,
'data' => $task,
'message' => 'Task created successfully'
], 201);
}
/**
* Display the specified task
*/
public function show(int $id): JsonResponse
{
// Sample task data - in real app, fetch from database
$task = [
'id' => $id,
'text' => 'Sample Task',
'start_date' => '2024-01-01',
'duration' => 5,
'progress' => 50,
'priority' => 'medium',
'notes' => 'This is a sample task',
'parent' => null
];
return response()->json([
'success' => true,
'data' => $task,
'message' => 'Task retrieved successfully'
]);
}
/**
* Update the specified task
*/
public function update(Request $request, int $id): JsonResponse
{
$validator = Validator::make($request->all(), [
'text' => 'required|string|max:255',
'start_date' => 'required|date',
'duration' => 'required|integer|min:1',
'priority' => 'required|in:low,medium,high,critical',
'notes' => 'nullable|string',
'parent' => 'nullable|integer'
]);
if ($validator->fails()) {
return response()->json([
'success' => false,
'message' => 'Validation failed',
'errors' => $validator->errors()
], 422);
}
// In real app, update in database
$task = [
'id' => $id,
'text' => $request->text,
'start_date' => $request->start_date,
'duration' => $request->duration,
'progress' => $request->progress ?? 0,
'priority' => $request->priority,
'notes' => $request->notes,
'parent' => $request->parent
];
return response()->json([
'success' => true,
'data' => $task,
'message' => 'Task updated successfully'
]);
}
/**
* Remove the specified task
*/
public function destroy(int $id): JsonResponse
{
// In real app, delete from database
return response()->json([
'success' => true,
'message' => 'Task deleted successfully'
]);
}
}