private void btnSave_Click(object sender, EventArgs e) { try { if (willUpdateItem != null) { willUpdateItem.Ilan_Adi = txtIlanAdi.Text; willUpdateItem.Ilan_ArabaID = arabaList.FirstOrDefault(x => x.Marka == cmbAraba.SelectedText).ArabaID; willUpdateItem.Ilan_Fiyat = (double)spnFiyat.EditValue; willUpdateItem.Ilan_Km = (double)spnKilometre.EditValue; willUpdateItem.Ilan_SehirID = sehirList.FirstOrDefault(x => x.SehirAdi == cmbSehir.SelectedText).SehirID; willUpdateItem.Ilan_Tarih = Convert.ToDateTime(dteTarih.EditValue); IlanManager.Update(willUpdateItem); } else { Ilan ilan = new Ilan(); ilan.Ilan_Adi = txtIlanAdi.Text; ilan.Ilan_ArabaID = arabaList.FirstOrDefault(x => x.Marka == cmbAraba.SelectedText).ArabaID; ilan.Ilan_Fiyat = Convert.ToDouble(spnFiyat.EditValue); ilan.Ilan_Km = Convert.ToDouble(spnKilometre.EditValue); ilan.Ilan_SehirID = sehirList.FirstOrDefault(x => x.SehirAdi == cmbSehir.SelectedText).SehirID; ilan.Ilan_Tarih = Convert.ToDateTime(dteTarih.EditValue); IlanManager.Insert(ilan); MessageBox.Show("İşleminiz başarıyla gerçekleşti", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); } } catch (Exception ex) { MessageBox.Show("İşlem gerçekleştiriirken hata oluştu : " + ex.Message); } }
public void alSat() { // Kullanılacak nesneler ilgili sınıflardan türetildi List <Ilan> tumIlanlar = new List <Ilan>(); List <AlisEmir> alicilar = new List <AlisEmir>(); Kullanici alici = new Kullanici(); Bakiye aliciBakiye = new Bakiye(); Bakiye saticiBakiye = new Bakiye(); Stok aliciStok = new Stok(); Admin admin = new Admin(); // Kullanılacak manager nesneler ilgili sınıflardan türetildi IlanManager ilanManager = new IlanManager(new EfIlanDal()); AlisEmirManager alisEmirManager = new AlisEmirManager(new EfAlisEmirDal()); KullaniciManager kullaniManager = new KullaniciManager(new EfKullaniciDal()); BakiyeManager bakiyeManager = new BakiyeManager(new EfBakiyeDal()); StokManager stokManager = new StokManager(new EfStokDal()); AlimSatimManager alimSatimManager = new AlimSatimManager(new EfAlimSatimDal()); AdminManager adminManager = new AdminManager(new EfAdminDal()); // tüm alıcılar veritabanından bir listeye çekildi alicilar = alisEmirManager.GetAll().Where(p => p.Durum == false).ToList(); // admin bilgisi çekildi admin = adminManager.Get(new Admin { AdminId = 1 }); // alıcı varsa aşağıdaki if şartına girilir, yok ise algoritma yorulmaz, çıkılır if (alicilar.Count != 0) { // her alıcı için aşağıdaki foreach döngüsü dönüyor foreach (var mevcutalici in alicilar) { int toplamsatilanstok = 0; tumIlanlar = ilanManager.GetAll().Where(p => p.Durum == false && p.UrunId == mevcutalici.UrunId).OrderBy(p => p.BirimFiyat).ToList(); foreach (var ilan in tumIlanlar) { toplamsatilanstok += ilan.Miktar; } // alıcının bilgi ve bakiyeleri alici ve alicibakiye değişkenlerine aktarılıyor alici = kullaniManager.getById(new Kullanici { KullaniciId = mevcutalici.AliciId }); aliciBakiye = bakiyeManager.Get(new Bakiye { KullaniciId = mevcutalici.AliciId }); bool uygunUrunKontrol = true; // alıcının alacağı ürün olduğu sürece while döngüsü dönüyor while (mevcutalici.Miktar > 0 && toplamsatilanstok != 0 && uygunUrunKontrol) { // her ilan için aşağıdaki foreach döngüsü dönüyor foreach (var gecerliIlan in tumIlanlar) { // alıcının stok bilgisi alicistok değişkenine aktarılıyor aliciStok = stokManager.GetAll().SingleOrDefault(p => p.KullaniciId == mevcutalici.AliciId && p.UrunId == mevcutalici.UrunId); // satıcının bakiyesi saticibakiye değişkenine aktarılıyor saticiBakiye = bakiyeManager.Get(new Bakiye { KullaniciId = gecerliIlan.SaticiId }); AlimSatim alimSatim = new AlimSatim(); // eğer alıcının verdiği teklife uygun bir satış emri yok ise if (mevcutalici.TeklifFiyat < gecerliIlan.BirimFiyat) { uygunUrunKontrol = false; } decimal adminYuzdesi = 0.01m; // eğer alıcının bakiyesi geçerli ilanın toplam fiyatından büyükse ve alıcıyla satıcı aynı kişi değilse aşağıdaki if şartına giriliyor if (aliciBakiye.MevcutBakiye >= ((gecerliIlan.Miktar * gecerliIlan.BirimFiyat) * (1.01m)) && alici.KullaniciId != gecerliIlan.SaticiId && gecerliIlan.Durum == false && uygunUrunKontrol) { int alinanmiktar; // eğer alıcının alacağı miktar geçerli ilanın miktarından fazla ise aşağıdaki döngü çalışır if (mevcutalici.Miktar >= gecerliIlan.Miktar) { // ilgili aktarımlar gerçekleştirilir alinanmiktar = gecerliIlan.Miktar; toplamsatilanstok -= gecerliIlan.Miktar; mevcutalici.Miktar -= alinanmiktar; aliciBakiye.MevcutBakiye -= (alinanmiktar * gecerliIlan.BirimFiyat); aliciBakiye.MevcutBakiye -= (alinanmiktar * gecerliIlan.BirimFiyat) * adminYuzdesi; admin.Bakiye += (alinanmiktar * gecerliIlan.BirimFiyat) * adminYuzdesi; saticiBakiye.MevcutBakiye += (alinanmiktar * gecerliIlan.BirimFiyat); aliciStok.UrunMiktar += alinanmiktar; aliciStok.UrunOnay = true; gecerliIlan.Miktar = 0; gecerliIlan.Durum = true; // alıcının alacağı miktar sıfıra eşitse yani bittiyse, alım emri kapatılır if (mevcutalici.Miktar == 0) { mevcutalici.Durum = true; } alimSatim.Miktar = alinanmiktar; // admin bakiyesi güncellenir adminManager.Update(admin); // alıcı ve satıcının bakiye ve stok bilgileri, ilgili ilan ve alım emirleri güncellenir bakiyeManager.Update(aliciBakiye); bakiyeManager.Update(saticiBakiye); stokManager.Update(aliciStok); ilanManager.Update(gecerliIlan); alisEmirManager.Update(mevcutalici); alimSatim.AliciId = alici.KullaniciId; alimSatim.SaticiId = gecerliIlan.SaticiId; alimSatim.UrunId = gecerliIlan.UrunId; alimSatim.ToplamFiyat = (alinanmiktar * gecerliIlan.BirimFiyat); alimSatim.Tarih = DateTime.Today; alimSatimManager.Add(alimSatim); } // alıcının alacağı ürün miktarı ilgili ilan miktarından fazla değilse else bloğu çalışır else { // ilgili aktarımlar gerçekleştirilir alinanmiktar = mevcutalici.Miktar; toplamsatilanstok -= mevcutalici.Miktar; gecerliIlan.Miktar -= alinanmiktar; aliciBakiye.MevcutBakiye -= (alinanmiktar * gecerliIlan.BirimFiyat); aliciBakiye.MevcutBakiye -= (alinanmiktar * gecerliIlan.BirimFiyat) * adminYuzdesi; // aracı olan admine komisyon ödemesi işlemi admin.Bakiye += (alinanmiktar * gecerliIlan.BirimFiyat) * adminYuzdesi; saticiBakiye.MevcutBakiye += (alinanmiktar * gecerliIlan.BirimFiyat); aliciStok.UrunMiktar += alinanmiktar; aliciStok.UrunOnay = true; mevcutalici.Miktar = 0; mevcutalici.Durum = true; alimSatim.Miktar = alinanmiktar; // admin bakiyesi güncellenir adminManager.Update(admin); // alıcı ve satıcının bakiye ve stok bilgileri, ilgili ilan ve alım emirleri güncellenir bakiyeManager.Update(aliciBakiye); bakiyeManager.Update(saticiBakiye); stokManager.Update(aliciStok); ilanManager.Update(gecerliIlan); alisEmirManager.Update(mevcutalici); alimSatim.AliciId = alici.KullaniciId; alimSatim.SaticiId = gecerliIlan.SaticiId; alimSatim.UrunId = gecerliIlan.UrunId; alimSatim.ToplamFiyat = (alinanmiktar * gecerliIlan.BirimFiyat); alimSatim.Tarih = DateTime.Today; alimSatimManager.Add(alimSatim); } } } } } } }
public ActionResult Duzenle(Ilan model, int fID, IEnumerable <HttpPostedFileBase> IlanResimler) { ViewBag.IlanKategoriID = new SelectList(_managerIlanKategori.List(), "IlanKategoriID", "KategoriAdi"); ViewBag.fID = new SelectList(_managerFirma.List(), "ID", "FirmaAdi"); ModelState.Remove("IlanTarih"); ModelState.Remove("ilanResimler"); if (ModelState.IsValid) { Ilan ilan = _managerIlan.Find(x => x.ID == model.ID); IlanKategori kat = _managerIlanKategori.Find(x => x.IlanKategoriID == model.IlanKategoriID); Firma frm = _managerFirma.Find(x => x.ID == fID); ilan.Baslik = model.Baslik; ilan.Aciklama = model.Aciklama; ilan.KisaAciklama = model.KisaAciklama; ilan.kategori = kat; ilan.firma = frm; ilan.IlanTarih = DateTime.Now; int res = _managerIlan.Update(ilan); if (res == 0) { ModelState.AddModelError("", "İlan Güncellenemedi"); ViewBag.IlanKategoriID = new SelectList(_managerIlanKategori.List(), "IlanKategoriID", "KategoriAdi"); ViewBag.fID = new SelectList(_managerFirma.List(), "ID", "FirmaAdi"); return(View(model)); } if (IlanResimler != null && IlanResimler.Count() > 0) { foreach (HttpPostedFileBase file in IlanResimler) { if (file != null && (file.ContentType == "image/jpeg" || file.ContentType == "image/jpg" || file.ContentType == "image/png")) { try { IlanResim rsm = new IlanResim(); string filename = $"{AdGetir.ResimAd(ilan.Baslik)}.{file.ContentType.Split('/')[1]}"; file.SaveAs(Server.MapPath($"~/img/Ilan/{filename}")); rsm.ResimYol = filename; rsm.IlanID = ilan.ID; _managerIlanResim.Add(rsm); } catch (Exception exp) { ModelState.AddModelError("", exp.Message); } } } _managerIlanResim.Save(); } return(RedirectToAction("Index")); } return(View()); }