//yoksa ekler varsa günceller public ActionResult AyniGunNobetTutanlariTabloyaEkle() { var nobetUstGrup = _nobetUstGrupSessionService.GetSession("nobetUstGrup"); var ikiliEczanelerTumu = _ayniGunTutulanNobetService.GetDetaylar(nobetUstGrup.Id); var sonuclar = _eczaneNobetSonucService.GetSonuclarUstGrupBaslamaTarihindenSonra(nobetUstGrup.Id); var ayniGunNobetTutanEczaneler = _eczaneNobetOrtakService.GetAyniGunNobetTutanEczaneler(sonuclar); var ayniGunNobetSayisiGrouped = _eczaneNobetOrtakService.AyniGunTutulanNobetSayisiniHesapla(ayniGunNobetTutanEczaneler); _ayniGunTutulanNobetService.AyniGunNobetSayisiniGuncelle(ayniGunNobetSayisiGrouped, AyniGunNobetEklemeTuru.Eşitle); ViewBag.IkiliEczaneSayisi = ikiliEczanelerTumu.Count; ViewBag.AyniGunNobetTutanEczaneler = ayniGunNobetTutanEczaneler.Count; var ikiliEczaneler = new List <AyniGunTutulanNobetDetay>(); return(View("Index", ikiliEczaneler)); }
public EczaneNobetSonucModel ModelCoz(EczaneNobetModelCoz eczaneNobetModelCoz) { //var nobetGruplarTumu = _nobetGrupService.GetListByNobetUstGrupId(eczaneNobetModelCoz.NobetUstGrupId); var nobetGruplar = eczaneNobetModelCoz.NobetGrupId.ToList(); var nobetGruplarSirali = new List <NobetGruplarCozumSirali>(); var sonuclar = new EczaneNobetSonucModel(); var indis = 0; foreach (var nobetGrupId in nobetGruplar) { nobetGruplarSirali.Add(new NobetGruplarCozumSirali { NobetGrupId = nobetGrupId, SiraId = indis }); indis++; } if (nobetGruplar.Count > 0) { #region başka gruplarla ilişkisi olan gruplar var eczaneGruplar = _eczaneGrupService.GetDetaylarAktifGruplar(eczaneNobetModelCoz.NobetUstGrupId) .Where(d => nobetGruplar.Contains(d.NobetGrupId)).ToList(); //Birbiri ile ilişkili grupların gruplanması var nobetGruplarBagDurumu = _eczaneGrupService.EsGrupluEczanelerinGruplariniBelirleTumu(eczaneGruplar, nobetGruplar); var tumNobetGruplar = from g in nobetGruplarSirali let e = nobetGruplarBagDurumu.SingleOrDefault(x => x.NobetGrupId == g.NobetGrupId) ?? new NobetBagGrup() orderby e.Id, g.SiraId select new NobetGrupBagGrup { BagId = e.Id, NobetGrupId = g.NobetGrupId }; #endregion var nobetGrupBaglar = tumNobetGruplar.Select(s => s.BagId).Distinct().ToList(); #region Karar kuralları var model = new EczaneNobetDataModelParametre { AyBitis = eczaneNobetModelCoz.AyBitis, NobetGorevTipId = eczaneNobetModelCoz.NobetGorevTipId, NobetGrupGorevTipler = eczaneNobetModelCoz.NobetGrupGorevTipler, NobetGrupId = eczaneNobetModelCoz.NobetGrupId, NobetUstGrupId = eczaneNobetModelCoz.NobetUstGrupId, NobetUstGrupBaslangicTarihi = eczaneNobetModelCoz.NobetUstGrupBaslangicTarihi, BuAyVeSonrasi = eczaneNobetModelCoz.BuAyVeSonrasi, BaslangicTarihi = eczaneNobetModelCoz.BaslangicTarihi, BitisTarihi = eczaneNobetModelCoz.BitisTarihi, TimeLimit = eczaneNobetModelCoz.TimeLimit, CalismaSayisi = eczaneNobetModelCoz.CalismaSayisi }; var aylar = _takvimService.GetAylar() .Where(w => w.Id >= model.AyBitis) .OrderBy(o => o.Id).ToList(); var ayIndis = 0; if (eczaneNobetModelCoz.BuAyVeSonrasi && eczaneNobetModelCoz.CozumTercih == 0 && eczaneNobetModelCoz.SonrakiAylarRasgele) {//seçilen ay ve sonrası, gruplar öncelikli - sonraki aylarda gruplar rasgele sıralı foreach (var ay in aylar) { if (eczaneNobetModelCoz.AyBitis == ay.Id) {//ilk ay arayüzdeki sıra foreach (var item in nobetGrupBaglar) { var nobetGrupIdListe = tumNobetGruplar .Where(x => x.BagId == item) .Select(s => s.NobetGrupId); foreach (var nobetGrupId in nobetGrupIdListe) { var tarihBas = model.BaslangicTarihi; var tarihBit = model.BitisTarihi; var aydakiGunSayisi = DateTime.DaysInMonth(tarihBit.Year, ay.Id); var baslangicGunu = 1; if (ayIndis == 1) { baslangicGunu = tarihBas.Day; } model.BaslangicTarihi = new DateTime(tarihBas.Year, ay.Id, baslangicGunu); model.BitisTarihi = new DateTime(tarihBit.Year, ay.Id, aydakiGunSayisi); model.NobetGrupId = new int[] { nobetGrupId }; var data = EczaneNobetDataModel(model); //return EczaneNobetCozSonuclaraEkle(data); var sonuc = EczaneNobetCozSonuclaraEkle(data); sonuclar.ObjectiveValue += sonuc.ObjectiveValue; sonuclar.KararDegikeniSayisi += sonuc.KararDegikeniSayisi; sonuclar.KisitSayisi += sonuc.KisitSayisi; sonuclar.CozumSuresi += sonuc.CozumSuresi; sonuclar.CalismaSayisi += sonuc.CalismaSayisi; sonuclar.IterasyonSayisi += sonuc.IterasyonSayisi; } var sonuclarTumu = _eczaneNobetSonucService.GetSonuclarUstGrupBaslamaTarihindenSonra(eczaneNobetModelCoz.NobetUstGrupId); var ayniGunNobetTutanEczaneler = _eczaneNobetOrtakService.GetAyniGunNobetTutanEczaneler(sonuclarTumu); _ayniGunTutulanNobetService.AyniGunNobetTutanlariTabloyaEkle(ayniGunNobetTutanEczaneler); } } else { foreach (var item in nobetGrupBaglar) { var r = new Random(); var nobetGrupIdListe = tumNobetGruplar .Where(x => x.BagId == item) .Select(s => s.NobetGrupId) .OrderBy(x => r.NextDouble()); foreach (var nobetGrupId in nobetGrupIdListe) { var tarihBas = model.BaslangicTarihi; var tarihBit = model.BitisTarihi; var aydakiGunSayisi = DateTime.DaysInMonth(tarihBit.Year, ay.Id); var baslangicGunu = 1; if (ayIndis == 1) { baslangicGunu = tarihBas.Day; } model.BaslangicTarihi = new DateTime(tarihBas.Year, ay.Id, baslangicGunu); model.BitisTarihi = new DateTime(tarihBit.Year, ay.Id, aydakiGunSayisi); model.NobetGrupId = new int[] { nobetGrupId }; var data = EczaneNobetDataModel(model); var sonuc = EczaneNobetCozSonuclaraEkle(data); sonuclar.ObjectiveValue += sonuc.ObjectiveValue; sonuclar.KararDegikeniSayisi += sonuc.KararDegikeniSayisi; sonuclar.KisitSayisi += sonuc.KisitSayisi; sonuclar.CozumSuresi += sonuc.CozumSuresi; sonuclar.CalismaSayisi += sonuc.CalismaSayisi; sonuclar.IterasyonSayisi += sonuc.IterasyonSayisi; } } var sonuclarTumu = _eczaneNobetSonucService.GetSonuclarUstGrupBaslamaTarihindenSonra(eczaneNobetModelCoz.NobetUstGrupId); var ayniGunNobetTutanEczaneler = _eczaneNobetOrtakService.GetAyniGunNobetTutanEczaneler(sonuclarTumu); _ayniGunTutulanNobetService.AyniGunNobetTutanlariTabloyaEkle(ayniGunNobetTutanEczaneler); } } return(sonuclar); } else if (eczaneNobetModelCoz.BuAyVeSonrasi && eczaneNobetModelCoz.CozumTercih == 0) {//seçilen ay ve sonrası, gruplar öncelikli foreach (var ay in aylar) { ayIndis++; if (tumNobetGruplar.Count() == 1) { model.AyBitis = ay.Id; var data = EczaneNobetDataModel(model); return(EczaneNobetCozSonuclaraEkle(data)); } else { foreach (var item in nobetGrupBaglar) { var nobetGrupIdListe = tumNobetGruplar .Where(x => x.BagId == item) .Select(s => s.NobetGrupId); foreach (var nobetGrupId in nobetGrupIdListe) { var tarihBas = model.BaslangicTarihi; var tarihBit = model.BitisTarihi; var aydakiGunSayisi = DateTime.DaysInMonth(tarihBit.Year, ay.Id); var baslangicGunu = 1; if (ayIndis == 1) { baslangicGunu = tarihBas.Day; } model.BaslangicTarihi = new DateTime(tarihBas.Year, ay.Id, baslangicGunu); model.BitisTarihi = new DateTime(tarihBit.Year, ay.Id, aydakiGunSayisi); model.NobetGrupId = new int[] { nobetGrupId }; var data = EczaneNobetDataModel(model); var sonuc = EczaneNobetCozSonuclaraEkle(data); sonuclar.ObjectiveValue += sonuc.ObjectiveValue; sonuclar.KararDegikeniSayisi += sonuc.KararDegikeniSayisi; sonuclar.KisitSayisi += sonuc.KisitSayisi; sonuclar.CozumSuresi += sonuc.CozumSuresi; sonuclar.CalismaSayisi += sonuc.CalismaSayisi; sonuclar.IterasyonSayisi += sonuc.IterasyonSayisi; } } } var sonuclarTumu = _eczaneNobetSonucService.GetSonuclarUstGrupBaslamaTarihindenSonra(eczaneNobetModelCoz.NobetUstGrupId); var ayniGunNobetTutanEczaneler = _eczaneNobetOrtakService.GetAyniGunNobetTutanEczaneler(sonuclarTumu); _ayniGunTutulanNobetService.AyniGunNobetTutanlariTabloyaEkle(ayniGunNobetTutanEczaneler); } return(sonuclar); } else if (eczaneNobetModelCoz.BuAyVeSonrasi && eczaneNobetModelCoz.CozumTercih == 1) {//seçilen ay ve sonrası, gruplar önceliksiz foreach (var ay in aylar) { ayIndis++; foreach (var item in nobetGrupBaglar) { var nobetGrupIdListe = tumNobetGruplar .Where(x => x.BagId == item) .Select(s => s.NobetGrupId) .ToArray(); var tarihBas = model.BaslangicTarihi; var tarihBit = model.BitisTarihi; var aydakiGunSayisi = DateTime.DaysInMonth(tarihBit.Year, ay.Id); var baslangicGunu = 1; if (ayIndis == 1) { baslangicGunu = tarihBas.Day; } model.BaslangicTarihi = new DateTime(tarihBas.Year, ay.Id, baslangicGunu); model.BitisTarihi = new DateTime(tarihBit.Year, ay.Id, aydakiGunSayisi); model.NobetGrupId = nobetGrupIdListe; var data = EczaneNobetDataModel(model); var sonuc = EczaneNobetCozSonuclaraEkle(data); sonuclar.ObjectiveValue += sonuc.ObjectiveValue; sonuclar.KararDegikeniSayisi += sonuc.KararDegikeniSayisi; sonuclar.KisitSayisi += sonuc.KisitSayisi; sonuclar.CozumSuresi += sonuc.CozumSuresi; sonuclar.CalismaSayisi += sonuc.CalismaSayisi; sonuclar.IterasyonSayisi += sonuc.IterasyonSayisi; } } var sonuclarTumu = _eczaneNobetSonucService.GetSonuclarUstGrupBaslamaTarihindenSonra(eczaneNobetModelCoz.NobetUstGrupId); var ayniGunNobetTutanEczaneler = _eczaneNobetOrtakService.GetAyniGunNobetTutanEczaneler(sonuclarTumu); _ayniGunTutulanNobetService.AyniGunNobetTutanlariTabloyaEkle(ayniGunNobetTutanEczaneler); return(sonuclar); } else if (eczaneNobetModelCoz.CozumTercih == 0) {//ay, gruplar öncelikli if (tumNobetGruplar.Count() == 1) { var data = EczaneNobetDataModel(model); return(EczaneNobetCozAktifiGuncelle(data)); } else { foreach (var item in nobetGrupBaglar) { var nobetGrupIdListe = tumNobetGruplar .Where(x => x.BagId == item) .Select(s => s.NobetGrupId) .ToArray(); foreach (var nobetGrupId in nobetGrupIdListe) { model.NobetGrupId = new int[] { nobetGrupId }; var data = EczaneNobetDataModel(model); var sonuc = EczaneNobetCozSonuclaraEkle(data); sonuclar.ObjectiveValue += sonuc.ObjectiveValue; sonuclar.KararDegikeniSayisi += sonuc.KararDegikeniSayisi; sonuclar.KisitSayisi += sonuc.KisitSayisi; sonuclar.CozumSuresi += sonuc.CozumSuresi; sonuclar.CalismaSayisi += sonuc.CalismaSayisi; sonuclar.IterasyonSayisi += sonuc.IterasyonSayisi; } } var sonuclarTumu = _eczaneNobetSonucService.GetSonuclarUstGrupBaslamaTarihindenSonra(eczaneNobetModelCoz.NobetUstGrupId); var ayniGunNobetTutanEczaneler = _eczaneNobetOrtakService.GetAyniGunNobetTutanEczaneler(sonuclarTumu); _ayniGunTutulanNobetService.AyniGunNobetTutanlariTabloyaEkle(ayniGunNobetTutanEczaneler); return(sonuclar); } } else if (eczaneNobetModelCoz.CozumTercih == 1) {//ay, gruplar önceliksiz foreach (var item in nobetGrupBaglar) { var nobetGrupIdListe = tumNobetGruplar .Where(x => x.BagId == item) .Select(s => s.NobetGrupId) .ToArray(); model.NobetGrupId = nobetGrupIdListe; var data = EczaneNobetDataModel(model); //return EczaneNobetCozAktifiGuncelle(data); sonuclar = EczaneNobetCozAktifiGuncelle(data); } //var sonuclarTumu = _eczaneNobetSonucService.GetSonuclarUstGrupBaslamaTarihindenSonra(eczaneNobetModelCoz.NobetUstGrupId); //var sonuclarTumu = _eczaneNobetSonucAktifService.GetSonuclar2(eczaneNobetModelCoz.NobetUstGrupId); //var ayniGunNobetTutanEczaneler = _eczaneNobetOrtakService.GetAyniGunNobetTutanEczaneler(sonuclarTumu); //var ayniGunNobetSayisiGrouped = _eczaneNobetOrtakService.AyniGunTutulanNobetSayisiniHesapla(ayniGunNobetTutanEczaneler); //_ayniGunTutulanNobetService.AyniGunNobetSayisiniGuncelle(ayniGunNobetSayisiGrouped, azaltilsinMi: false); return(sonuclar); } else {//diğer throw new Exception("Nöbet yazdırma kriter seçimi hatalıdır. Lütfen kontrol ediniz."); } #endregion } return(sonuclar); }