1
0
mirror of https://github.com/robonen/education-project.git synced 2026-03-20 02:44:31 +00:00

Модуль журнала

This commit is contained in:
2020-12-16 05:22:28 +07:00
parent 2e2942e42c
commit be8af67c61
21 changed files with 868 additions and 22 deletions

View File

@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Http\Requests\Auth\LoginRequest;
use Carbon\Carbon;
class LoginController extends Controller
{
@@ -11,10 +12,14 @@ class LoginController extends Controller
{
$credentials = $request->only('login', 'password');
if (auth()->attempt($credentials))
if (!auth()->attempt($credentials))
return response()->json('You cannot sign with those credentials!', 401);
$token = auth()->user()->makeToken($request->get('remember_me'));
$remember = (bool)$request->get('remember_me');
$token = auth()->user()->createToken(config('app.name'));
$token->token->expires_at = $remember ? Carbon::now()->addMonth() : Carbon::now()->addDay();
$token->token->save();
return response()->json([
'token_type' => 'Bearer',

View File

@@ -18,7 +18,7 @@ class RegisterController extends Controller
{
$role = Role::where('name', $request->get('role'));
if ($role->isEmpty())
if ($role->get()->isEmpty())
return response()->json('Role not found', 404);
$user = User::create(array_merge(

View File

@@ -0,0 +1,111 @@
<?php
namespace App\Http\Controllers;
use App\Filters\JournalFilter;
use App\Http\Requests\JournalRequest;
use App\Models\Journal;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Response;
class JournalController extends Controller
{
/**
* Display a listing of the resource.
*
* @param Request $request
* @return JsonResponse
*/
public function index(Request $request)
{
$journal = (new JournalFilter(Journal::all(), $request))->apply()->values();
return response()->json($journal, 200);
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
// public function create()
// {
// //
// }
/**
* Store a newly created resource in storage.
*
* @param JournalRequest $request
* @return JsonResponse
*/
public function store(JournalRequest $request)
{
if ($request->has('date'))
$date = Carbon::createFromTimestamp($request->get('date')/1000)->floorDays();
else
$date = Carbon::now()->floorDays();
$exist = Journal::where('updated_at', $date)
->where('student_id', $request->get('student_id'))
->where('subject_id', $request->get('subject_id'))
->get();
if ($exist->isNotEmpty())
return response()->json('Оценка на эту дату уже выставлена', 200);
$data = array_merge(['updated_at' => $date], $request->all());
$journal = Journal::create($data);
return response()->json(['id' => $journal->id], 200);
}
/**
* Display the specified resource.
*
* @param int $journal
* @return JsonResponse
*/
public function show(int $journal)
{
return response()->json(Journal::find($journal), 200);
}
/**
* Show the form for editing the specified resource.
*
* @param Journal $journal
* @return Response
*/
// public function edit(Journal $journal)
// {
// //
// }
/**
* Update the specified resource in storage.
*
* @param JournalRequest $request
* @param Journal $journal
* @return JsonResponse
*/
public function update(JournalRequest $request, Journal $journal)
{
$journal->update($request->all());
return response()->json(['id' => $journal->id], 200);
}
/**
* Remove the specified resource from storage.
*
* @param Journal $journal
* @return JsonResponse
*/
public function destroy(Journal $journal)
{
$journal->delete();
return response()->json(null, 200);
}
}

View File

@@ -2,9 +2,11 @@
namespace App\Http\Controllers;
use App\Filters\JournalFilter;
use App\Http\Requests\SchoolClassRequest;
use App\Models\SchoolClass;
use App\Models\Teacher;
use Carbon\Carbon;
use Illuminate\Database\QueryException;
use Illuminate\Http\Request;
@@ -65,11 +67,26 @@ class SchoolClassController extends Controller
$students = $class->students;
$studentsOnlyFIO = [];
foreach ($students as $student) {
array_push($studentsOnlyFIO, $student->only('id', 'name', 'surname', 'patronymic'));
array_push($studentsOnlyFIO, $student->only('id', 'name', 'surname', 'patronymic'));
}
return response()->json($studentsOnlyFIO, 200);
}
public function getStudentsJournal(SchoolClass $class, Request $request)
{
$students = $class->students;
$allStudents = [];
foreach ($students as $student)
{
$cpys = clone $student;
$cpys->scores = (new JournalFilter($student->scores, $request))->apply()->values();
$allStudents[] = $cpys;
}
return response()->json($allStudents, 200);
}
//получение всех предметов для класса
public function getSubjects(SchoolClass $class)
{

View File

@@ -14,6 +14,8 @@ class LoginRequest extends UserRequest
*/
public function specific()
{
return [];
return [
'remember_me' => 'integer'
];
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class JournalRequest extends ApiFormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'student_id' => 'required|integer',
'teacher_id' => 'required|integer',
'subject_id' => 'required|integer',
'score' => 'required|integer',
'comment' => 'string',
'date' => 'integer',
];
}
}