public async Task <JsonResult> GirilenTestSinaviniKayitEt(TestSinavSinaviKayitEtViewModel testSinavSinaviKayitEtViewModel)
        {
            testSinavSinaviKayitEtViewModel.OgrenciId = Guid.Parse(User.Identity.GetUserId());

            var result = await Task.FromResult(_sinavKayit.TestSinavOgrenciSinaviKayit(testSinavSinaviKayitEtViewModel));

            return(new JsonResult(new Result {
                isSuccess = result.isSuccess, Message = result.Message
            }));
        }
        public Result TestSinavOgrenciSinaviKayit(TestSinavSinaviKayitEtViewModel testSinavSinaviKayitEtViewModel)
        {
            try
            {
                double ogrenciSinavPuani = 0;

                // sınav sonucunu kayıt edebilmek için tabloları birleştirdik
                var suresiBaslamisSinavlars =
                    _unitOfWork.SuresiBaslamisSinavlarRepository.IncludeMany(x => x.GirilenTestSinavSonuclaris).SingleOrDefault(x => x.OgrenciId == testSinavSinaviKayitEtViewModel.OgrenciId && x.SinavId == Guid.Parse(testSinavSinaviKayitEtViewModel.SinavId));

                if (suresiBaslamisSinavlars == null)
                {
                    throw new NullReferenceException("İlgili sinav bulunamadı.");
                }

                var ilgiliTestSinav =
                    _unitOfWork.TestSinavSorularRepository.IncludeMany(x => x.TestSinav, x => x.TestSinavSoruSiklari).Where(x => x.TestSinav.SinavId == Guid.Parse(testSinavSinaviKayitEtViewModel.SinavId)).ToList();

                double ogrenciSoruBasinaAlacagiPuan = 100 / ilgiliTestSinav.Count();
                foreach (var item in testSinavSinaviKayitEtViewModel.TestSinavCevaplariList)
                {
                    int dogruSoruCevabi = ilgiliTestSinav.FirstOrDefault(x => x.TestSinavSorularId == item.TestSinavSorularId).SoruCevabi;

                    // soru doğru cevaplanmıştır puan ver
                    if (dogruSoruCevabi == item.SoruCevapSikki)
                    {
                        ogrenciSinavPuani += ogrenciSoruBasinaAlacagiPuan;
                    }
                }

                // puanı bulunan öğrenci puanını kayıt et
                suresiBaslamisSinavlars.OgrenciSinaviBitirmeZamani = DateTime.Now;
                suresiBaslamisSinavlars.GirilenTestSinavSonuclaris = new GirilenTestSinavSonuclari {
                    SinavPuani = ogrenciSinavPuani, GirilenTestSinavSonuclariId = Guid.NewGuid()
                };

                _unitOfWork.SaveChanges();
                return(new Result {
                    isSuccess = true, Message = "Sınav başarılı bir şekilde kayıt edildi."
                });
            }
            catch (Exception e)
            {
                _logger.LogError("Klasik sinav kaydı başarısız. İstek sahibi -> " + testSinavSinaviKayitEtViewModel.OgrenciId + " | Sinav -> " + testSinavSinaviKayitEtViewModel.SinavId + " | Detay -> " + e);
                return(new Result {
                    isSuccess = false, Message = "Sınav kaydı başarısız!"
                });
            }
        }