C# Session kullanarak Sepet mantığı oluşturup kullanmak

Muhammet Ali
3 Ocak 2016 Pazar
3

Merhaba Arkadaşlar

Çoğu yazılımcı arkadaşımız duymuştur Sepet mantığını.Adından anlaşılacağı gibi sepet mantığı genellikle online alışveriş sitelerinde kullanılır.Beğendiniz ürünleri sepete ekleyip çıkartabilir,alışveriş sonunda sepetinizdeki ürünleri satın alma işleminde kullanırsınız.Sepet mantığının en temel açıklaması budur.Peki sadece e-ticaret sistemlerindemi kullanılır bu sistem.Tabiki Hayır.Bu makalemizde Sepet mantığını kullanarak küçük bir uygulama yapıcağız.Mantığı iyice kavradığınızda çok yerde hayat kurtarıp işlerinizi iyice kolaylaştırıcaktır.

Yapacağımız örneğin görseli aşağıdaki resimdir.Kodyazan Yazılım ve Bilişim Ekibi olarak yaptığımız projemizin bir platformunda kullandığmız Sepet mantığının örneğidir.

Solda bulunan alan öğrenci listesidir.Burada + butonuna tıklayarak sağda bulunan mesaj gönderilicekler kısmına istediğimiz öğrenciyi ekleyebiliyoruz.Ve mesaj gönderilicekler kısmından bulunan öğrencilerin sağında bulunan çöp kutusu işareti ilede öğrenciyi listeden kaldırıyoruz.Bu işlemi sepet mantığı ile yaptık.Tıkladığımız öğrenciyi sepete atıyoruz.Sildiğimiz öğrenciyi sepetten çıkarıyoruz.Mantık oldukça basit.

Şimdi kod tarafına geçelim.

1-İlk adım olarak class a ihtiyacımız var.Bu class ta hepsini getir,listeden çıkar,listeye ekle,temizle method ları olucak.Ve bu class ta veri ekleyip çıkarıcağız.Platform Entity framework kullanılarak kodlanmıştır.Mantığı anladıktan sonra diğer platformlara çok kolay çevirebilirsiniz.

 public class MesajGonderilecekler
    {
        List<Ogrenci> _lines = new List<Ogrenci>();

        public void ListeyeEkle(Ogrenci ogr)
        {
            Ogrenci entity = _lines.FirstOrDefault((pr => pr.OgrenciID == ogr.OgrenciID));
            if (entity == null)
            {
                _lines.Add(ogr);
            }
        }
        public void ListedenCikar(Ogrenci ogr)
        {
            _lines.RemoveAll(p => p.OgrenciID == ogr.OgrenciID);
        }
        public void Temizle()
        {
            _lines.Clear();
        }

        public List<Ogrenci> HepsiniGetir
        {
            get { return _lines; }

        }
    }

2-Class ımızı oluşturduktan sonra + butonuna tıklayarak sepete öğrenciyi eklemeyi görücez.Kullandığımız buton link butondur.Link buttonun OnCommand methodunda kodumuzu yazıyoruz.

 protected void lnkListeEkle_Command(object sender, CommandEventArgs e)
        {
            int id = Convert.ToInt32(e.CommandName);//tıklanan öğrencini id si
            var msj = (MesajGonderilecekler)Session["mesajGonderilecekler"];//Mesajgonderilecekler classı tipinde sessionımız.Öğrencileri bu sessiona ekleyip çıkaracağız
            if (msj == null)
            {
                msj = new MesajGonderilecekler();
                Session["mesajGonderilecekler"] = msj;
            }
            msj.ListeyeEkle(controller.OgrenciController.GetByID(id));//Ogrencicontroller.Getbyid(id),veritabanına git tıklanan idye ait öğrenciyi getir demektir.
            ListeyiDoldur();//Mesaj gönderilicekler kısmını dolduran method.
        }

3-Sepetten öğrenciyi çıkarmak.Sepete eklediğimiz öğrenciyi sepetten çıkarmak istediğimizde işi gören kısım burasıdır.Bu kısmı yine link buttonumuzun OnCommand methodunda yazıyoruz.

protected void lnkCikar_Command(object sender, CommandEventArgs e)
        {
            int id = Convert.ToInt32(e.CommandName);//tıklanan öğrencinin id si
            var ksiler = (MesajGonderilecekler)Session["mesajGonderilecekler"];
            if (ksiler != null)
            {
                ksiler.ListedenCikar(controller.OgrenciController.GetByID(id));//o id ye ait öğrenciyi veritabanından bul ve Mesajgönderilecekler classımızı içinde bulunan ListedenCikar methodunu kullanarak sepetten çıkar.
            }
            ListeyiDoldur();//çıkarma işleminde sonra listeyi tekrar doldur.
        }

4-Sepeti doldur methodumuz.Bu method ise ekle ve çıkar işleminden sonra sepetimizde toplanan öğrencileri istediğimiz kısma yazdırmak için kullanıcağız.

 public void ListeyiDoldur()//Speteimizi repeatera bind ettiğimiz methodd.Yani mesaj gönderilicek öğrencileri ekrana basan kısım
        {
            var ksiler = (MesajGonderilecekler)Session["mesajGonderilecekler"];
            if (ksiler != null)
            {
           
                repeater.DataSource = ksiler.HepsiniGetir;
                repeater.DataBind();
            }

        }

Sepet mantığını en basit şekilde kullandık.Bu mantık sizi birçok karmaşık yapıdan kurtarıcaktır.Entity Framework kullanarak yazdım bu kısmı.sizde mantığı anladıktan sonra kullandığınız platforma çok kolay çevirebilirsiniz(Ado,Mvc vb).İşin kısa özetini geçersek,İşi yapan classımız var.Bu classımızda ekle,sil,getir,götür işelrini yapan methodlarımız var.Kod tarafında ise tıklanılan öğrenciyi yakalayıp,oluşturduğumuz classımızın tipindeki sessiona ekle,çıkar methodlarının kullanarak öğrenciyi sepette toplamak.

İyi Çalışmalar.



yorumlar
64x64

m

8 Ocak 2016 Cuma
64x64

a

11 Haziran 2016 Cumartesi

kafa karıştırma knk

64x64

21 Aralık 2016 Çarşamba

Çok teşekkürler faydalı oldu benim için.

Yorum yaz