İki ayrı konu açmışsınız diğer konuyu da içeren bir mesaj yazıyorum.
Hazırladığınız bayilik sisteminde yetkisi faketmeksizin
çalışanlar mevcut. Öyleyse yetkisi farketmeksizin her çalışan bir
User olmalıdır.
Veritabanı hazırlamak ihtiyaçlar belirlendikten sonra gelecekte çıkacak hesaplar da dahil edilip altıncı his ile bir yapı hazırlanır. Aksini söyleyenler olabilri, ben sıkıntı yaşamadım. Şimdi ben olsaydım veritabanı yapısını şöyle hazırlardım:
employees (çalışanlar) tablosu:
./config/auth.php dosyasından tablo adını değiştirebilirsiniz. Schema::create('employees', function(Blueprint $table) {
$table->increments('id')->unsigned();
$table->string('real_name', 64);
$table->string('email', 64)->unique();
$table->string('password', 64);
$table->timestamps();
$table->index('birth_date');
$table->index('created_at');
});employee_fiats (yetkiler) tablosu:
Çalışan yetkilerini içerir. "Bölge Müdürü", "Bölge Yardımcısı" gibi. Schema::create('employee_fiats', function(Blueprint $table) {
$table->increments('id')->unsigned();
$table->string('name', 64); // Yetki adı.
$table->timestamps();
$table->index('created_at');
});employee_fiat_relations (çalışan yetkileri)
Hangi çalışanın hangi yetlilere sahip olduğunu gösterir. Yetki kontrol işlemlerini Employee sınıfına bir method ekleyerek yapabilirsiniz: Auth::user()->is_ceo([(int) $dealerID]) veya Auth::user()->is_co_ceo([(int) $dealerID]) gibi. Schema::create('employee_fiat_relations', function(Blueprint $table) {
$table->integer('fiat_id')->unsigned();
$table->integer('dealer_id')->unsigned(); // Bayinin ID'si.
$table->integer('employee_id')->unsigned();
$table->timestamps();
$table->index('created_at');
});employee_works (çalışma saatleri) tablosu:
Çalışma saatlerini sizin dediğiniz gibi burada tutacağız. Hangi gün kaç saat çalıştığını yazmaktansa başladığı ve bittiği tarihi yazmak daha mantıklı. İkisi arasındaki farkı alarak gösterim sırasında kaç saat çalıştığını yazdırabilirsiniz. Bu şekildeyken kişi gün içerisinde ara verip tekrar başlarsa bunu görebilirsiniz. Parmak izi doğrulaması ile giriş çıkışları otomatiğe başlayabilirsiniz. Schema::create('employee_works', function(Blueprint $table) {
$table->integer('employee_id')->unsigned();
$table->timestamp('started_on'); // Çalışmaya başladığı zaman
$table->timestamp('finished_on'); // Çalışmayı bıraktığı zaman
$table->index('employee_id');
});dealers (bayiler) tablosu:
Dealer adında bir model ihtiyacı var. Schema::create('dealers', function(Blueprint $table) {
$table->increments('id')->unsigned();
$table->string('adress');
$table->index('employee_id');
});Örnek:
Emplooye::works([DateTime $start, DateTime $end]); // $start ile $end tarihleri arasındaki kayıtları getirmeli.
Dealer::find([int ID])->emplooyees(EmployeeFiat::CO_CEO); // Müdür yardımcılarını getirmeli.
Ben olsaydım yukarıdaki gibi bir yapı kullanırdım. Daha geliştirilebilir tabii.