private OsmaniyeDataModel EczaneNobetDataModel(EczaneNobetDataModelParametre eczaneNobetDataModelParametre) { #region parametreler var nobetUstGrupId = eczaneNobetDataModelParametre.NobetUstGrupId; var nobetGrupIdListe = eczaneNobetDataModelParametre.NobetGrupId.ToList(); //var nobetGorevTipId = eczaneNobetDataModelParametre.NobetGorevTipId; var nobetUstGrupBaslangicTarihi = eczaneNobetDataModelParametre.NobetUstGrupBaslangicTarihi; var baslangicTarihi = eczaneNobetDataModelParametre.BaslangicTarihi; var bitisTarihi = eczaneNobetDataModelParametre.BitisTarihi; var nobetGrupGorevTipler = eczaneNobetDataModelParametre.NobetGrupGorevTipler; var nobetGorevTipler = eczaneNobetDataModelParametre.NobetGrupGorevTipler.Select(s => s.NobetGorevTipId).Distinct().ToList(); #endregion if (baslangicTarihi < nobetUstGrupBaslangicTarihi) { throw new Exception($"Nöbet başlangıç tarihi <strong>({baslangicTarihi.ToShortDateString()})</strong> üst grup başlama tarihinden <strong>({nobetUstGrupBaslangicTarihi.ToShortDateString()})</strong> küçük olamaz."); } var debugYapilacakEczaneler = _debugEczaneService.GetDetaylarAktifOlanlar(nobetUstGrupId); var nobetGruplar = _nobetGrupService.GetDetaylar(nobetGrupIdListe).OrderBy(s => s.Id).ToList(); //var nobetGrupGorevTipler = _nobetGrupGorevTipService.GetDetaylar(nobetGrupIdListe); //nobetGorevTipId, var eczaneNobetSonuclar = _eczaneNobetSonucService.GetSonuclar(nobetUstGrupId); var eczaneNobetMazeretNobettenDusenler = new List <EczaneNobetMazeretSayilari>(); var mazeret = _nobetUstGrupKisitService.GetKisitPasifMi("mazeret", nobetUstGrupId); if (mazeret) { eczaneNobetMazeretNobettenDusenler = _eczaneNobetMazeretService.GetEczaneNobetMazeretSayilari(baslangicTarihi, bitisTarihi, nobetGrupIdListe); } var eczaneNobetGruplarTumu = _eczaneNobetGrupService.GetDetaylar(nobetGrupIdListe, baslangicTarihi, bitisTarihi) .Where(w => !eczaneNobetMazeretNobettenDusenler.Select(s => s.EczaneNobetGrupId).Contains(w.Id) //&& w.EczaneAdi == "ÖZGÜR" ).ToList(); var nobetGorevTipId = 1; if (!nobetGorevTipler.Contains(nobetGorevTipId)) { nobetGorevTipId = 0; } var eczaneNobetGruplarGorevTip1 = eczaneNobetGruplarTumu .Where(w => w.NobetGorevTipId == nobetGorevTipId).ToList(); nobetGorevTipId = 2; if (!nobetGorevTipler.Contains(nobetGorevTipId)) { nobetGorevTipId = 0; } var eczaneNobetGruplarGorevTip2 = eczaneNobetGruplarTumu .Where(w => w.NobetGorevTipId == nobetGorevTipId).ToList(); var eczaneNobetSonuclarOncekiAylar = eczaneNobetSonuclar .Where(w => w.Tarih >= nobetUstGrupBaslangicTarihi && eczaneNobetGruplarTumu.Select(s => s.Id).Contains(w.EczaneNobetGrupId) //görevtip: tümü //&& eczaneNobetGruplarGorevTip1.Select(s => s.Id).Contains(w.EczaneNobetGrupId) //görevtip: 1 ).ToList(); var eczaneNobetSonuclarCozulenGruplar = eczaneNobetSonuclar .Where(w => eczaneNobetGruplarTumu.Select(s => s.Id).Contains(w.EczaneNobetGrupId)).ToList(); var son3Ay = baslangicTarihi.AddMonths(-2); var eczaneNobetSonuclarSon3Ay = eczaneNobetSonuclarCozulenGruplar .Where(w => w.Tarih >= son3Ay).ToList(); var sonuclarKontrol = _eczaneNobetSonucService.GetSonuclar(baslangicTarihi, bitisTarihi, eczaneNobetSonuclarCozulenGruplar); if (sonuclarKontrol.Count > 0) { throw new Exception("Kriterlere uygun <strong>daha önce yazılmış nöbetler</strong> bulunmaktadır. Lütfen kontrol ediniz!"); } var enSonNobetler = _eczaneNobetOrtakService.GetEczaneNobetGrupGunKuralIstatistik(eczaneNobetGruplarTumu, eczaneNobetSonuclarCozulenGruplar); var enSonNobetlerSon3Ay = _eczaneNobetOrtakService.GetEczaneNobetGrupGunKuralIstatistik(eczaneNobetGruplarTumu, eczaneNobetSonuclarSon3Ay); var eczaneNobetGrupGunKuralIstatistikYatay = _eczaneNobetOrtakService.GetEczaneNobetGrupGunKuralIstatistikYatay(enSonNobetler); var eczaneNobetGrupGunKuralIstatistikYataySon3Ay = _eczaneNobetOrtakService.GetEczaneNobetGrupGunKuralIstatistikYatay(enSonNobetlerSon3Ay); //var bak = eczaneNobetGrupGunKuralIstatistikYatay.Where(w => w.NobetGorevTipId == 2).ToList(); var anahtarListe = eczaneNobetSonuclar .Where(w => w.Tarih < nobetUstGrupBaslangicTarihi && nobetGrupIdListe.Contains(w.NobetGrupId)).ToList(); //var haftaIciAnahtarListeTumEczaneler = _takvimService.AnahtarListeyiBuGuneTasi(nobetGrupIdListe, 1, nobetUstGrupBaslangicTarihi, eczaneNobetGruplarTumu, eczaneNobetGrupGunKuralIstatistikYatay, anahtarListe, "Hafta İçi"); var haftaIciAnahtarListeTumEczaneler = _takvimService.AnahtarListeyiBuGuneTasi(nobetGrupIdListe, nobetGorevTipId, nobetUstGrupBaslangicTarihi, eczaneNobetGruplarTumu, eczaneNobetGrupGunKuralIstatistikYatay, anahtarListe, "Hafta İçi"); var nobetBorcluEczanelerhaftaIci = (from s in eczaneNobetGrupGunKuralIstatistikYatay from b in haftaIciAnahtarListeTumEczaneler where s.EczaneNobetGrupId == b.EczaneNobetGrupId && s.NobetSayisiHaftaIci == b.NobetSayisi select new EczaneNobetAlacakVerecek { EczaneNobetGrupId = s.EczaneNobetGrupId, EczaneId = s.EczaneId, EczaneAdi = s.EczaneAdi, NobetGrupAdi = s.NobetGrupAdi, NobetGrupId = s.NobetGrupId, NobetSayisi = s.NobetSayisiHaftaIci, SonNobetTarihi = s.SonNobetTarihiHaftaIci, AnahtarTarih = b.Tarih, BorcluGunSayisi = (int)(s.NobetSayisiHaftaIci > 0 ? (s.SonNobetTarihiHaftaIci - b.Tarih).TotalDays : (s.SonNobetTarihiHaftaIci - b.Tarih).TotalDays - (s.SonNobetTarihiHaftaIci - b.NobetUstGrupBaslamaTarihi).TotalDays), GunGrupAdi = "Hafta İçi" }).ToList(); foreach (var eczane in nobetBorcluEczanelerhaftaIci) { eczaneNobetGrupGunKuralIstatistikYatay .Where(w => w.EczaneNobetGrupId == eczane.EczaneNobetGrupId) .FirstOrDefault().BorcluNobetSayisiHaftaIci = (int)eczane.BorcluGunSayisi; } var grupluEczaneNobetSonuclar = _eczaneNobetSonucService.GetSonuclar(baslangicTarihi, bitisTarihi, eczaneNobetSonuclar); var eczaneGrupEdges = _eczaneGrupService.GetEdges(nobetUstGrupId) .Where(e => (nobetGrupIdListe.Contains(e.FromNobetGrupId) || nobetGrupIdListe.Contains(e.ToNobetGrupId))) .Where(w => (grupluEczaneNobetSonuclar.Select(s => s.EczaneId).Distinct().Contains(w.From) || grupluEczaneNobetSonuclar.Select(s => s.EczaneId).Distinct().Contains(w.To)) ).ToList(); //sonuçlarda ilişkili eczaneler var eczaneGruplar = _eczaneGrupService.GetDetaylarAktifGruplar(nobetUstGrupId) .Where(x => (eczaneGrupEdges.Select(s => s.From).Distinct().Contains(x.EczaneId) || eczaneGrupEdges.Select(s => s.To).Distinct().Contains(x.EczaneId)) || nobetGrupIdListe.Contains(x.NobetGrupId) ).ToList(); //fazladan gelen tanımlar var iyileştirmekte fayda var var eczaneGrupTanimlar = _eczaneGrupTanimService.GetDetaylarAktifTanimList(eczaneGruplar.Select(x => x.EczaneGrupTanimId).ToList()); var eczaneGruplar2 = _eczaneGrupService.GetDetaylarByEczaneGrupTanimId(eczaneGrupTanimlar.Select(s => s.Id).ToList()); var eczaneGrupNobetSonuclar = grupluEczaneNobetSonuclar .Where(w => eczaneGruplar2.Select(s => s.EczaneId).Contains(w.EczaneId)).ToList(); //nöbet yazılacak tarih aralığı(örn. Ocak ayının tüm günleri) var tarihAralik = _takvimService.GetTakvimNobetGruplar(baslangicTarihi, bitisTarihi, nobetGrupGorevTipler); var eczaneKumulatifHedefler = new List <EczaneNobetIstatistik>(); var eczaneNobetIstatistikler = new List <EczaneNobetIstatistik>(); //2.görev tipi için sadece cumartesi olduğu için tüm günler tüm görev tiplerini almaya gerek yok. //var eczaneNobetTarihAralik = _takvimService.GetEczaneNobetTarihAralik(baslangicTarihi, bitisTarihi, nobetGrupGorevTipler) // .Where(w => eczaneNobetGruplar.Select(s => s.EczaneId).Contains(w.EczaneId)).ToList(); var nobetGrupGorevTipGunKurallar = _nobetGrupGorevTipGunKuralService.GetDetaylarAktifList(nobetGrupGorevTipler.Select(s => s.Id).ToList()); nobetGorevTipId = 1; var nobetGrupGorevTip1 = nobetGrupGorevTipler.Where(w => w.NobetGorevTipId == nobetGorevTipId).ToList(); var eczaneNobetTarihAralik1 = _takvimService.GetEczaneNobetTarihAralik(baslangicTarihi, bitisTarihi, nobetGrupGorevTip1) .Where(w => eczaneNobetGruplarGorevTip1.Select(s => s.Id).Contains(w.EczaneNobetGrupId)).ToList(); //nobetGorevTipId = 2; //var nobetGrupGorevTip2 = nobetGrupGorevTipler.Where(w => w.NobetGorevTipId == nobetGorevTipId).ToList(); //var noberGunKurallar = nobetGrupGorevTipGunKurallar.Where(w => nobetGrupGorevTip2.Select(s => s.Id).Contains(w.NobetGrupGorevTipId)).Select(s => s.NobetGunKuralId).ToList(); //var eczaneNobetTarihAralik2 = _takvimService.GetEczaneNobetTarihAralik(baslangicTarihi, bitisTarihi, nobetGrupGorevTip2, noberGunKurallar) // .Where(w => eczaneNobetGruplarGorevTip2.Select(s => s.Id).Contains(w.EczaneNobetGrupId)).ToList(); var eczaneNobetTarihAralik = _eczaneNobetOrtakService.AmacFonksiyonuKatsayisiBelirle(eczaneNobetTarihAralik1, eczaneNobetGrupGunKuralIstatistikYatay); //.Union(eczaneNobetTarihAralik2).ToList(); var eczaneNobetIstekler = _eczaneNobetIstekService.GetDetaylarByNobetGrupIdList(baslangicTarihi, bitisTarihi, nobetGrupIdListe) .Where(w => eczaneNobetGruplarTumu.Select(s => s.EczaneId).Contains(w.EczaneId)).ToList(); var eczaneNobetMazeretler = _eczaneNobetMazeretService.GetDetaylarByEczaneIdList(baslangicTarihi, bitisTarihi, eczaneNobetGruplarTumu.Select(s => s.EczaneId).Distinct().ToList()) .Where(w => w.MazeretId != 3) .ToList(); var takvimNobetGrupGunDegerIstatistikler = _takvimService.GetTakvimNobetGrupGunDegerIstatistikler(nobetUstGrupBaslangicTarihi, bitisTarihi, nobetGrupGorevTipler); var eczaneNobetGrupAltGruplar = _eczaneNobetGrupAltGrupService.GetDetaylar(nobetUstGrupId); #region önceki aylar aynı gün nöbet tutanlar çözülen ayda aynı gün nöbetçi olmasın var oncekiAylardaAyniGunNobetTutanEczaneler = new List <EczaneGrupDetay>(); var oncekiAylarAyniGunNobet = _nobetUstGrupKisitService.GetDetay("oncekiAylarAyniGunNobet", nobetUstGrupId); if (!oncekiAylarAyniGunNobet.PasifMi) { oncekiAylardaAyniGunNobetTutanEczaneler = _eczaneNobetSonucService.OncekiAylardaAyniGunNobetTutanlar(baslangicTarihi, eczaneNobetSonuclarOncekiAylar, 0, (int)oncekiAylarAyniGunNobet.SagTarafDegeri); } #endregion var ikiliEczaneler = _ayniGunTutulanNobetService.GetDetaylar(nobetGrupIdListe); var nobetGrupKurallar = _nobetGrupKuralService.GetDetaylarByNobetGrupGorevTipIdList(nobetGrupGorevTipler.Select(s => s.Id).ToList()); var dataModel = new OsmaniyeDataModel() { Yil = eczaneNobetDataModelParametre.YilBaslangic, Ay = eczaneNobetDataModelParametre.AyBitis, TimeLimit = eczaneNobetDataModelParametre.TimeLimit, CalismaSayisiLimit = eczaneNobetDataModelParametre.CalismaSayisi, LowerBound = 0, UpperBound = 1, BaslangicTarihi = baslangicTarihi, BitisTarihi = bitisTarihi, NobetUstGrupBaslangicTarihi = nobetUstGrupBaslangicTarihi, NobetUstGrupId = nobetUstGrupId, EczaneNobetTarihAralik = eczaneNobetTarihAralik, //karar değişkeni EczaneKumulatifHedefler = eczaneKumulatifHedefler, //.Where(w => w.EczaneId != 121).ToList(), EczaneNobetIstatistikler = eczaneNobetIstatistikler, EczaneNobetMazeretler = eczaneNobetMazeretler, EczaneGrupTanimlar = eczaneGrupTanimlar, TarihAraligi = tarihAralik, NobetGruplar = nobetGruplar, EczaneGruplar = eczaneGruplar2, AyniGunNobetTutanEsGruplar = new List <EczaneGrupDetay>(), //ayniGunNoetTutanEczaneGruplar, OncekiAylardaAyniGunNobetTutanEczaneler = oncekiAylardaAyniGunNobetTutanEczaneler, EczaneNobetIstekler = eczaneNobetIstekler, NobetGrupGunKurallar = _nobetGrupGunKuralService.GetAktifList(nobetGrupIdListe), NobetGrupGorevTipGunKurallar = _nobetGrupGorevTipGunKuralService.GetDetaylarAktifList(nobetGrupGorevTipler.Select(s => s.Id).ToList()), NobetGrupKurallar = nobetGrupKurallar, NobetGrupGorevTipler = nobetGrupGorevTipler, NobetGrupTalepler = _nobetGrupTalepService.GetDetaylar(nobetGrupIdListe, baslangicTarihi, bitisTarihi), EczaneNobetGruplar = eczaneNobetGruplarTumu, NobetUstGrupKisitlar = _nobetUstGrupKisitService.GetDetaylar(nobetUstGrupId), EczaneGrupNobetSonuclar = eczaneGrupNobetSonuclar, EczaneNobetSonuclar = eczaneNobetSonuclarCozulenGruplar, EczaneGrupNobetSonuclarTumu = eczaneNobetSonuclar, EczaneNobetGrupGunKuralIstatistikler = enSonNobetler, TakvimNobetGrupGunDegerIstatistikler = takvimNobetGrupGunDegerIstatistikler, EczaneNobetGrupGunKuralIstatistikYatay = eczaneNobetGrupGunKuralIstatistikYatay, EczaneNobetGrupGunKuralIstatistikYataySon3Ay = eczaneNobetGrupGunKuralIstatistikYataySon3Ay, EczaneNobetGrupAltGruplar = eczaneNobetGrupAltGruplar, Kalibrasyonlar = _kalibrasyonService.GetKalibrasyonlarYatay(nobetUstGrupId), IkiliEczaneler = ikiliEczaneler, NobetDurumlar = _nobetDurumService.GetDetaylar(nobetUstGrupId), DebugYapilacakEczaneler = debugYapilacakEczaneler }; //_eczaneNobetOrtakService.KurallariKontrolEtHaftaIciEnAzEnCok(nobetUstGrupId, eczaneNobetGrupGunKuralIstatistikYatay); _eczaneNobetOrtakService.KurallariKontrolEtMazeretIstek(nobetUstGrupId, eczaneNobetMazeretler, eczaneNobetIstekler); _eczaneNobetOrtakService.KurallariKontrolEtIstek(nobetUstGrupId, eczaneNobetIstekler, nobetGrupKurallar); return(dataModel); }
private MersinMerkezDataModelV2 EczaneNobetDataModel(EczaneNobetDataModelParametre eczaneNobetDataModelParametre) { #region parametreler var nobetUstGrupId = eczaneNobetDataModelParametre.NobetUstGrupId; var yilBaslangic = eczaneNobetDataModelParametre.YilBaslangic; var yilBitis = eczaneNobetDataModelParametre.YilBitis; var ayBaslangic = eczaneNobetDataModelParametre.AyBaslangic; var ayBitis = eczaneNobetDataModelParametre.AyBitis; var nobetGrupIdListe = eczaneNobetDataModelParametre.NobetGrupId.ToList(); //var nobetGorevTipId = eczaneNobetDataModelParametre.NobetGorevTipId; var nobetUstGrupBaslangicTarihi = eczaneNobetDataModelParametre.NobetUstGrupBaslangicTarihi; var ayBitisBaslangicGunu = eczaneNobetDataModelParametre.AyBitisBaslangicGunu; var ayBitisBitisGunu = eczaneNobetDataModelParametre.AyBitisBitisGunu; var baslangicTarihi = eczaneNobetDataModelParametre.BaslangicTarihi; var bitisTarihi = eczaneNobetDataModelParametre.BitisTarihi; var nobetGrupGorevTipler = eczaneNobetDataModelParametre.NobetGrupGorevTipler; var nobetGorevTipId = nobetGrupGorevTipler.FirstOrDefault().NobetGorevTipId; #endregion if (baslangicTarihi < nobetUstGrupBaslangicTarihi) { throw new Exception($"Nöbet başlangıç tarihi <strong>({baslangicTarihi.ToShortDateString()})</strong> üst grup başlama tarihinden <strong>({nobetUstGrupBaslangicTarihi.ToShortDateString()})</strong> küçük olamaz."); } var debugYapilacakEczaneler = _debugEczaneService.GetDetaylarAktifOlanlar(nobetUstGrupId); var nobetGruplar = _nobetGrupService.GetDetaylar(nobetGrupIdListe).OrderBy(s => s.Id).ToList(); //var nobetGrupGorevTipler = _nobetGrupGorevTipService.GetDetaylar(nobetGorevTipId, nobetGrupIdListe); var eczaneNobetSonuclar = _eczaneNobetSonucService.GetSonuclar(nobetUstGrupId); //nobetGrupIdListe //.Where(w => !(w.EczaneNobetGrupId == 301 && w.TakvimId == 88)).ToList(); //.Where(w => w.Tarih.Year > 2017).ToList(); var eczaneNobetMazeretNobettenDusenler = new List <EczaneNobetMazeretSayilari>(); var mazeret = _nobetUstGrupKisitService.GetKisitPasifMi("mazeret", nobetUstGrupId); if (mazeret) { eczaneNobetMazeretNobettenDusenler = _eczaneNobetMazeretService.GetEczaneNobetMazeretSayilari(baslangicTarihi, bitisTarihi, nobetGrupIdListe); } var eczaneNobetGruplar = _eczaneNobetGrupService.GetDetaylar(nobetGrupIdListe, baslangicTarihi, bitisTarihi) .Where(w => !eczaneNobetMazeretNobettenDusenler.Select(s => s.EczaneNobetGrupId).Contains(w.Id)).ToList(); var eczaneNobetSonuclarCozulenGruplar = eczaneNobetSonuclar .Where(w => eczaneNobetGruplar.Select(s => s.Id).Contains(w.EczaneNobetGrupId)).ToList(); var eczaneNobetSonuclarBaslamaTarihindenSonrasi = eczaneNobetSonuclarCozulenGruplar .Where(w => w.Tarih >= nobetUstGrupBaslangicTarihi).ToList(); var son3Ay = baslangicTarihi.AddMonths(-3); var eczaneNobetSonuclarSon3Ay = eczaneNobetSonuclarCozulenGruplar .Where(w => w.Tarih >= son3Ay).ToList(); var sonuclarKontrol = _eczaneNobetSonucService.GetSonuclar(baslangicTarihi, bitisTarihi, eczaneNobetSonuclarCozulenGruplar); if (sonuclarKontrol.Count > 0) { throw new Exception("Kriterlere uygun <strong>daha önce yazılmış nöbetler</strong> bulunmaktadır. Lütfen kontrol ediniz!"); } var enSonNobetler = _eczaneNobetOrtakService.GetEczaneNobetGrupGunKuralIstatistik(eczaneNobetGruplar, eczaneNobetSonuclarCozulenGruplar); var enSonNobetlerSon3Ay = _eczaneNobetOrtakService.GetEczaneNobetGrupGunKuralIstatistik(eczaneNobetGruplar, eczaneNobetSonuclarSon3Ay); var eczaneNobetGrupGunKuralIstatistikYatay = _eczaneNobetOrtakService.GetEczaneNobetGrupGunKuralIstatistikYatay(enSonNobetler); var eczaneNobetGrupGunKuralIstatistikYataySon3Ay = _eczaneNobetOrtakService.GetEczaneNobetGrupGunKuralIstatistikYatay(enSonNobetlerSon3Ay); var grupluEczaneNobetSonuclar = _eczaneNobetSonucService.GetSonuclar(baslangicTarihi, bitisTarihi, eczaneNobetSonuclar); var eczaneGrupEdges = _eczaneGrupService.GetEdges() .Where(e => (nobetGrupIdListe.Contains(e.FromNobetGrupId) || nobetGrupIdListe.Contains(e.ToNobetGrupId))) .Where(w => (grupluEczaneNobetSonuclar.Select(s => s.EczaneId).Distinct().Contains(w.From) || grupluEczaneNobetSonuclar.Select(s => s.EczaneId).Distinct().Contains(w.To)) ).ToList(); //sonuçlarda ilişkili eczaneler var eczaneGruplar = _eczaneGrupService.GetDetaylarAktifGruplar(nobetUstGrupId) .Where(x => (eczaneGrupEdges.Select(s => s.From).Distinct().Contains(x.EczaneId) || eczaneGrupEdges.Select(s => s.To).Distinct().Contains(x.EczaneId)) || nobetGrupIdListe.Contains(x.NobetGrupId) ).ToList(); //fazladan gelen tanımlar var iyileştirmekte fayda var var eczaneGrupTanimlar = _eczaneGrupTanimService.GetDetaylarAktifTanimList(eczaneGruplar.Select(x => x.EczaneGrupTanimId).ToList()); var eczaneGruplar2 = _eczaneGrupService.GetDetaylarByEczaneGrupTanimId(eczaneGrupTanimlar.Select(s => s.Id).ToList()); var eczaneGrupNobetSonuclar = grupluEczaneNobetSonuclar .Where(w => eczaneGruplar2.Select(s => s.EczaneId).Contains(w.EczaneId)).ToList(); //nöbet yazılacak tarih aralığı(örn. Ocak ayının tüm günleri) var tarihAralik = _takvimService.GetTakvimNobetGruplar(baslangicTarihi, bitisTarihi, nobetGrupIdListe, nobetGorevTipId); //var tarihAralikAltGrupluGruplar = _takvimService.GetTakvimNobetGrupAltGruplar(baslangicTarihi, bitisTarihi, nobetGrupIdListe, nobetGorevTipId); var eczaneKumulatifHedefler = new List <EczaneNobetIstatistik>(); var eczaneNobetIstatistikler = new List <EczaneNobetIstatistik>(); var eczaneNobetTarihAralik1 = _takvimService.GetEczaneNobetTarihAralik(baslangicTarihi, bitisTarihi, nobetGorevTipId, nobetGrupIdListe) .Where(w => eczaneNobetGruplar.Select(s => s.EczaneId).Contains(w.EczaneId)).ToList(); var eczaneNobetTarihAralik = _eczaneNobetOrtakService.AmacFonksiyonuKatsayisiBelirle(eczaneNobetTarihAralik1, eczaneNobetGrupGunKuralIstatistikYatay); var takipEdilecekEczaneler = new List <int> { 664 }; var ikiliEczaneler = _ayniGunTutulanNobetService.GetDetaylar(nobetGrupIdListe) .Where(w => //(eczaneNobetGruplar.Select(s => s.EczaneId).Contains(w.EczaneId1) //|| eczaneNobetGruplar.Select(s => s.EczaneId).Contains(w.EczaneId2)) // (takipEdilecekEczaneler.Contains(w.EczaneNobetGrupId1) //|| takipEdilecekEczaneler.Contains(w.EczaneNobetGrupId2)) ( (w.EczaneAdi1 == "ÖYKÜ" && w.EczaneAdi2 == "ALTUNBAŞ") || (w.EczaneAdi1 == "ÖYKÜ" && w.EczaneAdi2 == "GÜLÇİN") || (w.EczaneAdi1 == "TATLIDİL" && w.EczaneAdi2 == "ANIT") || (w.EczaneAdi1 == "DİCLE" && w.EczaneAdi2 == "AYSEL") || (w.EczaneAdi1 == "POLEN" && w.EczaneAdi2 == "SİTELER") || (w.EczaneAdi1 == "RÜYA" && w.EczaneAdi2 == "AYFER") ) //( // (w.NobetGrupId1 == 15 && w.NobetGrupId2 == 16) //toroslar 1-2 //|| (w.NobetGrupId1 == 17 && w.NobetGrupId2 == 18) //Akdeniz 1-2 //|| (w.NobetGrupId1 == 17 && w.NobetGrupId2 == 19) //Akdeniz 1-3 //|| (w.NobetGrupId1 == 18 && w.NobetGrupId2 == 19) //Akdeniz 2-3 //|| (w.NobetGrupId1 == 20 && w.NobetGrupId2 == 21) //Yenişehir 1-2 //|| (w.NobetGrupId1 == 20 && w.NobetGrupId2 == 22) //Yenişehir 1-3 //|| (w.NobetGrupId1 == 21 && w.NobetGrupId2 == 22) //Yenişehir 2-3 //|| (w.NobetGrupId1 == 23 && w.NobetGrupId2 == 24) //Mezitli 1-2 //) ).ToList(); //2. karar değişkeni. her eczane ve ilgili altgrup var eczaneNobetAltGrupTarihAralik = _takvimService.GetEczaneNobetAltGrupTarihAralik(baslangicTarihi, bitisTarihi, nobetGorevTipId, nobetGrupIdListe) .Where(w => eczaneNobetGruplar.Select(s => s.EczaneId).Contains(w.EczaneId)).ToList(); var eczaneNobetIstekler = _eczaneNobetIstekService.GetDetaylarByNobetGrupIdList(baslangicTarihi, bitisTarihi.AddDays(10), nobetGrupIdListe) .Where(w => eczaneNobetGruplar.Select(s => s.EczaneId).Contains(w.EczaneId)).ToList(); var eczaneNobetMazeretler = _eczaneNobetMazeretService.GetDetaylarByEczaneIdList(baslangicTarihi, bitisTarihi, eczaneNobetGruplar.Select(s => s.EczaneId).Distinct().ToList()) .Where(w => w.MazeretId != 3) .ToList(); var takvimNobetGrupGunDegerIstatistikler = _takvimService.GetTakvimNobetGrupGunDegerIstatistikler(nobetUstGrupBaslangicTarihi, bitisTarihi, nobetGrupGorevTipler); var eczaneNobetGrupAltGruplarYenisehir2 = _eczaneNobetGrupAltGrupService.GetDetaylarByNobetGrupId(21); var eczaneNobetGrupAltGruplarToroslar1 = _eczaneNobetGrupAltGrupService.GetDetaylarByNobetGrupId(15); var altGruplarlaAyniGunNobetTutma = _nobetUstGrupKisitService.GetDetay("altGruplarlaAyniGunNobetTutma", nobetUstGrupId); var altGruplarlaAyniGunNobetTutmaToroslar = _nobetUstGrupKisitService.GetDetay("altGruplarlaAyniGunNobetTutmaToroslar", nobetUstGrupId); var eczaneNobetSonuclarAltGruplaAyniGun = new List <EczaneNobetSonucListe2>(); var eczaneNobetSonuclarAltGruplaAyniGunToroslar = new List <EczaneNobetSonucListe2>(); var indisId = 0; var altGruplarlaAyniGunNobetTutmayacakEczanelerYeniSehir1_2 = new List <EczaneGrupDetay>(); var altGruplarlaAyniGunNobetTutmayacakEczanelerYeniSehir3_2 = new List <EczaneGrupDetay>(); var altGruplarlaAyniGunNobetTutmayacakEczanelerToroslar = new List <EczaneGrupDetay>(); if (!altGruplarlaAyniGunNobetTutma.PasifMi) { //indisId = eczaneGruplar2.Select(s => s.EczaneGrupTanimId).Max(); #region yenişehir var altGrupluTakipEdilecekNobetGrupIdList = new List <int> { 20, //Yenişehir-1 21, //Yenişehir-2 - alt grubu olan 22 //Yenişehir-3 }; var eczaneNobetGruplarAltGruplaAyniGun = _eczaneNobetGrupService.GetDetaylar(altGrupluTakipEdilecekNobetGrupIdList, baslangicTarihi, bitisTarihi) .Where(w => !eczaneNobetMazeretNobettenDusenler.Select(s => s.EczaneNobetGrupId).Contains(w.Id)).ToList(); eczaneNobetSonuclarAltGruplaAyniGun = eczaneNobetSonuclar .Where(w => altGrupluTakipEdilecekNobetGrupIdList.Contains(w.NobetGrupId)).ToList(); var ayniGunNobetTutmasiTakipEdilecekGruplar_1 = new List <int> { 20, //Yenişehir-1, //22 //Yenişehir-3 (M.Ü. Hastanesi) }; var ayniGunNobetTutmasiTakipEdilecekGruplar_3 = new List <int> { //20,//Yenişehir-1, 22 //Yenişehir-3 (M.Ü. Hastanesi) }; var altGrubuOlanNobetGruplar = new List <int> { 21 //Yenişehir-2 }; altGruplarlaAyniGunNobetTutmayacakEczanelerYeniSehir1_2 = _eczaneNobetOrtakService.AltGruplarlaSiraliNobetListesiniOlusturMersin( eczaneNobetSonuclarAltGruplaAyniGun, eczaneNobetGruplarAltGruplaAyniGun, eczaneNobetGrupAltGruplarYenisehir2, altGruplarlaAyniGunNobetTutma, nobetUstGrupBaslangicTarihi, indisId, ayniGunNobetTutmasiTakipEdilecekGruplar_1, altGrubuOlanNobetGruplar, 0, (int)altGruplarlaAyniGunNobetTutma.SagTarafDegeri); altGruplarlaAyniGunNobetTutmayacakEczanelerYeniSehir3_2 = _eczaneNobetOrtakService.AltGruplarlaSiraliNobetListesiniOlusturMersin( eczaneNobetSonuclarAltGruplaAyniGun, eczaneNobetGruplarAltGruplaAyniGun, eczaneNobetGrupAltGruplarYenisehir2, altGruplarlaAyniGunNobetTutma, nobetUstGrupBaslangicTarihi, indisId, ayniGunNobetTutmasiTakipEdilecekGruplar_3, altGrubuOlanNobetGruplar, 0, (int)altGruplarlaAyniGunNobetTutma.SagTarafDegeri); #endregion } if (!altGruplarlaAyniGunNobetTutmaToroslar.PasifMi) { #region toroslar var altGrupluTakipEdilecekNobetGrupIdListToroslar = new List <int> { 15, //Toroslar-1 - alt grubu olan 16 //Toroslar-2 }; var eczaneNobetGruplarAltGruplaAyniGunToroslar = _eczaneNobetGrupService.GetDetaylar(altGrupluTakipEdilecekNobetGrupIdListToroslar, baslangicTarihi, bitisTarihi) .Where(w => !eczaneNobetMazeretNobettenDusenler.Select(s => s.EczaneNobetGrupId).Contains(w.Id)).ToList(); eczaneNobetSonuclarAltGruplaAyniGunToroslar = eczaneNobetSonuclar .Where(w => altGrupluTakipEdilecekNobetGrupIdListToroslar.Contains(w.NobetGrupId)).ToList(); var ayniGunNobetTutmasiTakipEdilecekGruplarToroslar = new List <int> { 16, //Toroslar-1, }; var altGrubuOlanNobetGruplarToroslar = new List <int> { 15 //Toroslar-2 }; altGruplarlaAyniGunNobetTutmayacakEczanelerToroslar = _eczaneNobetOrtakService .AltGruplarlaSiraliNobetListesiniOlusturMersin(eczaneNobetSonuclarAltGruplaAyniGunToroslar, eczaneNobetGruplarAltGruplaAyniGunToroslar, eczaneNobetGrupAltGruplarToroslar1, altGruplarlaAyniGunNobetTutma, nobetUstGrupBaslangicTarihi, 1, ayniGunNobetTutmasiTakipEdilecekGruplarToroslar, altGrubuOlanNobetGruplarToroslar, 0, (int)altGruplarlaAyniGunNobetTutmaToroslar.SagTarafDegeri); #endregion } #region ikili eczaneler var ikiliEczaneAyniGunNobet = _nobetUstGrupKisitService.GetDetay("ikiliEczaneAyniGunNobet", nobetUstGrupId); var arasindaAyniGun2NobetFarkiOlanIkiliEczaneler = new List <EczaneGrupDetay>(); if (!ikiliEczaneAyniGunNobet.PasifMi) { //indisId = eczaneGruplar2.Select(s => s.EczaneGrupTanimId).Max(); arasindaAyniGun2NobetFarkiOlanIkiliEczaneler = _ayniGunTutulanNobetService.GetArasinda2FarkOlanIkiliEczaneleri( eczaneNobetGruplar, nobetGrupGorevTipler.Select(s => s.Id).ToArray(), (int)ikiliEczaneAyniGunNobet.SagTarafDegeri); } #endregion #region önceki aylar aynı gün nöbet tutanlar çözülen ayda aynı gün nöbetçi olmasın var oncekiAylardaAyniGunNobetTutanEczaneler = new List <EczaneGrupDetay>(); var oncekiAylarAyniGunNobet = _nobetUstGrupKisitService.GetDetay("oncekiAylarAyniGunNobet", nobetUstGrupId); if (!oncekiAylarAyniGunNobet.PasifMi && (int)oncekiAylarAyniGunNobet.SagTarafDegeri > 0) { indisId = eczaneGruplar2.Select(s => s.EczaneGrupTanimId).Max(); oncekiAylardaAyniGunNobetTutanEczaneler = _eczaneNobetSonucService.OncekiAylardaAyniGunNobetTutanlar( baslangicTarihi, eczaneNobetSonuclarBaslamaTarihindenSonrasi, indisId, (int)oncekiAylarAyniGunNobet.SagTarafDegeri); } #endregion #region sonraki aydaki istekler var sonrakiAy = bitisTarihi.AddDays(1); var bitisTarihiSonrakiAy = bitisTarihi.AddMonths((int)oncekiAylarAyniGunNobet.SagTarafDegeri + 2); var eczaneNobetIsteklerSonrakiDonem = _eczaneNobetIstekService.GetDetaylarByNobetGrupIdList(sonrakiAy, bitisTarihiSonrakiAy, nobetGrupIdListe) .Where(w => eczaneNobetGruplar.Select(s => s.EczaneId).Contains(w.EczaneId)).ToList(); var sonrakiDonemAyniGunNobetIstekGirilenler = _eczaneNobetIstekService.SonrakiAylardaAyniGunIstekGirilenEczaneler(eczaneNobetIsteklerSonrakiDonem); #endregion var nobetGrupKurallar = _nobetGrupKuralService.GetDetaylar(nobetGrupIdListe); var nobetUstGrupKisitlar = _nobetUstGrupKisitService.GetDetaylar(nobetUstGrupId); var grupBazliKisitlar = _nobetGrupGorevTipKisitService.GetDetaylar(nobetUstGrupId); var dataModel = new MersinMerkezDataModelV2() { Yil = yilBitis, Ay = ayBitis, LowerBound = 0, UpperBound = 1, TimeLimit = eczaneNobetDataModelParametre.TimeLimit, CalismaSayisiLimit = eczaneNobetDataModelParametre.CalismaSayisi, BaslangicTarihi = baslangicTarihi, BitisTarihi = bitisTarihi, NobetUstGrupBaslangicTarihi = nobetUstGrupBaslangicTarihi, NobetUstGrupId = nobetUstGrupId, EczaneNobetTarihAralik = eczaneNobetTarihAralik, //karar değişkeni EczaneNobetTarihAralikIkiliEczaneler = new List <EczaneNobetTarihAralikIkili>(), //eczaneNobetTarihAralikIkiliEczaneler, EczaneKumulatifHedefler = eczaneKumulatifHedefler, //.Where(w => w.EczaneId != 121).ToList(), EczaneNobetIstatistikler = eczaneNobetIstatistikler, EczaneNobetMazeretler = eczaneNobetMazeretler, EczaneGrupTanimlar = eczaneGrupTanimlar, TarihAraligi = tarihAralik, NobetGruplar = nobetGruplar, EczaneGruplar = eczaneGruplar2, ArasindaAyniGun2NobetFarkiOlanIkiliEczaneler = arasindaAyniGun2NobetFarkiOlanIkiliEczaneler, OncekiAylardaAyniGunNobetTutanEczaneler = oncekiAylardaAyniGunNobetTutanEczaneler, AltGruplarlaAyniGunNobetTutmayacakEczanelerYenisehir1_2 = altGruplarlaAyniGunNobetTutmayacakEczanelerYeniSehir1_2, AltGruplarlaAyniGunNobetTutmayacakEczanelerYenisehir3_2 = altGruplarlaAyniGunNobetTutmayacakEczanelerYeniSehir3_2, AltGruplarlaAyniGunNobetTutmayacakEczanelerToroslar = altGruplarlaAyniGunNobetTutmayacakEczanelerToroslar, EczaneNobetIstekler = eczaneNobetIstekler, NobetGrupGunKurallar = _nobetGrupGunKuralService.GetDetaylarAktifList(nobetGrupIdListe), NobetGrupKurallar = nobetGrupKurallar, NobetGrupGorevTipler = nobetGrupGorevTipler, NobetGrupTalepler = _nobetGrupTalepService.GetDetaylar(nobetGrupIdListe, baslangicTarihi, bitisTarihi), EczaneNobetGruplar = eczaneNobetGruplar, Kisitlar = nobetUstGrupKisitlar, EczaneGrupNobetSonuclar = eczaneGrupNobetSonuclar, //EczaneNobetSonuclarAltGruplarlaBirlikte = eczaneNobetSonuclarAltGruplaAyniGun, EczaneNobetSonuclar = eczaneNobetSonuclarCozulenGruplar, EczaneGrupNobetSonuclarTumu = eczaneNobetSonuclar, EczaneNobetGrupGunKuralIstatistikler = enSonNobetler, TakvimNobetGrupGunDegerIstatistikler = takvimNobetGrupGunDegerIstatistikler, EczaneNobetGrupGunKuralIstatistikYatay = eczaneNobetGrupGunKuralIstatistikYatay, EczaneNobetGrupGunKuralIstatistikYataySon3Ay = eczaneNobetGrupGunKuralIstatistikYataySon3Ay, EczaneNobetGrupAltGruplar = new List <EczaneNobetGrupAltGrupDetay>(), //eczaneNobetGrupAltGruplar, EczaneNobetAltGrupTarihAralik = eczaneNobetAltGrupTarihAralik, IkiliEczaneler = ikiliEczaneler, SonrakiDonemAyniGunNobetIstekGirilenler = sonrakiDonemAyniGunNobetIstekGirilenler, NobetGrupGorevTipKisitlar = grupBazliKisitlar, Kalibrasyonlar = _kalibrasyonService.GetKalibrasyonlarYatay(nobetUstGrupId), DebugYapilacakEczaneler = debugYapilacakEczaneler }; //_eczaneNobetOrtakService.KurallariKontrolEtHaftaIciEnAzEnCok(nobetUstGrupId, eczaneNobetGrupGunKuralIstatistikYatay); _eczaneNobetOrtakService.KurallariKontrolEtMazeretIstek(nobetUstGrupId, eczaneNobetMazeretler, eczaneNobetIstekler); _eczaneNobetOrtakService.KurallariKontrolEtIstek(nobetUstGrupId, eczaneNobetIstekler, nobetGrupKurallar); return(dataModel); }
//[HttpPost] public JsonResult GetAmacFonksiyonuKatsayilari(DateTime baslangicTarihi, DateTime bitisTarihi, int[] nobetGrupGorevTipId) { //DateTime baslangicTarihi = new DateTime(2019, 4, 1); //DateTime bitisTarihi = new DateTime(2019, 4, 28); //var user = _userService.GetByUserName(User.Identity.Name); //var nobetUstGruplar = _nobetUstGrupService.GetListByUser(user); //var nobetUstGrup = nobetUstGruplar.FirstOrDefault(); var nobetUstGrup = _nobetUstGrupSessionService.GetSession("nobetUstGrup"); var nobetGrupGorevTipIdList = nobetGrupGorevTipId.ToList(); var nobetGrupGorevTipler = _nobetGrupGorevTipService.GetDetaylarByIdList(nobetGrupGorevTipIdList); //var eczaneNobetMazeretNobettenDusenler = new List<EczaneNobetMazeretSayilari>(); //var mazeret = _nobetUstGrupKisitService.GetKisitPasifMi("mazeret", nobetUstGrup.Id); //if (mazeret) // eczaneNobetMazeretNobettenDusenler = _eczaneNobetMazeretService.GetEczaneNobetMazeretSayilari(baslangicTarihi, bitisTarihi, nobetGrupIdListe); var eczaneNobetGruplarTumu = _eczaneNobetGrupService.GetDetaylarByNobetGrupGorevTipler(baslangicTarihi, bitisTarihi, nobetGrupGorevTipIdList); //.Where(w => !eczaneNobetMazeretNobettenDusenler.Select(s => s.EczaneNobetGrupId).Contains(w.Id) //&& w.EczaneAdi == "ÖZGÜR" //).ToList(); var eczaneNobetSonuclar = _eczaneNobetSonucService.GetSonuclar(nobetGrupGorevTipId); var eczaneNobetSonuclarPlanlanan = _eczaneNobetSonucPlanlananService.GetSonuclar(nobetGrupGorevTipId); var enSonNobetler = _eczaneNobetOrtakService.GetEczaneNobetGrupGunKuralIstatistik(eczaneNobetGruplarTumu, eczaneNobetSonuclar); //var kontrol = enSonNobetler.Where(w => new int[] { 61, 100 }.Contains(w.EczaneNobetGrupId)); var eczaneNobetGrupGunKuralIstatistikYatay = _eczaneNobetOrtakService.GetEczaneNobetGrupGunKuralIstatistikYatay(enSonNobetler); var eczaneNobetTarihAralik1 = _takvimService.GetEczaneNobetTarihAralik(baslangicTarihi, bitisTarihi, nobetGrupGorevTipler); //nobetGorevTipId = 2; //var nobetGrupGorevTip2 = nobetGrupGorevTipler.Where(w => w.NobetGorevTipId == nobetGorevTipId).ToList(); //var noberGunKurallar = nobetGrupGorevTipGunKurallar.Where(w => nobetGrupGorevTip2.Select(s => s.Id).Contains(w.NobetGrupGorevTipId)).Select(s => s.NobetGunKuralId).ToList(); //var eczaneNobetTarihAralik2 = _takvimService.GetEczaneNobetTarihAralik(baslangicTarihi, bitisTarihi, nobetGrupGorevTip2, noberGunKurallar) // .Where(w => eczaneNobetGruplarGorevTip2.Select(s => s.Id).Contains(w.EczaneNobetGrupId)).ToList(); //.Union(eczaneNobetTarihAralik2).ToList(); var kalibrasyonlar = new List <KalibrasyonYatay>(); if (nobetUstGrup.Id == 5) { kalibrasyonlar = _kalibrasyonService.GetKalibrasyonlarYatay(nobetUstGrup.Id); } var eczaneNobetAlacakVerecek = _takvimService.EczaneNobetAlacakVerecekHesaplaAntalya(nobetGrupGorevTipler, eczaneNobetSonuclarPlanlanan, eczaneNobetGruplarTumu, eczaneNobetGrupGunKuralIstatistikYatay); var eczaneNobetTarihAralik = _eczaneNobetOrtakService.AmacFonksiyonuKatsayisiBelirle(eczaneNobetTarihAralik1, eczaneNobetGrupGunKuralIstatistikYatay, kalibrasyonlar, eczaneNobetAlacakVerecek); var jsonResult = Json(eczaneNobetTarihAralik, JsonRequestBehavior.AllowGet); jsonResult.MaxJsonLength = int.MaxValue; return(jsonResult); }