public async Task <JsonResult> TestSinavOlustur(TestSinavSorulari testSinavSorulari)
        {
            var result =
                await Task.FromResult(_sinavOlustur.TestSinavOlustur(testSinavSorulari,
                                                                     Guid.Parse(User.Identity.GetUserId())));

            return(new JsonResult(new Result {
                isSuccess = result.isSuccess, Message = result.Message
            }));
        }
Пример #2
0
        public Result TestSinavOlustur(TestSinavSorulari testSinavSorulari, Guid sinavSahibiIdBilgisi)
        {
            try
            {
                if (testSinavSorulari == null || sinavSahibiIdBilgisi.ToString() == null)
                {
                    throw new ArgumentNullException("Gelen değerlerden bir tanesi null");
                }

                var sinavSorularTablosuTumSorularList = new List <TestSinavSorular>();


                // Kaç soru olduğu testSinavSorulari.SoruTemplate içerisinde.
                // Buradaki sorular kadar dönüp db kayıt edeceğiz.
                for (int m = 0; m < testSinavSorulari.SoruTemplate.Count; m++)
                {
                    // . soru için şıklar
                    // Tüm soru şıklarını soruşıkları tablosuna eklemek için list haline getiriyoruz
                    var testSinavSorulariSiklariList = new List <TestSinavSoruSiklari>();
                    for (int i = 0; i < testSinavSorulari.SoruTemplate[m].SoruSiklari.Count; i++)
                    {
                        testSinavSorulariSiklariList.Add(new TestSinavSoruSiklari {
                            SoruSikki = (i + 1), SoruSikMetni = testSinavSorulari.SoruTemplate[m].SoruSiklari[i], TestSinavSoruSiklariId = Guid.NewGuid()
                        });
                    }

                    var testSinavSorularTablosu = new TestSinavSorular {
                        TestSinavSoruSiklari = testSinavSorulariSiklariList, SoruCevabi = Convert.ToInt32(testSinavSorulari.SoruTemplate[m].SoruDogruSik), TestSinavSorusuMetni = testSinavSorulari.SoruTemplate[m].SoruText, TestSinavSorularId = Guid.NewGuid()
                    };


                    sinavSorularTablosuTumSorularList.Add(testSinavSorularTablosu);
                }

                // Test sınav tablosu verileri
                var testSinavTestSinavTablosu = new TestSinav {
                    TestSinavId = Guid.NewGuid(), TestSinavSorulars = sinavSorularTablosuTumSorularList
                };

                // Sinav tablosu verileri
                var sinavTablosu = new EntityLayer.Sinav.Sinav
                {
                    DerslerId           = Guid.Parse(testSinavSorulari.DersGuidId),
                    SinavId             = Guid.NewGuid(),
                    SinavSahibi         = sinavSahibiIdBilgisi,
                    SinavTuru           = SinavTuru.Test,
                    SinavEklenmeTarihi  = DateTime.Now,
                    TestSinav           = testSinavTestSinavTablosu,
                    SinavAktiflikDurumu = false,
                    SinavSuresiDakika   = 0
                };

                _unitOfWork.SinavRepository.Add(sinavTablosu);
                _unitOfWork.SaveChanges();

                return(new Result {
                    isSuccess = true, Message = "Test sınavı başarılı bir şekilde kayıt edildi."
                });
            }
            catch (Exception e)
            {
                _logger.LogError("Test sınavı kayıt işlemi başarısız. Detaylar -> " + e + " | İşlem sahibi -> " + sinavSahibiIdBilgisi);
                return(new Result {
                    isSuccess = false, Message = "Sınav kayıt işlemi başarısız."
                });
            }
        }