コード例 #1
0
        // GET: EczaneNobet/EczaneNobetSonuc  int[] nobetGrupIdList = null, int yil = 2018, int ay = 1
        public ActionResult PivotSonuclar(PivotSonuclarParams pivotSonuclarParams)
        {
            var parametreler = pivotSonuclarParams;

            if (parametreler == null)
            {
                parametreler = new PivotSonuclarParams();
            }

            //pivotSonuclarParams.NobetGrupIdList.ToArray();

            var arr = ParseStringToIntArray(pivotSonuclarParams.NobetGrupIdList);

            //var user = _userService.GetByUserName(User.Identity.Name);
            //var nobetUstGruplar = _nobetUstGrupService.GetListByUser(user);
            //var nobetUstGrup = nobetUstGruplar.FirstOrDefault();
            var nobetUstGrup   = _nobetUstGrupSessionService.GetSession("nobetUstGrup");
            var nobetUstGrupId = nobetUstGrup.Id;

            var nobetGruplar = _nobetGrupService.GetDetaylar(nobetUstGrupId)
                               .Select(s => new MyDrop {
                Id = s.Id, Value = s.Adi
            });

            var baslamaTarihi = pivotSonuclarParams.BaslangicTarihi;
            var bitisTarihi   = pivotSonuclarParams.BitisTarihi;

            var sonuclarEski = _eczaneNobetSonucService.GetSonuclar(nobetUstGrupId)
                               .Where(w => w.Tarih >= nobetUstGrup.BaslangicTarihi);

            var sonuclarAktif = _eczaneNobetSonucAktifService.GetSonuclar2(nobetUstGrupId)
                                .Where(w => w.Tarih >= baslamaTarihi && w.Tarih <= bitisTarihi).ToList();

            var tumSonuclar = sonuclarEski.Union(sonuclarAktif).ToList();

            ViewBag.nobetGrup = arr.FirstOrDefault();

            var beklenenGunFarklari = new List <NobetGrupBeklenenGunFarki>();

            //ViewBag.NobetGruptakiEczaneSayisi

            var nobetGrupEczaneSayilari = arr.Count == 0
                ? _eczaneNobetGrupService.NobetGruplarDDL(nobetUstGrupId)
                                          //.Where(w => arr.Contains(w.NobetGrupId))
                                          .Select(s => new { s.NobetGrupAdi, s.EczaneSayisi })
                : _eczaneNobetGrupService.NobetGruplarDDL(nobetUstGrupId)
                                          .Where(w => arr.Contains(w.NobetGrupId))
                                          .Select(s => new { s.NobetGrupAdi, s.EczaneSayisi });

            foreach (var item in nobetGrupEczaneSayilari)
            {
                beklenenGunFarklari.Add(new NobetGrupBeklenenGunFarki
                {
                    NobetGrupAdi = item.NobetGrupAdi,
                    Haftaİci     = $"{Math.Round(item.EczaneSayisi * 1.2 * 0.766, 0)}-{(Math.Ceiling(item.EczaneSayisi * 1.34))}",
                    Pazar        = $"{(int)Math.Ceiling(((double)item.EczaneSayisi / 5) - 1) * 30}-{((int)Math.Ceiling((double)item.EczaneSayisi / 4) + 1) * 30}",
                    EczaneSayisi = item.EczaneSayisi
                });
            }
            ;

            TempData["NobetGrupId"] = pivotSonuclarParams.NobetGrupIdList;

            //ViewBag.YilBaslangiclar = new SelectList(yillar, null, null, yilBaslangic);
            //ViewBag.YilBitisler = new SelectList(yillar, null, null, pivotSonuclarParams.Yil);
            //if (pivotSonuclarParams.NobetGrupIdList != null)
            //{
            //    ViewBag.NobetGruplar = new SelectList(nobetGruplar, "Id", "Value", pivotSonuclarParams.NobetGrupIdList.FirstOrDefault());
            //}
            //else
            //{
            //    ViewBag.NobetGruplar = new SelectList(nobetGruplar, "Id", "Value");
            //}

            ViewBag.ToplamUzunluk = tumSonuclar.Count();

            var gunFarklari = _eczaneNobetOrtakService.EczaneNobetIstatistikGunFarkiHesapla(tumSonuclar)
                              .Where(w => (w.Nobet2Tarih >= baslamaTarihi && w.Nobet2Tarih <= bitisTarihi)).ToList();

            var gunFarkiFrekanslar = _eczaneNobetOrtakService.EczaneNobetIstatistikGunFarkiFrekans(gunFarklari);

            ViewBag.ToplamUzunluk2 = gunFarklari.Count;

            //TempData["EczaneNobetSonuclar"] = sonucModel;

            var model = new EczaneNobetSonucAktifPivotSonuclarViewModel
            {
                TumSonuclar                  = tumSonuclar.Where(w => arr.Contains(w.NobetGrupId)).ToList(),
                GunFarklari                  = gunFarklari,
                GunFarklariFrekanslar        = gunFarkiFrekanslar,
                NobetGrupBeklenenGunFarklari = beklenenGunFarklari,
                EczaneNobetSonuclar          = (EczaneNobetSonucModel)TempData["EczaneNobetSonuclar"] ?? new EczaneNobetSonucModel(),
                BaslamaTarihi                = baslamaTarihi,
                BitisTarihi                  = bitisTarihi
            };

            return(View(model));
        }
コード例 #2
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);
        }