Skip to content

Commit d6f5c62

Browse files
authored
Merge pull request #2541 from codeeu/revert-2540-revert-2538-dev
Dev
2 parents d704165 + e413eac commit d6f5c62

39 files changed

Lines changed: 3429 additions & 954 deletions

app/Http/Controllers/AmbassadorController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public function index(UserFilters $filters)
2525
return redirect('ambassadors?country_iso='.$country_iso);
2626
}
2727

28-
$ambassadors = User::role('ambassador')->filter($filters)->whereNotNull('avatar_path')->whereNotNull('bio')->paginate(10);
28+
$ambassadors = User::role('ambassador')->filter($filters)->whereNotNull('avatar_path')->whereNotNull('bio')->get();
2929

3030
return view('ambassadors')->with([
3131
'ambassadors' => $ambassadors,

app/Http/Controllers/CommunityController.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,13 @@ public function index(UserFilters $filters)
1717
return redirect('community?country_iso='.$country_iso);
1818
}
1919

20-
$ambassadors = User::role('ambassador')->filter($filters)->whereNotNull('avatar_path')->whereNotNull('bio')->paginate(10);
20+
$ambassadors = User::role('ambassador')
21+
->filter($filters)
22+
->whereNotNull('avatar_path')
23+
->whereNotNull('bio')
24+
->whereNotNull('city_id') // Ensure city is set
25+
->with('city') // Load city details
26+
->get();
2127

2228
$teachers = User::role('leading teacher')->where('approved', 1)->with('city')->get();
2329

app/Http/Controllers/HomeController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public function index(Request $request): View
1313
[
1414
'title' => 'Girls in Digital',
1515
'description' => 'Explore and embrace digital opportunities—empowering a new generation of girls in digital!',
16-
'url' => 'https://codeweek.eu/blog/girls-in-digital-week/',
16+
'url' => 'https://codeweek.eu/girls-in-digital-week',
1717
'style_color' => 'background-image: linear-gradient(36.92deg, #1C4DA1 20.32%, #0040AE 28.24%);',
1818
'btn_lang' => 'home.get_involved',
1919
],

database/seeders/CountrySeeder.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
namespace Database\Seeders;
44

55
use Illuminate\Database\Seeder;
6+
use Illuminate\Support\Facades\DB;
7+
use App\Country; // Ensure correct model namespace
68

79
class CountrySeeder extends Seeder
810
{
@@ -23,11 +25,7 @@ public function run(): void
2325
['iso' => 'EE', 'name' => 'Estonia', 'longitude' => '1.234', 'latitude' => '5.678'],
2426
['iso' => 'FI', 'name' => 'Finland', 'longitude' => '1.234', 'latitude' => '5.678'],
2527
['iso' => 'FR', 'name' => 'France', 'longitude' => '1.234', 'latitude' => '5.678'],
26-
['iso' => 'GF', 'name' => 'French Guiana', 'longitude' => '1.234', 'latitude' => '5.678'],
27-
['iso' => 'PF', 'name' => 'French Polynesia', 'longitude' => '1.234', 'latitude' => '5.678'],
28-
['iso' => 'TF', 'name' => 'French Southern Territories', 'longitude' => '1.234', 'latitude' => '5.678'],
2928
['iso' => 'DE', 'name' => 'Germany', 'longitude' => '1.234', 'latitude' => '5.678'],
30-
['iso' => 'GI', 'name' => 'Gibraltar', 'longitude' => '1.234', 'latitude' => '5.678'],
3129
['iso' => 'GR', 'name' => 'Greece', 'longitude' => '1.234', 'latitude' => '5.678'],
3230
['iso' => 'IE', 'name' => 'Ireland', 'longitude' => '1.234', 'latitude' => '5.678'],
3331
['iso' => 'IT', 'name' => 'Italy', 'longitude' => '1.234', 'latitude' => '5.678'],
@@ -40,11 +38,13 @@ public function run(): void
4038
['iso' => 'ES', 'name' => 'Spain', 'longitude' => '1.234', 'latitude' => '5.678'],
4139
];
4240

43-
//dd($countries[0]["iso"]);
44-
4541
foreach ($countries as $country) {
46-
factory(App\Country::class)->create($country);
42+
Country::updateOrCreate(
43+
['iso' => $country['iso']], // Ensure uniqueness by ISO code
44+
$country
45+
);
4746
}
4847

48+
$this->command->info("✅ Countries seeded successfully!");
4949
}
5050
}

database/seeders/DatabaseSeeder.php

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,26 @@ class DatabaseSeeder extends Seeder
1212
public function run(): void
1313
{
1414

15-
//$this->call(CountriesTableSeeder::class);
16-
//$this->call(CitiesTableSeeder::class);
15+
$this->call(CountriesTableSeeder::class);
16+
$this->call(CitiesTableSeeder::class);
17+
18+
// Roles, permissions, users
1719
$this->call(RolesAndPermissionsSeeder::class);
1820
$this->call(LeadingTeacherRoleSeeder::class);
1921
$this->call(UserSeeder::class);
22+
23+
// Additional data
2024
$this->call(AudienceTableSeeder::class);
2125
$this->call(ThemeTableSeeder::class);
22-
//$this->call(ResourceSeeder::class);
26+
$this->call(EventSeeder::class);
27+
$this->call(OldSeeder::class);
28+
// ... and so on
29+
30+
// Resource seeders
31+
$this->call(ResourceEditorRoleSeeder::class);
32+
33+
$this->call(SchoolSeeder::class);
2334

24-
//$this->call(OldSeeder::class);
25-
//$this->call(EventSeeder::class);
2635

2736
}
2837
}

database/seeders/LeadingTeacherExpertiseSeeder.php

Lines changed: 19 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -12,46 +12,25 @@ class LeadingTeacherExpertiseSeeder extends Seeder
1212
*/
1313
public function run(): void
1414
{
15-
create(LeadingTeacherExpertise::class, [
16-
'id' => 1,
17-
'position' => 10,
18-
'name' => 'Teacher Trainer',
19-
]);
20-
create(LeadingTeacherExpertise::class, [
21-
'id' => 2,
22-
'position' => 20,
23-
'name' => 'Community Organiser',
24-
]);
25-
create(LeadingTeacherExpertise::class, [
26-
'id' => 3,
27-
'position' => 30,
28-
'name' => 'Expert in unplugged programming',
29-
]);
30-
create(LeadingTeacherExpertise::class, [
31-
'id' => 4,
32-
'position' => 40,
33-
'name' => 'Expert in Scratch',
34-
]);
35-
create(LeadingTeacherExpertise::class, [
36-
'id' => 5,
37-
'position' => 50,
38-
'name' => 'Expert in Robotics',
39-
]);
40-
create(LeadingTeacherExpertise::class, [
41-
'id' => 6,
42-
'position' => 60,
43-
'name' => 'Expert in programming (Python, C++, SQL, etc.)',
44-
]);
45-
create(LeadingTeacherExpertise::class, [
46-
'id' => 7,
47-
'position' => 70,
48-
'name' => 'Expert in remote/hybrid teaching',
49-
]);
50-
create(LeadingTeacherExpertise::class, [
51-
'id' => 8,
52-
'position' => 80,
53-
'name' => 'Expert in use of remote teaching platforms',
54-
]);
15+
// Ensure data is seeded only if it doesn't already exist
16+
$expertises = [
17+
['position' => 10, 'name' => 'Teacher Trainer'],
18+
['position' => 20, 'name' => 'Community Organiser'],
19+
['position' => 30, 'name' => 'Expert in unplugged programming'],
20+
['position' => 40, 'name' => 'Expert in Scratch'],
21+
['position' => 50, 'name' => 'Expert in Robotics'],
22+
['position' => 60, 'name' => 'Expert in programming (Python, C++, SQL, etc.)'],
23+
['position' => 70, 'name' => 'Expert in remote/hybrid teaching'],
24+
['position' => 80, 'name' => 'Expert in use of remote teaching platforms'],
25+
];
5526

27+
foreach ($expertises as $expertise) {
28+
LeadingTeacherExpertise::updateOrCreate(
29+
['name' => $expertise['name']], // Check for existing entry by name
30+
['position' => $expertise['position']]
31+
);
32+
}
33+
34+
$this->command->info("✅ Leading teacher expertises seeded successfully!");
5635
}
5736
}

database/seeders/LeadingTeacherRoleSeeder.php

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,17 @@ public function run(): void
1616
// Reset cached roles and permissions
1717
app()['cache']->forget('spatie.permission.cache');
1818

19-
// create permissions
20-
Permission::create(['name' => 'submit resource']);
19+
// Check if permission already exists before creating
20+
$permission = Permission::firstOrCreate(['name' => 'submit resource']);
2121

22-
// create roles and assign created permissions
23-
$leadingTeacherRole = Role::create(['name' => 'leading teacher']);
24-
$leadingTeacherRole->givePermissionTo(['submit resource']);
22+
// Check if role already exists before creating
23+
$leadingTeacherRole = Role::firstOrCreate(['name' => 'leading teacher']);
24+
if (!$leadingTeacherRole->hasPermissionTo($permission)) {
25+
$leadingTeacherRole->givePermissionTo($permission);
26+
}
2527

26-
$leadingTeacherAdminRole = Role::create(['name' => 'leading teacher admin']);
28+
Role::firstOrCreate(['name' => 'leading teacher admin']);
2729

30+
$this->command->info("✅ Leading Teacher roles and permissions seeded successfully!");
2831
}
2932
}

database/seeders/LeadingTeacherSeeder.php

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
namespace Database\Seeders;
44

55
use Illuminate\Database\Seeder;
6+
use App\User;
7+
use Spatie\Permission\Models\Role;
8+
use Illuminate\Support\Facades\File;
69

710
class LeadingTeacherSeeder extends Seeder
811
{
@@ -11,10 +14,63 @@ class LeadingTeacherSeeder extends Seeder
1114
*/
1215
public function run(): void
1316
{
14-
17+
// Call related seeders first
1518
$this->call(LeadingTeacherRoleSeeder::class);
1619
$this->call(CitiesTableSeeder::class);
1720
$this->call(LeadingTeacherExpertiseSeeder::class);
1821

22+
// Load JSON File
23+
$jsonPath = storage_path('app/leading_teachers.json');
24+
25+
if (!File::exists($jsonPath)) {
26+
$this->command->error("❌ JSON file not found: $jsonPath");
27+
return;
28+
}
29+
30+
// Decode JSON
31+
$jsonData = File::get($jsonPath);
32+
$teachers = json_decode($jsonData, true);
33+
34+
if (!$teachers) {
35+
$this->command->error("❌ Invalid JSON structure.");
36+
return;
37+
}
38+
39+
// Get the "leading teacher" role
40+
$role = Role::where('name', 'leading teacher')->first();
41+
if (!$role) {
42+
$this->command->error("❌ Role 'leading teacher' does not exist!");
43+
return;
44+
}
45+
46+
// Insert Data
47+
$count = 0;
48+
foreach ($teachers as $teacherData) {
49+
// Create or update user
50+
$user = User::updateOrCreate(
51+
['email' => $teacherData['email']], // Ensure uniqueness by email
52+
[
53+
'firstname' => $teacherData['firstname'] ?? '',
54+
'lastname' => $teacherData['lastname'] ?? '',
55+
'email' => $teacherData['email'],
56+
'country_iso' => $teacherData['country_iso'] ?? null,
57+
'twitter' => $teacherData['twitter'] ?? null,
58+
'website' => $teacherData['website'] ?? null,
59+
'bio' => $teacherData['bio'] ?? null,
60+
'avatar_path' => $teacherData['avatar_path'] ?? '/images/default-avatar.png',
61+
'city_id' => $teacherData['city_id'] ?? null,
62+
'email_verified_at' => $teacherData['email_verified_at'] ?? now(),
63+
]
64+
);
65+
66+
// Assign role if not already assigned
67+
if (!$user->hasRole('leading teacher')) {
68+
$user->assignRole($role);
69+
}
70+
71+
$count++;
72+
}
73+
74+
$this->command->info("✅ Imported $count leading teachers successfully!");
1975
}
2076
}

0 commit comments

Comments
 (0)