Bugün takım görev yönetim projem için davet akışını tamamladım.
Başlangıçta bu özellik basit göründü: bir kullanıcıyı e-posta ile davet et ve ekiplerine katılmasına izin ver. Ancak yapmaya başladıkça, bazı gerçek dünya durumlarını ele almam gerektiğini fark ettim.
Davet akışı ne yapar
Davet akışı ne yapar
Bir takım sahibi, birini e-posta adresi ile davet edebilir.
Bir davet gönderildiğinde:
- sistem, kullanıcının zaten bir takım üyesi olup olmadığını kontrol eder
- aynı e-posta için o takımda zaten bekleyen bir davet olup olmadığını kontrol eder
- her şey geçerliyse, bir token ile davet kaydı oluşturulur
Davet edilen kullanıcı kabul ettiğinde:
- sistem, giriş yapan kullanıcının davet edilen e-posta ile eşleşip eşleşmediğini doğrular
- kullanıcı takıma eklenir
- davet silinir
Öğrendiklerim
Öğrendiklerim
En büyük ders, kodun nerede yaşamaları gerektiğini öğrenmekti.
Kontrolörüm çalışıyordu ama hızla kalabalıklaşmaya başladı. Şunları ele alıyordu:
- doğrulama
- çift kontrol
- üye kontrolü
- davet oluşturma
- kullanıcıları takımlara ekleme
Bu beni iş mantığını hizmet sınıflarına taşımaya teşvik etti.
Artık kontrolör, çoğunlukla isteği yönetiyor ve gerçek işi devrediyor.
Bu küçük refaktörizasyon, kodu çok daha okunabilir hale getirdi.
Hizmet sınıflarını kullandıktan sonraki kontrolördeki farkı kontrol edin.
Aşağıda, hizmet sınıfı kullanmadan yazdığım bir daveti saklama kodu bulunmaktadır:
Bu yöntemde çok fazla şey vardı ve hatta Invitation::create()‘ı tekrar tekrar kullandım—bu tamamen benim hatam. 😅
Aşağıda, bir hizmet sınıfı kullanarak yeniden yapılandırdığım aynı yöntem bulunuyor:
Artık çok daha temiz ve okunabilir. Ayrıca, giriş doğrulamasının ayrı bir sınıfta halledilmesi için bir Form Request sınıfı da oluşturdum.
Beni bir şeyler öğreten küçük bir hata
Beni bir şeyler öğreten küçük bir hata
Çift davetleri kontrol ederken bir süre takıldım.
Öncelikle get() kullandım, bu bir koleksiyon döndürüyor. Boş olsa bile, kafa karıştırıcı davranışlara neden oldu.
Bunu exists() ile değiştirmek, niyetimi çok daha net hale getirdi.
Bu küçük bir ayrıntıydı, ancak Eloquent’i biraz daha iyi anlamama yardımcı oldu.
Sırada ne var?
Sırada ne var?
Davet sistemi şimdi çalışıyor ve proje artık sadece bir alıştırma olmaktan çıkıp gerçek bir uygulama gibi hissettirmeye başladı.
Bir sonraki adımda, ön yüz üzerinde çalışacağım. Daha temiz bir kontrol paneli ve daha iyi takım/proje sayfaları ile başlayacağım.
Github reposu: Team Task Manager
Not: Öğrenme sürecimde ChatGPT’yi fikirleri kontrol etmek, Laravel desenlerini anlamak ve tercihleri düşünmek için kullanıyorum. Hâlâ kodu kendim yazıyorum ve projenin, aslında inşa ettiğimi anlamak için bir test olduğunu düşünüyorum.
Kaynak: Orijinal Makale




