public List <EczaneGrupNobetSonuc> Get(int userId) { //User user = _userService.GetById(userId); //user = _userService.GetById(userId); int eczaneId = _userEczaneService.GetListByUserId(userId).Select(s => s.EczaneId).FirstOrDefault(); int eczaneNobetGrupId = _eczaneNobetGrupService.GetDetayByEczaneId(eczaneId).Id; NobetUstGrup nobetUstGrup = _eczaneService.GetByEczaneNobetGrupId(eczaneNobetGrupId); return(_eczaneNobetSonucService.GetEczaneGrupNobetSonuc(nobetUstGrup.Id) //.OrderByDescending(o => o.Tarih) .ToList()); }
private MersinMerkezDataModel 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; #endregion int aydakiGunSayisi = DateTime.DaysInMonth(yilBitis, ayBitis); var baslangicTarihi = new DateTime(yilBitis, ayBitis, 1); var bitisTarihi = new DateTime(yilBitis, ayBitis, aydakiGunSayisi); var nobetGruplar = _nobetGrupService.GetList(nobetGrupIdListe).OrderBy(s => s.Id).ToList(); var nobetGrupGorevTipler = _nobetGrupGorevTipService.GetList(nobetGorevTipId, nobetGrupIdListe); var eczaneNobetSonuclar = _eczaneNobetSonucService.GetEczaneGrupNobetSonuc(nobetUstGrupId); var eczaneNobetGruplarTumu = _eczaneNobetGrupService.GetList(nobetGrupIdListe, baslangicTarihi, bitisTarihi); var eczaneNobetMazeretNobettenDusenler = _eczaneNobetMazeretService.GetEczaneNobetMazeretSayilari(baslangicTarihi, bitisTarihi, nobetGrupIdListe); //var eczaneNobettenMuafOlanlar = _eczaneNobetMuafiyetService.GetDetaylar(baslangicTarihi, bitisTarihi, nobetGrupIdListe); var eczaneNobetGruplar = _eczaneNobetGrupService.GetDetaylar(nobetGrupIdListe, baslangicTarihi, bitisTarihi) .Where(w => !eczaneNobetMazeretNobettenDusenler.Select(s => s.EczaneNobetGrupId).Contains(w.Id) //&& !eczaneNobettenMuafOlanlar.Select(s => s.EczaneId).Contains(w.EczaneId) ).ToList(); var eczaneNobetSonuclarCozulenGrup = eczaneNobetSonuclar .Where(w => !eczaneNobetMazeretNobettenDusenler.Select(s => s.EczaneNobetGrupId).Contains(w.EczaneNobetGrupId) //&& !eczaneNobettenMuafOlanlar.Select(s => s.EczaneId).Contains(w.EczaneId) && nobetGrupIdListe.Contains(w.NobetGrupId)).ToList(); var enSonNobetDurumlari = eczaneNobetSonuclarCozulenGrup .GroupBy(g => new { g.NobetGunKuralId, g.EczaneNobetGrupId, g.EczaneId, g.EczaneAdi, g.NobetGrupId, g.NobetGrupAdi, g.NobetGorevTipId }) .Select(s => new EczaneNobetGrupGunKuralIstatistik { NobetGunKuralId = s.Key.NobetGunKuralId, EczaneNobetGrupId = s.Key.EczaneNobetGrupId, EczaneId = s.Key.EczaneId, EczaneAdi = s.Key.EczaneAdi, NobetGrupId = s.Key.NobetGrupId, NobetGrupAdi = s.Key.NobetGrupAdi, NobetGorevTipId = s.Key.NobetGorevTipId, IlkNobetTarihi = s.Min(c => c.Tarih), SonNobetTarihi = s.Max(c => c.Tarih), NobetSayisi = s.Count() }).ToList(); var sonucuOlanGunler = enSonNobetDurumlari .Select(s => new { s.NobetGunKuralId, s.NobetGorevTipId }) .Distinct() .OrderBy(o => o.NobetGorevTipId).ThenBy(t => t.NobetGunKuralId).ToList(); var varsayilanBaslangicNobetTarihi = new DateTime(2012, 1, 1); foreach (var nobetGunKural in sonucuOlanGunler) { var nobetDurumlari = enSonNobetDurumlari .Where(w => w.NobetGunKuralId == nobetGunKural.NobetGunKuralId) .Select(s => s.EczaneNobetGrupId).ToList(); var sonucuOlmayanlar = eczaneNobetGruplar .Where(w => !nobetDurumlari.Contains(w.Id)).ToList(); if (sonucuOlmayanlar.Count > 0) { foreach (var eczaneNobetGrup in sonucuOlmayanlar) { enSonNobetDurumlari.Add(new EczaneNobetGrupGunKuralIstatistik { EczaneId = eczaneNobetGrup.EczaneId, EczaneAdi = eczaneNobetGrup.EczaneAdi, NobetGrupAdi = eczaneNobetGrup.NobetGrupAdi, NobetAltGrupId = 0, EczaneNobetGrupId = eczaneNobetGrup.Id, IlkNobetTarihi = varsayilanBaslangicNobetTarihi, // eczaneNobetGrup.BaslangicTarihi, SonNobetTarihi = varsayilanBaslangicNobetTarihi, // eczaneNobetGrup.BaslangicTarihi, NobetGorevTipId = nobetGunKural.NobetGorevTipId, NobetGunKuralId = nobetGunKural.NobetGunKuralId, NobetGrupId = eczaneNobetGrup.NobetGrupId, NobetSayisi = 1 }); } } } var grupluEczaneNobetSonuclar = eczaneNobetSonuclar .Where(w => w.Tarih.Year == yilBitis && w.Tarih.Month == ayBitis).ToList(); 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(); //sonuclarda ilişkili eczaneler var eczaneGruplar = _eczaneGrupService.GetDetaylar(nobetUstGrupId) .Where(x => x.EczaneGrupTanimBitisTarihi == null //&& x.EczaneGrupTanimTipId == 2 //coğrafi yakınlık hariç && (eczaneGrupEdges.Select(s => s.From).Distinct().Contains(x.EczaneId) || eczaneGrupEdges.Select(s => s.To).Distinct().Contains(x.EczaneId)) && nobetGrupIdListe.Contains(x.NobetGrupId) ) .Where(w => !eczaneNobetMazeretNobettenDusenler.Select(s => s.EczaneId).Contains(w.EczaneId)).ToList(); //fazladan gelen tanımlar var iyileştirmekte fayda var var eczaneGrupTanimlar = _eczaneGrupTanimService.GetAktifTanimList(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(); var esGrupluEczaneler = _eczaneNobetGrupService.GetDetaylar(nobetUstGrupId) .Where(x => nobetGrupIdListe.Contains(x.NobetGrupId) && x.BitisTarihi == null && !eczaneNobetMazeretNobettenDusenler.Select(s => s.EczaneId).Contains(x.EczaneId)) .Select(x => x.EczaneId).Distinct().ToList(); //var eczaneNobetGruplar = _eczaneNobetGrupService.GetAktifEczaneGrupList(nobetGruplar.Select(w => w.Id).ToList()) // .Where(s => !eczaneNobetMazeretNobettenDusenler.Select(f => f.EczaneId).Contains(s.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 eczaneKumulatifHedefler = _takvimService // .GetEczaneKumulatifHedeflerTumYillar(yilBaslangic, yilBitis, ayBaslangic, ayBitis, nobetGrupIdListe); var eczaneKumulatifHedefler = _takvimService.GetEczaneKumulatifHedefler(yilBaslangic, yilBitis, ayBaslangic, ayBitis, nobetGrupIdListe, nobetGorevTipId) .Where(w => eczaneNobetGruplar.Select(s => s.EczaneId).Contains(w.EczaneId)).ToList(); var eczaneNobetTarihAralik = _takvimService.GetEczaneNobetTarihAralik(baslangicTarihi, bitisTarihi, nobetGorevTipId, nobetGrupIdListe) .Where(w => eczaneNobetGruplar.Select(s => s.EczaneId).Contains(w.EczaneId)).ToList(); var takvimNobetGrupGunDegerIstatistikler = _takvimService.GetTakvimNobetGrupGunDegerIstatistikler(nobetUstGrupBaslangicTarihi, bitisTarihi, nobetGrupIdListe, nobetGorevTipId); #region aynı gün nöbet tutan eczaneler /* * var ayniGunNobetTutmasiTakipEdilecekGruplar = new List<int> { 20, 21, 22 }; * * //nöbet yazılacak tarih aralığı(örn. Ocak ayının tüm günleri) * int cozumOncekiAyi = GetOncekiAy(periyot: 3, cozumAyi: ayBitis); * var cozumOncekiIkiAyi = GetOncekiAy(periyot: 2, cozumAyi: ayBitis); * var aktifSonuclar = _eczaneNobetSonucAktifService.GetSonuclarAylik(yilBitis, ayBitis, nobetUstGrupId); * var ayniAydakiDigerGruplarinSonuclari = _eczaneNobetSonucService.GetSonuclarAylik(yilBitis, ayBitis, nobetUstGrupId) * .Where(w => ayniGunNobetTutmasiTakipEdilecekGruplar.Contains(w.NobetGrupId)).ToList(); * * var ayIcindekiTumSonuclar = aktifSonuclar.Union(ayniAydakiDigerGruplarinSonuclari).ToList(); * var ayIcindeCozulenNobetGruplar = ayIcindekiTumSonuclar.Select(s => s.NobetGrupId).Distinct().ToList(); * #region son iki ay * * var sonIkiAyBakilacakGruplar = new List<int>(); * * foreach (var item in ayIcindeCozulenNobetGruplar) * { * sonIkiAyBakilacakGruplar.Add(item); * } * * //şimdi çözülecek grup * foreach (var item in nobetGrupIdListe) * { * sonIkiAyBakilacakGruplar.Add(item); * } * * var sonIkiAyAyniGunNobetTutanEczaneler = new List<EczaneCiftGrup>(); * var gruplar = sonIkiAyBakilacakGruplar.Distinct().ToList(); * * if (_nobetUstGrupKisitService.GetKisitPasifMi("sonIkiAydakiGrup", nobetUstGrupId) && sonIkiAyBakilacakGruplar.Count() > 1 && ayBitis > 1) * { * var sonIkiAydakiSonuclar = _eczaneNobetSonucService.GetSonuclar(yilBitis, cozumOncekiAyi, ayBitis - 1, nobetUstGrupId) * .Where(x => gruplar.Contains(x.NobetGrupId) * && ayniGunNobetTutmasiTakipEdilecekGruplar.Contains(x.NobetGrupId)).ToList(); * * sonIkiAyAyniGunNobetTutanEczaneler = _eczaneNobetOrtakService.GetCiftGrupluEczaneler(sonIkiAydakiSonuclar, 1); * } #endregion * #region yillik kümülatif * * var yilIcindeAyniGunNobetTutanEczaneler = new List<EczaneCiftGrup>(); * * if (_nobetUstGrupKisitService.GetKisitPasifMi("yildaEncokUcKezGrup", nobetUstGrupId) && sonIkiAyBakilacakGruplar.Count() > 1 && ayBitis > 2) * { * var yillikKumulatifSonuclar = _eczaneNobetSonucService.GetSonuclarYillikKumulatif(yilBitis, ayBitis - 1, nobetUstGrupId) * .Where(x => gruplar.Contains(x.NobetGrupId) * && ayniGunNobetTutmasiTakipEdilecekGruplar.Contains(x.NobetGrupId)).ToList(); * * yilIcindeAyniGunNobetTutanEczaneler = _eczaneNobetOrtakService.GetCiftGrupluEczaneler(yillikKumulatifSonuclar, 3); * * yilIcindeAyniGunNobetTutanEczaneler = (from a in yilIcindeAyniGunNobetTutanEczaneler * from t in _eczaneNobetGrupAltGrupService.GetDetaylar() * .Where(w => w.EczaneId == a.EczaneId).DefaultIfEmpty() * select new EczaneCiftGrup * { * Id = a.Id, * NobetAltGrupId = (t?.EczaneId == a.EczaneId) ? t.NobetAltGrupId : 0, * EczaneId = a.EczaneId, * BirlikteNobetTutmaSayisi = a.BirlikteNobetTutmaSayisi * }).ToList(); * } #endregion * * var ayIcindeAyniGunNobetTutanEczaneler = new List<EczaneCiftGrup>(); */ #endregion var mersinMerkezDataModel = new MersinMerkezDataModel() { Yil = yilBitis, Ay = ayBitis, LowerBound = 0, UpperBound = 1, NobetUstGrupId = nobetUstGrupId, EczaneNobetTarihAralik = eczaneNobetTarihAralik, //karar değişkeni EczaneKumulatifHedefler = eczaneKumulatifHedefler, //.Where(w => w.EczaneId != 121).ToList(), TarihAraligi = tarihAralik, NobetGruplar = nobetGruplar, EczaneGrupTanimlar = eczaneGrupTanimlar, EczaneGruplar = eczaneGruplar2, EczaneNobetMazeretler = _eczaneNobetMazeretService.GetDetaylar(yilBitis, ayBitis, esGrupluEczaneler), EczaneNobetIstekler = _eczaneNobetIstekService.GetDetaylarByNobetGrupIdList(yilBitis, ayBitis, nobetGrupIdListe), NobetGrupGunKurallar = _nobetGrupGunKuralService.GetAktifList(nobetGrupIdListe), NobetGrupKurallar = _nobetGrupKuralService.GetDetaylar(nobetGrupIdListe), NobetGrupGorevTipler = _nobetGrupGorevTipService.GetList(nobetGorevTipId, nobetGrupIdListe), NobetGrupTalepler = _nobetGrupTalepService.GetDetaylar(nobetGrupIdListe, baslangicTarihi, bitisTarihi), EczaneNobetGruplar = eczaneNobetGruplar, NobetUstGrupKisitlar = _nobetUstGrupKisitService.GetDetaylar(nobetUstGrupId), EczaneGrupNobetSonuclar = eczaneGrupNobetSonuclar, EczaneGrupNobetSonuclarTumu = eczaneNobetSonuclar, EczaneNobetSonuclar = eczaneNobetSonuclarCozulenGrup, EczaneNobetGrupGunKuralIstatistikler = enSonNobetDurumlari, TakvimNobetGrupGunDegerIstatistikler = takvimNobetGrupGunDegerIstatistikler #region aynı gün nöbet tutma durumu //AyIcindeAyniGunNobetTutanEczaneler = ayIcindeAyniGunNobetTutanEczaneler, //bu alan EczaneNobetCozAktifiGuncelle içinde kullanılıyor. //YilIcindeAyniGunNobetTutanEczaneler = yilIcindeAyniGunNobetTutanEczaneler, //SonIkiAyAyniGunNobetTutanEczaneler = sonIkiAyAyniGunNobetTutanEczaneler, //EczaneNobetSonuclarSonIkiAy = _eczaneNobetSonucService.GetSonuclar(yilBitis, cozumOncekiIkiAyi, ayBitis, nobetUstGrupId), //EczaneNobetSonuclarOncekiAylar = _eczaneNobetSonucService.GetSonuclar(yilBitis, ayBaslangic, ayBitis, nobetUstGrupId) #endregion }; return(mersinMerkezDataModel); }