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(); } }
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 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")); }