public ActionResult EczaneNobetMazeretPartialView(int nobetGrupId = 0, int eczaneId = 0, DateTime?MazeretTarihi = null)
        {
            //var user = _userService.GetByUserName(User.Identity.Name);
            var nobetUstGrup = _nobetUstGrupSessionService.GetSession("nobetUstGrup");

            var nobetGruplar = _nobetGrupService.GetDetaylar(nobetUstGrup.Id)
                               .Where(w => w.Id == nobetGrupId || nobetGrupId == 0).ToList();

            var eczaneNobetMazeretler = _eczaneNobetMazeretService.GetDetaylar(nobetUstGrup.Id)
                                        .Where(w => nobetGruplar.Select(n => n.Id).Contains(w.NobetGrupId) &&
                                               (w.EczaneId == eczaneId || eczaneId == 0) &&
                                               (w.Tarih == MazeretTarihi || MazeretTarihi == null))
                                        .OrderByDescending(o => o.Tarih).ThenBy(f => f.EczaneAdi);

            return(PartialView(eczaneNobetMazeretler));
        }
Example #2
0
 public List <EczaneNobetMazeretDetay> Get()
 {
     return(_eczaneNobetMazeretService.GetDetaylar());
 }
        public List <EczaneNobetSonucListe2> GetSonuclar2(List <EczaneNobetSonucDetay2> eczaneNobetSonucDetaylar, int nobetUstGrupId)
        {
            var nobetGrupGorevTipler = _nobetGrupGorevTipService.GetDetaylar(nobetUstGrupId);
            var bayramlar            = _bayramService.GetDetaylar(nobetUstGrupId);
            var mazeretler           = _eczaneNobetMazeretService.GetDetaylar(nobetUstGrupId);

            var liste2 = (from s in eczaneNobetSonucDetaylar
                          join b in nobetGrupGorevTipler
                          on new { s.NobetGrupId, s.NobetGorevTipId }
                          equals new { b.NobetGrupId, b.NobetGorevTipId }
                          select new
            {
                s.NobetGorevTipId,
                s.TakvimId,
                s.EczaneNobetGrupId,
                s.EczaneAdi,
                s.NobetGrupAdi,
                s.NobetGrupId,
                NobetGrupGorevTipId = b.Id,
                s.Tarih,
                s.NobetUstGrupId,
                s.EczaneId,
                b.NobetGorevTipAdi
            }).ToList();

            var culture = new CultureInfo("tr-TR");

            var liste = (from s in liste2
                         from b in bayramlar
                         .Where(w => w.TakvimId == s.TakvimId &&
                                w.NobetGrupGorevTipId == s.NobetGrupGorevTipId).DefaultIfEmpty()
                         from m in mazeretler
                         .Where(w => w.TakvimId == s.TakvimId &&
                                w.EczaneNobetGrupId == s.EczaneNobetGrupId).DefaultIfEmpty()
                         select new EczaneNobetSonucListe2
            {
                Yil = s.Tarih.Year,
                Ay = s.Tarih.Month,
                EczaneNobetGrupId = s.EczaneNobetGrupId,
                EczaneId = s.EczaneId,
                EczaneAdi = s.EczaneAdi,
                NobetGrupAdi = s.NobetGrupAdi,
                NobetGrupId = s.NobetGrupId,
                NobetUstGrupId = s.NobetUstGrupId,
                NobetGunKuralId = (b?.TakvimId == s.TakvimId && b?.NobetGrupGorevTipId == s.NobetGrupGorevTipId)
                             ? b.NobetGunKuralId
                             : (int)s.Tarih.DayOfWeek + 1,
                NobetGunKuralAdi = (b?.TakvimId == s.TakvimId && b?.NobetGrupGorevTipId == s.NobetGrupGorevTipId)
                             ? b.NobetGunKuralAdi
                             : culture.DateTimeFormat.GetDayName(s.Tarih.DayOfWeek),
                GunGrupAdi = s.NobetUstGrupId == 3
                             ? ((b?.TakvimId == s.TakvimId && b?.NobetGrupGorevTipId == s.NobetGrupGorevTipId)
                                ? "Bayram"
                                : (s.Tarih.DayOfWeek == 0 || (int)s.Tarih.DayOfWeek == 6)
                                ? culture.DateTimeFormat.GetDayName(s.Tarih.DayOfWeek)
                                : "Hafta İçi")
                             : ((b?.TakvimId == s.TakvimId && b?.NobetGrupGorevTipId == s.NobetGrupGorevTipId)
                                ? "Bayram"
                                : s.Tarih.DayOfWeek == 0
                                ? "Pazar"
                                : "Hafta İçi"),
                Gun = s.Tarih.Day,
                Tarih = s.Tarih,
                TakvimId = s.TakvimId,
                MazeretId = (m?.TakvimId == s.TakvimId && m?.EczaneNobetGrupId == s.EczaneNobetGrupId) ? m.MazeretId : 0,
                Mazeret = (m?.TakvimId == s.TakvimId && m?.EczaneNobetGrupId == s.EczaneNobetGrupId) ? m.MazeretAdi : null,
                MazeretTuru = (m?.TakvimId == s.TakvimId && m?.EczaneNobetGrupId == s.EczaneNobetGrupId) ? m.MazeretTuru : null,
                NobetGorevTipAdi = s.NobetGorevTipAdi,
                NobetGorevTipId = s.NobetGorevTipId,
                SonucTuru = EczaneNobetSonucTuru.Taslak
            }).ToList();

            return(liste);
        }
Example #4
0
        private AlanyaDataModelEski 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;
            #endregion

            var baslangicTarihi = new DateTime(yilBitis, ayBitis, 1);
            var bitisTarihi     = baslangicTarihi.AddMonths(1);
            var nobetGruplar    = _nobetGrupService.GetList(nobetGrupIdListe).OrderBy(s => s.Id).ToList();
            var eczaneNobetMazeretNobettenDusenler = _eczaneNobetMazeretService.GetEczaneNobetMazeretSayilari(baslangicTarihi, bitisTarihi, nobetGrupIdListe);
            var eczaneNobetSonuclarAylik           = _eczaneNobetSonucService.GetSonuclar(baslangicTarihi, bitisTarihi, nobetUstGrupId);

            var eczaneGrupEdges = _eczaneGrupService.GetEdges(nobetUstGrupId)
                                  .Where(e => (nobetGrupIdListe.Contains(e.FromNobetGrupId) || nobetGrupIdListe.Contains(e.ToNobetGrupId)))
                                  .Where(w => (eczaneNobetSonuclarAylik.Select(s => s.EczaneId).Distinct().Contains(w.From) || eczaneNobetSonuclarAylik.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ç
                                       && nobetGrupIdListe.Contains(x.NobetGrupId) &&
                                       (eczaneGrupEdges.Select(s => s.From).Distinct().Contains(x.EczaneId) || eczaneGrupEdges.Select(s => s.To).Distinct().Contains(x.EczaneId))
                                       ).ToList();

            //fazladan gelen tanımlar var. burayı 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 = eczaneNobetSonuclarAylik
                                          .Where(w => eczaneGruplar2.Select(s => s.EczaneId).Contains(w.EczaneId)).ToList();

            var esGrupluEczaneler = _eczaneNobetGrupService.GetAktifEczaneGrupList(nobetGrupIdListe)
                                    .Where(x => !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();

            #region aynı gün nöbet tutan eczaneler

            //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);
            //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)).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)).ToList();

            //    yilIcindeAyniGunNobetTutanEczaneler = _eczaneNobetOrtakService.GetCiftGrupluEczaneler(yillikKumulatifSonuclar, 3);
            //}
            #endregion

            //bu alan EczaneNobetCozAktifiGuncelle içinde kullanılıyor.
            var ayIcindeAyniGunNobetTutanEczaneler = new List <EczaneCiftGrup>();

            #endregion

            var alanyaDataModel = new AlanyaDataModelEski()
            {
                Yil                     = yilBitis,
                Ay                      = ayBitis,
                LowerBound              = 0,
                UpperBound              = 1,
                NobetUstGrupId          = nobetUstGrupId,
                NobetGruplar            = nobetGruplar,
                EczaneNobetTarihAralik  = _takvimService.GetEczaneNobetTarihAralik(baslangicTarihi, bitisTarihi, nobetGorevTipId, nobetGrupIdListe), //karar değişkeni
                EczaneKumulatifHedefler = _takvimService.GetEczaneKumulatifHedefler(yilBaslangic, yilBitis, ayBaslangic, ayBitis, nobetGrupIdListe, nobetGorevTipId),
                EczaneNobetMazeretListe = _eczaneNobetMazeretService.GetDetaylar(yilBitis, ayBitis, esGrupluEczaneler),
                EczaneGrupTanimlar      = eczaneGrupTanimlar,
                TarihAraligi            = _takvimService.GetTakvimNobetGruplar(baslangicTarihi, bitisTarihi, nobetGrupIdListe, nobetGorevTipId),
                EczaneGruplar           = eczaneGruplar2,
                EczaneNobetIstekListe   = _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,
                EczaneNobetSonuclar     = _eczaneNobetSonucService.GetSonuclar(nobetUstGrupId),

                AyIcindeAyniGunNobetTutanEczaneler  = ayIcindeAyniGunNobetTutanEczaneler,
                YilIcindeAyniGunNobetTutanEczaneler = new List <EczaneCiftGrup>(),        //yilIcindeAyniGunNobetTutanEczaneler,
                SonIkiAyAyniGunNobetTutanEczaneler  = new List <EczaneCiftGrup>(),        //sonIkiAyAyniGunNobetTutanEczaneler,
                EczaneNobetSonuclarSonIkiAy         = new List <EczaneNobetSonucListe>(), //_eczaneNobetSonucService.GetSonuclar(yilBitis, cozumOncekiIkiAyi, ayBitis, nobetUstGrupId),
                EczaneNobetSonuclarOncekiAylar      = new List <EczaneNobetSonucListe>()  //_eczaneNobetSonucService.GetSonuclar(yilBitis, ayBaslangic, ayBitis, nobetUstGrupId)
            };
            return(alanyaDataModel);
        }
Example #5
0
        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);
        }