예제 #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 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"));
        }