예제 #1
0
        public async Task <IActionResult> PutAossOnlineSinavSorular(long id, AossOnlineSinavSorular aossOnlineSinavSorular)
        {
            if (id != aossOnlineSinavSorular.Id)
            {
                return(BadRequest());
            }

            _context.Entry(aossOnlineSinavSorular).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!AossOnlineSinavSorularExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
예제 #2
0
        public async Task <ActionResult <AossOnlineSinavSorular> > PostAossOnlineSinavSorular(AossOnlineSinavSorular aossOnlineSinavSorular)
        {
            float yeniGelen = 0, toplamPuan = 0;
            int   kolayS = 0, zorS = 0, ortaS = 0, diziBoyut = 0, dizidesira = 0;
            AossZorlukPuanlama            seciliSinavZorluk = _context.AossZorlukPuanlama.Where(x => x.OnlineSinavId == aossOnlineSinavSorular.OnlineSinavId).FirstOrDefault();
            List <AossOnlineSinavSorular> sorular           = _context.AossOnlineSinavSorular.Where(x => x.OnlineSinavId == aossOnlineSinavSorular.OnlineSinavId).ToList();

            AossSorular eklenmekIstenen                     = _context.AossSorular.Where(x => x.Id == aossOnlineSinavSorular.SoruId).FirstOrDefault();
            int         kolaySoruSayisi                     = _context.AossSorular.Where(x => x.SoruAlani == eklenmekIstenen.SoruAlani && x.Zorluk == "KOLAY").Count();
            int         ortaSoruSayisi                      = _context.AossSorular.Where(x => x.SoruAlani == eklenmekIstenen.SoruAlani && x.Zorluk == "ORTA").Count();
            int         zorSoruSayisi                       = _context.AossSorular.Where(x => x.SoruAlani == eklenmekIstenen.SoruAlani && x.Zorluk == "ZOR").Count();


            if (eklenmekIstenen.Zorluk == "ZOR")
            {
                zorS     += 1;
                yeniGelen = seciliSinavZorluk.ZorPuan;
            }
            else if (eklenmekIstenen.Zorluk == "ORTA")
            {
                ortaS    += 1;
                yeniGelen = seciliSinavZorluk.OrtaPuan;
            }
            else if (eklenmekIstenen.Zorluk == "KOLAY")
            {
                kolayS   += 1;
                yeniGelen = seciliSinavZorluk.KolayPuan;
            }
            foreach (var soru in sorular)
            {
                AossSorular seciliSoru = _context.AossSorular.Where(x => x.Id == soru.SoruId).FirstOrDefault();
                if (seciliSoru.Zorluk == "ZOR")
                {
                    zorS       += 1;
                    toplamPuan += seciliSinavZorluk.ZorPuan;
                }
                else if (seciliSoru.Zorluk == "ORTA")
                {
                    ortaS      += 1;
                    toplamPuan += seciliSinavZorluk.OrtaPuan;
                }
                else if (seciliSoru.Zorluk == "KOLAY")
                {
                    kolayS     += 1;
                    toplamPuan += seciliSinavZorluk.KolayPuan;
                }
            }
            for (int i = 0; i <= kolaySoruSayisi; i++)
            {
                for (int j = 0; j <= ortaSoruSayisi; j++)
                {
                    for (int k = 0; k <= zorSoruSayisi; k++)
                    {
                        if (i * seciliSinavZorluk.KolayPuan + j * seciliSinavZorluk.OrtaPuan + k * seciliSinavZorluk.ZorPuan == 100)
                        {
                            diziBoyut++;
                        }
                    }
                }
            }
            float[,] kombinasyonlar = new float[diziBoyut, 3];
            for (int i = 0; i <= kolaySoruSayisi; i++)
            {
                for (int j = 0; j <= ortaSoruSayisi; j++)
                {
                    for (int k = 0; k <= zorSoruSayisi; k++)
                    {
                        if (i * seciliSinavZorluk.KolayPuan + j * seciliSinavZorluk.OrtaPuan + k * seciliSinavZorluk.ZorPuan == 100)
                        {
                            kombinasyonlar[dizidesira, 0] = i;
                            kombinasyonlar[dizidesira, 1] = j;
                            kombinasyonlar[dizidesira, 2] = k;
                            dizidesira++;
                        }
                    }
                }
            }
            if (toplamPuan + yeniGelen <= 100)
            {
                if (eklenmekIstenen.Zorluk == "KOLAY")
                {
                    for (int i = 0; i < diziBoyut; i++)
                    {
                        if (kolayS <= kombinasyonlar[i, 0])
                        {
                            _context.AossOnlineSinavSorular.Add(aossOnlineSinavSorular);
                            await _context.SaveChangesAsync();

                            return(CreatedAtAction("GetAossOnlineSinavSorular", new { id = aossOnlineSinavSorular.Id }, aossOnlineSinavSorular));
                        }
                    }
                    throw new ArgumentException("Kolay Soru Ekleme Hakkınız Bitti");
                }
                else if (eklenmekIstenen.Zorluk == "ORTA")
                {
                    for (int i = 0; i < diziBoyut; i++)
                    {
                        if (ortaS <= kombinasyonlar[i, 1])
                        {
                            _context.AossOnlineSinavSorular.Add(aossOnlineSinavSorular);
                            await _context.SaveChangesAsync();

                            return(CreatedAtAction("GetAossOnlineSinavSorular", new { id = aossOnlineSinavSorular.Id }, aossOnlineSinavSorular));
                        }
                    }
                    throw new ArgumentException("ORTA Soru Ekleme Hakkınız Bitti");
                }
                else if (eklenmekIstenen.Zorluk == "ZOR")
                {
                    for (int i = 0; i < diziBoyut; i++)
                    {
                        if (zorS <= kombinasyonlar[i, 2])
                        {
                            _context.AossOnlineSinavSorular.Add(aossOnlineSinavSorular);
                            await _context.SaveChangesAsync();

                            return(CreatedAtAction("GetAossOnlineSinavSorular", new { id = aossOnlineSinavSorular.Id }, aossOnlineSinavSorular));
                        }
                    }
                    throw new ArgumentException("Zor Soru Ekleme Hakkınız Bitti ");
                }
                throw new ArgumentException("Hata");
            }
            else
            {
                throw new ArgumentException("Bu soruyu ekleyemezsiniz. 100 puan aşılamaz.");
            }
        }