public ActionResult Soru(SoruViewModel model) { Yarisma quiz = Session[SessionNames.QUIZ] as Yarisma; if (quiz.BaslangicTarihi.AddMinutes(quiz.SureDk.Value) < DateTime.Now) { return(RedirectToAction("Bitir")); } using (BilgiYarismasiEntities2 ent = new BilgiYarismasiEntities2()) { var qs = ent.YarismaSoru .Where(p => p.YarismaId == quiz.Id && p.SiraNo == model.SiraNo) .FirstOrDefault(); qs.CevapId = model.cevapId; ent.SaveChanges(); } if (model.SiraNo >= quiz.SoruSayisi) { return(RedirectToAction("Bitir")); } return(RedirectToAction("Soru", new { id = model.SiraNo + 1 })); }
public ActionResult MultiBitir() { MultiBitirViewModel model = new MultiBitirViewModel(); if (Session[SessionNames.MASA] == null) { return(Content("Bitmis")); } Guid masaId = Session[SessionNames.MASA].ToString().toGuid(); Guid userId = User.Identity.GetUserId().toGuid(); using (BilgiYarismasiEntities2 ent = new BilgiYarismasiEntities2()) { Masa masa = ent.Masa.Where(p => p.Id == masaId).FirstOrDefault(); Yarisma yarisma = masa.MasaKullanici .Where(p => p.KullaniciId == userId) .FirstOrDefault() .Yarisma.FirstOrDefault(); int?toplamPuan = ent.YarismaSoru .Where(p => p.Yarisma.MasaKullanici.KullaniciId == userId) .Where(p => p.Yarisma.BitisTarihi.HasValue) .Sum(p => p.Puan); int?yarismaPuan = ent.YarismaSoru .Where(p => p.Yarisma.MasaKullanici.KullaniciId == userId) .Where(p => p.YarismaId == yarisma.Id) .Sum(p => p.Puan); model.toplam = yarisma.SoruSayisi; model.cevaplanan = yarisma.YarismaSoru.Where(p => p.CevapId.HasValue).Count(); model.dogruSayisi = 0; model.yanlisSayisi = 0; model.yarismadanKazandiPuan = yarismaPuan.HasValue?yarismaPuan.Value:0; model.toplamPuan = toplamPuan.HasValue ? toplamPuan.Value : 0; foreach (var item in yarisma.YarismaSoru) { if (item.CevapId.HasValue) { if (item.Cevap.Dogrumu) { model.dogruSayisi++; } else { model.yanlisSayisi++; } } } masa.BitisTarihi = DateTime.Now; yarisma.BitisTarihi = masa.BitisTarihi; ent.SaveChanges(); } return(View(model)); }
private void masayaSoruEkle(BilgiYarismasiEntities2 ent, Masa masa) { var masaKullanicilar = masa.MasaKullanici.Where(p => p.Tip != (int)enmMasaKullaniciTipi.Izleyici).ToList(); var eskiSorular = masa.MasaKullanici.FirstOrDefault().Yarisma.FirstOrDefault().YarismaSoru .Select(p => p.SoruId) .ToList(); var yeniSoruId = masa.Konu.Soru .Where(p => !eskiSorular.Any(t => t == p.Id)) .OrderBy(p => Guid.NewGuid()).FirstOrDefault().Id; foreach (var mitem in masaKullanicilar) { Yarisma yarisma = mitem.Yarisma.FirstOrDefault(); YarismaSoru yarismaSoru = new YarismaSoru(); yarismaSoru.Id = Guid.NewGuid(); yarismaSoru.SiraNo = yarisma.YarismaSoru.Count() + 1; yarismaSoru.SoruId = yeniSoruId; yarismaSoru.YarismaId = yarisma.Id; if (yarisma.MasaKullanici.Masa.Tip == (int)EnmMasaTipi.MultiPlayerMasa) { yarismaSoru.GosterimTarihi = DateTime.Now.AddSeconds(2); } ent.YarismaSoru.Add(yarismaSoru); var mDogruCevap = yarismaSoru.Soru.Cevap.Where(p => p.Dogrumu).FirstOrDefault(); //yarismaSoru.CevapId = mDogruCevap.Id; var cevaplar = yarismaSoru.Soru.Cevap .Where(p => !p.Dogrumu) .OrderBy(p => Guid.NewGuid()) .Take(yarismaSoru.Soru.SecenekSayisi.HasValue ? yarismaSoru.Soru.SecenekSayisi.Value - 1 : 3) .ToList(); cevaplar.Add(mDogruCevap); cevaplar = cevaplar.OrderBy(p => Guid.NewGuid()).ToList(); foreach (var cevap in cevaplar) { YarismaSoruCevap yarismaSoruCevap = new YarismaSoruCevap(); yarismaSoruCevap.CevapId = cevap.Id; yarismaSoruCevap.Id = Guid.NewGuid(); yarismaSoruCevap.YarismaSoruId = yarismaSoru.Id; ent.YarismaSoruCevap.Add(yarismaSoruCevap); } yarisma.SoruSayisi++; ent.SaveChanges(); } }
// GET: Yaris public ActionResult Index() { YarisIndexViewModel model = new YarisIndexViewModel(); using (BilgiYarismasiEntities2 ent = new BilgiYarismasiEntities2()) { Guid userId = User.Identity.GetUserId().toGuid(); Yarisma sonSingleYarisma = ent.Yarisma .Where(p => p.MasaKullanici.Masa.Tip == (int)EnmMasaTipi.SinglePlaeyerMasa) .Where(p => p.MasaKullanici.KullaniciId == userId) .OrderByDescending(p => p.BaslangicTarihi) .FirstOrDefault(); Yarisma sonMultiYarisma = ent.Yarisma .Where(p => p.MasaKullanici.Masa.Tip == (int)EnmMasaTipi.MultiPlayerMasa) .Where(p => p.MasaKullanici.KullaniciId == userId) .OrderByDescending(p => p.BaslangicTarihi) .FirstOrDefault(); if (sonSingleYarisma == null) { return(View(model)); } List <YarismaSoru> sonSorular = ent.YarismaSoru .Where(p => p.YarismaId == sonSingleYarisma.Id) .ToList(); model.EnSonSinglePuan = sonSorular.Sum(p => p.Puan).HasValue ? sonSorular.Sum(p => p.Puan).Value : 0; var enYuksekSingle = ent.VKullaniciPuan .Where(p => p.KullaniciId == userId) .OrderByDescending(p => p.PUAN) .FirstOrDefault(); model.EnYuksekSinglePuan = enYuksekSingle.PUAN.HasValue ? enYuksekSingle.PUAN.Value : 0; if (sonMultiYarisma != null) { var multiKisiSayisi = ent.YarismaSoru .Where(p => p.YarismaId == sonMultiYarisma.Id) .Sum(p => p.Puan); model.MultiEnsonPuan = multiKisiSayisi.HasValue?multiKisiSayisi.Value:0; var enYuksekMulti = ent.VKullaniciPuanTipli .Where(p => p.KullaniciId == userId && p.Tip == (int)EnmMasaTipi.MultiPlayerMasa) .OrderByDescending(p => p.PUAN) .FirstOrDefault(); model.MultiEnYuksekPuan = enYuksekMulti == null ? 0 : enYuksekMulti.PUAN.HasValue ? enYuksekMulti.PUAN.Value : 0; } } return(View(model)); }
public ActionResult SingleBasla(Guid id) { Session[SessionNames.KONU] = id; using (BilgiYarismasiEntities2 ent = new BilgiYarismasiEntities2()) { Konu konu = ent.Konu.Where(p => p.Id == id).FirstOrDefault(); Masa masa = new Masa(); masa.Id = Guid.NewGuid(); masa.KisiSayisi = 1; masa.KonuId = id; masa.SoruSayisi = 0; masa.SureDk = konu.SureDk; masa.Tip = (int)EnmMasaTipi.SinglePlaeyerMasa; masa.KayitTarihi = DateTime.Now; masa.BaslangicTarihi = masa.KayitTarihi; ent.Masa.Add(masa); MasaKullanici masaKullanici = new MasaKullanici(); masaKullanici.Id = Guid.NewGuid(); masaKullanici.KullaniciId = User.Identity.GetUserId().toGuid(); masaKullanici.MasaId = masa.Id; masaKullanici.SiraNo = 1; masaKullanici.Tip = (int)enmMasaKullaniciTipi.Yonetici; masaKullanici.KayitTarihi = DateTime.Now; ent.MasaKullanici.Add(masaKullanici); Yarisma yarisma = new Yarisma(); yarisma.BaslangicTarihi = DateTime.Now; yarisma.Id = Guid.NewGuid(); yarisma.MasaKullaniciId = masaKullanici.Id; yarisma.SoruSayisi = 0; yarisma.SureDk = masa.SureDk; ent.Yarisma.Add(yarisma); ent.SaveChanges(); yarismayaSoruEkle(ent, yarisma); ent.SaveChanges(); Session[SessionNames.MASA] = masa.Id; } return(RedirectToAction("SingleYaris")); }
public ActionResult SingleYaris(SingleYarisViewModel model) { if (model.cevapId == null || model.cevapId == Guid.Empty) { return(RedirectToAction("SingleYaris")); } var aktifMasa = Utils.AktifMasa; if (aktifMasa == null) { return(RedirectToAction("index")); } using (BilgiYarismasiEntities2 ent = new BilgiYarismasiEntities2()) { Masa masa = ent.Masa.Where(p => p.Id == aktifMasa.Id).FirstOrDefault(); Yarisma yarisma = masa.MasaKullanici.FirstOrDefault() .Yarisma.OrderBy(p => p.BaslangicTarihi).FirstOrDefault(); YarismaSoru yarismaSoru = yarisma.YarismaSoru.OrderBy(p => p.SiraNo).LastOrDefault(); Cevap cevap = ent.Cevap.Where(p => p.Id == model.cevapId).FirstOrDefault(); if (yarismaSoru.SiraNo != model.SiraNo) { return(RedirectToAction("SingleYaris")); } yarismaSoru.CevapId = model.cevapId; if (cevap.Dogrumu) { yarismaSoru.Puan = YarismaDegerler.BaslangicPuani; } ent.SaveChanges(); if (yarisma.YarismaSoru.Count() >= masa.Konu.Soru.Count()) { return(RedirectToAction("SingleBitir")); } yarismayaSoruEkle(ent, yarisma); ent.SaveChanges(); } return(RedirectToAction("SingleYaris")); }
public ActionResult Bitir() { IBitis bvm = new BitirViewModel(); Yarisma quiz = Session[SessionNames.QUIZ] as Yarisma; bvm.toplam = quiz.SoruSayisi; using (BilgiYarismasiEntities2 ent = new BilgiYarismasiEntities2()) { var q1 = ent.Yarisma.Where(p => p.Id == quiz.Id).FirstOrDefault(); q1.BitisTarihi = DateTime.Now; ent.SaveChanges(); Session[SessionNames.QUIZ] = null; var quizSorulari = ent.YarismaSoru .Where(p => p.YarismaId == quiz.Id) .ToList(); bvm.cevaplanan = 0; bvm.dogruSayisi = 0; bvm.yanlisSayisi = 0; foreach (var quizSorusu in quizSorulari) { if (quizSorusu.CevapId != null) { bvm.cevaplanan++; var cevap = ent.Cevap.Where(p => p.Id == quizSorusu.CevapId).FirstOrDefault(); if (cevap.Dogrumu) { bvm.dogruSayisi++; } else { bvm.yanlisSayisi++; } } } } return(View(bvm)); }
public ActionResult Soru(int?id) { SoruViewModel svm = new SoruViewModel(); svm.SiraNo = id.HasValue ? id.Value : 1; Yarisma quiz = Session[SessionNames.QUIZ] as Yarisma; Konu konu = new Konu(); if (quiz.BaslangicTarihi.AddMinutes(quiz.SureDk.Value) < DateTime.Now) { return(RedirectToAction("Bitir")); } using (BilgiYarismasiEntities2 ent = new BilgiYarismasiEntities2()) { var qs = ent.YarismaSoru .Where(p => p.YarismaId == quiz.Id && p.SiraNo == svm.SiraNo) .FirstOrDefault(); var soru = ent.Soru .Where(p => p.Id == qs.SoruId) .FirstOrDefault(); svm.Sorusu = soru.Sorusu; var cevaplar = ent.YarismaSoruCevap .Where(p => p.YarismaSoruId == qs.Id) .ToList(); foreach (var cevap in cevaplar) { var cvp = ent.Cevap.Where(p => p.Id == cevap.CevapId).FirstOrDefault(); CevapKisaModel c1 = new CevapKisaModel(); c1.Id = cvp.Id; c1.Cevabi = cvp.Cevabi; svm.cevaplar.Add(c1); } konu = ent.Konu .Where(p => p.Id == quiz.MasaKullaniciId) .FirstOrDefault(); } ViewBag.seconds = (int)((quiz.BaslangicTarihi.AddMinutes(konu.SureDk) - DateTime.Now).TotalSeconds); return(View(svm)); }
public ActionResult SingleBitir() { SingleBitirViewModel model = new SingleBitirViewModel(); var aktifMasa = Utils.AktifMasa; if (aktifMasa == null) { return(RedirectToAction("index")); } using (BilgiYarismasiEntities2 ent = new BilgiYarismasiEntities2()) { Masa masa = ent.Masa.Where(p => p.Id == aktifMasa.Id).FirstOrDefault(); Yarisma yarisma = masa.MasaKullanici.FirstOrDefault() .Yarisma.FirstOrDefault(); model.cevaplanan = yarisma.SoruSayisi; model.dogruSayisi = 0; model.yanlisSayisi = 0; foreach (var item in yarisma.YarismaSoru) { if (item.CevapId.HasValue) { if (item.Cevap.Dogrumu) { model.dogruSayisi++; } else { model.yanlisSayisi++; } } } masa.BitisTarihi = DateTime.Now; yarisma.BitisTarihi = masa.BitisTarihi; ent.SaveChanges(); } return(View(model)); }
public ActionResult MultiBasla() { Guid masaId = Session[SessionNames.MASA].ToString().toGuid(); Guid userId = User.Identity.GetUserId().toGuid(); using (BilgiYarismasiEntities2 ent = new BilgiYarismasiEntities2()) { var masa = ent.Masa.FirstOrDefault(p => p.Id == masaId); var adminKullanici = masa.MasaKullanici.Where(p => p.Tip == (int)enmMasaKullaniciTipi.Yonetici).FirstOrDefault(); if (adminKullanici.KullaniciId != userId) { // yarisma baslamismi kontrol edecekler return(RedirectToAction("MultiDevam")); } var masaKullanicilar = masa.MasaKullanici.Where(p => p.Tip != (int)enmMasaKullaniciTipi.Izleyici).ToList(); foreach (var masaKullanici in masaKullanicilar) { Yarisma yarisma = new Yarisma(); yarisma.BaslangicTarihi = DateTime.Now; yarisma.Id = Guid.NewGuid(); yarisma.MasaKullaniciId = masaKullanici.Id; yarisma.SoruSayisi = 0; yarisma.SureDk = masa.SureDk; ent.Yarisma.Add(yarisma); ent.SaveChanges(); } masayaSoruEkle(ent, masa); masa.BaslangicTarihi = DateTime.Now; ent.SaveChanges(); } return(RedirectToAction("MultiDevam")); }
public RedirectToRouteResult Basla(Guid id) { Yarisma yarisma = new Yarisma(); using (BilgiYarismasiEntities2 ent = new BilgiYarismasiEntities2()) { var user = ent.AspNetUsers .Where(p => p.UserName == User.Identity.Name) .FirstOrDefault(); var konu = ent.Konu.Where(p => p.Id == id).FirstOrDefault(); yarisma = new Yarisma(); yarisma.BaslangicTarihi = DateTime.Now; yarisma.Id = Guid.NewGuid(); //yarisma.KonuId = id; //yarisma.KullaniciId = new Guid(user.Id); yarisma.SoruSayisi = konu.SoruSayisi; yarisma.SureDk = konu.SureDk; ent.Yarisma.Add(yarisma); var sorular = ent.Soru .Where(p => p.KonuId == konu.Id) .OrderBy(p => Guid.NewGuid()) .Take(yarisma.SoruSayisi) .ToList(); YarismaS qzs = YarismaS.Instance; int soruSiraNo = 0; foreach (var soru in sorular) { soruSiraNo++; var mDogruCevap = ent.Cevap .Where(p => p.SoruId == soru.Id && p.Dogrumu) .FirstOrDefault(); var cevaplar = ent.Cevap .Where(p => p.SoruId == soru.Id && !p.Dogrumu) .OrderBy(p => Guid.NewGuid()) .Take(soru.SecenekSayisi.HasValue ? soru.SecenekSayisi.Value - 1 : 3) .ToList(); cevaplar.Add(mDogruCevap); cevaplar = cevaplar.OrderBy(p => Guid.NewGuid()).ToList(); YarismaSoru qs = new YarismaSoru(); qs.Id = Guid.NewGuid(); qs.YarismaId = yarisma.Id; qs.SoruId = soru.Id; qs.SiraNo = soruSiraNo; ent.YarismaSoru.Add(qs); foreach (var cevap in cevaplar) { YarismaSoruCevap qsc = new YarismaSoruCevap(); qsc.CevapId = cevap.Id; qsc.Id = Guid.NewGuid(); qsc.YarismaSoruId = qs.Id; ent.YarismaSoruCevap.Add(qsc); } } ent.SaveChanges(); Session[SessionNames.QUIZ] = yarisma; } return(RedirectToAction("Soru")); }
public ActionResult MultiYaris(MultiYarisViewModel model) { if (model.cevapId == null || model.cevapId == Guid.Empty) { return(RedirectToAction("MultiDevam")); } var aktifMasa = Utils.AktifMasa; if (aktifMasa == null) { return(RedirectToAction("index")); } using (BilgiYarismasiEntities2 ent = new BilgiYarismasiEntities2()) { Guid userId = User.Identity.GetUserId().toGuid(); Masa masa = ent.Masa.Where(p => p.Id == aktifMasa.Id).FirstOrDefault(); Yarisma yarisma = masa.MasaKullanici .Where(p => p.KullaniciId == userId) .FirstOrDefault() .Yarisma.OrderBy(p => p.BaslangicTarihi).FirstOrDefault(); YarismaSoru yarismaSoru = yarisma.YarismaSoru.OrderBy(p => p.SiraNo).LastOrDefault(); Cevap cevap = ent.Cevap.Where(p => p.Id == model.cevapId).FirstOrDefault(); if (yarismaSoru.SiraNo != model.SiraNo) { return(RedirectToAction("MultiDevam")); } yarismaSoru.CevapId = model.cevapId; if (cevap.Dogrumu) { // onceki dogru cevaplar kontrol edilir var digerDogrular = ent.YarismaSoru .Where(p => p.Yarisma.MasaKullanici.MasaId == masa.Id && p.SoruId == yarismaSoru.SoruId && p.Cevap.Dogrumu ).Count(); yarismaSoru.Puan = Convert.ToInt32(YarismaDegerler.BaslangicPuani * Math.Pow(2, masa.KisiSayisi - digerDogrular - 1)); } else { yarismaSoru.Puan = YarismaDegerler.BaslangicPuani * (-1); } ent.SaveChanges(); if (yarisma.YarismaSoru.Count() >= masa.Konu.Soru.Count()) { return(RedirectToAction("MultiBitir")); } //yarismayaSoruEkle(ent, yarisma); //ent.SaveChanges(); } return(RedirectToAction("MultiDevam")); }