コード例 #1
0
        public ActionResult Create([Bind(Include = "Id,EczaneNobetGrupId,MazeretId,BaslangicTarihi,BitisTarihi,HaftaninGunu,Aciklama")] EczaneNobetMazeretCoklu eczaneNobetMazeretCoklu)
        {
            //var user = _userService.GetByUserName(User.Identity.Name);
            var nobetUstGrup = _nobetUstGrupSessionService.GetSession("nobetUstGrup");

            //var haftaninGunleri = Enum.GetValues(typeof(DayOfWeek)).Cast<DayOfWeek>().ToList();
            if (eczaneNobetMazeretCoklu.HaftaninGunu == null)
            {
                eczaneNobetMazeretCoklu.HaftaninGunu = new int[1] {
                    0
                };
            }

            var haftaninGunu = eczaneNobetMazeretCoklu.HaftaninGunu;

            var eczaneNobetGrup = _eczaneNobetGrupService.GetDetaylar(eczaneNobetMazeretCoklu.EczaneNobetGrupId);

            var bayramlar = _nobetGrupGorevTipTakvimOzelGunService.GetDetaylar(eczaneNobetMazeretCoklu.BaslangicTarihi, eczaneNobetMazeretCoklu.BitisTarihi, eczaneNobetGrup.Select(s => s.NobetGrupId).ToList(), 1)
                            .Where(w => eczaneNobetMazeretCoklu.HaftaninGunu.Contains(w.NobetGunKuralId)).ToList();

            var tarihAraligi = _takvimService.GetDetaylar(eczaneNobetMazeretCoklu.BaslangicTarihi, eczaneNobetMazeretCoklu.BitisTarihi);

            if (eczaneNobetMazeretCoklu.HaftaninGunu.Count() > 0)
            {
                tarihAraligi = tarihAraligi.Where(w => eczaneNobetMazeretCoklu.HaftaninGunu.Contains(w.HaftaninGunu) ||
                                                  bayramlar.Select(s => s.TakvimId).Contains(w.TakvimId)).ToList();
            }

            var eczaneler = _eczaneService.GetDetaylar(nobetUstGrup.Id).Select(s => s.Id).ToList();

            var baslangicTarihi = _takvimService.GetByTarih(eczaneNobetMazeretCoklu.BaslangicTarihi);
            var bitisTarihi     = _takvimService.GetByTarih(eczaneNobetMazeretCoklu.BitisTarihi);

            //seçilen tarih aralığı takvimde olmalıdır.
            if (baslangicTarihi == null || bitisTarihi == null)
            {
                var minYil = _takvimService.GetList().Min(x => x.Tarih.Year);
                var maxYil = _takvimService.GetList().Max(x => x.Tarih.Year);
                ViewBag.minYil = minYil;
                ViewBag.maxYil = maxYil;

                ViewBag.Mesaj             = $"Başlangıç-Bitiş tarih aralığı enaz {minYil} ila ençok {maxYil} arasında olmalıdır...";
                ViewBag.EczaneNobetGrupId = new SelectList(_eczaneNobetGrupService.GetDetaylarByEczaneIdList(eczaneler)
                                                           .Select(s => new MyDrop {
                    Id = s.Id, Value = $"({s.EczaneAdi}, {s.NobetGrupGorevTipAdi}"
                }).OrderBy(s => s.Value), "Id", "Value", eczaneNobetMazeretCoklu.EczaneNobetGrupId);
                ViewBag.MazeretId    = new SelectList(_mazeretService.GetList().Where(w => w.Id != 3), "Id", "Adi", eczaneNobetMazeretCoklu.MazeretId);
                ViewBag.HaftaninGunu = new SelectList(_takvimService.GetHaftaninGunleri(), "Id", "Value", eczaneNobetMazeretCoklu.HaftaninGunu);

                return(View(eczaneNobetMazeretCoklu));
            }

            //Başlangıç tarihi Bitiş tarihinden büyük olamaz.
            if (baslangicTarihi.Id > bitisTarihi.Id)
            {
                ViewBag.Mesaj2            = $"Başlangıç tarihi ({baslangicTarihi.Tarih}) Bitiş tarihinden ({bitisTarihi.Tarih}) büyük olamaz...";
                ViewBag.EczaneNobetGrupId = new SelectList(_eczaneNobetGrupService.GetDetaylarByEczaneIdList(eczaneler)
                                                           .Select(s => new MyDrop {
                    Id = s.Id, Value = $"{s.EczaneAdi}, {s.NobetGrupGorevTipAdi}"
                }).OrderBy(s => s.Value), "Id", "Value", eczaneNobetMazeretCoklu.EczaneNobetGrupId);
                ViewBag.MazeretId    = new SelectList(_mazeretService.GetList().Where(w => w.Id != 3), "Id", "Adi", eczaneNobetMazeretCoklu.MazeretId);
                ViewBag.HaftaninGunu = new SelectList(_takvimService.GetHaftaninGunleri(), "Id", "Value", eczaneNobetMazeretCoklu.HaftaninGunu);

                return(View(eczaneNobetMazeretCoklu));
            }

            var eczaneNobetMazeretler = new List <EczaneNobetMazeret>();

            foreach (var eczaneNobetGrupId in eczaneNobetMazeretCoklu.EczaneNobetGrupId)
            {
                foreach (var item in tarihAraligi)
                {
                    eczaneNobetMazeretler.Add(new EczaneNobetMazeret
                    {
                        MazeretId         = eczaneNobetMazeretCoklu.MazeretId,
                        EczaneNobetGrupId = eczaneNobetGrupId,// eczaneNobetMazeretCoklu.EczaneNobetGrupId,
                        TakvimId          = item.TakvimId,
                        Aciklama          = eczaneNobetMazeretCoklu.Aciklama,
                    });
                }
            }

            var eklenecekMazeretSayisi = eczaneNobetMazeretler.Count;

            if (ModelState.IsValid && eklenecekMazeretSayisi > 0)
            {
                try
                {
                    _eczaneNobetMazeretService.CokluEkle(eczaneNobetMazeretler);
                }
                catch (DbUpdateException ex)
                {
                    var hata = ex.InnerException.ToString();

                    string[] dublicateHata = { "Cannot insert dublicate row in object", "with unique index" };

                    var dublicateRowHatasiMi = dublicateHata.Any(h => hata.Contains(h));

                    if (dublicateRowHatasiMi)
                    {
                        throw new Exception("<strong>Bir eczaneye aynı gün için iki mazeret kaydı eklenemez...</strong>");
                    }

                    throw ex;
                }
                catch (Exception ex)
                {
                    throw ex;
                }

                TempData["EklenenMazeretSayisi"] = eklenecekMazeretSayisi;
                ViewBag.EczaneNobetGrupId        = new SelectList(_eczaneNobetGrupService.GetDetaylarByEczaneIdList(eczaneler)
                                                                  .Select(s => new MyDrop {
                    Id = s.Id, Value = $"{s.EczaneAdi}, {s.NobetGrupGorevTipAdi}"
                }).OrderBy(s => s.Value), "Id", "Value", eczaneNobetMazeretCoklu.EczaneNobetGrupId);
                ViewBag.MazeretId    = new SelectList(_mazeretService.GetList().Where(w => w.Id != 3), "Id", "Adi", eczaneNobetMazeretCoklu.MazeretId);
                ViewBag.HaftaninGunu = new SelectList(_takvimService.GetHaftaninGunleri(), "Id", "Value", eczaneNobetMazeretCoklu.HaftaninGunu);
                ViewBag.SecilenHaftaninGunuSayisi = eczaneNobetMazeretCoklu.HaftaninGunu.Count();
                //return RedirectToAction("Index");
                return(View(eczaneNobetMazeretCoklu));
            }
            else
            {
                ViewBag.EczaneNobetGrupId = new SelectList(_eczaneNobetGrupService.GetDetaylarByEczaneIdList(eczaneler)
                                                           .Select(s => new MyDrop
                {
                    Id    = s.Id,
                    Value = $"{s.EczaneAdi}, {s.NobetGrupGorevTipAdi}"
                }).OrderBy(s => s.Value), "Id", "Value");

                ViewBag.MazeretId    = new SelectList(_mazeretService.GetList().Where(w => w.Id != 3), "Id", "Adi", eczaneNobetMazeretCoklu.MazeretId);
                ViewBag.HaftaninGunu = new SelectList(_takvimService.GetHaftaninGunleri(), "Id", "Value");
                ViewBag.SecilenHaftaninGunuSayisi = eczaneNobetMazeretCoklu.HaftaninGunu.Count();

                //bayram ve hafta günleri kontrol
                if (bayramlar.Count == 0)
                {
                    if (eczaneNobetMazeretCoklu.HaftaninGunu.Where(w => w == 8 && w == 9).Count() > 0)
                    {
                        ViewBag.MesajBayram = $"Girilen tarih aralığına uygun bayram bulunmamaktadır.";
                    }
                    else if (eczaneNobetMazeretCoklu.HaftaninGunu.Where(w => w == 8).Count() > 0)
                    {
                        ViewBag.MesajBayram = $"Girilen tarih aralığına uygun dini bayram bulunmamaktadır.";
                    }
                    else if (eczaneNobetMazeretCoklu.HaftaninGunu.Where(w => w == 9).Count() > 0)
                    {
                        ViewBag.MesajBayram = $"Girilen tarih aralığına uygun milli bayram bulunmamaktadır.";
                    }
                    else if (eczaneNobetMazeretCoklu.HaftaninGunu.Where(w => w <= 7).Count() > 0)
                    {
                        ViewBag.MesajBayram = $"Girilen tarih aralığına uygun hafta günü bulunmamaktadır.";
                    }
                }
                else
                {
                    if (eczaneNobetMazeretCoklu.HaftaninGunu.Count() == 1)
                    {
                        ViewBag.MesajBayram = $"Seçilen hafta gününe uygun tarih aralığı bulunmamaktadır.";
                    }
                    else
                    {
                        ViewBag.MesajBayram = $"Seçilen hafta günlerine uygun tarih aralığı bulunmamaktadır.";
                    }
                }
            }

            return(View(eczaneNobetMazeretCoklu));
        }