$sinifs = Sinavsinif::where('sinav_id', $sinav->id)->orderBy('kapasite', 'ASC')->get(); $min = Sinavsinif::where('sinav_id', $sinav->id)->min('seviye'); $max = Sinavsinif::where('sinav_id', $sinav->id)->max('seviye'); $sonuc = $max - $min; $sinifs = Sinavsinif::where('sinav_id', $sinav->id)->orderBy('kapasite', 'DESC')->get(); if ($sonuc == 0) { //tek sınıf var karma $varmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereDurum(1)->get(); $minsinif = Sinavsinif::where('sinav_id', $sinav->id)->whereSeviye($min)->orderBy('name', 'ASC')->get(); $minsayi = $minsinif->count(); $eminsayi = $minsayi; while ($varmi->count() != 0) { foreach ($sinifs as $sinif) { $say = 1; $mevcut = Sinavogrenci::where('sinav_id', $sinav->id)->where('derslik_id', $sinif->sinif_id)->get()->count(); for ($i = $mevcut; $i < $sinif->kapasite; $i++) { $minsayi--; $sinifid = $minsinif[$minsayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($min)->whereDurum(1)->first(); if ($minsayi == 0) $minsayi = $eminsayi; if ($ogrenci) { if ($say = Sinavogrenci::where('sinav_id', $sinav->id)->where('derslik_id', $sinif->sinif_id)->max('sira')) { $say++; } else { $say = 1; } $ogrenci->derslik_id = $sinif->sinif_id; $ogrenci->derslikname = $sinif->name; $ogrenci->sira = $say; $ogrenci->durum = 0; $ogrenci->save(); $sinif->katilan = $say; $sinif->save(); $i = $say; $minvarmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereSeviye($min)->whereDurum(1)->get()->count(); if ($i >= $sinif->kapasite) break; } } } $varmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereDurum(1)->get(); if ($varmi->count() == 0) { break; } } } else if ($sonuc == 1) { //2 sınıf karma $varmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereDurum(1)->get(); $maxsinif = Sinavsinif::where('sinav_id', $sinav->id)->whereSeviye($max)->orderBy('name', 'ASC')->get(); $minsinif = Sinavsinif::where('sinav_id', $sinav->id)->whereSeviye($min)->orderBy('name', 'ASC')->get(); $minsayi = $minsinif->count(); // $minsayi=0; $maxsayi = $maxsinif->count(); $eminsayi = $minsayi; $emaxsayi = $maxsayi; while ($varmi->count() != 0) { foreach ($sinifs as $sinif) { $say = 1; $sayac = $min; $mevcut = Sinavogrenci::where('sinav_id', $sinav->id)->where('derslik_id', $sinif->sinif_id)->get()->count(); for ($i = $mevcut; $i < $sinif->kapasite; $i++) { //kontrol if ($sayac == $min) { $minsayi--; $sinifid = $minsinif[$minsayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($min)->whereDurum(1)->first(); if ($minsayi == 0) $minsayi = $eminsayi; } else if ($sayac == $max) { $maxsayi--; $sinifid = $maxsinif[$maxsayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($max)->whereDurum(1)->first(); if ($maxsayi == 0) $maxsayi = $emaxsayi; } if ($ogrenci) { if ($say = Sinavogrenci::where('sinav_id', $sinav->id)->where('derslik_id', $sinif->sinif_id)->max('sira')) { $say++; } else { $say = 1; } $ogrenci->derslik_id = $sinif->sinif_id; $ogrenci->derslikname = $sinif->name; $ogrenci->sira = $say; $ogrenci->durum = 0; $ogrenci->save(); $sinif->katilan = $say; $sinif->save(); $i = $say; $minvarmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereSeviye($min)->whereDurum(1)->get()->count(); $maxvarmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereSeviye($max)->whereDurum(1)->get()->count(); if ($i >= $sinif->kapasite) break; } if ($minvarmi > 0 and $maxvarmi > 0) { $sayac++; } else if ($minvarmi > 0 and $maxvarmi == 0) { $sayac = $min; } else if ($maxvarmi > 0 and $minvarmi == 0) { $sayac = $max; } else if ($minvarmi == 0 and $maxvarmi == 0) { break; } if ($sayac > $max) $sayac = $min; } } $varmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereDurum(1)->get(); if ($varmi->count() == 0) { break; } } } else if ($sonuc == 2) { //3 sınıf karma //durum 1 $varmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereDurum(1)->get(); $maxsinif = Sinavsinif::where('sinav_id', $sinav->id)->whereSeviye($max)->orderBy('name', 'ASC')->get(); $ortasinif = Sinavsinif::where('sinav_id', $sinav->id)->whereSeviye($min + 1)->orderBy('name', 'ASC')->get(); $minsinif = Sinavsinif::where('sinav_id', $sinav->id)->whereSeviye($min)->orderBy('name', 'ASC')->get(); // $maxogrsayi=Sinavogrenci::where('sinav_id',$sinav->id)->whereSeviye($max)->get()->count(); // $ortaogrsayi=Sinavogrenci::where('sinav_id',$sinav->id)->whereSeviye($min+1)->get()->count(); // $minogrsayi=Sinavogrenci::where('sinav_id',$sinav->id)->whereSeviye($min)->get()->count(); $minsayi = $minsinif->count(); $ortasayi = $ortasinif->count(); $maxsayi = $maxsinif->count(); $eminsayi = $minsayi; $emaxsayi = $maxsayi; $eortasayi = $ortasayi; $dizi = collect(); for ($i = $max; $i >= $min; $i--) { $sin = Sinavogrenci::where('sinav_id', $sinav->id)->whereSeviye($i)->whereDurum(1)->get(); $dizi->push(['count' => $sin->count(), 'seviye' => $i]); } $enb = 0; $toplam = 0; $durum = 0; foreach ($dizi->sortByDesc('count') as $d) { if ($d['count'] > $enb) { $enb = $d['count']; $sev = $d['seviye']; } $toplam += $d['count']; } $durum = 1; $sevsinif = Sinavsinif::where('sinav_id', $sinav->id)->whereSeviye($sev)->orderBy('name', 'ASC')->get(); $sevogrsayi=Sinavogrenci::where('sinav_id',$sinav->id)->whereSeviye($sev)->get()->count(); $sevsayi = $sevsinif->count(); $esevsayi = $sevsayi; while ($varmi->count() != 0) { foreach ($sinifs as $sinif) { $say = 1; $sayac = 2; $durum = 0; $sinifsay = $min; $mevcut = Sinavogrenci::where('sinav_id', $sinav->id)->where('derslik_id', $sinif->sinif_id)->get()->count(); for ($i = $mevcut; $i < $sinif->kapasite; $i++) { if ($sayac % 2 == 0) { $sevsayi--; $sinifid = $sevsinif[$sevsayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($sev)->whereDurum(1)->first(); if ($sevsayi == 0) $sevsayi = $esevsayi; } else { if ($durum == 0) { if ($sinifsay != $sev) { if ($sinifsay == $min) { $minsayi--; $sinifid = $minsinif[$minsayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($min)->whereDurum(1)->first(); if ($minsayi == 0) $minsayi = $eminsayi; } else if ($sinifsay == $max) { $maxsayi--; $sinifid = $maxsinif[$maxsayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($max)->whereDurum(1)->first(); if ($maxsayi == 0) $maxsayi = $emaxsayi; } else { $ortasayi--; $sinifid = $ortasinif[$ortasayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($min + 1)->whereDurum(1)->first(); if ($ortasayi == 0) $ortasayi = $eortasayi; } } else { if ($sinifsay == $min) { $sinifsay = $max; $maxsayi--; $sinifid = $maxsinif[$maxsayi]->sinif_id; if ($maxsayi == 0) $maxsayi = $emaxsayi; } else if ($sinifsay == $maxsayi) { $sinifsay = $min; $minsayi--; $sinifid = $minsinif[$minsayi]->sinif_id; if ($minsayi == 0) $minsayi = $eminsayi; } else { $sinifsay = $min + 1; $ortasayi--; $sinifid = $ortasinif[$ortasayi]->sinif_id; if ($ortasayi == 0) $ortasayi = $eortasayi; } $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->whereSeviye($sinifsay)->whereDurum(1)->first(); } } else { if ($sinifsay == $min) { $minsayi--; $sinifid = $minsinif[$minsayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($min)->whereDurum(1)->first(); if ($minsayi == 0) $minsayi = $eminsayi; } else if ($sinifsay == $max) { $maxsayi--; $sinifid = $maxsinif[$maxsayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($max)->whereDurum(1)->first(); if ($maxsayi == 0) $maxsayi = $emaxsayi; } else { $ortasayi--; $sinifid = $ortasinif[$ortasayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($min + 1)->whereDurum(1)->first(); if ($ortasayi == 0) $ortasayi = $eortasayi; } } } if ($ogrenci) { if ($say = Sinavogrenci::where('sinav_id', $sinav->id)->where('derslik_id', $sinif->sinif_id)->max('sira')) { $say++; } else { $say = 1; } $ogrenci->derslik_id = $sinif->sinif_id; $ogrenci->derslikname = $sinif->name; $ogrenci->sira = $say; $ogrenci->durum = 0; $ogrenci->save(); $sinif->katilan = $say; $sinif->save(); $i = $say; // if($ogrenci->seviye==$min+1) // $ortaogrsayi--; // else if($ogrenci->seviye==$min) // $minogrsayi--; // else if($ogrenci->seviye==$max) // $maxogrsayi--; $sevvarmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereSeviye($sev)->whereDurum(1)->get()->count(); $digervarmi = Sinavogrenci::where('sinav_id', $sinav->id)->where('seviye', '!=', $sev)->whereDurum(1)->get()->count(); if ($i >= $sinif->kapasite) break; } if ($sevvarmi > $digervarmi) { $sayac++; $sinifsay++; if ($sinifsay > $max) $sinifsay = $min; } else if ($sevvarmi > 0 and $digervarmi == 0) { $sayac = 2; } else { $sayac = 3; $durum = 1; $sinifsay++; if ($sinifsay > $max) $sinifsay = $min; } } } $varmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereDurum(1)->get(); if ($varmi->count() == 0) { break; } } } else if ($sonuc == 3) { //4 sınıf karma //durum 1 $varmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereDurum(1)->get(); $orta = $min + 1; $orta2 = $min + 2; $maxsinif = Sinavsinif::where('sinav_id', $sinav->id)->whereSeviye($max)->orderBy('name', 'ASC')->get(); $ortasinif = Sinavsinif::where('sinav_id', $sinav->id)->whereSeviye($orta)->orderBy('name', 'ASC')->get(); $ortasinif2 = Sinavsinif::where('sinav_id', $sinav->id)->whereSeviye($orta2)->orderBy('name', 'ASC')->get(); $minsinif = Sinavsinif::where('sinav_id', $sinav->id)->whereSeviye($min)->orderBy('name', 'ASC')->get(); $minsayi = $minsinif->count(); $ortasayi = $ortasinif->count(); $ortasayi2 = $ortasinif2->count(); $maxsayi = $maxsinif->count(); $eminsayi = $minsayi; $emaxsayi = $maxsayi; $eortasayi = $ortasayi; $eortasayi2 = $ortasayi2; $dizi = collect(); for ($i = $max; $i >= $min; $i--) { $sin = Sinavogrenci::where('sinav_id', $sinav->id)->whereSeviye($i)->whereDurum(1)->get(); $dizi->push(['count' => $sin->count(), 'seviye' => $i]); } $enb = 0; $toplam = 0; $durum = 0; foreach ($dizi->sortByDesc('count') as $d) { if ($d['count'] > $enb) { $enb = $d['count']; $sev = $d['seviye']; } $toplam += $d['count']; } $durum = 1; $sevsinif = Sinavsinif::where('sinav_id', $sinav->id)->whereSeviye($sev)->orderBy('name', 'ASC')->get(); $sevsayi = $sevsinif->count(); $esevsayi = $sevsayi; while ($varmi->count() != 0) { foreach ($sinifs as $sinif) { $say = 1; $sayac = 2; $durum = 0; $sinifsay = $min; $mevcut = Sinavogrenci::where('sinav_id', $sinav->id)->where('derslik_id', $sinif->sinif_id)->get()->count(); for ($i = $mevcut; $i <= $sinif->kapasite; $i++) { if ($sayac % 2 == 0) { $sevsayi--; $sinifid = $sevsinif[$sevsayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($sev)->whereDurum(1)->first(); if ($sevsayi == 0) $sevsayi = $esevsayi; } else { if ($durum == 0) { if ($sinifsay != $sev) { if ($sinifsay == $min) { $minsayi--; $sinifid = $minsinif[$minsayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($min)->whereDurum(1)->first(); if ($minsayi == 0) $minsayi = $eminsayi; } else if ($sinifsay == $max) { $maxsayi--; $sinifid = $maxsinif[$maxsayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($max)->whereDurum(1)->first(); if ($maxsayi == 0) $maxsayi = $emaxsayi; } else if ($sinifsay == $orta) { $ortasayi--; $sinifid = $ortasinif[$ortasayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($min + 1)->whereDurum(1)->first(); if ($ortasayi == 0) $ortasayi = $eortasayi; } else if ($sinifsay == $orta2) { $ortasayi2--; $sinifid = $ortasinif2[$ortasayi2]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($min + 2)->whereDurum(1)->first(); if ($ortasayi2 == 0) $ortasayi2 = $eortasayi2; } } else { if ($sinifsay == $min) { $sinifsay = $orta2; $maxsayi--; $sinifid = $maxsinif[$maxsayi]->sinif_id; if ($maxsayi == 0) $maxsayi = $emaxsayi; } else if ($sinifsay == $max) { $sinifsay = $orta; $minsayi--; $sinifid = $minsinif[$minsayi]->sinif_id; if ($minsayi == 0) $minsayi = $eminsayi; } else if ($sinifsay == $orta) { $sinifsay = $min; $ortasayi--; $sinifid = $ortasinif[$ortasayi]->sinif_id; if ($ortasayi == 0) $ortasayi = $eortasayi; } else if ($sinifsay == $orta2) { $sinifsay = $max; $ortasayi2--; $sinifid = $ortasinif2[$ortasayi2]->sinif_id; if ($ortasayi2 == 0) $ortasayi2 = $eortasayi2; } $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->whereSeviye($sinifsay)->whereDurum(1)->first(); } } else { if ($sinifsay == $min) { $minsayi--; $sinifid = $minsinif[$minsayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($min)->whereDurum(1)->first(); if ($minsayi == 0) $minsayi = $eminsayi; } else if ($sinifsay == $max) { $maxsayi--; $sinifid = $maxsinif[$maxsayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($max)->whereDurum(1)->first(); if ($maxsayi == 0) $maxsayi = $emaxsayi; } else if ($sinifsay == $orta) { $ortasayi--; $sinifid = $ortasinif[$ortasayi]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($min + 1)->whereDurum(1)->first(); if ($ortasayi == 0) $ortasayi = $eortasayi; } else if ($sinifsay == $orta2) { $ortasayi2--; $sinifid = $ortasinif[$ortasayi2]->sinif_id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($min + 2)->whereDurum(1)->first(); if ($ortasayi2 == 0) $ortasayi2 = $eortasayi2; } } } if ($ogrenci) { if ($say = Sinavogrenci::where('sinav_id', $sinav->id)->where('derslik_id', $sinif->sinif_id)->max('sira')) { $say++; } else { $say = 1; } $ogrenci->derslik_id = $sinif->sinif_id; $ogrenci->derslikname = $sinif->name; $ogrenci->sira = $say; $ogrenci->durum = 0; $ogrenci->save(); $sinif->katilan = $say; $sinif->save(); $i = $say; $sevvarmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereSeviye($sev)->whereDurum(1)->get()->count(); $digervarmi = Sinavogrenci::where('sinav_id', $sinav->id)->where('seviye', '!=', $sev)->whereDurum(1)->get()->count(); if ($i >= $sinif->kapasite) break; } if ($sevvarmi > $digervarmi) { $sayac++; if ($sayac % 2 == 1) { $sinifsay++; if ($sinifsay > $max) $sinifsay = $min; } } else if ($sevvarmi > 0 and $digervarmi == 0) { $sayac = 2; } else { $sayac = 3; $durum = 1; $sinifsay++; if ($sinifsay > $max) $sinifsay = $min; } } } $varmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereDurum(1)->get(); if ($varmi->count() == 0) { break; } } } // toastr()->success('Sınav kaydı eklendi ve sınıflar oluşturuldu', 'Başarılı'); return redirect()->back();