Engin Demiroğun düzenlemiş olduğu (Java & React) Yazılım Geliştirici Yetiştirme Kampında verilen ödev6'yı içermektedir.HRMS Sistemi
Ödev içeriği gereği ödev6'da bizlere sunulan şartları sağlayabilecek bir veritabanı oluşturulmuştur. Ayrıca ödevin üçüncü kısmında, ödevin ikinci kısmında oluşturan veritabanında bulunan ve genel iş pozisyonlarını listeleyecek bir api yazılmıştır.
Veritabanı özelinde konuşmak gerekirsek eğer, ödevde belirtilen 3 kullanıcınında ortak özelliklerini kapsayacak bir Users tablosu oluşturuldu. Users tablosu şirketlerin email, password, activation gibi bilgilerini içermekte. Burada activation ile kast edilen üyelerin sistemde üyeliklerini sonlandırmaları halinde bilgilerinin sistemden silinmesini istemiyoruz sadece Activation parametresini False olarak ayarlıyoruz. Activation parametresi True olan kullancılarımızın aktif bir şekilde hrms sistemini kullandıklarını ve üyeliklerinin devam ettiğini görüyoruz. Members tablosunda şahsa özel kullanıcıların bilgileri tutuluyor. Yani hem hrms sistemi çalışanlarının hem de iş arayan insanların bilgileri tutuluyor. Members tablosu üzerinde kimin sistem çalışanı kimin iş arayan olduğunu anlamak için bir adet Roles tablosu oluşturuldu. Roles tablosu 2 parametreye sahip. 1. satırında SystemWorker değeri var RoleName olarak 2.satırında ise JobSeeker değeri var. Eğer Members tablosunda ki bir kişinin Role_Id'si 1 ise SystemWorker oluyor. Role_Id'si 2 ise JobSeeker oluyor. Yine benzer mantıkla gidersek Users tablosunda bir sürü EMail, Password ve Activation var. Eğer Members tablosunda bulunan bir kişinin User_Id'si 5 ise Users tablosundaki 5 numaralı satırdaki EMail Password ve Activation bilgilerine sahip olacak. Yine aynı mantık Positions tablosu ve Members tablosu arasındaki ilişki için de geçerli. Positions tablosu hrms sisteminde ne kadar iş çeşidi varsa hepsine sahip. Eğer Users tablosunda ki bir kişinin Position_Id'si 7 ise Positions tablosunda ki 7. satırdaki pozisyon bilgisine sahip olur. Yukarıda anlatılan ilişkiler çalışma mantığı Companys tablosunun ile Users ve Positions ile olan ilişkileri için de geçerlidir. Bu bağlantıları ve tabloların haberleşmesini sağlayan yapılara foreignkey denir. Bu bağlamda örnek vermek gerekirse Members tablosundaki Id değeri bu tablonun kendi içerisinde ki bilgileri tutan ve sorguların çalışmasını sağlayan primarykey iken Members tablosunun başka tablolar ile ilişki içerisinde kalmasını sağlayan foreignkeyleri Role_Id, User_Id, Position_Id'dir. Hrms sisteminde Companys tablosununda Positions tablosu ile ilişki içersinde olduğunu özellikle vurgulamak istiyoruz. Çünkü hrms sisteminde şirketler ilan açtığı zaman aradıkları elemanların pozisyonunu Positions tablosundan çekmek istiyoruz.
Ödevin 3. kısmında bizden istenen hrms sisteminde veritabanında bulunan pozisyonları listeleyecek bir api yazmaktı. Veritabanında bulunan pozisyonları listeleyecek api yazıldı. Ek olarak ileriye dönük veritabanında bulunan pozisyonlar dışındaki diğer tablolara da işlemler yapılabileceğinden bu tablolara ait classlar ve interfaceler tüm katmanlarda oluşturuldu. Kodlar ile ilgili açıklamalar java dosyalarının içerisinde verilmiştir. Gerekli açıklamaların her birini pozisyonlar ile ilişkilendirilmiş classlara ve interfacelere yazdım. Bu classlarda ve interface'lerde yapılan yorumlar aynı katmanda aynı paketin içerisinde bulundukları classları ve interfaceleri de kapsamaktadır.