From 1333a89ea25cb0f67e512fdf7451fb92a3b71cfc Mon Sep 17 00:00:00 2001
From: Gael Yvert <Gael.Yvert@ens-lyon.fr>
Date: Fri, 11 Jun 2021 14:07:42 +0200
Subject: [PATCH] projects table added, with BREAD and menu, and update
 viewer's role to see it (issue #66)

---
 app/Project.php                               |  11 ++
 ...021_06_11_114143_create_projects_table.php |  38 ++++++
 ...lityTrackingByIseedDataRowsTableSeeder.php | 128 ++++++++++++++++++
 ...ityTrackingByIseedDataTypesTableSeeder.php |  18 +++
 ...ityTrackingByIseedMenuItemsTableSeeder.php |  26 +++-
 ...ackingByIseedPermissionRoleTableSeeder.php | 123 +++++++++++------
 ...yTrackingByIseedPermissionsTableSeeder.php |  40 ++++++
 7 files changed, 340 insertions(+), 44 deletions(-)
 create mode 100644 app/Project.php
 create mode 100644 database/migrations/2021_06_11_114143_create_projects_table.php

diff --git a/app/Project.php b/app/Project.php
new file mode 100644
index 0000000..89d7a13
--- /dev/null
+++ b/app/Project.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace App;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class Project extends Model
+{
+    use HasFactory;
+}
diff --git a/database/migrations/2021_06_11_114143_create_projects_table.php b/database/migrations/2021_06_11_114143_create_projects_table.php
new file mode 100644
index 0000000..23fda28
--- /dev/null
+++ b/database/migrations/2021_06_11_114143_create_projects_table.php
@@ -0,0 +1,38 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateProjectsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('projects', function (Blueprint $table) {
+            $table->bigIncrements('id');
+            $table->string('name', 100)->nullable($value = false);
+            $table->string('leader', 100)->nullable($value = true);
+	    $table->longtext('files')->nullable($value = true);
+            $table->text('status')->nullable($value = false);
+
+            $table->timestamp('created_at')->useCurrent();
+            $table->timestamp('updated_at')->useCurrent();
+
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('projects');
+    }
+}
diff --git a/database/seeders/FunctionalityTrackingByIseedDataRowsTableSeeder.php b/database/seeders/FunctionalityTrackingByIseedDataRowsTableSeeder.php
index 6f805b8..47e5e5d 100755
--- a/database/seeders/FunctionalityTrackingByIseedDataRowsTableSeeder.php
+++ b/database/seeders/FunctionalityTrackingByIseedDataRowsTableSeeder.php
@@ -3459,6 +3459,134 @@ class FunctionalityTrackingByIseedDataRowsTableSeeder extends Seeder
                 'required' => 1,
                 'type' => 'checkbox',
             ),
+            215 => 
+            array (
+                'add' => 0,
+                'browse' => 0,
+                'data_type_id' => 46,
+                'delete' => 0,
+                'details' => '{}',
+                'display_name' => 'Id',
+                'edit' => 1,
+                'field' => 'id',
+                'id' => 303,
+                'order' => 1,
+                'read' => 1,
+                'required' => 1,
+                'type' => 'text',
+            ),
+            216 => 
+            array (
+                'add' => 1,
+                'browse' => 1,
+                'data_type_id' => 46,
+                'delete' => 1,
+                'details' => '{}',
+                'display_name' => 'Name',
+                'edit' => 1,
+                'field' => 'name',
+                'id' => 304,
+                'order' => 2,
+                'read' => 1,
+                'required' => 1,
+                'type' => 'text',
+            ),
+            217 => 
+            array (
+                'add' => 1,
+                'browse' => 1,
+                'data_type_id' => 46,
+                'delete' => 1,
+                'details' => '{}',
+                'display_name' => 'Leader',
+                'edit' => 1,
+                'field' => 'leader',
+                'id' => 305,
+                'order' => 3,
+                'read' => 1,
+                'required' => 0,
+                'type' => 'text',
+            ),
+            218 => 
+            array (
+                'add' => 1,
+                'browse' => 1,
+                'data_type_id' => 46,
+                'delete' => 1,
+                'details' => '{"max":10,"min":0,"expanded":false,"show_folders":true,"show_toolbar":true,"allow_upload":true,"allow_move":false,"allow_delete":false,"allow_create_folder":true,"allow_rename":false,"allow_crop":false,"allowed":[],"hide_thumbnails":false}',
+                'display_name' => 'Files',
+                'edit' => 1,
+                'field' => 'files',
+                'id' => 306,
+                'order' => 5,
+                'read' => 1,
+                'required' => 0,
+                'type' => 'media_picker',
+            ),
+            219 => 
+            array (
+                'add' => 1,
+                'browse' => 1,
+                'data_type_id' => 46,
+                'delete' => 1,
+                'details' => '{"default":"ongoing","options":{"ongoing":"ongoing","closed":"closed","abandoned":"abandoned","not yet started":"not yet started"}}',
+                'display_name' => 'Status',
+                'edit' => 1,
+                'field' => 'status',
+                'id' => 307,
+                'order' => 6,
+                'read' => 1,
+                'required' => 1,
+                'type' => 'select_dropdown',
+            ),
+            220 => 
+            array (
+                'add' => 0,
+                'browse' => 1,
+                'data_type_id' => 46,
+                'delete' => 1,
+                'details' => '{}',
+                'display_name' => 'Created At',
+                'edit' => 1,
+                'field' => 'created_at',
+                'id' => 308,
+                'order' => 7,
+                'read' => 1,
+                'required' => 1,
+                'type' => 'timestamp',
+            ),
+            221 => 
+            array (
+                'add' => 0,
+                'browse' => 0,
+                'data_type_id' => 46,
+                'delete' => 0,
+                'details' => '{}',
+                'display_name' => 'Updated At',
+                'edit' => 0,
+                'field' => 'updated_at',
+                'id' => 309,
+                'order' => 8,
+                'read' => 0,
+                'required' => 1,
+                'type' => 'timestamp',
+            ),
+            222 => 
+            array (
+                'add' => 1,
+                'browse' => 1,
+                'data_type_id' => 46,
+                'delete' => 1,
+                'details' => '{"model":"App\\\\User","table":"users","type":"belongsTo","column":"leader","key":"id","label":"name","pivot_table":"antibodies","pivot":"0","taggable":"0"}',
+                'display_name' => 'Leader',
+                'edit' => 1,
+                'field' => 'project_belongsto_user_relationship',
+                'id' => 310,
+                'order' => 4,
+                'read' => 1,
+                'required' => 0,
+                'type' => 'relationship',
+            ),
         ));
         
         
diff --git a/database/seeders/FunctionalityTrackingByIseedDataTypesTableSeeder.php b/database/seeders/FunctionalityTrackingByIseedDataTypesTableSeeder.php
index 9e496da..39cfcb5 100755
--- a/database/seeders/FunctionalityTrackingByIseedDataTypesTableSeeder.php
+++ b/database/seeders/FunctionalityTrackingByIseedDataTypesTableSeeder.php
@@ -415,6 +415,24 @@ class FunctionalityTrackingByIseedDataTypesTableSeeder extends Seeder
                 'slug' => 'wellplates',
                 'updated_at' => '2021-06-11 08:17:04',
             ),
+            22 => 
+            array (
+                'controller' => NULL,
+                'created_at' => '2021-06-11 11:53:14',
+                'description' => NULL,
+                'details' => '{"order_column":null,"order_display_column":null,"order_direction":"asc","default_search_key":null,"scope":null}',
+                'display_name_plural' => 'Projects',
+                'display_name_singular' => 'Project',
+                'generate_permissions' => 1,
+                'icon' => NULL,
+                'id' => 46,
+                'model_name' => 'App\\Project',
+                'name' => 'projects',
+                'policy_name' => NULL,
+                'server_side' => 0,
+                'slug' => 'projects',
+                'updated_at' => '2021-06-11 12:01:57',
+            ),
         ));
         
         
diff --git a/database/seeders/FunctionalityTrackingByIseedMenuItemsTableSeeder.php b/database/seeders/FunctionalityTrackingByIseedMenuItemsTableSeeder.php
index ec5e647..8cf5458 100755
--- a/database/seeders/FunctionalityTrackingByIseedMenuItemsTableSeeder.php
+++ b/database/seeders/FunctionalityTrackingByIseedMenuItemsTableSeeder.php
@@ -32,7 +32,7 @@ class FunctionalityTrackingByIseedMenuItemsTableSeeder extends Seeder
                 'route' => 'voyager.media.index',
                 'target' => '_self',
                 'title' => 'Media',
-                'updated_at' => '2021-06-11 08:21:55',
+                'updated_at' => '2021-06-11 12:01:01',
                 'url' => '',
             ),
             1 => 
@@ -48,7 +48,7 @@ class FunctionalityTrackingByIseedMenuItemsTableSeeder extends Seeder
                 'route' => 'voyager.users.index',
                 'target' => '_self',
                 'title' => 'Users',
-                'updated_at' => '2021-06-11 08:21:55',
+                'updated_at' => '2021-06-11 12:01:01',
                 'url' => '',
             ),
             2 => 
@@ -80,7 +80,7 @@ class FunctionalityTrackingByIseedMenuItemsTableSeeder extends Seeder
                 'route' => NULL,
                 'target' => '_self',
                 'title' => 'Tools',
-                'updated_at' => '2021-06-11 08:21:55',
+                'updated_at' => '2021-06-11 12:01:01',
                 'url' => '',
             ),
             4 => 
@@ -144,7 +144,7 @@ class FunctionalityTrackingByIseedMenuItemsTableSeeder extends Seeder
                 'route' => 'voyager.bread.index',
                 'target' => '_self',
                 'title' => 'BREAD',
-                'updated_at' => '2021-06-11 08:21:55',
+                'updated_at' => '2021-06-11 12:01:01',
                 'url' => '',
             ),
             8 => 
@@ -160,7 +160,7 @@ class FunctionalityTrackingByIseedMenuItemsTableSeeder extends Seeder
                 'route' => 'voyager.settings.index',
                 'target' => '_self',
                 'title' => 'Settings',
-                'updated_at' => '2021-06-11 08:21:56',
+                'updated_at' => '2021-06-11 12:01:01',
                 'url' => '',
             ),
             9 => 
@@ -851,6 +851,22 @@ class FunctionalityTrackingByIseedMenuItemsTableSeeder extends Seeder
                 'updated_at' => '2021-05-28 14:27:02',
                 'url' => '',
             ),
+            52 => 
+            array (
+                'color' => '#0df705',
+                'created_at' => '2021-06-11 11:53:15',
+                'icon_class' => 'voyager-lab',
+                'id' => 77,
+                'menu_id' => 1,
+                'order' => 9,
+                'parameters' => 'null',
+                'parent_id' => 18,
+                'route' => 'voyager.projects.index',
+                'target' => '_self',
+                'title' => 'Projects',
+                'updated_at' => '2021-06-11 12:01:01',
+                'url' => '',
+            ),
         ));
         
         
diff --git a/database/seeders/FunctionalityTrackingByIseedPermissionRoleTableSeeder.php b/database/seeders/FunctionalityTrackingByIseedPermissionRoleTableSeeder.php
index 6f72a82..6e4e0b7 100755
--- a/database/seeders/FunctionalityTrackingByIseedPermissionRoleTableSeeder.php
+++ b/database/seeders/FunctionalityTrackingByIseedPermissionRoleTableSeeder.php
@@ -1145,205 +1145,250 @@ class FunctionalityTrackingByIseedPermissionRoleTableSeeder extends Seeder
                 'role_id' => 1,
             ),
             225 => 
+            array (
+                'permission_id' => 157,
+                'role_id' => 27,
+            ),
+            226 => 
             array (
                 'permission_id' => 158,
                 'role_id' => 1,
             ),
-            226 => 
+            227 => 
+            array (
+                'permission_id' => 158,
+                'role_id' => 27,
+            ),
+            228 => 
             array (
                 'permission_id' => 159,
                 'role_id' => 1,
             ),
-            227 => 
+            229 => 
             array (
                 'permission_id' => 160,
                 'role_id' => 1,
             ),
-            228 => 
+            230 => 
             array (
                 'permission_id' => 161,
                 'role_id' => 1,
             ),
-            229 => 
+            231 => 
             array (
                 'permission_id' => 162,
                 'role_id' => 1,
             ),
-            230 => 
+            232 => 
             array (
                 'permission_id' => 162,
                 'role_id' => 27,
             ),
-            231 => 
+            233 => 
             array (
                 'permission_id' => 163,
                 'role_id' => 1,
             ),
-            232 => 
+            234 => 
             array (
                 'permission_id' => 163,
                 'role_id' => 27,
             ),
-            233 => 
+            235 => 
             array (
                 'permission_id' => 164,
                 'role_id' => 1,
             ),
-            234 => 
+            236 => 
             array (
                 'permission_id' => 165,
                 'role_id' => 1,
             ),
-            235 => 
+            237 => 
             array (
                 'permission_id' => 166,
                 'role_id' => 1,
             ),
-            236 => 
+            238 => 
             array (
                 'permission_id' => 167,
                 'role_id' => 1,
             ),
-            237 => 
+            239 => 
             array (
                 'permission_id' => 167,
                 'role_id' => 27,
             ),
-            238 => 
+            240 => 
             array (
                 'permission_id' => 168,
                 'role_id' => 1,
             ),
-            239 => 
+            241 => 
             array (
                 'permission_id' => 168,
                 'role_id' => 27,
             ),
-            240 => 
+            242 => 
             array (
                 'permission_id' => 169,
                 'role_id' => 1,
             ),
-            241 => 
+            243 => 
             array (
                 'permission_id' => 170,
                 'role_id' => 1,
             ),
-            242 => 
+            244 => 
             array (
                 'permission_id' => 171,
                 'role_id' => 1,
             ),
-            243 => 
+            245 => 
             array (
                 'permission_id' => 172,
                 'role_id' => 1,
             ),
-            244 => 
+            246 => 
             array (
                 'permission_id' => 172,
                 'role_id' => 27,
             ),
-            245 => 
+            247 => 
             array (
                 'permission_id' => 173,
                 'role_id' => 1,
             ),
-            246 => 
+            248 => 
             array (
                 'permission_id' => 173,
                 'role_id' => 27,
             ),
-            247 => 
+            249 => 
             array (
                 'permission_id' => 174,
                 'role_id' => 1,
             ),
-            248 => 
+            250 => 
             array (
                 'permission_id' => 175,
                 'role_id' => 1,
             ),
-            249 => 
+            251 => 
             array (
                 'permission_id' => 176,
                 'role_id' => 1,
             ),
-            250 => 
+            252 => 
             array (
                 'permission_id' => 182,
                 'role_id' => 1,
             ),
-            251 => 
+            253 => 
             array (
                 'permission_id' => 182,
                 'role_id' => 27,
             ),
-            252 => 
+            254 => 
             array (
                 'permission_id' => 182,
                 'role_id' => 37,
             ),
-            253 => 
+            255 => 
             array (
                 'permission_id' => 182,
                 'role_id' => 38,
             ),
-            254 => 
+            256 => 
             array (
                 'permission_id' => 183,
                 'role_id' => 1,
             ),
-            255 => 
+            257 => 
             array (
                 'permission_id' => 183,
                 'role_id' => 27,
             ),
-            256 => 
+            258 => 
             array (
                 'permission_id' => 183,
                 'role_id' => 37,
             ),
-            257 => 
+            259 => 
             array (
                 'permission_id' => 183,
                 'role_id' => 38,
             ),
-            258 => 
+            260 => 
             array (
                 'permission_id' => 184,
                 'role_id' => 1,
             ),
-            259 => 
+            261 => 
             array (
                 'permission_id' => 184,
                 'role_id' => 37,
             ),
-            260 => 
+            262 => 
             array (
                 'permission_id' => 185,
                 'role_id' => 1,
             ),
-            261 => 
+            263 => 
             array (
                 'permission_id' => 185,
                 'role_id' => 37,
             ),
-            262 => 
+            264 => 
             array (
                 'permission_id' => 185,
                 'role_id' => 38,
             ),
-            263 => 
+            265 => 
             array (
                 'permission_id' => 186,
                 'role_id' => 1,
             ),
-            264 => 
+            266 => 
             array (
                 'permission_id' => 186,
                 'role_id' => 37,
             ),
+            267 => 
+            array (
+                'permission_id' => 187,
+                'role_id' => 1,
+            ),
+            268 => 
+            array (
+                'permission_id' => 187,
+                'role_id' => 27,
+            ),
+            269 => 
+            array (
+                'permission_id' => 188,
+                'role_id' => 1,
+            ),
+            270 => 
+            array (
+                'permission_id' => 188,
+                'role_id' => 27,
+            ),
+            271 => 
+            array (
+                'permission_id' => 189,
+                'role_id' => 1,
+            ),
+            272 => 
+            array (
+                'permission_id' => 190,
+                'role_id' => 1,
+            ),
+            273 => 
+            array (
+                'permission_id' => 191,
+                'role_id' => 1,
+            ),
         ));
         
         
diff --git a/database/seeders/FunctionalityTrackingByIseedPermissionsTableSeeder.php b/database/seeders/FunctionalityTrackingByIseedPermissionsTableSeeder.php
index 124d6e1..d6dd4bd 100755
--- a/database/seeders/FunctionalityTrackingByIseedPermissionsTableSeeder.php
+++ b/database/seeders/FunctionalityTrackingByIseedPermissionsTableSeeder.php
@@ -1147,6 +1147,46 @@ class FunctionalityTrackingByIseedPermissionsTableSeeder extends Seeder
                 'table_name' => 'wellplates',
                 'updated_at' => '2021-05-19 07:42:11',
             ),
+            141 => 
+            array (
+                'created_at' => '2021-06-11 11:53:14',
+                'id' => 187,
+                'key' => 'browse_projects',
+                'table_name' => 'projects',
+                'updated_at' => '2021-06-11 11:53:14',
+            ),
+            142 => 
+            array (
+                'created_at' => '2021-06-11 11:53:14',
+                'id' => 188,
+                'key' => 'read_projects',
+                'table_name' => 'projects',
+                'updated_at' => '2021-06-11 11:53:14',
+            ),
+            143 => 
+            array (
+                'created_at' => '2021-06-11 11:53:14',
+                'id' => 189,
+                'key' => 'edit_projects',
+                'table_name' => 'projects',
+                'updated_at' => '2021-06-11 11:53:14',
+            ),
+            144 => 
+            array (
+                'created_at' => '2021-06-11 11:53:14',
+                'id' => 190,
+                'key' => 'add_projects',
+                'table_name' => 'projects',
+                'updated_at' => '2021-06-11 11:53:14',
+            ),
+            145 => 
+            array (
+                'created_at' => '2021-06-11 11:53:14',
+                'id' => 191,
+                'key' => 'delete_projects',
+                'table_name' => 'projects',
+                'updated_at' => '2021-06-11 11:53:14',
+            ),
         ));
         
         
-- 
GitLab