Bir Fikrim Var! Web ve Mobil uygulaması kapsamında hazırladığımız Fikir Liste ekranında belirli koşullar doğrultusunda filtreleme işlevi yürütecek bir ekran tasarımı hazırlamıştık. Şimdi bu ekranı fonksiyonel olarak işlevsel hale getirmek için bir SQL aksiyon oluşturalım.
Bir Fikrim Var! Web ve Mobil uygulaması kapsamında hazırladığımız Fikir Liste ekranında belirli koşullar doğrultusunda filtreleme işlevi yürütecek bir ekran tasarımı hazırlamıştık. Şimdi bu ekranı fonksiyonel olarak işlevsel hale getirmek için bir SQL aksiyon oluşturalım.
Uygulamamızda kullanıcıların fikirleri daha rahat bulabilmeleri için ekranımıza üç adet kontrol ekledik. Bu kontroller sayesinde ekranda filtreleme yapabiliyoruz. İlk metin girişinde fikir başlığına göre arama yapıyoruz. Select Box aracılığıyla kategoriye göre seçim yapıp filtreleme gerçekleştiriyoruz. İkinci metin girişinde ise fikri oluşturan kişinin adına göre filtreleme yapıyoruz.
Bu filtreleme işlemlerini gerçekleştirmek için bir SQL aksiyon gerekmektedir.
Ekran tasarımı ve fonksiyonları daha önce hazırladığımız Dashboard ekranıyla benzerlik göstermektedir. Bu noktada süreci kolaylaştırmak ve hızlandırmak için Dashboard ekran için oluşturduğumuz özel aksiyonda yer alan SQL sorgusunun içeriğini kopyalayalım.
Filtreleme işlemlerini yürütmek için SQL sorgusuna bazı koşullar eklememiz gerekiyor. Ekranda görüldüğü üzere ilgili koşul yapısını aksiyona ekliyoruz.
WHERE
(LOWER(i.IdeaTitle) LIKE LOWER(CONCAT('%', @IdeaTitle, '%')) OR @IdeaTitle IS NULL OR @IdeaTitle = '') AND
(i.IdeaCategoryID = @IdeaCategoryID OR @IdeaCategoryID IS NULL) AND
(LOWER(p.FullName) LIKE LOWER(CONCAT('%', @IdeaUser, '%')) OR @IdeaUser IS NULL OR @IdeaUser = '')
Bu koşulların amacı, kullanıcıların girdiği değerlere göre sorguyu dinamik hale getirmektir.
İlk koşul, fikir başlığına göre filtreleme yapmamızı sağlar. Kullanıcının girdiği metin, fikir başlığında aranır ve eşleşen kayıtlar getirilir. Eğer kullanıcı bir değer girmezse veya boş bırakırsa, bu koşul tüm kayıtları kapsar ve tüm fikirler getirilir.
İkinci koşul, kategoriye göre filtreleme yapmamızı sağlar. Kullanıcı SelectBox’ tan bir kategori seçerse, sadece o kategoriye ait fikirler getirilir. Eğer kategori seçilmezse veya değer boşsa, bu koşul da tüm kategorileri kapsar.
Üçüncü ve son koşul ise fikri oluşturan kişinin adına göre filtreleme yapmamızı sağlar. Kullanıcının girdiği isim, fikir sahibinin adında aranır ve eşleşen kayıtlar getirilir. Eğer kullanıcı bir isim girmezse veya boş bırakırsa, bu koşul da tüm kayıtları kapsar ve tüm fikir sahipleri getirilir.
Bu koşullarda LOWER fonksiyonunu kullanarak büyük/küçük harf duyarlılığını ortadan kaldırıp,. LIKE operatörü ve '%' karakteri ile de esnek bir arama yapılması sağlanmaktadır, Böylece metnin herhangi bir yerinde eşleşme olması yeterli oluyor.
Bu sorgu ile birlikte, kullanıcıların ekran üzerinden yaptıkları filtreleme seçimleri dikkate alınarak dinamik bir veri çekme işlemi gerçekleştirilmiş oluyor. Uygulamamızda kullanıcı deneyimini artırmak ve aradıkları bilgilere kolayca ulaşmalarını sağlamak için bu filtreleme özelliklerini ekledik. Aksiyonu güncelleyip kaydederek süreci tamamlıyoruz. Artık uygulamamızda kullanıcılar fikirleri başlığa, kategoriye ve fikir sahibinin adına göre filtrelemeye hazırlar.