// GET: EczaneNobet/Takvim/Details/5 public ActionResult Details(int id) { if (id < 1) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Takvim takvim = _takvimService.GetById(id); if (takvim == null) { return(HttpNotFound()); } return(View(takvim)); }
public ActionResult Create([Bind(Include = "Id,EczaneNobetGrupId,IstekId,BaslangicTarihi,BitisTarihi,HaftaninGunu,Aciklama,YinedeEklensinMi")] EczaneNobetIstekCoklu eczaneNobetIstekCoklu) { var nobetUstGrup = _nobetUstGrupSessionService.GetSession("nobetUstGrup"); var eczaneNobetGruplar = _eczaneNobetGrupService.GetDetaylar(eczaneNobetIstekCoklu.EczaneNobetGrupId); var nobetUstGrupId = eczaneNobetGruplar.Select(s => s.NobetUstGrupId).Distinct().SingleOrDefault(); var tarihler = _takvimService.GetList() .Select(s => new MyDrop { Id = s.Id, Value = s.Tarih.ToLongDateString() }); if (eczaneNobetIstekCoklu.HaftaninGunu == null) { eczaneNobetIstekCoklu.HaftaninGunu = new int[1] { 0 }; } var haftaninGunu = eczaneNobetIstekCoklu.HaftaninGunu; var bayramlar = _nobetGrupGorevTipTakvimOzelGunService.GetDetaylar(eczaneNobetIstekCoklu.BaslangicTarihi, eczaneNobetIstekCoklu.BitisTarihi, eczaneNobetGruplar.Select(s => s.NobetGrupId).ToList(), 1) .Where(w => eczaneNobetIstekCoklu.HaftaninGunu.Contains(w.NobetGunKuralId)).ToList(); var tarihAraligi = _takvimService.GetDetaylar(eczaneNobetIstekCoklu.BaslangicTarihi, eczaneNobetIstekCoklu.BitisTarihi); if (eczaneNobetIstekCoklu.HaftaninGunu.Count() > 0) { tarihAraligi = tarihAraligi.Where(w => eczaneNobetIstekCoklu.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(eczaneNobetIstekCoklu.BaslangicTarihi); var bitisTarihi = _takvimService.GetByTarih(eczaneNobetIstekCoklu.BitisTarihi); 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", eczaneNobetIstekCoklu.EczaneNobetGrupId); ViewBag.IstekId = new SelectList(_istekService.GetList(), "Id", "Adi", eczaneNobetIstekCoklu.IstekId); ViewBag.HaftaninGunu = new SelectList(_takvimService.GetHaftaninGunleri(), "Id", "Value", eczaneNobetIstekCoklu.HaftaninGunu); ViewBag.SecilenHaftaninGunuSayisi = eczaneNobetIstekCoklu.HaftaninGunu.Count(); //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..."; return(View(eczaneNobetIstekCoklu)); } //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..."; return(View(eczaneNobetIstekCoklu)); } var eczaneNobetIstekler = new List <EczaneNobetIstek>(); foreach (var eczaneNobetGrupId in eczaneNobetIstekCoklu.EczaneNobetGrupId) { foreach (var item in tarihAraligi) { eczaneNobetIstekler.Add(new EczaneNobetIstek { IstekId = eczaneNobetIstekCoklu.IstekId, EczaneNobetGrupId = eczaneNobetGrupId, TakvimId = item.TakvimId, Aciklama = eczaneNobetIstekCoklu.Aciklama, }); } } var eklenenEczaneler = new List <EczaneNobetIstekDetay>(); if (ModelState.IsValid && eczaneNobetIstekler.Count > 0) { var istekGirilenEczaneninEsOlduguEczaneler = _eczaneGrupService.GetDetaylarEczaneninEsOlduguEczaneler(eczaneNobetGruplar.Select(s => s.Id).ToList()); var istekGirilenTarihtekiEczaneler = _eczaneNobetIstekService.GetDetaylarByNobetUstGrupId(eczaneNobetIstekCoklu.BaslangicTarihi, eczaneNobetIstekCoklu.BitisTarihi, nobetUstGrupId); var istekGirilenTarihtekiEsgrupOlduguEczaneler = _eczaneNobetIstekService.GetDetaylar(istekGirilenTarihtekiEczaneler, istekGirilenEczaneninEsOlduguEczaneler); var istekGirilenTarihtekiEsgrupOlduguEczanelerTumu = istekGirilenEczaneninEsOlduguEczaneler .Union(istekGirilenTarihtekiEsgrupOlduguEczaneler) .OrderBy(o => o.EczaneGrupTanimId) .ThenBy(o => o.EczaneAdi) .ToList(); var istekGirilenTarihtekiEsgrupOlduguEczaneSayisi = istekGirilenTarihtekiEsgrupOlduguEczanelerTumu.Count; if (istekGirilenTarihtekiEsgrupOlduguEczaneSayisi > 0) { ViewBag.IstekGirilenTarihtekiEsgrupOlduguEczaneler = istekGirilenTarihtekiEsgrupOlduguEczanelerTumu; return(View(eczaneNobetIstekCoklu)); } else { try { _eczaneNobetIstekService.CokluEkle(eczaneNobetIstekler); foreach (var item in eczaneNobetIstekler) { eklenenEczaneler.Add(new EczaneNobetIstekDetay { EczaneAdi = _eczaneNobetGrupService.GetDetayById(item.EczaneNobetGrupId).EczaneAdi, Tarih = _takvimService.GetById(item.TakvimId).Tarih }); } } 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 istek kaydı eklenemez...</strong>"); } throw ex; } catch (Exception ex) { throw ex; } } TempData["EklenenIstekSayisi"] = eklenenEczaneler.Count; TempData["EklenenIstekler"] = eklenenEczaneler; return(View(eczaneNobetIstekCoklu)); } else { //bayram ve hafta günleri kontrol if (bayramlar.Count == 0) { if (eczaneNobetIstekCoklu.HaftaninGunu.Where(w => w == 8 && w == 9).Count() > 0) { ViewBag.MesajBayram = $"Girilen tarih aralığına uygun bayram bulunmamaktadır."; } else if (eczaneNobetIstekCoklu.HaftaninGunu.Where(w => w == 8).Count() > 0) { ViewBag.MesajBayram = $"Girilen tarih aralığına uygun dini bayram bulunmamaktadır."; } else if (eczaneNobetIstekCoklu.HaftaninGunu.Where(w => w == 9).Count() > 0) { ViewBag.MesajBayram = $"Girilen tarih aralığına uygun milli bayram bulunmamaktadır."; } else if (eczaneNobetIstekCoklu.HaftaninGunu.Where(w => w <= 7).Count() > 0) { ViewBag.MesajBayram = $"Girilen tarih aralığına uygun hafta günü bulunmamaktadır."; } } else { if (eczaneNobetIstekCoklu.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(eczaneNobetIstekCoklu)); }
//[HandleException] public ActionResult CreatePartial([Bind(Include = "Id,EczaneNobetGrupId,MazeretId,BaslangicTarihi,BitisTarihi,HaftaninGunu,Aciklama")] EczaneNobetMazeretCoklu eczaneNobetMazeretCoklu) { 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..."; return(PartialView()); } //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..."; return(PartialView()); } 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; var eklenenEczaneler = new List <EczaneNobetMazeretDetay>(); if (ModelState.IsValid && eklenecekMazeretSayisi > 0) { try { _eczaneNobetMazeretService.CokluEkle(eczaneNobetMazeretler); foreach (var item in eczaneNobetMazeretler) { var eczane = _eczaneNobetGrupService.GetDetayById(item.EczaneNobetGrupId); eklenenEczaneler.Add(new EczaneNobetMazeretDetay { NobetGorevTipAdi = eczane.NobetGorevTipAdi, EczaneAdi = eczane.EczaneAdi, Tarih = _takvimService.GetById(item.TakvimId).Tarih, Aciklama = item.Aciklama }); } } 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>"); return(PartialView("ErrorDublicateRowPartial")); } //throw ex; } catch (Exception) { return(PartialView("ErrorPartial")); //throw ex; } TempData["EklenenMazeretSayisi"] = eklenenEczaneler.Count; TempData["EklenenMazeretler"] = eklenenEczaneler; ViewBag.SecilenHaftaninGunuSayisi = eczaneNobetMazeretCoklu.HaftaninGunu.Count(); //return RedirectToAction("Index"); return(PartialView()); } else { //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(PartialView()); }