feat: add quarter field to company history items with localization support, enhancing data organization and user experience

This commit is contained in:
Ümit Tunç
2026-05-21 20:16:32 +03:00
parent cc6ca1f660
commit 2018860c23
8 changed files with 133 additions and 5 deletions
@@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('company_history_items', function (Blueprint $table) {
$table->string('quarter', 2)->default('Q1')->after('year');
$table->index(['year', 'quarter']);
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('company_history_items', function (Blueprint $table) {
$table->dropIndex(['year', 'quarter']);
$table->dropColumn('quarter');
});
}
};
+31 -1
View File
@@ -15,6 +15,7 @@ class CompanyHistoryItemSeeder extends Seeder
$items = [
[
'year' => 2014,
'quarter' => 'Q1',
'title' => 'Kuruluş',
'content' => 'Trunçgil Teknoloji, 2014 yılında Ümit Tunç tarafından Gaziantep\'te kuruldu.',
'color' => '#17a2b8',
@@ -33,6 +34,7 @@ class CompanyHistoryItemSeeder extends Seeder
],
[
'year' => 2015,
'quarter' => 'Q1',
'title' => 'Akademik Altyapı',
'content' => 'E-SER Akademik Yayın Evi ile çözüm ortaklığı kurarak indeksli dergiler için akademik yayın altyapısı geliştirdi.',
'color' => '#f5a623',
@@ -51,6 +53,7 @@ class CompanyHistoryItemSeeder extends Seeder
],
[
'year' => 2016,
'quarter' => 'Q1',
'title' => 'İlk İhracat',
'content' => 'İlk ihracatini gerçekleştirerek e-ticaret alanında Amerika Birleşik Devletleri\'nin New Jersey eyaletinde faaliyet göstermeye başladı.',
'color' => '#e91e63',
@@ -69,6 +72,7 @@ class CompanyHistoryItemSeeder extends Seeder
],
[
'year' => 2017,
'quarter' => 'Q1',
'title' => 'TRDoktor.com',
'content' => 'TRDoktor.com iş birliğiyle Türkiye genelinde aylık bir milyondan fazla kullanıcıya hizmet veren dijital sağlık altyapısına katkı sağladı.',
'color' => '#2c3e50',
@@ -87,6 +91,7 @@ class CompanyHistoryItemSeeder extends Seeder
],
[
'year' => 2018,
'quarter' => 'Q1',
'title' => 'Eğitim Teknolojileri',
'content' => 'Amerikan Kültür Koleji\'nin eğitim altyapısında kullanılmak üzere kurumsal eğitim uygulamaları geliştirdi.',
'color' => '#5dade2',
@@ -105,6 +110,7 @@ class CompanyHistoryItemSeeder extends Seeder
],
[
'year' => 2019,
'quarter' => 'Q1',
'title' => 'Gaziantep Teknopark',
'content' => 'Gaziantep Teknopark bünyesinde Ar-Ge ve yazılım geliştirme faaliyetlerini sürdürecek şekilde şube açtı.',
'color' => '#27ae60',
@@ -123,6 +129,7 @@ class CompanyHistoryItemSeeder extends Seeder
],
[
'year' => 2019,
'quarter' => 'Q2',
'title' => 'HERE Maps Hackathon',
'content' => 'Almanya menşeli HERE Maps\'in Türkiye genelinde düzenlediği hackathon\'da birincilik ödülünü kazandı; konum teknolojileri alanındaki yetkinliğimizi ulusal düzeyde tescilledik.',
'color' => '#1abc9c',
@@ -141,6 +148,7 @@ class CompanyHistoryItemSeeder extends Seeder
],
[
'year' => 2020,
'quarter' => 'Q1',
'title' => 'Otto Planner 2020',
'content' => 'Almanya\'nın Bochum kentinde faaliyet gösteren P-D Refractories GmbH için Otto Planner 2020 uygulamasını geliştirdi ve şirketin dijital dönüşüm sürecini başlattı.',
'color' => '#8e44ad',
@@ -159,6 +167,7 @@ class CompanyHistoryItemSeeder extends Seeder
],
[
'year' => 2021,
'quarter' => 'Q1',
'title' => 'IoT Dashboard',
'content' => 'Olimpiyat Otomasyon iş birliğiyle, endüstriyel PLC ve benzeri cihazların uzaktan yönetimi ve kontrolünü sağlayan; RS232 ve WebSocket standartları üzerinden haberleşen IoT Dashboard uygulaması geliştirildi. Nesnelerin İnterneti (IoT) kapsamındaki bu çözüm, Trunçgil Smart altyapısı üzerinde hazırlanmıştır.',
'color' => '#6c5ce7',
@@ -177,6 +186,7 @@ class CompanyHistoryItemSeeder extends Seeder
],
[
'year' => 2021,
'quarter' => 'Q2',
'title' => 'PDLC Smart Glass',
'content' => 'Hollanda\'da faaliyet gösteren HaHa Group BV için PDLC Smart Glass ürünlerine yönelik e-ticaret altyapısı ve dijital satış kanalları geliştirildi.',
'color' => '#2980b9',
@@ -195,6 +205,7 @@ class CompanyHistoryItemSeeder extends Seeder
],
[
'year' => 2022,
'quarter' => 'Q1',
'title' => 'Dijimind Akademi',
'content' => 'Dijimind Akademi ile eğitim teknolojileri alanında dijital öğrenme platformları ve akademik içerik altyapısı çözümleri geliştirdi.',
'color' => '#16a085',
@@ -213,6 +224,7 @@ class CompanyHistoryItemSeeder extends Seeder
],
[
'year' => 2023,
'quarter' => 'Q1',
'title' => 'Stellar Construction',
'content' => 'Rusya\'nın Moskova merkezli, endüstriyel inşaat alanında faaliyet gösteren Ant Yapı ortaklığına sahip Stellar Construction için QA, QC ve QMS (kalite yönetim sistemi) uygulaması geliştirildi. Proje, Rusya\'nın çeşitli şantiye sahalarında başarılı bir şekilde kullanılmaktadır.',
'color' => '#c0392b',
@@ -236,7 +248,11 @@ class CompanyHistoryItemSeeder extends Seeder
unset($itemData['translations']);
$item = CompanyHistoryItem::updateOrCreate(
['year' => $itemData['year'], 'sort_order' => $itemData['sort_order']],
[
'year' => $itemData['year'],
'quarter' => $itemData['quarter'] ?? 'Q1',
'sort_order' => $itemData['sort_order'],
],
array_merge($itemData, ['is_active' => true, 'position' => null])
);
@@ -252,5 +268,19 @@ class CompanyHistoryItemSeeder extends Seeder
->where('year', 2019)
->where('title', 'Teknopark ve Hackathon')
->delete();
// Sıra numarası değişince kalan eski kayıtları temizle (yinelenen maddeleri önler)
$expectedKeys = collect($items)
->map(fn (array $item): string => $item['year'] . ':' . ($item['quarter'] ?? 'Q1') . ':' . $item['sort_order'])
->flip();
CompanyHistoryItem::query()
->get()
->each(function (CompanyHistoryItem $item) use ($expectedKeys): void {
$key = $item->year . ':' . ($item->quarter ?? 'Q1') . ':' . $item->sort_order;
if (!$expectedKeys->has($key)) {
$item->delete();
}
});
}
}