Ejemplo n.º 1
0
        public async Task <ActionResult> Edit([Bind(Include = "Id,Ad,Aciklama,EtkilesenEtkenMaddelerId")] EtkenMaddeViewModel vm)
        {
            if (!ModelState.IsValid)
            {
                ViewBag.EtkenMaddeListe = new MultiSelectList(db.EtkenMadde.Select(x => new SelectListItem {
                    Text = x.Ad, Value = x.Id.ToString()
                }), "Value", "Text", vm.EtkilesenEtkenMaddelerId);
                return(View(vm));
            }
            EtkenMadde m = await db.EtkenMadde.FindAsync(vm.Id);

            if (m == null)
            {
                return(HttpNotFound());
            }
            if (db.EtkenMadde.Where(x => x.Ad == vm.Ad.ToLower() && x.Id != vm.Id).Count() > 0)
            {
                ModelState.AddModelError("Ad", "Bu isimde bir etken madde zaten var.");
                ViewBag.EtkenMaddeListe = new MultiSelectList(db.EtkenMadde.Select(x => new SelectListItem {
                    Text = x.Ad, Value = x.Id.ToString()
                }), "Value", "Text", vm.EtkilesenEtkenMaddelerId);
                return(View(vm));
            }
            m.Ad       = vm.Ad;
            m.Aciklama = vm.Aciklama;
            var eskiEtkilesenEtkenMaddeler = await db.EtkenMaddeEtkilesim.Where(x => x.EtkenMaddeId1 == m.Id || x.EtkenMaddeId2 == m.Id).ToListAsync();

            if (eskiEtkilesenEtkenMaddeler == null || eskiEtkilesenEtkenMaddeler.Count == 0)
            {
                foreach (var item in vm.EtkilesenEtkenMaddelerId)
                {
                    db.EtkenMaddeEtkilesim.Add(new EtkenMaddeEtkilesim {
                        EtkenMaddeId1 = m.Id, EtkenMaddeId2 = item
                    });
                }
            }
            else
            {
                if (vm.EtkilesenEtkenMaddelerId == null || vm.EtkilesenEtkenMaddelerId.Count() == 0)
                {
                    db.EtkenMaddeEtkilesim.RemoveRange(eskiEtkilesenEtkenMaddeler);
                }
                else
                {
                    List <int> eskiEtkilesenEtkenMaddelerId = new List <int>();
                    foreach (var item in eskiEtkilesenEtkenMaddeler)
                    {
                        if (item.EtkenMaddeId1 == vm.Id)
                        {
                            eskiEtkilesenEtkenMaddelerId.Add(item.EtkenMaddeId2);
                        }
                        else if (item.EtkenMaddeId2 == vm.Id)
                        {
                            eskiEtkilesenEtkenMaddelerId.Add(item.EtkenMaddeId1);
                        }
                    }

                    var yeniEtkilesenEtkenMaddeFark = vm.EtkilesenEtkenMaddelerId.Except(eskiEtkilesenEtkenMaddelerId);
                    if (yeniEtkilesenEtkenMaddeFark != null && yeniEtkilesenEtkenMaddeFark.Count() > 0)
                    {
                        foreach (var item in yeniEtkilesenEtkenMaddeFark)
                        {
                            db.EtkenMaddeEtkilesim.Add(new EtkenMaddeEtkilesim {
                                EtkenMaddeId1 = m.Id, EtkenMaddeId2 = item
                            });
                        }
                    }
                    var eskiEtkilesenEtkenMaddeFark = eskiEtkilesenEtkenMaddelerId.Except(vm.EtkilesenEtkenMaddelerId);
                    if (eskiEtkilesenEtkenMaddeFark != null && eskiEtkilesenEtkenMaddeFark.Count() > 0)
                    {
                        db.EtkenMaddeEtkilesim.RemoveRange(eskiEtkilesenEtkenMaddeler.Where(x => eskiEtkilesenEtkenMaddeFark.Contains(x.EtkenMaddeId1) || eskiEtkilesenEtkenMaddeFark.Contains(x.EtkenMaddeId2)));
                    }
                }
            }
            db.Entry(m).State = EntityState.Modified;

            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"));
        }
        public async Task <ActionResult> AnalizYap(int id)
        {
            Ilac im = await db.Ilac.FindAsync(id);

            if (im == null)
            {
                return(HttpNotFound());
            }
            var        CheckYeniEtkilesenIlaclarId = Request.Form.GetValues("CheckBoxEtkilesilenler");
            List <int> yeniEtkilesenIlaclarId      = new List <int>();

            if (CheckYeniEtkilesenIlaclarId != null)
            {
                foreach (var item in CheckYeniEtkilesenIlaclarId)
                {
                    yeniEtkilesenIlaclarId.Add(Convert.ToInt32(item));
                }
            }

            var eskiEtkilesenIlaclar = await db.IlacEtkilesim.Where(x => x.IlacId1 == id || x.IlacId2 == id).ToListAsync();

            if (eskiEtkilesenIlaclar == null || eskiEtkilesenIlaclar.Count == 0)
            {
                foreach (var item in yeniEtkilesenIlaclarId)
                {
                    db.IlacEtkilesim.Add(new IlacEtkilesim {
                        IlacId1 = id, IlacId2 = item
                    });
                }
            }
            else
            {
                if (yeniEtkilesenIlaclarId == null || yeniEtkilesenIlaclarId.Count() == 0)
                {
                    db.IlacEtkilesim.RemoveRange(eskiEtkilesenIlaclar);
                }
                else
                {
                    List <int> eskiEtkilesenIlaclarId = new List <int>();
                    foreach (var item in eskiEtkilesenIlaclar)
                    {
                        if (item.IlacId1 == id)
                        {
                            eskiEtkilesenIlaclarId.Add(item.IlacId2);
                        }
                        else if (item.IlacId2 == id)
                        {
                            eskiEtkilesenIlaclarId.Add(item.IlacId1);
                        }
                    }
                    var yeniIlaclarFark = yeniEtkilesenIlaclarId.Except(eskiEtkilesenIlaclarId);
                    if (yeniIlaclarFark != null && yeniIlaclarFark.Count() > 0)
                    {
                        foreach (var item in yeniIlaclarFark)
                        {
                            db.IlacEtkilesim.Add(new IlacEtkilesim {
                                IlacId1 = id, IlacId2 = item
                            });
                        }
                    }
                    var eskiIlaclarFark = eskiEtkilesenIlaclarId.Except(yeniEtkilesenIlaclarId);
                    if (eskiIlaclarFark != null && eskiIlaclarFark.Count() > 0)
                    {
                        db.IlacEtkilesim.RemoveRange(eskiEtkilesenIlaclar.Where(x => eskiIlaclarFark.Contains(x.IlacId1) || eskiIlaclarFark.Contains(x.IlacId2)));
                    }
                }
            }
            im.AnalizYapildiMi = true;
            db.Entry(im).State = EntityState.Modified;
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }