add new fields to User
This commit is contained in:
parent
1b684b9d6f
commit
24922b7418
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
|
||||
namespace App\Enums;
|
||||
|
||||
enum UserFields: string
|
||||
{
|
||||
case guid = 'guid';
|
||||
case guid_faculty = 'guid_faculty';
|
||||
case guid_group = 'guid_group';
|
||||
case name = 'name';
|
||||
case first_name = 'first_name';
|
||||
case last_name = 'last_name';
|
||||
case middle_name = 'middle_name';
|
||||
case number_record_book = 'number_record_book';
|
||||
case email = 'email';
|
||||
case faculty = 'faculty';
|
||||
case course = 'course';
|
||||
case group = 'group';
|
||||
case code = 'code';
|
||||
case form_education = 'form_education';
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
|
||||
namespace App\Helpers;
|
||||
|
||||
use App\Enums\UserFields;
|
||||
|
||||
class AllfieldsUserHelper
|
||||
{
|
||||
public static function get()
|
||||
{
|
||||
return array_reduce(UserFields::cases(), function ($carry, $item) {
|
||||
$carry[$item->name] = $item->value;
|
||||
return $carry;
|
||||
}, []);
|
||||
}
|
||||
}
|
|
@ -2,18 +2,92 @@
|
|||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Helpers\HashHelper;
|
||||
use App\Http\Requests\ProfileUpdateRequest;
|
||||
use App\Models\HashRecord;
|
||||
use App\Services\GetInfoOfStudent;
|
||||
use App\Services\TestConnect;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\Redirect;
|
||||
use Illuminate\View\View;
|
||||
|
||||
class ProfileController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display the user's profile form.
|
||||
*/
|
||||
public function show(): View
|
||||
{
|
||||
$currentWeek = json_decode(file_get_contents('https://local.mkgtu.ru/raspisnew/api.php?des=raspis_week_cur'), 1);
|
||||
$user = Auth::user();
|
||||
$ch = curl_init();
|
||||
$groupName = 'ПИ';
|
||||
$groupNumber = (string) 11;
|
||||
$educationForm = 'ОФО';
|
||||
$api = "https://local.mkgtu.ru/raspisnew/api.php?des=raspis_grupp&name={$groupName}&number={$groupNumber}&fo={$educationForm}";
|
||||
curl_setopt($ch, CURLOPT_URL, $api);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$response = json_decode(curl_exec($ch), 1);
|
||||
curl_close($ch);
|
||||
|
||||
$timetable = ['err' => 0, 'msg' => ''];
|
||||
if ($response['err'] !== 0) {
|
||||
$timetable = ['err' => $response['err'], 'msg' => $response['msg']];
|
||||
}
|
||||
if (array_key_exists('raspis', $response)) {
|
||||
foreach($response['raspis'] as $subject) {
|
||||
$timetable[$subject['week1']][$subject['day1']][$subject['time1']] = $subject;
|
||||
}
|
||||
foreach($timetable as $week => $day) {
|
||||
if (!is_array($day)) {
|
||||
continue;
|
||||
}
|
||||
foreach($day as $dayNumber => $subject) {
|
||||
$forSortSubjects = $timetable[$week][$dayNumber];
|
||||
ksort($forSortSubjects);
|
||||
$timetable[$week][$dayNumber] = $forSortSubjects;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// dd($timetable);
|
||||
|
||||
$getInfoOfStudent = new GetInfoOfStudent(new TestConnect());
|
||||
$infoOfStudent = $getInfoOfStudent->getInfo($user);
|
||||
|
||||
$apiHash = HashHelper::getApiHash($infoOfStudent);
|
||||
$recordHash = HashHelper::getRecordHash($user);
|
||||
|
||||
if ($apiHash === $recordHash) {
|
||||
return view('dashboard', compact('user', 'currentWeek', 'timetable'));
|
||||
}
|
||||
|
||||
$user->guid = $infoOfStudent['guid'];
|
||||
$user->guid_faculty = $infoOfStudent['guid_faculty'];
|
||||
$user->guid_group = $infoOfStudent['guid_group'];
|
||||
$user->name = $infoOfStudent['name'];
|
||||
$user->first_name = $infoOfStudent['first_name'];
|
||||
$user->last_name = $infoOfStudent['last_name'];
|
||||
$user->middle_name = $infoOfStudent['middle_name'];
|
||||
$user->number_record_book = $infoOfStudent['number_record_book'];
|
||||
$user->email = $infoOfStudent['email'];
|
||||
$user->faculty = $infoOfStudent['faculty'];
|
||||
$user->course = $infoOfStudent['course'];
|
||||
$user->group = $infoOfStudent['group'];
|
||||
$user->code = $infoOfStudent['code'];
|
||||
$user->form_education = $infoOfStudent['form_education'];
|
||||
$user->save();
|
||||
|
||||
|
||||
$hashRecord = HashRecord::firstOrCreate(['user_id' => $user->id]);
|
||||
$hashRecord->hash = $apiHash;
|
||||
$hashRecord->save();
|
||||
|
||||
Cache::set($user->guid, json_encode($infoOfStudent));
|
||||
return view('dashboard', compact('user', 'currentWeek', 'timetable'));
|
||||
}
|
||||
|
||||
public function edit(Request $request): View
|
||||
{
|
||||
return view('profile.edit', [
|
||||
|
|
|
@ -4,6 +4,7 @@ namespace App\Models;
|
|||
|
||||
// use Illuminate\Contracts\Auth\MustVerifyEmail;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
|
||||
|
@ -18,9 +19,22 @@ class User extends Authenticatable
|
|||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
'id',
|
||||
'name',
|
||||
'email',
|
||||
'password',
|
||||
'guid',
|
||||
'guid_faculty',
|
||||
'guid_group',
|
||||
'first_name',
|
||||
'last_name',
|
||||
'middle_name',
|
||||
'number_record_book',
|
||||
'faculty',
|
||||
'course',
|
||||
'group',
|
||||
'code',
|
||||
'form_education',
|
||||
];
|
||||
|
||||
/**
|
||||
|
@ -45,4 +59,9 @@ class User extends Authenticatable
|
|||
'password' => 'hashed',
|
||||
];
|
||||
}
|
||||
|
||||
public function hashRecord(): HasOne
|
||||
{
|
||||
return $this->hasOne(HashRecord::class);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ return new class () extends Migration {
|
|||
Schema::create('users', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('name');
|
||||
$table->string('email')->unique();
|
||||
$table->string('email')->nullable()->unique();
|
||||
$table->timestamp('email_verified_at')->nullable();
|
||||
$table->string('password');
|
||||
$table->rememberToken();
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class () extends Migration {
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->string('guid', 255)->nullable();
|
||||
$table->string('guid_faculty', 255)->nullable();
|
||||
$table->string('guid_group', 255)->nullable();
|
||||
$table->string('first_name', 255)->nullable();
|
||||
$table->string('last_name', 255)->nullable();
|
||||
$table->string('middle_name', 255)->nullable();
|
||||
$table->string('number_record_book', 255)->nullable();
|
||||
$table->string('faculty', 255)->nullable();
|
||||
$table->string('course', 255)->nullable();
|
||||
$table->string('group', 255)->nullable();
|
||||
$table->string('code', 255)->nullable();
|
||||
$table->string('form_education', 255)->nullable();
|
||||
});
|
||||
}
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->dropColumn(
|
||||
'guid',
|
||||
'first_name',
|
||||
'last_name',
|
||||
'middle_name',
|
||||
'number_record_book',
|
||||
'faculty',
|
||||
'guid_faculty',
|
||||
'course',
|
||||
'group',
|
||||
'guid_group',
|
||||
'code',
|
||||
'form_education',
|
||||
);
|
||||
});
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue