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)); }