visuddhinanda 1 год назад
Родитель
Сommit
5fd3df6b96
2 измененных файлов с 34 добавлено и 0 удалено
  1. 33 0
      app/Http/Controllers/CourseMemberController.php
  2. 1 0
      routes/api.php

+ 33 - 0
app/Http/Controllers/CourseMemberController.php

@@ -8,6 +8,9 @@ use Illuminate\Http\Request;
 use App\Http\Resources\CourseMemberResource;
 use App\Http\Api\AuthApi;
 use Illuminate\Support\Facades\Log;
+use App\Http\Api\UserApi;
+use PhpOffice\PhpSpreadsheet\Spreadsheet;
+use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
 
 class CourseMemberController extends Controller
 {
@@ -308,4 +311,34 @@ class CourseMemberController extends Controller
             return $this->error("not member");
         }
     }
+
+    public function export(Request $request){
+
+        $courseUser = CourseMember::where('course_id',$request->get("course_id"))
+                                    ->where('is_current',true)
+                                    ->get();
+
+        $spreadsheet = new Spreadsheet();
+        $activeWorksheet = $spreadsheet->getActiveSheet();
+        $activeWorksheet->setCellValue('A1', 'nickname');
+        $activeWorksheet->setCellValue('B1', 'username');
+        $activeWorksheet->setCellValue('C1', 'role');
+        $activeWorksheet->setCellValue('D1', 'status');
+        $activeWorksheet->setCellValue('E1', 'created_at');
+
+        $currLine = 2;
+        foreach ($courseUser as $key => $row) {
+            $user = UserApi::getByUuid($row->user_id);
+            $activeWorksheet->setCellValue("A{$currLine}", $user['nickName']);
+            $activeWorksheet->setCellValue("B{$currLine}", $user['userName']);
+            $activeWorksheet->setCellValue("C{$currLine}", $row->role);
+            $activeWorksheet->setCellValue("D{$currLine}", $row->status);
+            $activeWorksheet->setCellValue("E{$currLine}", $row->created_at);
+            $currLine++;
+        }
+        $writer = new Xlsx($spreadsheet);
+        header('Content-Type: application/vnd.ms-excel');
+        header('Content-Disposition: attachment; filename="course_member.xlsx"');
+        $writer->save("php://output");
+    }
 }

+ 1 - 0
routes/api.php

@@ -174,6 +174,7 @@ Route::group(['prefix' => 'v2'],function(){
     Route::put('course-member_set-channel',[CourseMemberController::class,'set_channel']);
     Route::get('course-my-course', [CourseController::class, 'showMyCourseNumber']);
     Route::get('course-curr', [CourseMemberController::class, 'curr']);
+    Route::get('course-member-export',[CourseMemberController::class,"export"]);
 
     Route::apiResource('exercise',ExerciseController::class);
     Route::apiResource('article-map',ArticleMapController::class);