// GET: Ilac/Details/5
        public async Task <ActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Ilac m = await db.Ilac.FindAsync(id);

            if (m == null)
            {
                return(HttpNotFound());
            }

            var vm = new IlacViewModel
            {
                Id                = m.Id,
                Ad                = m.Ad,
                Aciklama          = m.Aciklama,
                YanEtkiler        = m.YanEtkiler,
                NasilKullanilir   = m.NasilKullanilir,
                DikkatEdilecekler = m.DikkatEdilecekler,
                EtkenMaddeler     = await db.IlacEtkenMadde.Where(x => x.IlacId == m.Id).Select(x => x.EtkenMadde).ToListAsync()
            };

            return(View(vm));
        }
        public async Task <ActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var m = await db.Ilac.FindAsync(id);

            if (m == null)
            {
                return(HttpNotFound());
            }

            var vm = new IlacViewModel
            {
                Id                = m.Id,
                Ad                = m.Ad,
                Aciklama          = m.Aciklama,
                YanEtkiler        = m.YanEtkiler,
                NasilKullanilir   = m.NasilKullanilir,
                DikkatEdilecekler = m.DikkatEdilecekler,
                EtkenMaddeler     = await db.IlacEtkenMadde.Where(x => x.IlacId == m.Id).Select(x => x.EtkenMadde).ToListAsync()
            };
            IEnumerable <SelectListItem> items = new MultiSelectList(db.EtkenMadde.Select(x => new SelectListItem {
                Text = x.Ad, Value = x.Id.ToString()
            }), "Value", "Text", vm.EtkenMaddeler);

            ViewBag.EtkenMaddeListe = items;
            //ViewBag.EtkenMaddeListe = new MultiSelectList(db.EtkenMadde.Select(x => new SelectListItem { Text = x.Ad, Value = x.Id.ToString() }), "Value", "Text", vm.EtkilesenEtkenMaddelerId);
            return(View(vm));
        }
        public async Task <ActionResult> Create([Bind(Include = "Id,Ad,Aciklama,YanEtkiler,NasilKullanilir,DikkatEdilecekler,EtkenMaddelerId")] IlacViewModel vm)
        {
            if (!ModelState.IsValid)
            {
                ViewBag.EtkenMaddeListe = await db.EtkenMadde.Select(x => new SelectListItem {
                    Text = x.Ad, Value = x.Id.ToString()
                }).ToListAsync();

                return(View(vm));
            }
            if (db.Ilac.Where(x => x.Ad == vm.Ad.ToLower()).Count() > 0)
            {
                ModelState.AddModelError("Ad", "Bu isimde bir ilac zaten var.");
                ViewBag.EtkenMaddeListe = await db.EtkenMadde.Select(x => new SelectListItem {
                    Text = x.Ad, Value = x.Id.ToString()
                }).ToListAsync();

                return(View(vm));
            }
            var m = new Ilac
            {
                Id                = vm.Id,
                Ad                = vm.Ad,
                Aciklama          = vm.Aciklama,
                YanEtkiler        = vm.YanEtkiler,
                NasilKullanilir   = vm.NasilKullanilir,
                DikkatEdilecekler = vm.DikkatEdilecekler,
                AnalizYapildiMi   = false
            };

            db.Ilac.Add(m);
            await db.SaveChangesAsync();

            if (vm.EtkenMaddelerId != null && vm.EtkenMaddelerId.Count > 0)
            {
                foreach (var item in vm.EtkenMaddelerId)
                {
                    db.IlacEtkenMadde.Add(new IlacEtkenMadde {
                        EtkenMaddeId = item, IlacId = m.Id
                    });
                }
                await db.SaveChangesAsync();
            }
            return(RedirectToAction("Index"));
        }
        public async Task <ActionResult> Edit([Bind(Include = "Id,Ad,Aciklama,YanEtkiler,NasilKullanilir,DikkatEdilecekler,EtkenMaddelerId")] IlacViewModel vm)
        {
            if (!ModelState.IsValid)
            {
                ViewBag.EtkenMaddeListe = new MultiSelectList(db.EtkenMadde.Select(x => new SelectListItem {
                    Text = x.Ad, Value = x.Id.ToString()
                }), "Value", "Text", vm.EtkenMaddelerId);
                return(View(vm));
            }
            Ilac m = await db.Ilac.FindAsync(vm.Id);

            if (m == null)
            {
                return(HttpNotFound());
            }
            if (db.Ilac.Where(x => x.Ad == vm.Ad.ToLower() && x.Id != vm.Id).Count() > 0)
            {
                ModelState.AddModelError("Ad", "Bu isimde bir ilac zaten var.");
                ViewBag.EtkenMaddeListe = new MultiSelectList(db.EtkenMadde.Select(x => new SelectListItem {
                    Text = x.Ad, Value = x.Id.ToString()
                }), "Value", "Text", vm.EtkenMaddelerId);
                return(View(vm));
            }
            m.Ad                = vm.Ad;
            m.Aciklama          = vm.Aciklama;
            m.YanEtkiler        = vm.YanEtkiler;
            m.NasilKullanilir   = vm.NasilKullanilir;
            m.DikkatEdilecekler = vm.DikkatEdilecekler;
            m.IlacEtkenMadde    = await db.IlacEtkenMadde.Where(x => x.IlacId == m.Id).ToListAsync();

            var eskiEtkenMaddelerId = m.IlacEtkenMadde.Select(x => x.EtkenMadde.Id).ToList();

            if (eskiEtkenMaddelerId == null || eskiEtkenMaddelerId.Count() == 0)
            {
                foreach (var item in vm.EtkenMaddelerId)
                {
                    db.IlacEtkenMadde.Add(new IlacEtkenMadde {
                        IlacId = m.Id, EtkenMaddeId = item
                    });
                }
            }
            else
            {
                if (vm.EtkenMaddelerId == null || vm.EtkenMaddelerId.Count() == 0)
                {
                    db.IlacEtkenMadde.RemoveRange(m.IlacEtkenMadde);
                }
                else
                {
                    var yeniEtkenMaddeFarkId = vm.EtkenMaddelerId.Except(eskiEtkenMaddelerId);
                    if (yeniEtkenMaddeFarkId != null && yeniEtkenMaddeFarkId.Count() > 0)
                    {
                        foreach (var item in yeniEtkenMaddeFarkId)
                        {
                            db.IlacEtkenMadde.Add(new IlacEtkenMadde {
                                IlacId = m.Id, EtkenMaddeId = item
                            });
                        }
                    }
                    var eskiEtkenMaddeFarkId = eskiEtkenMaddelerId.Except(vm.EtkenMaddelerId);
                    if (eskiEtkenMaddeFarkId != null && eskiEtkenMaddeFarkId.Count() > 0)
                    {
                        db.IlacEtkenMadde.RemoveRange(m.IlacEtkenMadde.Where(x => eskiEtkenMaddeFarkId.Contains(x.EtkenMaddeId)));
                    }
                }
            }
            db.Entry(m).State = EntityState.Modified;
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        // GET: IlacEtkilesim/Create
        public async Task <ActionResult> AnalizYap(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Ilac im = await db.Ilac.FindAsync(id);

            if (im == null)
            {
                return(HttpNotFound());
            }

            var ivm = new IlacViewModel
            {
                Id                = im.Id,
                Ad                = im.Ad,
                Aciklama          = im.Aciklama,
                YanEtkiler        = im.YanEtkiler,
                NasilKullanilir   = im.NasilKullanilir,
                DikkatEdilecekler = im.DikkatEdilecekler,
                EtkenMaddeler     = await db.IlacEtkenMadde.Where(x => x.IlacId == im.Id).Select(x => x.EtkenMadde).ToListAsync()
            };
            var vm = new IlacEtkilesimViewModel();

            vm.Ilac = ivm;
            vm.Ilac.EtkenMaddelerId = vm.Ilac.EtkenMaddeler.Select(x => x.Id).ToList();

            List <EtkenMaddeEtkilesim> EtkenMaddeEtkilesim = await db.EtkenMaddeEtkilesim.Where(x => vm.Ilac.EtkenMaddelerId.Contains(x.EtkenMaddeId1) || vm.Ilac.EtkenMaddelerId.Contains(x.EtkenMaddeId2)).ToListAsync();

            List <int> EtkilesenEtkenMaddeId = new List <int>();

            if (EtkenMaddeEtkilesim != null)
            {
                foreach (var item in EtkenMaddeEtkilesim)
                {
                    if (item.EtkenMaddeId1 == id)
                    {
                        EtkilesenEtkenMaddeId.Add(item.EtkenMaddeId2);
                    }
                    else if (item.EtkenMaddeId2 == id)
                    {
                        EtkilesenEtkenMaddeId.Add(item.EtkenMaddeId1);
                    }
                }
            }
            EtkilesenEtkenMaddeId = EtkilesenEtkenMaddeId.Distinct().ToList();
            List <Ilac> mList = await db.IlacEtkenMadde.Where(x => EtkilesenEtkenMaddeId.Contains(x.EtkenMaddeId)).Select(x => x.Ilac).ToListAsync();

            foreach (var item in mList)
            {
                ivm = new IlacViewModel
                {
                    Id                = item.Id,
                    Ad                = item.Ad,
                    Aciklama          = item.Aciklama,
                    YanEtkiler        = item.YanEtkiler,
                    NasilKullanilir   = item.NasilKullanilir,
                    DikkatEdilecekler = item.DikkatEdilecekler,
                    EtkenMaddeler     = await db.IlacEtkenMadde.Where(x => x.IlacId == item.Id).Select(x => x.EtkenMadde).ToListAsync()
                };
                vm.EtkilesilenIlaclar.Add(ivm);
            }
            return(View(vm));
        }
        // GET: IlacEtkilesim/Details/5
        public async Task <ActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Ilac im = await db.Ilac.FindAsync(id);

            if (im == null)
            {
                return(HttpNotFound());
            }
            var mList = await db.IlacEtkilesim.Where(x => x.IlacId1 == id || x.IlacId2 == id).ToListAsync();

            //if (mList == null || mList.Count == 0)
            //{
            //    return HttpNotFound();
            //}
            //İlşaç biligileri dolduruluyor
            var ivm = new IlacViewModel
            {
                Id                = im.Id,
                Ad                = im.Ad,
                Aciklama          = im.Aciklama,
                YanEtkiler        = im.YanEtkiler,
                NasilKullanilir   = im.NasilKullanilir,
                DikkatEdilecekler = im.DikkatEdilecekler,
                EtkenMaddeler     = await db.IlacEtkenMadde.Where(x => x.IlacId == im.Id).Select(x => x.EtkenMadde).ToListAsync()
            };
            var vm = new IlacEtkilesimViewModel();

            vm.Ilac = ivm;
            if (mList != null)
            {
                Ilac          it = new Ilac();
                IlacViewModel ivmt;
                foreach (var item in mList)
                {
                    if (item.IlacId1 == id)
                    {
                        it = item.Ilac2;
                    }
                    else if (item.IlacId2 == id)
                    {
                        it = item.Ilac1;
                    }
                    ivmt = new IlacViewModel
                    {
                        Id                = it.Id,
                        Ad                = it.Ad,
                        Aciklama          = it.Aciklama,
                        YanEtkiler        = it.YanEtkiler,
                        NasilKullanilir   = it.NasilKullanilir,
                        DikkatEdilecekler = it.DikkatEdilecekler,
                        EtkenMaddeler     = await db.IlacEtkenMadde.Where(x => x.IlacId == it.Id).Select(x => x.EtkenMadde).ToListAsync()
                    };
                    vm.EtkilesilenIlaclar.Add(ivmt);
                }
            }

            return(View(vm));
        }