示例#1
0
        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();
            }
        }
示例#2
0
        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"));
        }
示例#3
0
        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"));
        }
示例#4
0
        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"));
        }