public IActionResult DiseaseAdd(HastalikTakibi.Models.DiseaseVm disease)
        {
            if (disease == null || string.IsNullOrEmpty(disease.Name))
            {
                ViewBag.Error = "Lütfen zorunlu alanları doldurun";
                return(View(disease));
            }
            var diseaseDb = new Disease()
            {
                CreateTime    = DateTime.Now,
                FirstSeenDate = disease.FirstSeenDate,
                Name          = disease.Name
            };

            if (disease.CategoryIdList != null)
            {
                diseaseDb.DiseaseCategory = new List <DiseaseCategory>();
                foreach (var item in disease.CategoryIdList)
                {
                    diseaseDb.DiseaseCategory.Add(new DiseaseCategory()
                    {
                        CreateTime = DateTime.Now,
                        CategoryId = item,
                    });
                }
            }
            _hastlikTakipDbContext.Disease.Add(diseaseDb);
            _hastlikTakipDbContext.SaveChangesAsync().GetAwaiter().GetResult();
            return(RedirectToAction("Index"));
        }
        public IActionResult DiseaseUpdate(HastalikTakibi.Models.DiseaseVm disease)
        {
            var diseaseDb = _hastlikTakipDbContext.Disease.Where(a => a.Id == disease.Id).FirstOrDefault();

            if (diseaseDb == null)
            {
                ViewBag.Error = "Hastalık Bulunamadı";
                return(RedirectToAction("Index"));
            }
            if (disease == null || string.IsNullOrEmpty(disease.Name))
            {
                ViewBag.Error = "Lütfen zorunlu alanları doldurun";
                SetCategory();
                disease.CategoryIdList     = disease.CategoryIdList == null ? new List <int>() : disease.CategoryIdList;
                ViewBag.DisaseCategoryList = (from c in _hastlikTakipDbContext.Category
                                              where disease.CategoryIdList.Contains(c.Id)
                                              select new SelectListItem()
                {
                    Value = c.Id.ToString(),
                    Text = c.Name
                }).ToList();
                return(View(disease));
            }
            diseaseDb.Name           = disease.Name;
            diseaseDb.FirstSeenDate  = disease.FirstSeenDate;
            diseaseDb.LastUpdateTime = DateTime.Now;
            _hastlikTakipDbContext.Entry(diseaseDb).State = Microsoft.EntityFrameworkCore.EntityState.Modified;

            var diseaseCategoryDbList = _hastlikTakipDbContext.DiseaseCategory.Where(a => a.DisaeaseId == disease.Id).ToList();

            foreach (var item in diseaseCategoryDbList)
            {
                if (!disease.CategoryIdList.Contains(item.Id))
                {
                    _hastlikTakipDbContext.Entry(item).State = Microsoft.EntityFrameworkCore.EntityState.Deleted;
                }
                else
                {
                    item.LastUpdateTime = DateTime.Now;
                    _hastlikTakipDbContext.Entry(item).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
                    disease.CategoryIdList.Remove(item.Id);
                }
            }
            foreach (var item in disease.CategoryIdList)
            {
                _hastlikTakipDbContext.Entry(new DiseaseCategory()
                {
                    CreateTime = DateTime.Now,
                    CategoryId = item,
                    DisaeaseId = disease.Id
                }).State = Microsoft.EntityFrameworkCore.EntityState.Added;
            }
            _hastlikTakipDbContext.SaveChangesAsync().GetAwaiter().GetResult();
            return(RedirectToAction("Index"));
        }