Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Library Management System (not finished)

Amaç ve Kapsam

Bu uygulama küçük/orta ölçekli bir kütüphane için kitapların takibi, üyelerin yönetimi ve ödünç verme süreçlerini DevExpress XAF üzerinde standartlaştırmak için geliştirilmiştir. Hedef; güvenli, doğrulama kurallarıyla tutarlı, ve kolay kullanılır bir arayüz sunmaktır.

Mimari ve Teknolojiler

  • Uygulama Türü: DevExpress XAF (Blazor Server)
  • Dil: .NET 9, ASP.NET Core, C#
  • UI: DevExpress Blazor v25.1
  • ORM: Entity Framework Core 8 (SqlServer, Proxies) — DXApplication4EFCoreDbContext
  • Güvenlik / Yetkilendirme: XAF Security (Integrated Mode), PermissionPolicyRole & ApplicationUser, PasswordAuthentication; Roller: Administrators, Default
  • Doğrulama: DevExpress Validation (attribute tabanlı kurallar: zorunlu alan, tarih tutarlılığı, benzersizlik, üye başına aktif ödünç limiti)
  • Veritabanı: SQL Server
  • Raporlama / Dışa Aktarım: Listelerden Excel (XLSX) export; aksiyon: “Hangi kitap kimde?”

Veri Modeli ve İlişkiler

Varlıklar

  • Kitap (Ad, Yazar, YayınYılı, ISBN, Durum)
  • Member (Ad, Soyad, Email, Telefon, AdSoyad [NotMapped])
  • Loan (Kitap, Üye, BaşlangıçTarihi, BitişTarihi, Durum)

İlişkiler

  • Book 1 <-> * Loan: Bir kitap, birçok ödünç kaydına sahip olabilir. Book Tarafında: [InverseProperty(nameof(Loan.Kitap))] public virtual ObservableCollection<Loan> Loans { get; set; } = new ObservableCollection<Loan>(); Loan Tarafında: public virtual Book Kitap { get; set; }
  • Member 1 <-> * Loan: Member Tarafında: [InverseProperty(nameof(Loan.Uye))] public virtual ObservableCollection<Loan> Loans { get; set; } = new(); Loan Tarafında: public virtual Member Uye { get; set; }

Doğrulama Kuralları

Data Annotations

  • Required:

    • Örn: Member.Ad, Member.Soyad, Member.Email, Loan.Kitap, Loan.Uye, Loan.BaslangicTarihi, Loan.BitisTarihi gibi alanlarda.
    • XAF UI’da kaydetmeden önce hatayı gösterir.
  • StringLength, Range, EmailAddress:

    • Örn: Book.YayinYili için Range(0, 2025), Member.Email için EmailAddress, Book.Ad/Yazar/ISBN için StringLength.
    • UI’da kullanıcıyı yönlendirir; aynı zamanda modelle tutarlı veri kaydını sağlar.

XAF Validation Module Kuralları

  • RuleRequiredFiled:
    • Örn: [RuleRequiredField("Loan.Uye.Required", DefaultContexts.Save)] public virtual Member Uye { get; set; }
  • RuleCriteria:
    • Örn: [RuleCriteria( "Loan_Dates_Valid", DefaultContexts.Save, "[BitisTarihi] >= [BaslangicTarihi]", CustomMessageTemplate = "Bitiş tarihi başlangıçtan önce olamaz.")]
  • RuleCombinationOfPropertiesIsUnique:
    • Örn: Aynı kitabın aynı anda ikinci kez “Active” ödünç verilememesi. [RuleCombinationOfPropertiesIsUnique( "Loan_UniqueActiveLoanForBook", DefaultContexts.Save, "Kitap;Durum", CustomMessageTemplate = "Bu kitap zaten aktif bir ödünçte.", TargetCriteria = "[Durum] = ##Enum#DXApplication4.Module.BusinessObjects.LoanDurum,Active#" )]
  • RuleFromBoolProperty:
    • Örn: Bir üyenin aynı anda en fazla 3 aktif kitap ödünç alabilmesi kuralı. [NotMapped] [Browsable(false)] [RuleFromBoolProperty( "Loan.Member.Max3ActiveLoans", DefaultContexts.Save, CustomMessageTemplate = "Bir üye aynı anda 3'ten fazla aktif kitap ödünç alamaz." )] public bool IsUnderMembersLoanLimit { get { if (Uye == null) return true; int otherActive = Uye.Loans?.Count(l => l.Durum == LoanDurum.Active && !ReferenceEquals(l, this)) ?? 0; int prospective = otherActive + (Durum == LoanDurum.Active ? 1 : 0); return prospective <= 3; } }
  • RuleUniqueValue:
    • Örn: [RuleUniqueValue("Book.ISBN.Unique", DefaultContexts.Save, CustomMessageTemplate = "Bu ISBN zaten kayıtlı.")]

Kullanıcı Rolleri

Uygulamada erişim yetkilerini ve sorumlulukları düzenlemek amacıyla rol tabanlı erişim kontrolü modeli uygulanmıştır. Bu model, her kullanıcının sahip olduğu rol doğrultusunda hangi işlemleri yapabileceğini net biçimde tanımlar.

  • Kullanıcı (USER):

  • Sistem Yöneticisi (ADMIN):

Arayüz Kullanımı

Arayüz, kullanıcıların kolay ve hızlı bir şekilde işlem yapabilmesi içinsade, anlaşılır ve kullanıcı dostu olacak şekilde tasarlanmıştır. Tüm işlemler menüler ve butonlar aracılığıyla yönlendirilir, böylece teknik bilgi gerektirmeden sistem kullanılabilir.

  • Ana Sayfa: Kitap arama, listeleme ve profil/üye işlemlerine hızlı erişim.
  • Kitap Arama & Liste: Başlık, yazar, kategori/ISBN’e göre arama; tabloda başlık, yazar, yayınevi ve durum (müsait/ödünçte/hasarlı/kayıp) bilgileri.
  • Kitap Detayı: Açıklama, ISBN, raf konumu ve kopya durumu gösterilir; buradan ödünç işlemi başlatılabilir.
  • Üye Sayfası: İletişim bilgileri, geçmiş/aktif ödünç kayıtları.
  • Rapor & Dashboard: “Hangi kitap kimde?” raporu ve toplam kitap, aktif/geciken ödünçler, üye sayısı gibi özet göstergeler.
  • Dışa Aktarım: Liste görünümlerinde yalnızca PDF ve Excel (XLS/XLSX) formatlarına dışa aktarma seçeneği aktiftir.

Arayüz genel olarak menü tabanlı navigasyon, arama kutuları, filtreleme seçenekleri ve tablolar üzerinden ilerlemektedir. Böylece kullanıcılar minimum tıklama ile ihtiyaç duydukları bilgiye ulaşabilmektedir.

Özet

Bu çözüm, XAF’in güçlü doğrulama, güvenlik, raporlama ve export yetenekleriyle kütüphane süreçlerini yalın bir model üzerinde güvenilir ve sürdürülebilir hale getirir.
Günlük iş akışları (kitap ekleme, üye yönetimi, ödünç verme/geri alma) tek bir arayüzde, kurallarla garanti altına alınmış şekilde yönetilir.


Hazırlayan: Dilara Çetin

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages