$varmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereDurum(1)->get(); while ($varmi->count() != 0) { $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'); foreach ($sinifs as $sinif) { $snf = Sinif::whereId($sinif->sinif_id)->first(); $sayac = $min; $mevcut = Sinavogrenci::where('sinav_id', $sinav->id)->where('derslik_id', $snf->id)->get()->count(); $say = 1; for ($i = $mevcut; $i <$snf->kapasite; $i++) { if ($ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->whereSeviye($sayac)->whereDurum(1)->first()) { $saybul = Sinavogrenci::where('sinav_id', $sinav->id)->where('derslik_id', $snf->id)->max('sira'); if ($saybul) { $say = $saybul; $say++; } $ogrenci->derslik_id = $snf->id; $ogrenci->derslikname = $snf->name; $ogrenci->sira = $say; $ogrenci->durum = 0; $ogrenci->save(); $sinif->katilan = $say; $sinif->save(); } $sayac++; if ($sayac > $max) { $sayac = $min; } } } $varmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereDurum(1)->get(); if($varmi->count()==0) { break; } } // $varmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereDurum(1)->get(); $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; $enk=1000; $toplam=0; $durum=0; foreach($dizi->sortByDesc('count') as $d) { if($d['count']>$enb) { $enb=$d['count']; $sev=$d['seviye']; } $toplam+=$d['count']; } $diger=$toplam-$enb; if($enb>=$toplam-$enb) { $durum=1; $sevsinif=Sinif::where('kurum_id',$this->kurum->id)->whereSeviye($sev)->orderBy('name', 'ASC')->get(); $sevsayi=$sevsinif->count(); $esevsayi=$sevsayi; $digersinif=Sinif::where('kurum_id',$this->kurum->id)->where('seviye'!=$sev)->orderBy('kapasite', 'DESC')->get(); $digersayi=$digersinif->count(); $edigersayi=$digersayi; } 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(); if($durum==1) { for ($i = $mevcut; $i < $sinif->kapasite; $i++) { if($sayac==$sev) { $sevsayi--; $sinifid=$sevsinif[$sevsayi]->id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->whereSeviye($sev)->whereDurum(1)->first(); if($sevsayi==0) $sevsayi=$esevsayi; } else { $digersayi--; $sinifid=$digersinif[$digersayi]->id; $ogrenci = Sinavogrenci::where('sinav_id', $sinav->id)->where('sinif_id', $sinifid)->where('seviye'!=$sev)->whereDurum(1)->first(); if($digersayi==0) $digersayi=$edigersayi; } 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++; if($i>=$sinif->kapasite) break; $enb--; if($enb==0 or $diger==0) { $durum=0; break; } } $sayac++; if($sayac>$max) $sayac=$min; } } else { } } $varmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereDurum(1)->get(); if ($varmi->count() == 0) { break; } } //durum 0 $varmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereDurum(1)->get(); $maxsinif=Sinif::where('kurum_id',$this->kurum->id)->whereSeviye($max)->orderBy('name', 'ASC')->get(); $ortasinif=Sinif::where('kurum_id',$this->kurum->id)->whereSeviye($min+1)->orderBy('name', 'ASC')->get(); $minsinif=Sinif::where('kurum_id',$this->kurum->id)->whereSeviye($min)->orderBy('name', 'ASC')->get(); $minsayi=$minsinif->count(); $ortasayi=$ortasinif->count(); $maxsayi=$maxsinif->count(); $eminsayi=$minsayi; $emaxsayi=$maxsayi; $eortasayi=$ortasayi; $maxogrsayi=Sinavogrenci::where('sinav_id', $sinav->id)->whereSeviye($max)->whereDurum(1)->get()->count(); $minogrsayi=Sinavogrenci::where('sinav_id', $sinav->id)->whereSeviye($min)->whereDurum(1)->get()->count(); $ortaogrsayi=Sinavogrenci::where('sinav_id', $sinav->id)->whereSeviye($min+1)->whereDurum(1)->get()->count(); 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++) { if($sayac==$min) { $minsayi--; $sinifid=$minsinif[$minsayi]->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]->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]->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++; if($i>=$sinif->kapasite) break; } $sayac++; if($sayac>$max) $sayac=$min; } } $varmi = Sinavogrenci::where('sinav_id', $sinav->id)->whereDurum(1)->get(); if ($varmi->count() == 0) { break; } }