Update Project Review, export #102

Merged
joseph merged 2 commits from that-fe into master 2025-02-07 18:59:53 +11:00
4 changed files with 136 additions and 0 deletions
Showing only changes of commit 4fd18b988e - Show all commits

View File

@ -0,0 +1,82 @@
<?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']);
}
}

View File

@ -0,0 +1,19 @@
<?php
namespace Modules\Admin\app\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class ProjectReview extends Model
{
use HasFactory;
protected $fillable = ['name', 'role', 'note', 'user_id'];
// Relationship: A review belongs to a user
public function user()
{
return $this->belongsTo(User::class);
}
}

View File

@ -17,6 +17,7 @@ use Modules\Admin\app\Http\Controllers\TimekeepingController;
use Modules\Admin\app\Http\Controllers\TrackingController;
use Modules\Admin\app\Http\Controllers\CriteriasController;
use Modules\Admin\app\Http\Controllers\EvaluationController;
use Modules\Admin\app\Http\Controllers\ProjectReviewController;
use Modules\Admin\app\Http\Controllers\ProfileController;
use Modules\Admin\app\Http\Controllers\TechnicalController;
use Modules\Admin\app\Http\Controllers\TestCaseForSprintController;
@ -192,6 +193,10 @@ Route::middleware('api')
Route::get('/sprint-review', [EvaluationController::class, 'sprintReview'])->middleware('check.permission:admin');
Route::get('/technical', [EvaluationController::class, 'technical'])->middleware('check.permission:admin');
Route::get('/report', [EvaluationController::class, 'report'])->middleware('check.permission:admin');
Route::get('/project-review', [ProjectReviewController::class, 'getListReviews'])->middleware('check.permission:admin');
Route::get('/project-review/create', [ProjectReviewController::class, 'create'])->middleware('check.permission:admin');
Route::get('/project-review/update', [ProjectReviewController::class, 'update'])->middleware('check.permission:admin');
Route::get('/project-review/delete', [ProjectReviewController::class, 'destroy'])->middleware('check.permission:admin');
});
Route::group([

View File

@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('project_reviews', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('role');
$table->longText('note');
$table->foreignId('user_id')->constrained('users')->onDelete('cascade'); // Khóa ngoại tới bảng users
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('project_reviews');
}
};