Ejemplo n.º 1
0
        public void ModelCoz(EczaneNobetModelCoz eczaneNobetModelCoz)
        {
            var nobetGruplar = _nobetGrupService.GetListByNobetUstGrupId(eczaneNobetModelCoz.NobetUstGrupId);

            if (nobetGruplar.Count > 0)
            {
                #region başka gruplarla ilişkisi olan gruplar
                var eczaneGrupDetaylar = _eczaneGrupService.GetDetaylar()
                                         .Where(d => d.EczaneGrupTanimBitisTarihi == null &&
                                                nobetGruplar.Select(s => s.Id).Contains(d.NobetGrupId)).ToList();

                //başka gruplarla ilişkisi olan gruplar
                var esGruplar = eczaneGrupDetaylar.Select(x => x.NobetGrupId).Distinct().OrderBy(x => x).ToList();

                //Birbiri ile ilişkili grupların gruplanması
                var esliNobetGruplar = _eczaneGrupService.EsGrupluEczanelerinGruplariniBelirle(eczaneGrupDetaylar, esGruplar)
                                       .Where(w => eczaneNobetModelCoz.NobetGrupId.Contains(w.NobetGrupId)).ToList();
                //.Where(w => w.NobetGrupId == eczaneNobetModelCoz.NobetGrupId || eczaneNobetModelCoz.NobetGrupId.Contains(0)).ToList();
                #endregion

                #region başka gruplarla ilişkisi olmayan gruplar
                var tekEczaneNobetGruplar = _eczaneNobetGrupService.GetDetaylar(eczaneNobetModelCoz.NobetUstGrupId)
                                            .Where(x => !esGruplar.Contains(x.NobetGrupId)).ToList();

                var tekliNobetGruplar = tekEczaneNobetGruplar
                                        .Where(d => nobetGruplar.Select(s => s.Id).Contains(d.NobetGrupId))
                                        .Select(c => c.NobetGrupId).Distinct().ToList();
                #endregion

                #region tüm nöbet gruplar
                var tumNobetGruplar = new List <NobetBagGrup>();

                foreach (var esliNobetGrup in esliNobetGruplar.Distinct())
                {
                    tumNobetGruplar.Add(new NobetBagGrup
                    {
                        Id          = esliNobetGrup.Id,
                        NobetGrupId = esliNobetGrup.NobetGrupId
                    });
                }

                var indis = tumNobetGruplar.Select(s => s.Id).LastOrDefault();
                foreach (var tekliNobetGrup in tekliNobetGruplar.Distinct())
                {
                    indis++;
                    tumNobetGruplar.Add(new NobetBagGrup
                    {
                        Id          = indis,
                        NobetGrupId = tekliNobetGrup
                    });
                }

                var nobetGrupTanimlar = tumNobetGruplar.Select(s => s.Id).Distinct().ToList();
                #endregion

                #region Karar kuralları
                var model = new EczaneNobetDataModelParametre
                {
                    //AyBaslangic = eczaneNobetModelCoz.AyBaslangic,
                    AyBitis         = eczaneNobetModelCoz.AyBitis,
                    NobetGorevTipId = eczaneNobetModelCoz.NobetGorevTipId,
                    NobetGrupId     = eczaneNobetModelCoz.NobetGrupId,
                    NobetUstGrupId  = eczaneNobetModelCoz.NobetUstGrupId,
                    //YilBaslangic = eczaneNobetModelCoz.YilBaslangic,
                    //YilBitis = eczaneNobetModelCoz.YilBitis
                };

                if (eczaneNobetModelCoz.NobetGrupId.Contains(0) && eczaneNobetModelCoz.AyBitis == 0)
                {//ay ve gruplar --tümü--
                    foreach (var ay in _takvimService.GetAylar())
                    {
                        foreach (var item in nobetGrupTanimlar)
                        {
                            var r     = new Random();
                            var liste = tumNobetGruplar
                                        .Where(x => x.Id == item)
                                        .Select(s => s.NobetGrupId)
                                        .OrderByDescending(x => r.NextDouble()).ToList();

                            foreach (var item2 in liste)
                            {
                                var liste2 = new int[] { item2 };
                                model.AyBitis     = ay.Id;
                                model.NobetGrupId = liste2;
                                var data = EczaneNobetDataModel(model);
                                EczaneNobetCozAktifiGuncelle(data);
                                Kesinlestir(model.NobetUstGrupId);
                            }
                        }
                    }
                }
                else if (eczaneNobetModelCoz.NobetGrupId.Contains(0))
                {//ay seçili, gruplar --tümü--
                    if (eczaneNobetModelCoz.BuAyVeSonrasi)
                    {
                        var aylar = _takvimService.GetAylar()
                                    .Where(w => w.Id >= eczaneNobetModelCoz.AyBitis).ToList();

                        foreach (var ay in aylar)
                        {
                            foreach (var item in nobetGrupTanimlar)
                            {
                                var r     = new Random();
                                var liste = tumNobetGruplar
                                            .Where(x => x.Id == item)
                                            .Select(s => s.NobetGrupId)
                                            .OrderByDescending(x => r.NextDouble()).ToList();

                                foreach (var item2 in liste)
                                {
                                    var liste2 = new int[] { item2 };
                                    model.AyBitis     = ay.Id;
                                    model.NobetGrupId = liste2;
                                    var data = EczaneNobetDataModel(model);
                                    EczaneNobetCozAktifiGuncelle(data);
                                    Kesinlestir(model.NobetUstGrupId);
                                }
                            }
                        }
                    }
                    else
                    {
                        foreach (var item in nobetGrupTanimlar)
                        {
                            var liste = tumNobetGruplar
                                        .Where(x => x.Id == item)
                                        .Select(s => s.NobetGrupId)
                                        .OrderByDescending(x => x).ToList();

                            foreach (var item2 in liste)
                            {
                                var liste2 = new int[] { item2 };
                                model.NobetGrupId = liste2;
                                var data = EczaneNobetDataModel(model);
                                EczaneNobetCozAktifiGuncelle(data);
                                Kesinlestir(model.NobetUstGrupId);
                            }
                        }
                    }
                }
                else if (eczaneNobetModelCoz.AyBitis == 0)
                {//grup seçili, aylar --tümü--
                    foreach (var ay in _takvimService.GetAylar())
                    {
                        foreach (var item in tumNobetGruplar
                                 .Where(x => eczaneNobetModelCoz.NobetGrupId.Contains(x.NobetGrupId))
                                 //.Where(x => x.NobetGrupId == eczaneNobetModelCoz.NobetGrupId)
                                 .Select(s => s.Id).Distinct().ToList())
                        {
                            var liste = tumNobetGruplar
                                        .Where(x => x.Id == item)
                                        .Select(s => s.NobetGrupId)
                                        .OrderByDescending(x => x).ToList();

                            foreach (var item2 in liste)
                            {
                                var liste2 = new int[] { item2 };
                                model.AyBitis     = ay.Id;
                                model.NobetGrupId = liste2;
                                var data = EczaneNobetDataModel(model);
                                EczaneNobetCozAktifiGuncelle(data);
                                Kesinlestir(model.NobetUstGrupId);
                            }
                        }
                    }
                }
                else
                {//seçili grup ve ay
                    if (eczaneNobetModelCoz.BuAyVeSonrasi)
                    {
                        var aylar = _takvimService.GetAylar()
                                    .Where(w => w.Id >= eczaneNobetModelCoz.AyBitis).ToList();

                        foreach (var ay in aylar)
                        {
                            foreach (var item in tumNobetGruplar
                                     .Where(x => eczaneNobetModelCoz.NobetGrupId.Contains(x.NobetGrupId))
                                     //.Where(x => x.NobetGrupId == eczaneNobetModelCoz.NobetGrupId)
                                     .Select(s => s.Id).Distinct().ToList())
                            {
                                var liste = tumNobetGruplar
                                            .Where(x => x.Id == item)
                                            .Select(s => s.NobetGrupId)
                                            .OrderByDescending(x => x).ToArray();

                                model.AyBitis     = ay.Id;
                                model.NobetGrupId = liste;
                                var data = EczaneNobetDataModel(model);
                                EczaneNobetCozAktifiGuncelle(data);
                                Kesinlestir(model.NobetUstGrupId);
                            }
                        }
                    }
                    else
                    {
                        foreach (var item in tumNobetGruplar
                                 .Where(x => eczaneNobetModelCoz.NobetGrupId.Contains(x.NobetGrupId))
                                 //.Where(x => x.NobetGrupId == eczaneNobetModelCoz.NobetGrupId)
                                 .Select(s => s.Id).Distinct().ToList())
                        {
                            var liste = tumNobetGruplar
                                        .Where(x => x.Id == item)
                                        .Select(s => s.NobetGrupId)
                                        .OrderByDescending(x => x).ToArray();

                            model.NobetGrupId = liste;
                            var data = EczaneNobetDataModel(model);
                            EczaneNobetCozAktifiGuncelle(data);
                        }
                    }
                    #endregion
                }
            }
        }
        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 = 1;

            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;
                                }
                            }
                        }
                        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;
                                }
                            }
                        }
                    }
                    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;
                                }
                            }
                        }
                    }
                    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;
                        }
                    }
                    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;
                            }
                        }
                        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);
                    }
                    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);
        }
Ejemplo n.º 3
0
        public ActionResult ModelCoz(NobetYazViewModel eczaneNobetViewModel)
        {
            var stopwatch = new Stopwatch();

            stopwatch.Start();

            if (eczaneNobetViewModel.TimeLimit > 1200)
            {
                throw new Exception($"Süre limiti en fazla {1200} saniye olabilir. Fazlası için lütfen Nöbetyaz yönetim ile irtiata geçiniz.");
            }

            var nobetUstGrup = _nobetUstGrupService.GetDetay(eczaneNobetViewModel.NobetUstGrupId);

            //if (ModelState.IsValid)
            //{
            var nobetGrupGorevTipler = _nobetGrupGorevTipService.GetDetaylarByIdList(eczaneNobetViewModel.NobetGrupGorevTipId.ToList());
            var nobetGrupIdList      = nobetGrupGorevTipler.Select(s => s.NobetGrupId).Distinct().ToArray();

            if (nobetGrupIdList == null)
            {
                nobetGrupIdList = new int[1] {
                    0
                }
            }
            ;

            var eczaneNobetModelCoz = new EczaneNobetModelCoz
            {
                BuAyVeSonrasi        = eczaneNobetViewModel.BuAyVeSonrasi,
                NobetGrupGorevTipler = nobetGrupGorevTipler,
                NobetGrupId          = nobetGrupIdList, //eczaneNobetViewModel.NobetGrupId,
                NobetUstGrupId       = eczaneNobetViewModel.NobetUstGrupId,
                RolId   = eczaneNobetViewModel.RolId,
                AyBitis = eczaneNobetViewModel.BitisTarihi.Month,
                NobetUstGrupBaslangicTarihi = nobetUstGrup.BaslangicTarihi,
                CozumTercih         = eczaneNobetViewModel.CozumTercih,
                SonrakiAylarRasgele = eczaneNobetViewModel.SonrakiAylarRasgele,
                BaslangicTarihi     = eczaneNobetViewModel.BaslangicTarihi,
                BitisTarihi         = eczaneNobetViewModel.BitisTarihi,
                TimeLimit           = eczaneNobetViewModel.TimeLimit,
                CalismaSayisi       = eczaneNobetViewModel.CalismaSayisi
            };

            var sonucModel = new EczaneNobetSonucModel();

            switch (nobetUstGrup.Id)
            {
            case 1:
                sonucModel = _alanyaOptimizationService.ModelCoz(eczaneNobetModelCoz);
                break;

            case 2:
                sonucModel = _antalyaMerkezOptimizationService.ModelCoz(eczaneNobetModelCoz);
                break;

            case 3:
                sonucModel = _mersinMerkezOptimizationServiceV2.ModelCoz(eczaneNobetModelCoz);
                break;

            case 4:
                sonucModel = _giresunOptimizationService.ModelCoz(eczaneNobetModelCoz);
                break;

            case 5:
                sonucModel = _osmaniyeOptimizationService.ModelCoz(eczaneNobetModelCoz);
                break;

            case 6:
                sonucModel = _bartinOptimizationService.ModelCoz(eczaneNobetModelCoz);
                break;

            case 7:
                sonucModel = _zonguldakOptimizationService.ModelCoz(eczaneNobetModelCoz);
                break;

            case 8:
                sonucModel = _iskenderunOptimizationService.ModelCoz(eczaneNobetModelCoz);
                break;

            case 9:
                sonucModel = _corumOptimizationService.ModelCoz(eczaneNobetModelCoz);
                break;

            case 10:
                sonucModel = _kirikhanOptimizationService.ModelCoz(eczaneNobetModelCoz);
                break;

            case 11:
                sonucModel = _diyarbakirOptimizationService.ModelCoz(eczaneNobetModelCoz);
                break;

            case 12:
                sonucModel = _manavgatOptimizationService.ModelCoz(eczaneNobetModelCoz);
                break;

            case 13:
                sonucModel = _orduMerkezOptimizationService.ModelCoz(eczaneNobetModelCoz);
                break;

            case 14:
                sonucModel = _kayseriOptimizationService.ModelCoz(eczaneNobetModelCoz);
                break;

            case 15:
                sonucModel = _antakyaOptimizationService.ModelCoz(eczaneNobetModelCoz);
                break;

            default:
                return(RedirectToAction("Index"));
            }

            stopwatch.Stop();
            sonucModel.ToplamSure           = stopwatch.Elapsed;
            TempData["EczaneNobetSonuclar"] = sonucModel;

            if (eczaneNobetModelCoz.BuAyVeSonrasi)
            {
                return(RedirectToAction("PivotSonuclar", "EczaneNobetSonuc"));
                //RedirectToAction("PivotCozum", "EczaneNobetSonuc",
                //new { area = "EczaneNobet", nobetGrup = eczaneNobetModelCoz.NobetGrupId, yilBaslangic = eczaneNobetModelCoz.BaslangicTarihi.Year, yilBitis = eczaneNobetModelCoz.BitisTarihi.Year });
            }
            else if (eczaneNobetModelCoz.CozumTercih == 0 && eczaneNobetModelCoz.NobetGrupId.Count() > 1)
            {
                return(RedirectToAction("PivotSonuclar", "EczaneNobetSonuc"));

                //return RedirectToAction("PivotCozum", "EczaneNobetSonuc",
                //    new { area = "EczaneNobet", nobetGrup = eczaneNobetModelCoz.NobetGrupId, yilBaslangic = eczaneNobetModelCoz.BaslangicTarihi.Year, yilBitis = eczaneNobetModelCoz.BitisTarihi.Year });
            }
            else if (nobetUstGrup.Id == 6 || nobetUstGrup.Id == 7 || nobetUstGrup.Id == 8)
            {
                return(RedirectToAction("PivotSonuclar", "EczaneNobetSonuc"));

                //return RedirectToAction("PivotCozum", "EczaneNobetSonuc",
                //    new { area = "EczaneNobet", nobetGrup = eczaneNobetModelCoz.NobetGrupId, yilBaslangic = eczaneNobetModelCoz.BaslangicTarihi.Year, yilBitis = eczaneNobetModelCoz.BitisTarihi.Year });
            }

            var routeValues = new PivotSonuclarParams
            {
                Area            = "EczaneNobet",
                BaslangicTarihi = eczaneNobetModelCoz.BaslangicTarihi,
                BitisTarihi     = eczaneNobetModelCoz.BitisTarihi
            };

            int sayac = 0;

            foreach (var item in nobetGrupIdList)
            {
                if (sayac == 0)
                {
                    routeValues.NobetGrupIdList = item.ToString();
                }
                else
                {
                    routeValues.NobetGrupIdList = routeValues.NobetGrupIdList + "," + item.ToString();
                }
                sayac++;
            }

            return(RedirectToAction("PivotSonuclar", "EczaneNobetSonucAktif", routeValues));

            //}

            //var user = _userService.GetByUserName(User.Identity.Name);
            //var rolIdler = _userService.GetUserRoles(user).OrderBy(s => s.RoleId).Select(u => u.RoleId).ToArray();
            //var rolId = rolIdler.FirstOrDefault();

            //var nobetUstGruplar = _nobetUstGrupService.GetListByUser(user);
            //var nobetUstGrup = nobetUstGruplar.FirstOrDefault();

            //ViewBag.NobetUstGrupId = new SelectList(items: nobetUstGruplar, dataValueField: "Id", dataTextField: "Adi", selectedValue: nobetUstGrup.Id);
            //ViewBag.NobetUstGrupSayisi = nobetUstGruplar.Count;

            //return View("Index", eczaneNobetViewModel);
        }