From 214bb44696221e8102194dffaa14cc3e65eefe4e Mon Sep 17 00:00:00 2001
From: jorplaz <429-jorplaz@users.noreply.gitlab.inf.uva.es>
Date: Wed, 15 Jun 2022 17:33:55 +0200
Subject: [PATCH] All models created with the migrations and seeders

---
 app/Models/Bike.php                           | 29 ++++++++
 app/Models/ElectricBike.php                   | 17 +++++
 app/Models/Reward.php                         | 26 +++++++
 app/Models/Route.php                          | 38 ++++++++++
 app/Models/Stop.php                           | 37 ++++++++++
 app/Models/User.php                           | 13 ++++
 database/factories/BikeFactory.php            | 22 ++++++
 database/factories/RewardFactory.php          | 23 +++++++
 database/factories/StopFactory.php            | 26 +++++++
 .../2022_06_13_141748_create_stops_table.php  | 35 ++++++++++
 .../2022_06_13_151027_create_bikes_table.php  | 36 ++++++++++
 ..._13_153838_create_electric_bikes_table.php | 34 +++++++++
 .../2022_06_14_151011_create_routes_table.php | 69 +++++++++++++++++++
 ...2022_06_15_144408_create_rewards_table.php | 50 ++++++++++++++
 database/seeders/BikeSeeder.php               | 46 +++++++++++++
 database/seeders/DatabaseSeeder.php           | 11 ++-
 database/seeders/ElectricBikeSeeder.php       | 19 +++++
 database/seeders/RewardSeeder.php             | 51 ++++++++++++++
 database/seeders/RouteSeeder.php              | 29 ++++++++
 database/seeders/StopSeeder.php               | 44 ++++++++++++
 database/seeders/UserSeeder.php               | 29 ++++++++
 21 files changed, 678 insertions(+), 6 deletions(-)
 create mode 100644 app/Models/Bike.php
 create mode 100644 app/Models/ElectricBike.php
 create mode 100644 app/Models/Reward.php
 create mode 100644 app/Models/Route.php
 create mode 100644 app/Models/Stop.php
 create mode 100644 database/factories/BikeFactory.php
 create mode 100644 database/factories/RewardFactory.php
 create mode 100644 database/factories/StopFactory.php
 create mode 100644 database/migrations/2022_06_13_141748_create_stops_table.php
 create mode 100644 database/migrations/2022_06_13_151027_create_bikes_table.php
 create mode 100644 database/migrations/2022_06_13_153838_create_electric_bikes_table.php
 create mode 100644 database/migrations/2022_06_14_151011_create_routes_table.php
 create mode 100644 database/migrations/2022_06_15_144408_create_rewards_table.php
 create mode 100644 database/seeders/BikeSeeder.php
 create mode 100644 database/seeders/ElectricBikeSeeder.php
 create mode 100644 database/seeders/RewardSeeder.php
 create mode 100644 database/seeders/RouteSeeder.php
 create mode 100644 database/seeders/StopSeeder.php
 create mode 100644 database/seeders/UserSeeder.php

diff --git a/app/Models/Bike.php b/app/Models/Bike.php
new file mode 100644
index 0000000..05c406f
--- /dev/null
+++ b/app/Models/Bike.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\Relations\BelongsTo;
+use Illuminate\Database\Eloquent\Relations\HasMany;
+
+/**
+ * @method static create(array $array)
+ */
+class Bike extends Model
+{
+    use HasFactory;
+
+    protected $fillable = [
+        'stop_id',
+        'unlocked',
+    ];
+
+    public function stop(): BelongsTo{
+        return $this->belongsTo(Stop::class);
+    }
+
+    public function routes(): HasMany{
+        return $this->hasMany(Route::class);
+    }
+}
diff --git a/app/Models/ElectricBike.php b/app/Models/ElectricBike.php
new file mode 100644
index 0000000..8991516
--- /dev/null
+++ b/app/Models/ElectricBike.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class ElectricBike extends Bike
+{
+    use HasFactory;
+    protected $table = 'electric_bikes';
+
+    protected $fillable = [
+        'id',
+        'battery',
+    ];
+}
diff --git a/app/Models/Reward.php b/app/Models/Reward.php
new file mode 100644
index 0000000..3b40b19
--- /dev/null
+++ b/app/Models/Reward.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\Relations\BelongsToMany;
+
+/**
+ * @method static create(array $array)
+ */
+class Reward extends Model
+{
+    use HasFactory;
+
+    protected $fillable = [
+        'title',
+        'description',
+        'user_id',
+        'reward_id',
+    ];
+
+    public function users(): BelongsToMany{
+        return $this->belongsToMany(User::class, 'user_reward')->withTimestamps();
+    }
+}
diff --git a/app/Models/Route.php b/app/Models/Route.php
new file mode 100644
index 0000000..987300d
--- /dev/null
+++ b/app/Models/Route.php
@@ -0,0 +1,38 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\Relations\BelongsTo;
+
+class Route extends Model
+{
+    use HasFactory;
+
+    protected $fillable = [
+        "user_id",
+        "initial_stop_id",
+        "final_stop_id",
+        "bike_id",
+        "distance",
+        "duration",
+        "points",
+    ];
+
+    public function user(): BelongsTo{
+        return $this->belongsTo(Route::class);
+    }
+
+    public function start(): BelongsTo{
+        return $this->belongsTo(Stop::class,'initial_stop_id');
+    }
+
+    public function end(): BelongsTo{
+        return $this->belongsTo(Stop::class, "final_stop_id");
+    }
+
+    public function bike(): BelongsTo{
+        return $this->belongsTo(Bike::class);
+    }
+}
diff --git a/app/Models/Stop.php b/app/Models/Stop.php
new file mode 100644
index 0000000..2a25676
--- /dev/null
+++ b/app/Models/Stop.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\Relations\HasMany;
+
+/**
+ * @method static create(array $array)
+ */
+class Stop extends Model
+{
+    use HasFactory;
+
+    protected $fillable = [
+        "lng",
+        "lat",
+        "address",
+        "total_spaces"
+    ];
+
+    public function bikes(): HasMany{
+        return $this->hasMany(Bike::class);
+    }
+
+    public function routes(): HasMany{
+        return $this->hasMany(Route::class);
+    }
+
+    public function routesStart(): HasMany{
+        return $this->hasMany(Route::class, "initial_stop_id");
+    }
+    public function routesEnd(): HasMany{
+        return $this->hasMany(Route::class, "final_stop_id");
+    }
+}
diff --git a/app/Models/User.php b/app/Models/User.php
index 8996368..aea9982 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -4,10 +4,15 @@ namespace App\Models;
 
 use Illuminate\Contracts\Auth\MustVerifyEmail;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Relations\BelongsToMany;
+use Illuminate\Database\Eloquent\Relations\HasMany;
 use Illuminate\Foundation\Auth\User as Authenticatable;
 use Illuminate\Notifications\Notifiable;
 use Laravel\Sanctum\HasApiTokens;
 
+/**
+ * @method static create(string[] $array)
+ */
 class User extends Authenticatable
 {
     use HasApiTokens, HasFactory, Notifiable;
@@ -41,4 +46,12 @@ class User extends Authenticatable
     protected $casts = [
         'email_verified_at' => 'datetime',
     ];
+
+    public function routes(): HasMany{
+        return $this->hasMany(Route::class);
+    }
+
+    public function rewards(): BelongsToMany{
+        return $this->belongsToMany(Reward::class, 'user_reward')->withTimestamps();
+    }
 }
diff --git a/database/factories/BikeFactory.php b/database/factories/BikeFactory.php
new file mode 100644
index 0000000..12ae306
--- /dev/null
+++ b/database/factories/BikeFactory.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace Database\Factories;
+
+use Illuminate\Database\Eloquent\Factories\Factory;
+
+/**
+ * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Bike>
+ */
+class BikeFactory extends Factory
+{
+    /**
+     * Define the model's default state.
+     *
+     * @return array<string, mixed>
+     */
+    public function definition()
+    {
+        return [
+        ];
+    }
+}
diff --git a/database/factories/RewardFactory.php b/database/factories/RewardFactory.php
new file mode 100644
index 0000000..59512b6
--- /dev/null
+++ b/database/factories/RewardFactory.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Database\Factories;
+
+use Illuminate\Database\Eloquent\Factories\Factory;
+
+/**
+ * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Reward>
+ */
+class RewardFactory extends Factory
+{
+    /**
+     * Define the model's default state.
+     *
+     * @return array<string, mixed>
+     */
+    public function definition()
+    {
+        return [
+            //
+        ];
+    }
+}
diff --git a/database/factories/StopFactory.php b/database/factories/StopFactory.php
new file mode 100644
index 0000000..64c002d
--- /dev/null
+++ b/database/factories/StopFactory.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace Database\Factories;
+
+use Illuminate\Database\Eloquent\Factories\Factory;
+
+/**
+ * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Stop>
+ */
+class StopFactory extends Factory
+{
+    /**
+     * Define the model's default state.
+     *
+     * @return array<string, mixed>
+     */
+    public function definition()
+    {
+        return [
+            'lng' => $this->faker->longitude,
+            'lat' => $this->faker->latitude,
+            'address' => $this->faker->address,
+            'total_spaces' => 10,
+        ];
+    }
+}
diff --git a/database/migrations/2022_06_13_141748_create_stops_table.php b/database/migrations/2022_06_13_141748_create_stops_table.php
new file mode 100644
index 0000000..aaae494
--- /dev/null
+++ b/database/migrations/2022_06_13_141748_create_stops_table.php
@@ -0,0 +1,35 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('stops', function (Blueprint $table) {
+            $table->id();
+            $table->double("lng");
+            $table->double("lat");
+            $table->string("address");
+            $table->integer("total_spaces");
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('stops');
+    }
+};
diff --git a/database/migrations/2022_06_13_151027_create_bikes_table.php b/database/migrations/2022_06_13_151027_create_bikes_table.php
new file mode 100644
index 0000000..705aadf
--- /dev/null
+++ b/database/migrations/2022_06_13_151027_create_bikes_table.php
@@ -0,0 +1,36 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('bikes', function (Blueprint $table) {
+            $table->id();
+            $table->foreignId('stop_id')
+                ->index()
+                ->constrained()
+                ->cascadeOnUpdate();
+            $table->boolean('unlocked');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('bikes');
+    }
+};
diff --git a/database/migrations/2022_06_13_153838_create_electric_bikes_table.php b/database/migrations/2022_06_13_153838_create_electric_bikes_table.php
new file mode 100644
index 0000000..db6b5b7
--- /dev/null
+++ b/database/migrations/2022_06_13_153838_create_electric_bikes_table.php
@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('electric_bikes', function (Blueprint $table) {
+            $table->id();
+            $table->integer('battery');
+            $table->timestamps();
+
+            $table->foreign('id')->references('id')->on('bikes');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('electric_bikes');
+    }
+};
diff --git a/database/migrations/2022_06_14_151011_create_routes_table.php b/database/migrations/2022_06_14_151011_create_routes_table.php
new file mode 100644
index 0000000..51d6e35
--- /dev/null
+++ b/database/migrations/2022_06_14_151011_create_routes_table.php
@@ -0,0 +1,69 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('routes', function (Blueprint $table) {
+            $table->id();
+            $table->foreignId('user_id')
+                ->index()
+                ->constrained()
+                ->cascadeOnUpdate()
+                ->cascadeOnDelete();
+
+            $table->bigInteger('initial_stop_id')
+                ->index();
+            $table->foreign('initial_stop_id')
+                ->references('id')
+                ->on('stops')
+                ->onUpdate('cascade')
+                ->onDelete('cascade');
+
+            $table->bigInteger('final_stop_id')
+                ->index()
+                ->nullable();
+            $table->foreign('final_stop_id')
+                ->references('id')
+                ->on('stops')
+                ->onUpdate('cascade')
+                ->onDelete('cascade');
+
+            $table->foreignId('bike_id')
+                ->index()
+                ->constrained()
+                ->cascadeOnUpdate()
+                ->cascadeOnDelete();
+
+            $table->integer('distance')
+                ->nullable();
+            $table->integer('duration')
+                ->nullable();
+            $table->integer('points')
+                ->nullable();
+
+            $table->json('mapbox_response')
+                ->nullable();
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('routes');
+    }
+};
diff --git a/database/migrations/2022_06_15_144408_create_rewards_table.php b/database/migrations/2022_06_15_144408_create_rewards_table.php
new file mode 100644
index 0000000..deebdc1
--- /dev/null
+++ b/database/migrations/2022_06_15_144408_create_rewards_table.php
@@ -0,0 +1,50 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('rewards', function (Blueprint $table) {
+            $table->id();
+            $table->string('name');
+            $table->string('description');
+            $table->integer('points');
+            $table->integer('total_available');
+            $table->string('image')->nullable();
+            $table->timestamps();
+        });
+
+        Schema::create('user_reward', function (Blueprint $table){
+            $table->id();
+            $table->foreignId('user_id')
+                ->constrained()
+                ->cascadeOnUpdate()
+                ->cascadeOnDelete();
+            $table->foreignId('reward_id')
+                ->constrained()
+                ->cascadeOnUpdate()
+                ->cascadeOnDelete();
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('rewards');
+        Schema::dropIfExists('user_reward');
+    }
+};
diff --git a/database/seeders/BikeSeeder.php b/database/seeders/BikeSeeder.php
new file mode 100644
index 0000000..22543e8
--- /dev/null
+++ b/database/seeders/BikeSeeder.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Database\Seeders;
+
+use App\Models\Bike;
+use App\Models\ElectricBike;
+use Illuminate\Database\Console\Seeds\WithoutModelEvents;
+use Illuminate\Database\Seeder;
+
+class BikeSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        $bike = Bike::create([
+            'stop_id' => 1,
+            'unlocked' => false
+        ]);
+        ElectricBike::create([
+            'id' => $bike->id,
+            'battery' => 60
+        ]);
+        Bike::create([
+            'stop_id' => 1,
+            'unlocked' => false
+        ]);
+
+        $bike = Bike::create([
+            'stop_id' => 2,
+            'unlocked' => false
+        ]);
+        ElectricBike::create([
+            'id' => $bike->id,
+            'battery' => 70
+        ]);
+
+        Bike::create([
+            'stop_id' => 3,
+            'unlocked' => false
+        ]);
+    }
+}
diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php
index c1c48a0..88eb4f8 100644
--- a/database/seeders/DatabaseSeeder.php
+++ b/database/seeders/DatabaseSeeder.php
@@ -14,11 +14,10 @@ class DatabaseSeeder extends Seeder
      */
     public function run()
     {
-        // \App\Models\User::factory(10)->create();
-
-        // \App\Models\User::factory()->create([
-        //     'name' => 'Test User',
-        //     'email' => 'test@example.com',
-        // ]);
+        $this->call(UserSeeder::class);
+        $this->call(StopSeeder::class);
+        $this->call(BikeSeeder::class);
+        $this->call(RouteSeeder::class);
+        $this->call(RewardSeeder::class);
     }
 }
diff --git a/database/seeders/ElectricBikeSeeder.php b/database/seeders/ElectricBikeSeeder.php
new file mode 100644
index 0000000..b61929b
--- /dev/null
+++ b/database/seeders/ElectricBikeSeeder.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Database\Seeders;
+
+use Illuminate\Database\Console\Seeds\WithoutModelEvents;
+use Illuminate\Database\Seeder;
+
+class ElectricBikeSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        //
+    }
+}
diff --git a/database/seeders/RewardSeeder.php b/database/seeders/RewardSeeder.php
new file mode 100644
index 0000000..5472789
--- /dev/null
+++ b/database/seeders/RewardSeeder.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace Database\Seeders;
+
+use App\Models\Reward;
+use Illuminate\Database\Console\Seeds\WithoutModelEvents;
+use Illuminate\Database\Seeder;
+
+class RewardSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        $reward = Reward::create([
+            'name' => 'Reward 1',
+            'description' => 'A short description',
+            'points' => 100,
+            'total_available' => 5
+        ]);
+        $reward->users()->sync([1,2]);
+        $reward = Reward::create([
+            'name' => 'Reward 2',
+            'description' => 'A short description 2',
+            'points' => 200,
+            'total_available' => 2
+        ]);
+        $reward->users()->sync([1]);
+        Reward::create([
+            'name' => 'Reward 3',
+            'description' => 'A short description 3',
+            'points' => 1000,
+            'total_available' => 1
+        ]);
+        Reward::create([
+            'name' => 'Reward 4',
+            'description' => 'A short description 4',
+            'points' => 4,
+            'total_available' => 10
+        ]);
+        Reward::create([
+            'name' => 'Reward 5',
+            'description' => 'A short description 5',
+            'points' => 500,
+            'total_available' => 5
+        ]);
+    }
+}
diff --git a/database/seeders/RouteSeeder.php b/database/seeders/RouteSeeder.php
new file mode 100644
index 0000000..e1fd5f2
--- /dev/null
+++ b/database/seeders/RouteSeeder.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Database\Seeders;
+
+use App\Models\Route;
+use Illuminate\Database\Console\Seeds\WithoutModelEvents;
+use Illuminate\Database\Seeder;
+
+class RouteSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        Route::create([
+           "user_id" => 1,
+           "initial_stop_id" => 1,
+           "final_stop_id" => 2,
+           "bike_id" => 1,
+           "distance" => 500,
+           "duration" => 1000,
+           "points" => 100,
+           "mapbox_response" => '{"routes":[{"geometry":{"coordinates":[[-4.730855,41.653319],[-4.731204,41.653354],[-4.731172,41.653568],[-4.729951,41.653454],[-4.725932,41.652181],[-4.726006,41.652131],[-4.726499,41.65228]],"type":"LineString"},"legs":[{"summary":"","weight":328,"duration":298,"steps":[],"distance":571.6}],"weight_name":"cyclability","weight":328,"duration":298,"distance":571.6}],"waypoints":[{"distance":0.33309312638707467,"name":"","location":[-4.730855,41.653319]},{"distance":1.4233601888820147,"name":"Plaza de la Fuente Dorada","location":[-4.726499,41.65228]}],"code":"Ok","uuid":"34oyDWtItbRpJKZb00E5_J2jmiJlWLfQagPHfulbhv5_2m0FkCUA0g=="}'
+        ]);
+    }
+}
diff --git a/database/seeders/StopSeeder.php b/database/seeders/StopSeeder.php
new file mode 100644
index 0000000..a38b399
--- /dev/null
+++ b/database/seeders/StopSeeder.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace Database\Seeders;
+
+use App\Models\Bike;
+use App\Models\Stop;
+use Illuminate\Database\Console\Seeds\WithoutModelEvents;
+use Illuminate\Database\Seeder;
+
+class StopSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        Stop::create([
+            "lng"=> -4.731,
+            "lat"=> 41.653,
+            "address"=> "Plaza de Poniente",
+            "total_spaces"=> 10,
+        ]);
+        Stop::create([
+            "lng"=> -4.726,
+            "lat"=> 41.652,
+            "address"=> "Plaza de Fuente Dorada",
+            "total_spaces"=> 10,
+        ]);
+        Stop::create([
+            "lng"=> -4.725,
+            "lat"=> 41.648,
+            "address"=> "Plaza Madrid",
+            "total_spaces"=> 10,
+        ]);
+        Stop::create([
+            "lng"=> -4.729,
+            "lat"=> 41.647,
+            "address"=> "Plaza Zorrilla",
+            "total_spaces"=> 10,
+        ]);
+    }
+}
diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php
new file mode 100644
index 0000000..53bc219
--- /dev/null
+++ b/database/seeders/UserSeeder.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Database\Seeders;
+
+use App\Models\User;
+use Illuminate\Database\Console\Seeds\WithoutModelEvents;
+use Illuminate\Database\Seeder;
+
+class UserSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        User::create([
+            'name' => 'Jorge',
+            'email' => 'jorge@uva.es',
+            'password' => '12345678'
+        ]);
+        User::create([
+            'name' => 'Mario',
+            'email' => 'mario@uva.es',
+            'password' => '12345678'
+        ]);
+    }
+}
-- 
GitLab