diff --git a/app/Http/Controllers/SashaAuthController.php b/app/Http/Controllers/SashaAuthController.php index e7e359e..c95218c 100644 --- a/app/Http/Controllers/SashaAuthController.php +++ b/app/Http/Controllers/SashaAuthController.php @@ -77,14 +77,18 @@ public function handleCallback(Request $request) ]); $userResponse = Http::withToken($accessToken)->get(config('services.sasha.main_url') . '/api/me')->json(); + + // if (!$userResponse->successful()) { + // return redirect('/error')->withErrors('No se pudo autenticar con SASHA.'); + // } $sashaUser = $userResponse['data']; $user = User::updateOrCreate([ - 'id' => $sashaUser['uuid'], + 'uuid' => $sashaUser['uuid'], ], [ - 'id' => $sashaUser['uuid'], 'name' => $sashaUser["name"], 'last_name' => $sashaUser["last_name"], + 'uuid' => $sashaUser['uuid'], 'email' => $sashaUser['email'], 'grade' => $sashaUser['grade'], 'fingerprint' => $sashaUser['fingerprint'], @@ -101,6 +105,6 @@ public function handleCallback(Request $request) Log::info(Auth::user()); - return redirect('/'); + return redirect(route($sashaUser["type"] . '.home')); } } diff --git a/app/Http/Middleware/CoordinatorCheck.php b/app/Http/Middleware/CoordinatorCheck.php new file mode 100644 index 0000000..54e17bf --- /dev/null +++ b/app/Http/Middleware/CoordinatorCheck.php @@ -0,0 +1,25 @@ +chatId === $id) { + return $this->chatId = null; + } + return $this->chatId = $id; + } +} diff --git a/app/Livewire/Students/Main.php b/app/Livewire/Students/Main.php new file mode 100644 index 0000000..6bae11b --- /dev/null +++ b/app/Livewire/Students/Main.php @@ -0,0 +1,17 @@ +showModal = !$this->showModal; + } +} diff --git a/app/Models/Newness.php b/app/Models/Newness.php index 6c1445c..7b93ace 100644 --- a/app/Models/Newness.php +++ b/app/Models/Newness.php @@ -13,6 +13,6 @@ class Newness extends Model public function user(): BelongsTo { - return $this->belongsTo(User::class); + return $this->belongsTo(User::class, 'user_uuid'); } } diff --git a/app/Models/User.php b/app/Models/User.php index f535545..d3fb572 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -4,7 +4,7 @@ // use Illuminate\Contracts\Auth\MustVerifyEmail; -use Illuminate\Database\Eloquent\Concerns\HasUuids; +use App\Enums\UserRol; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Foundation\Auth\User as Authenticatable; @@ -15,7 +15,7 @@ class User extends Authenticatable { /** @use HasFactory<\Database\Factories\UserFactory> */ - use HasFactory, Notifiable, TwoFactorAuthenticatable, HasUuids; + use HasFactory, Notifiable, TwoFactorAuthenticatable; /** * The attributes that are mass assignable. @@ -23,7 +23,6 @@ class User extends Authenticatable * @var list */ protected $fillable = [ - 'id', 'name', 'last_name', 'email', @@ -38,9 +37,6 @@ class User extends Authenticatable 'rol' ]; - public $incrementing = false; - protected $keyType = 'string'; - /** * The attributes that should be hidden for serialization. * @@ -61,6 +57,7 @@ protected function casts(): array return [ 'email_verified_at' => 'datetime', 'password' => 'hashed', + 'rol' => UserRol::class, ]; } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 452e6b6..732b87c 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,6 +2,10 @@ namespace App\Providers; +use App\Enums\UserRol; +use App\Models\User; +use Illuminate\Support\Facades\Gate; +use Illuminate\Support\Facades\Log; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider @@ -19,6 +23,21 @@ public function register(): void */ public function boot(): void { - // + + Gate::define('student', function (User $user) { + return $user->rol == UserRol::Student; + }); + + Gate::define('teacher', function (User $user) { + return $user->rol == UserRol::Teacher; + }); + + Gate::define('coordinator', function (User $user) { + return $user->rol == UserRol::Coordinator; + }); + + Gate::define('developer', function (User $user) { + return $user->rol == UserRol::Developer; + }); } } diff --git a/bootstrap/app.php b/bootstrap/app.php index 7b162da..7a61e80 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -1,17 +1,26 @@ withRouting( - web: __DIR__.'/../routes/web.php', - commands: __DIR__.'/../routes/console.php', + web: __DIR__ . '/../routes/web.php', + commands: __DIR__ . '/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { - // + $middleware->alias([ + 'student' => StudentCheck::class, + 'teacher' => TeacherCheck::class, + 'coordinator' => CoordinatorCheck::class, + 'developer' => DeveloperCheck::class + ]); }) ->withExceptions(function (Exceptions $exceptions) { // diff --git a/composer.json b/composer.json index 77ff016..8c5cb11 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,8 @@ "mockery/mockery": "^1.6", "nunomaduro/collision": "^8.6", "pestphp/pest": "^3.8", - "pestphp/pest-plugin-laravel": "^3.2" + "pestphp/pest-plugin-laravel": "^3.2", + "phiki/phiki": "^2.0" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 0e4bf68..d7f7c33 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ce15ef6e89479859200c531cbc4a37af", + "content-hash": "713f7d3493c39a8a0db9b3cd7184a887", "packages": [ { "name": "bacon/bacon-qr-code", @@ -1159,16 +1159,16 @@ }, { "name": "laravel/fortify", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/laravel/fortify.git", - "reference": "005f4d535ae671312d267d942b964807fc0ef6f8" + "reference": "67116b14bd6b480d027f8b8075c2cd75363904e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/fortify/zipball/005f4d535ae671312d267d942b964807fc0ef6f8", - "reference": "005f4d535ae671312d267d942b964807fc0ef6f8", + "url": "https://api.github.com/repos/laravel/fortify/zipball/67116b14bd6b480d027f8b8075c2cd75363904e8", + "reference": "67116b14bd6b480d027f8b8075c2cd75363904e8", "shasum": "" }, "require": { @@ -1220,20 +1220,20 @@ "issues": "https://github.com/laravel/fortify/issues", "source": "https://github.com/laravel/fortify" }, - "time": "2025-08-29T20:15:47+00:00" + "time": "2025-09-30T10:06:29+00:00" }, { "name": "laravel/framework", - "version": "v12.31.1", + "version": "v12.32.5", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "281b711710c245dd8275d73132e92635be3094df" + "reference": "77b2740391cd2a825ba59d6fada45e9b8b9bcc5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/281b711710c245dd8275d73132e92635be3094df", - "reference": "281b711710c245dd8275d73132e92635be3094df", + "url": "https://api.github.com/repos/laravel/framework/zipball/77b2740391cd2a825ba59d6fada45e9b8b9bcc5a", + "reference": "77b2740391cd2a825ba59d6fada45e9b8b9bcc5a", "shasum": "" }, "require": { @@ -1261,7 +1261,6 @@ "monolog/monolog": "^3.0", "nesbot/carbon": "^3.8.4", "nunomaduro/termwind": "^2.0", - "phiki/phiki": "^2.0.0", "php": "^8.2", "psr/container": "^1.1.1|^2.0.1", "psr/log": "^1.0|^2.0|^3.0", @@ -1440,7 +1439,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-09-23T15:33:04+00:00" + "time": "2025-09-30T17:39:22+00:00" }, { "name": "laravel/prompts", @@ -2181,16 +2180,16 @@ }, { "name": "livewire/flux", - "version": "v2.4.0", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/livewire/flux.git", - "reference": "8d83f34d64ab0542463e8e3feab4d166e1830ed9" + "reference": "7d236c6caa6a8fa8604caa08abf2ae630be12c24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/flux/zipball/8d83f34d64ab0542463e8e3feab4d166e1830ed9", - "reference": "8d83f34d64ab0542463e8e3feab4d166e1830ed9", + "url": "https://api.github.com/repos/livewire/flux/zipball/7d236c6caa6a8fa8604caa08abf2ae630be12c24", + "reference": "7d236c6caa6a8fa8604caa08abf2ae630be12c24", "shasum": "" }, "require": { @@ -2241,9 +2240,9 @@ ], "support": { "issues": "https://github.com/livewire/flux/issues", - "source": "https://github.com/livewire/flux/tree/v2.4.0" + "source": "https://github.com/livewire/flux/tree/v2.5.0" }, - "time": "2025-09-16T00:20:10+00:00" + "time": "2025-09-29T21:36:00+00:00" }, { "name": "livewire/livewire", @@ -3107,77 +3106,6 @@ }, "time": "2025-09-24T15:06:41+00:00" }, - { - "name": "phiki/phiki", - "version": "v2.0.4", - "source": { - "type": "git", - "url": "https://github.com/phikiphp/phiki.git", - "reference": "160785c50c01077780ab217e5808f00ab8f05a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phikiphp/phiki/zipball/160785c50c01077780ab217e5808f00ab8f05a13", - "reference": "160785c50c01077780ab217e5808f00ab8f05a13", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "league/commonmark": "^2.5.3", - "php": "^8.2", - "psr/simple-cache": "^3.0" - }, - "require-dev": { - "illuminate/support": "^11.45", - "laravel/pint": "^1.18.1", - "orchestra/testbench": "^9.15", - "pestphp/pest": "^3.5.1", - "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^2.0", - "symfony/var-dumper": "^7.1.6" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Phiki\\Adapters\\Laravel\\PhikiServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Phiki\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ryan Chandler", - "email": "support@ryangjchandler.co.uk", - "homepage": "https://ryangjchandler.co.uk", - "role": "Developer" - } - ], - "description": "Syntax highlighting using TextMate grammars in PHP.", - "support": { - "issues": "https://github.com/phikiphp/phiki/issues", - "source": "https://github.com/phikiphp/phiki/tree/v2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sponsors/ryangjchandler", - "type": "github" - }, - { - "url": "https://buymeacoffee.com/ryangjchandler", - "type": "other" - } - ], - "time": "2025-09-20T17:21:02+00:00" - }, { "name": "phpoption/phpoption", "version": "1.9.4", @@ -4221,16 +4149,16 @@ }, { "name": "symfony/console", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7" + "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7", - "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7", + "url": "https://api.github.com/repos/symfony/console/zipball/2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", + "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", "shasum": "" }, "require": { @@ -4295,7 +4223,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.3" + "source": "https://github.com/symfony/console/tree/v7.3.4" }, "funding": [ { @@ -4315,7 +4243,7 @@ "type": "tidelift" } ], - "time": "2025-08-25T06:35:40+00:00" + "time": "2025-09-22T15:31:00+00:00" }, { "name": "symfony/css-selector", @@ -4451,16 +4379,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.3.2", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3" + "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/0b31a944fcd8759ae294da4d2808cbc53aebd0c3", - "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", + "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", "shasum": "" }, "require": { @@ -4508,7 +4436,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.3.2" + "source": "https://github.com/symfony/error-handler/tree/v7.3.4" }, "funding": [ { @@ -4528,7 +4456,7 @@ "type": "tidelift" } ], - "time": "2025-07-07T08:17:57+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/event-dispatcher", @@ -4760,16 +4688,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "7475561ec27020196c49bb7c4f178d33d7d3dc00" + "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7475561ec27020196c49bb7c4f178d33d7d3dc00", - "reference": "7475561ec27020196c49bb7c4f178d33d7d3dc00", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c061c7c18918b1b64268771aad04b40be41dd2e6", + "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6", "shasum": "" }, "require": { @@ -4819,7 +4747,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.3.3" + "source": "https://github.com/symfony/http-foundation/tree/v7.3.4" }, "funding": [ { @@ -4839,20 +4767,20 @@ "type": "tidelift" } ], - "time": "2025-08-20T08:04:18+00:00" + "time": "2025-09-16T08:38:17+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "72c304de37e1a1cec6d5d12b81187ebd4850a17b" + "reference": "b796dffea7821f035047235e076b60ca2446e3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/72c304de37e1a1cec6d5d12b81187ebd4850a17b", - "reference": "72c304de37e1a1cec6d5d12b81187ebd4850a17b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b796dffea7821f035047235e076b60ca2446e3cf", + "reference": "b796dffea7821f035047235e076b60ca2446e3cf", "shasum": "" }, "require": { @@ -4937,7 +4865,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.3.3" + "source": "https://github.com/symfony/http-kernel/tree/v7.3.4" }, "funding": [ { @@ -4957,20 +4885,20 @@ "type": "tidelift" } ], - "time": "2025-08-29T08:23:45+00:00" + "time": "2025-09-27T12:32:17+00:00" }, { "name": "symfony/mailer", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "a32f3f45f1990db8c4341d5122a7d3a381c7e575" + "reference": "ab97ef2f7acf0216955f5845484235113047a31d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/a32f3f45f1990db8c4341d5122a7d3a381c7e575", - "reference": "a32f3f45f1990db8c4341d5122a7d3a381c7e575", + "url": "https://api.github.com/repos/symfony/mailer/zipball/ab97ef2f7acf0216955f5845484235113047a31d", + "reference": "ab97ef2f7acf0216955f5845484235113047a31d", "shasum": "" }, "require": { @@ -5021,7 +4949,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.3.3" + "source": "https://github.com/symfony/mailer/tree/v7.3.4" }, "funding": [ { @@ -5041,20 +4969,20 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2025-09-17T05:51:54+00:00" }, { "name": "symfony/mime", - "version": "v7.3.2", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1" + "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/e0a0f859148daf1edf6c60b398eb40bfc96697d1", - "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1", + "url": "https://api.github.com/repos/symfony/mime/zipball/b1b828f69cbaf887fa835a091869e55df91d0e35", + "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35", "shasum": "" }, "require": { @@ -5109,7 +5037,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.3.2" + "source": "https://github.com/symfony/mime/tree/v7.3.4" }, "funding": [ { @@ -5129,7 +5057,7 @@ "type": "tidelift" } ], - "time": "2025-07-15T13:41:35+00:00" + "time": "2025-09-16T08:38:17+00:00" }, { "name": "symfony/polyfill-ctype", @@ -5962,16 +5890,16 @@ }, { "name": "symfony/process", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "32241012d521e2e8a9d713adb0812bb773b907f1" + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/32241012d521e2e8a9d713adb0812bb773b907f1", - "reference": "32241012d521e2e8a9d713adb0812bb773b907f1", + "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b", + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b", "shasum": "" }, "require": { @@ -6003,7 +5931,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.3.3" + "source": "https://github.com/symfony/process/tree/v7.3.4" }, "funding": [ { @@ -6023,20 +5951,20 @@ "type": "tidelift" } ], - "time": "2025-08-18T09:42:54+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/routing", - "version": "v7.3.2", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4" + "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/7614b8ca5fa89b9cd233e21b627bfc5774f586e4", - "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4", + "url": "https://api.github.com/repos/symfony/routing/zipball/8dc648e159e9bac02b703b9fbd937f19ba13d07c", + "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c", "shasum": "" }, "require": { @@ -6088,7 +6016,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.3.2" + "source": "https://github.com/symfony/routing/tree/v7.3.4" }, "funding": [ { @@ -6108,7 +6036,7 @@ "type": "tidelift" } ], - "time": "2025-07-15T11:36:08+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/service-contracts", @@ -6195,16 +6123,16 @@ }, { "name": "symfony/string", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c" + "reference": "f96476035142921000338bad71e5247fbc138872" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/17a426cce5fd1f0901fefa9b2a490d0038fd3c9c", - "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c", + "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", + "reference": "f96476035142921000338bad71e5247fbc138872", "shasum": "" }, "require": { @@ -6219,7 +6147,6 @@ }, "require-dev": { "symfony/emoji": "^7.1", - "symfony/error-handler": "^6.4|^7.0", "symfony/http-client": "^6.4|^7.0", "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", @@ -6262,7 +6189,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.3.3" + "source": "https://github.com/symfony/string/tree/v7.3.4" }, "funding": [ { @@ -6282,20 +6209,20 @@ "type": "tidelift" } ], - "time": "2025-08-25T06:35:40+00:00" + "time": "2025-09-11T14:36:48+00:00" }, { "name": "symfony/translation", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "e0837b4cbcef63c754d89a4806575cada743a38d" + "reference": "ec25870502d0c7072d086e8ffba1420c85965174" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/e0837b4cbcef63c754d89a4806575cada743a38d", - "reference": "e0837b4cbcef63c754d89a4806575cada743a38d", + "url": "https://api.github.com/repos/symfony/translation/zipball/ec25870502d0c7072d086e8ffba1420c85965174", + "reference": "ec25870502d0c7072d086e8ffba1420c85965174", "shasum": "" }, "require": { @@ -6362,7 +6289,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.3.3" + "source": "https://github.com/symfony/translation/tree/v7.3.4" }, "funding": [ { @@ -6382,7 +6309,7 @@ "type": "tidelift" } ], - "time": "2025-08-01T21:02:37+00:00" + "time": "2025-09-07T11:39:36+00:00" }, { "name": "symfony/translation-contracts", @@ -6538,16 +6465,16 @@ }, { "name": "symfony/var-dumper", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "34d8d4c4b9597347306d1ec8eb4e1319b1e6986f" + "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/34d8d4c4b9597347306d1ec8eb4e1319b1e6986f", - "reference": "34d8d4c4b9597347306d1ec8eb4e1319b1e6986f", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb", + "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb", "shasum": "" }, "require": { @@ -6601,7 +6528,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.3.3" + "source": "https://github.com/symfony/var-dumper/tree/v7.3.4" }, "funding": [ { @@ -6621,7 +6548,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -8394,6 +8321,77 @@ }, "time": "2022-02-21T01:04:05+00:00" }, + { + "name": "phiki/phiki", + "version": "v2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phikiphp/phiki.git", + "reference": "160785c50c01077780ab217e5808f00ab8f05a13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phikiphp/phiki/zipball/160785c50c01077780ab217e5808f00ab8f05a13", + "reference": "160785c50c01077780ab217e5808f00ab8f05a13", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/commonmark": "^2.5.3", + "php": "^8.2", + "psr/simple-cache": "^3.0" + }, + "require-dev": { + "illuminate/support": "^11.45", + "laravel/pint": "^1.18.1", + "orchestra/testbench": "^9.15", + "pestphp/pest": "^3.5.1", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.0", + "symfony/var-dumper": "^7.1.6" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Phiki\\Adapters\\Laravel\\PhikiServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Phiki\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ryan Chandler", + "email": "support@ryangjchandler.co.uk", + "homepage": "https://ryangjchandler.co.uk", + "role": "Developer" + } + ], + "description": "Syntax highlighting using TextMate grammars in PHP.", + "support": { + "issues": "https://github.com/phikiphp/phiki/issues", + "source": "https://github.com/phikiphp/phiki/tree/v2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sponsors/ryangjchandler", + "type": "github" + }, + { + "url": "https://buymeacoffee.com/ryangjchandler", + "type": "other" + } + ], + "time": "2025-09-20T17:21:02+00:00" + }, { "name": "php-debugbar/php-debugbar", "version": "v2.2.4", diff --git a/config/livewire.php b/config/livewire.php new file mode 100644 index 0000000..7b523ca --- /dev/null +++ b/config/livewire.php @@ -0,0 +1,173 @@ + 'App\\Livewire', + + /* + |--------------------------------------------------------------------------- + | View Path + |--------------------------------------------------------------------------- + | + | This value is used to specify where Livewire component Blade templates are + | stored when running file creation commands like `artisan make:livewire`. + | It is also used if you choose to omit a component's render() method. + | + */ + + 'view_path' => resource_path('views/livewire'), + + /* + |--------------------------------------------------------------------------- + | Layout + |--------------------------------------------------------------------------- + | The view that will be used as the layout when rendering a single component + | as an entire page via `Route::get('/post/create', CreatePost::class);`. + | In this case, the view returned by CreatePost will render into $slot. + | + */ + + 'layout' => 'templates.general.general', + + /* + |--------------------------------------------------------------------------- + | Lazy Loading Placeholder + |--------------------------------------------------------------------------- + | Livewire allows you to lazy load components that would otherwise slow down + | the initial page load. Every component can have a custom placeholder or + | you can define the default placeholder view for all components below. + | + */ + + 'lazy_placeholder' => null, + + /* + |--------------------------------------------------------------------------- + | Temporary File Uploads + |--------------------------------------------------------------------------- + | + | Livewire handles file uploads by storing uploads in a temporary directory + | before the file is stored permanently. All file uploads are directed to + | a global endpoint for temporary storage. You may configure this below: + | + */ + + 'temporary_file_upload' => [ + 'disk' => null, // Example: 'local', 's3' | Default: 'default' + 'rules' => null, // Example: ['file', 'mimes:png,jpg'] | Default: ['required', 'file', 'max:12288'] (12MB) + 'directory' => null, // Example: 'tmp' | Default: 'livewire-tmp' + 'middleware' => null, // Example: 'throttle:5,1' | Default: 'throttle:60,1' + 'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs... + 'png', + 'gif', + 'bmp', + 'svg', + 'wav', + 'mp4', + 'mov', + 'avi', + 'wmv', + 'mp3', + 'm4a', + 'jpg', + 'jpeg', + 'mpga', + 'webp', + 'wma', + ], + 'max_upload_time' => 5, // Max duration (in minutes) before an upload is invalidated... + 'cleanup' => true, // Should cleanup temporary uploads older than 24 hrs... + ], + + /* + |--------------------------------------------------------------------------- + | Render On Redirect + |--------------------------------------------------------------------------- + | + | This value determines if Livewire will run a component's `render()` method + | after a redirect has been triggered using something like `redirect(...)` + | Setting this to true will render the view once more before redirecting + | + */ + + 'render_on_redirect' => false, + + /* + |--------------------------------------------------------------------------- + | Eloquent Model Binding + |--------------------------------------------------------------------------- + | + | Previous versions of Livewire supported binding directly to eloquent model + | properties using wire:model by default. However, this behavior has been + | deemed too "magical" and has therefore been put under a feature flag. + | + */ + + 'legacy_model_binding' => false, + + /* + |--------------------------------------------------------------------------- + | Auto-inject Frontend Assets + |--------------------------------------------------------------------------- + | + | By default, Livewire automatically injects its JavaScript and CSS into the + | and of pages containing Livewire components. By disabling + | this behavior, you need to use @livewireStyles and @livewireScripts. + | + */ + + 'inject_assets' => true, + + /* + |--------------------------------------------------------------------------- + | Navigate (SPA mode) + |--------------------------------------------------------------------------- + | + | By adding `wire:navigate` to links in your Livewire application, Livewire + | will prevent the default link handling and instead request those pages + | via AJAX, creating an SPA-like effect. Configure this behavior here. + | + */ + + 'navigate' => [ + 'show_progress_bar' => true, + 'progress_bar_color' => '#2299dd', + ], + + /* + |--------------------------------------------------------------------------- + | HTML Morph Markers + |--------------------------------------------------------------------------- + | + | Livewire intelligently "morphs" existing HTML into the newly rendered HTML + | after each update. To make this process more reliable, Livewire injects + | "markers" into the rendered Blade surrounding @if, @class & @foreach. + | + */ + + 'inject_morph_markers' => true, + + /* + |--------------------------------------------------------------------------- + | Pagination Theme + |--------------------------------------------------------------------------- + | + | When enabling Livewire's pagination feature by using the `WithPagination` + | trait, Livewire will use Tailwind templates to render pagination views + | on the page. If you want Bootstrap CSS, you can specify: "bootstrap" + | + */ + + 'pagination_theme' => 'tailwind', +]; diff --git a/database/factories/NewnessFactory.php b/database/factories/NewnessFactory.php index 62b96af..ec8544f 100644 --- a/database/factories/NewnessFactory.php +++ b/database/factories/NewnessFactory.php @@ -19,7 +19,7 @@ class NewnessFactory extends Factory public function definition(): array { return [ - 'user_id' => User::factory(), + 'user_uuid' => User::factory(), 'subject' => $slug = fake()->sentence(), 'slug' => Str::slug($slug), 'text' => fake()->text(), diff --git a/database/factories/RecordFactory.php b/database/factories/RecordFactory.php index 2d69b43..38ff855 100644 --- a/database/factories/RecordFactory.php +++ b/database/factories/RecordFactory.php @@ -24,7 +24,7 @@ public function definition(): array 'date' => fake()->dateTime(), 'record_type' => RecordType::manual, 'journey_id' => Journey::factory(), - 'user_id' => User::factory(), + 'user_uuid' => User::factory(), ]; } } diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 7b2c318..5482560 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -34,8 +34,8 @@ public function definition(): array 'grade' => '1104', 'fingerprint' => fake()->sha256(), 'document' => fake()->numberBetween(1000000000, 1999999999), + 'uuid' => fake()->uuid(), 'document_type' => 'T.I', - 'profile_photo_path' => null, 'rol' => UserRol::Student, ]; } diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php index 4339cea..be3012e 100644 --- a/database/migrations/0001_01_01_000000_create_users_table.php +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -12,7 +12,8 @@ public function up(): void { Schema::create('users', function (Blueprint $table) { - $table->uuid('id')->primary(); + $table->id(); + $table->string('name'); $table->string("last_name"); $table->string('email')->unique(); diff --git a/database/migrations/2025_09_28_023709_add_custom_columns_to_users.php b/database/migrations/2025_09_24_023709_add_custom_columns_to_users.php similarity index 93% rename from database/migrations/2025_09_28_023709_add_custom_columns_to_users.php rename to database/migrations/2025_09_24_023709_add_custom_columns_to_users.php index 08c5bee..1c55ccb 100644 --- a/database/migrations/2025_09_28_023709_add_custom_columns_to_users.php +++ b/database/migrations/2025_09_24_023709_add_custom_columns_to_users.php @@ -13,6 +13,8 @@ public function up(): void { Schema::table('users', function (Blueprint $table) { + + $table->uuid("uuid")->unique(); $table->enum("rol", UserRol::cases())->nullable(); $table->string("grade")->nullable(); $table->string("fingerprint")->nullable(); @@ -32,7 +34,7 @@ public function down(): void Schema::table('users', function (Blueprint $table) { $table->dropColumn("grade"); $table->dropColumn("fingerprint"); - $table->dropColumn("UUID"); + $table->dropColumn("uuid"); $table->dropColumn("document"); $table->dropColumn("document_type"); $table->dropColumn("last_login_ip"); diff --git a/database/migrations/2025_09_25_220024_create_records_table.php b/database/migrations/2025_09_25_220024_create_records_table.php index 73e78a9..ddf9b12 100644 --- a/database/migrations/2025_09_25_220024_create_records_table.php +++ b/database/migrations/2025_09_25_220024_create_records_table.php @@ -15,15 +15,15 @@ public function up(): void Schema::create('records', function (Blueprint $table) { $table->id(); - $table->uuid('user_id'); + $table->uuid('user_uuid'); $table->dateTime("date"); $table->enum('record_type', RecordType::cases()); $table->unsignedBigInteger("journey_id"); $table->unsignedBigInteger("device_id")->nullable(); - $table->foreign("user_id") - ->references("id") + $table->foreign("user_uuid") + ->references("uuid") ->on("users") ->onDelete("cascade"); diff --git a/database/migrations/2025_09_26_000807_create_newnesses_table.php b/database/migrations/2025_09_26_000807_create_newnesses_table.php index 68b6091..2fa5bb1 100644 --- a/database/migrations/2025_09_26_000807_create_newnesses_table.php +++ b/database/migrations/2025_09_26_000807_create_newnesses_table.php @@ -13,7 +13,7 @@ public function up(): void { Schema::create('newnesses', function (Blueprint $table) { $table->id(); - $table->uuid("user_id"); + $table->uuid("user_uuid"); $table->string("subject"); $table->text("text"); $table->string("slug"); diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 936e879..5fad375 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -20,14 +20,14 @@ public function run(): void User::factory(10)->create(); - User::factory() - ->has(Newness::factory()->count(3)) - ->create(); + // User::factory() + // ->has(Newness::factory()->count(3)) + // ->create(); - Journey::factory() - ->has(Record::factory() - ->has(User::factory()->count(1)) - ->count(3)) - ->create(); + // Journey::factory() + // ->has(Record::factory() + // ->has(User::factory()->count(1)) + // ->count(3)) + // ->create(); } } diff --git a/public/img/persons/404.png b/public/img/persons/404.png new file mode 100644 index 0000000..a10c0b9 Binary files /dev/null and b/public/img/persons/404.png differ diff --git a/resources/views/components/modal-system.blade.php b/resources/views/components/modal-system.blade.php new file mode 100644 index 0000000..9f812e9 --- /dev/null +++ b/resources/views/components/modal-system.blade.php @@ -0,0 +1,34 @@ +@props(['id', 'maxWidth']) + +@php +$id = $id ?? md5($attributes->wire('model')); + +$maxWidth = [ +'sm' => 'sm:max-w-sm', +'md' => 'sm:max-w-md', +'lg' => 'sm:max-w-lg', +'xl' => 'sm:max-w-xl', +'2xl' => 'sm:max-w-2xl', +][$maxWidth ?? '2xl']; +@endphp + + diff --git a/resources/views/developers/chat/externo_chat.blade.php b/resources/views/developers/chat/externo_chat.blade.php index 6e864ea..1175319 100644 --- a/resources/views/developers/chat/externo_chat.blade.php +++ b/resources/views/developers/chat/externo_chat.blade.php @@ -89,7 +89,7 @@ class="w-full px-4 py-2 rounded-full bg-gray-300 text-gray-700 placeholder-gray- - +
getMessage() ?: 'Forbidden')) diff --git a/resources/views/errors/404.blade.php b/resources/views/errors/404.blade.php new file mode 100644 index 0000000..03d7309 --- /dev/null +++ b/resources/views/errors/404.blade.php @@ -0,0 +1,32 @@ +@extends('templates.general') + +@section('content') +
+
+ Logo oficial de S.A.R.A. +
+ + +

¡Oops, aquí no hay comida ni página! +

+ +

+ Buscamos por todos lados pero no pudimos encontrar lo que buscas. + Parece que hasta S.A.R.A. se quedó confundida. +

+ + + + Volver al inicio + + + +
+ Imagen cómica de S.A.R.A. confundida +
+
+ +@endsection diff --git a/resources/views/errors/419.blade.php b/resources/views/errors/419.blade.php new file mode 100644 index 0000000..c09216e --- /dev/null +++ b/resources/views/errors/419.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Page Expired')) +@section('code', '419') +@section('message', __('Page Expired')) diff --git a/resources/views/errors/429.blade.php b/resources/views/errors/429.blade.php new file mode 100644 index 0000000..f01b07b --- /dev/null +++ b/resources/views/errors/429.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Too Many Requests')) +@section('code', '429') +@section('message', __('Too Many Requests')) diff --git a/resources/views/errors/500.blade.php b/resources/views/errors/500.blade.php new file mode 100644 index 0000000..d9e95d9 --- /dev/null +++ b/resources/views/errors/500.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Server Error')) +@section('code', '500') +@section('message', __('Server Error')) diff --git a/resources/views/errors/503.blade.php b/resources/views/errors/503.blade.php new file mode 100644 index 0000000..c5a9dde --- /dev/null +++ b/resources/views/errors/503.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Service Unavailable')) +@section('code', '503') +@section('message', __('Service Unavailable')) diff --git a/resources/views/errors/layout.blade.php b/resources/views/errors/layout.blade.php new file mode 100644 index 0000000..019c2cd --- /dev/null +++ b/resources/views/errors/layout.blade.php @@ -0,0 +1,53 @@ + + + + + + + @yield('title') + + + + + +
+
+
+ @yield('message') +
+
+
+ + diff --git a/resources/views/errors/minimal.blade.php b/resources/views/errors/minimal.blade.php new file mode 100644 index 0000000..db69f25 --- /dev/null +++ b/resources/views/errors/minimal.blade.php @@ -0,0 +1,34 @@ + + + + + + + @yield('title') + + + + + + +
+
+
+
+ @yield('code') +
+ +
+ @yield('message') +
+
+
+
+ + diff --git a/resources/views/landig-page.blade.php b/resources/views/landig-page.blade.php index 7edda40..21399d3 100644 --- a/resources/views/landig-page.blade.php +++ b/resources/views/landig-page.blade.php @@ -1,8 +1,39 @@ -@extends('templates.general') +
+ +
+ +
-@section('content') -@dd(Auth::check(), Auth::user()); -
@@ -14,10 +45,20 @@ class="w-96 h-auto object-contain hover:scale-105 transition-all duration-300">
- -@endsection \ No newline at end of file diff --git a/resources/views/livewire/website/home.blade.php b/resources/views/livewire/website/home.blade.php new file mode 100644 index 0000000..04b21c8 --- /dev/null +++ b/resources/views/livewire/website/home.blade.php @@ -0,0 +1,3 @@ +
+ {{-- Be like water. --}} +
diff --git a/resources/views/pag-status.blade.php b/resources/views/pag-status.blade.php deleted file mode 100644 index ced4dd6..0000000 --- a/resources/views/pag-status.blade.php +++ /dev/null @@ -1,162 +0,0 @@ -@extends('templates.students') - -@section('content') - -
- -
-

Estado de dispositivos

-
- -
-
-

8

-

Dispositivos Online

-
-
-

2

-

Dispositivos Offline

-
-
-

1

-

Dispositivos en Falla

-
-
-

1

-

En proceso

-
-
- - -
-
- - -
- - - entradas -
- -
- - -
- - -
- - -
-
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Nombre DispositivoUbicaciónÚltima conexiónEstadoAcciónDetalles
Amelia-SARARefrigerios - Entrada24/09/2025 08:45 - Online - - - - Funcionamiento correcto
Tars-SARARefrigerios - Lado opuesto24/09/2025 08:42 - Offline - - - - - Última respuesta: 24/09/2025 08:42
Problema: Sin comunicación -
Mann-SARAAlmuerzos - Punto 124/09/2025 08:30 - Falla - - - - - Error crítico: Sensor biométrico no responde
Soporte: Revisar cableado -
Muro-SARAAlmuerzos - Punto 224/09/2025 08:45 - Online - - - - Funcionamiento correcto
Brand-SARAAlmuerzos - Punto 324/09/2025 08:45 - Online - - - - Funcionamiento correcto
-
-
- -
- -@endsection diff --git a/resources/views/students/chat.blade.php b/resources/views/students/chat.blade.php new file mode 100644 index 0000000..5ba94f6 --- /dev/null +++ b/resources/views/students/chat.blade.php @@ -0,0 +1,141 @@ +
+
+ + +
+ +

S.A.R.A

+ + + + + +
+ + + + + + + + +
+ + +
+ + +
+
+
+

Julian Ramirez

+

Lorem ipsum dolor sit amet...

+
+ + Profesor + +
+ + +
+
+
+

Daniela Saiz

+

Lorem ipsum dolor sit amet...

+
+ + Desconectado + +
+ + +
+
+
+

Julian Ramirez

+

Lorem ipsum dolor sit amet...

+
+ + Estudiante + +
+ + +
+
+
+

Carlos Pérez

+

Lorem ipsum dolor sit amet...

+
+ + Profesor + +
+
+
+ + +
+ @if ($chatId) +
+ + +
+
+

Julian Ramirez

+ Profesor +
+
+ + +
+ +
+
+ Profesor, solicitamos que el dispositivo #4853 sea reiniciado, porque esa porquería no + sirve. +
+
+ + +
+
+ Ya que... +
+
+
+ + +
+ + +
+
+ @else +
+ Logo S.A.R.A +
+ @endif +
+ +
+
\ No newline at end of file diff --git a/resources/views/students/main.blade.php b/resources/views/students/main.blade.php new file mode 100644 index 0000000..d32c60f --- /dev/null +++ b/resources/views/students/main.blade.php @@ -0,0 +1,127 @@ +
+
+

Bienvenido {{Auth::user()->name}}

+ + +
+ + +
+

Porcentaje de asistencia

+
+
+

15%

+

No asistencias

+

5

+

Recuerda presentar excusa

+
+
+

85%

+

Asistencias

+

27

+

Mantén tu compromiso

+
+
+
+ + +
+

Total de registros / días

+
+
+

32

+
+
+
+ Reclamados + No asistidos + Excusas + Otros +
+
+ + +
+

Calendario asistencias

+
+
+
+
+
+
+
+
+
+
+ + +
+
+

Inhabilitado

+

Disponibilidad de perfil

+
+
+

Iniciado

+

Estado de la jornada

+
+
+
+ + +
+
+

Faltas

+

5

+

Último mes

+
+
+

Refrigerios

+

32

+

Reclamados

+
+
+ + +
+ +
+ + +
+

Últimas asistencias

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FechaJornadaTipoEstado
28/09/2025MañanaAlmuerzoAsistencia
27/09/2025TardeRefrigerioFalta
25/09/2025MañanaAlmuerzoExcusa presentada
+
+
+
\ No newline at end of file diff --git a/resources/views/students/mainstudent.blade.php b/resources/views/students/mainstudent.blade.php deleted file mode 100644 index c098adb..0000000 --- a/resources/views/students/mainstudent.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('templates.students') - -@section('content') - - - -
- -
- -
- - -
- - -
- - -
-
-
-
-
- - -
- -
- - -
- - -
-
-
- - - - - - -@endsection diff --git a/resources/views/teachers/asig-coordinadores.blade.php b/resources/views/teachers/asig-coordinadores.blade.php index eb44723..9cfd2ff 100644 --- a/resources/views/teachers/asig-coordinadores.blade.php +++ b/resources/views/teachers/asig-coordinadores.blade.php @@ -1,4 +1,6 @@ -@extends('templates.teacher') +@extends('templates.teachers') + +@extends('templates.headers.teacher') @section('content') diff --git a/resources/views/teachers/main.blade.php b/resources/views/teachers/main.blade.php new file mode 100644 index 0000000..da9bcd5 --- /dev/null +++ b/resources/views/teachers/main.blade.php @@ -0,0 +1,138 @@ +
+ +
\ No newline at end of file diff --git a/resources/views/teachers/modal-configdispositivo.blade.php b/resources/views/teachers/modal-configdispositivo.blade.php new file mode 100644 index 0000000..3c155ec --- /dev/null +++ b/resources/views/teachers/modal-configdispositivo.blade.php @@ -0,0 +1,122 @@ +@section('content') + + + + +
+ +
+

Configuración de Dispositivo – Coordinadores

+

ID: Amelia-SARA

+
+ + Conectado + Última sincronización: 2025-09-24 14:30 +
+
+ + +
+

Opciones de configuración

+ +
+ + +
+ + +
+ + +
+ + +
+ +
+ + +
+
+ + + +
+ +
+ + + +
+
+ + +
+ +
+ + + +
+
+
+ + +
+ + +
+ +
+ + +
+ + +
+

Historial de configuraciones

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Fecha / HoraAcciónResponsableEstado
2025-09-03 14:30Cambio de frecuenciaSANDRA ARCOSÉxito
2025-09-02 10:15Actualización firmaSANDRA ARCOSÉxito
2025-09-01 09:05Asignación de aulaSONIAÉxito
+
+
+
+ + \ No newline at end of file diff --git a/resources/views/teachers/pag-status.blade.php b/resources/views/teachers/pag-status.blade.php new file mode 100644 index 0000000..5968111 --- /dev/null +++ b/resources/views/teachers/pag-status.blade.php @@ -0,0 +1,118 @@ +@section('content') +
+ +
+ +
+

Configuración de Dispositivo – Coordinadores

+

+ ID: Amelia-SARA +

+
+ + Conectado + Última sincronización: 2025-09-24 14:30 +
+
+ +
+

Opciones de configuración

+ +
+ + +
+ +
+ + +
+ + +
+ +
+ + +
+
+ + +
+ +
+ + + +
+
+ +
+ +
+ + + +
+
+
+ + +
+ + +
+ +
+ + +
+ +
+

Historial de configuraciones

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Fecha / HoraAcciónResponsableEstado
2025-09-03 14:30Cambio de frecuenciaSANDRA ARCOSÉxito
2025-09-02 10:15Actualización firmaSANDRA ARCOSÉxito
2025-09-01 09:05Asignación de aulaSONIAÉxito
+
+
+ +
+
+@endsection diff --git a/resources/views/teachers/record-history.blade.php b/resources/views/teachers/record-history.blade.php index 6fcee85..4fd620d 100644 --- a/resources/views/teachers/record-history.blade.php +++ b/resources/views/teachers/record-history.blade.php @@ -1,17 +1,18 @@ -@extends('templates.teacher') +@extends('templates.teachers') +@extends('templates.headers.teacher') @section('content') - +
+ class="text-[#F2AC2A] hover:text-yellow-600 transition-transform duration-200 hover:scale-110"> + stroke="currentColor" stroke-width="2"> @@ -19,25 +20,26 @@ class="text-[#F2AC2A] hover:text-yellow-600 transition-transform duration-200 ho
- - - + + +
+ class="px-4 py-2 border rounded-xl focus:ring-2 focus:ring-[#F2AC2A] w-64 transition duration-200 hover:shadow-md"> + class="px-4 py-2 border rounded-xl focus:ring-2 focus:ring-[#F2AC2A] transition duration-200 hover:shadow-md"> + class="px-4 py-2 border rounded-xl focus:ring-2 focus:ring-[#F2AC2A] transition duration-200 hover:shadow-md">
@@ -75,32 +77,28 @@ class="px-4 py-2 border rounded-xl focus:ring-2 focus:ring-[#F2AC2A] transition Entregado - - + + María Gómez - 1234567.890 + 1234567890 24/09/2025 12:10 PM 1002 Sí Almuerzo - boto la papa del almuerzo a la basura + Botó la papa del almuerzo a la basura Prof. Sánchez Pendiente - - + + @@ -110,7 +108,7 @@ class="text-red-500 hover:text-red-700 transition-transform duration-200 hover:s 1098765432 24/09/2025 12:00 PM - 12:20 + 1202 No Ambos - @@ -119,10 +117,8 @@ class="text-red-500 hover:text-red-700 transition-transform duration-200 hover:s Cancelado - - + + @@ -131,17 +127,14 @@ class="text-red-500 hover:text-red-700 transition-transform duration-200 hover:s -
- +
+ - +
+
- - - \ No newline at end of file +@endsection diff --git a/resources/views/templates/dv.blade.php b/resources/views/templates/dev.blade.php similarity index 91% rename from resources/views/templates/dv.blade.php rename to resources/views/templates/dev.blade.php index 97ee08a..b349933 100644 --- a/resources/views/templates/dv.blade.php +++ b/resources/views/templates/dev.blade.php @@ -7,13 +7,13 @@ -