ManagementSystem/BACKEND/Modules/Admin/app/Http/Controllers/ProjectReviewController.php

83 lines
2.5 KiB
PHP

<?php
namespace Modules\Admin\app\Http\Controllers;
use App\Http\Controllers\Controller;
use Modules\Admin\app\Http\Controllers\AbstractController;
use Modules\Admin\app\Models\ProjectReview;
use App\Models\User;
use Illuminate\Http\Request;
class ProjectReviewController extends Controller
{
/**
* Display a listing of the resource.
*/
public function getListReviews(Request $request)
{
$request->validate([
'userID' => 'required|exists:users,id',
'fromDate' => 'nullable|date',
'toDate' => 'nullable|date',
]);
$startDate = $request->input('fromDate');
$endDate = $request->input('toDate');
$projectsData = ProjectReview::where('user_id', $request->input('userID'))
->whereHas('user', function ($query) use ($startDate, $endDate) {
if ($startDate && $endDate) {
$query->whereBetween('updated_at', [$startDate, $endDate]);
} elseif ($startDate) {
$query->where('updated_at', '>=', $startDate);
} elseif ($endDate) {
$query->where('updated_at', '<=', $endDate);
}
})
->get();
return AbstractController::ResultSuccess($projectsData);
}
/**
* Store a newly created resource in storage.
*/
public function create(Request $request)
{
$request->validate([
'name' => 'required|string',
'role' => 'required|string',
'note' => 'required|string',
'user_id' => 'required|exists:users,id',
]);
$review = ProjectReview::create($request->all());
return response()->json($review, 201);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, ProjectReview $projectReview)
{
$request->validate([
'name' => 'sometimes|required|string',
'role' => 'sometimes|required|string',
'note' => 'sometimes|required|string',
'user_id' => 'sometimes|required|exists:users,id',
]);
$projectReview->update($request->all());
return response()->json($projectReview);
}
/**
* Remove the specified resource from storage.
*/
public function destroy(ProjectReview $projectReview)
{
$projectReview->delete();
return response()->json(['message' => 'Deleted successfully']);
}
}