public ActionResult Edytuj(KsiazkaEdytujViewModel kevm) { if (kevm.KsiazkaViewModel.Zawartosc == null && !string.IsNullOrEmpty(kevm.StaraZawartosc)) { ModelState["KsiazkaViewModel.Zawartosc"].Errors.Clear(); } if (ModelState.IsValid) { var ksiazka = db.Ksiazki .Include(k => k.Pisarze) .Include(k => k.Etykiety) .Include(k => k.Kategoria) .Single(k => k.Id_Ksiazka == kevm.KsiazkaViewModel.Id_Ksiazka); var directory = Path.Combine(Server.MapPath("~/App_Data/uploads"), ksiazka.Id_Ksiazka.ToString()); string pliknazwa; if (kevm.KsiazkaViewModel.Zawartosc != null) { var starasciezkapliku = Path.Combine(directory, ksiazka.Zawartosc); if (System.IO.File.Exists(starasciezkapliku)) { System.IO.File.Delete(starasciezkapliku); } var rozbudowanie = Path.GetExtension(kevm.KsiazkaViewModel.Zawartosc.FileName); pliknazwa = kevm.KsiazkaViewModel.Id_Ksiazka + "zawartosc" + rozbudowanie; kevm.KsiazkaViewModel.Zawartosc.SaveAs(Path.Combine(directory, pliknazwa)); } else { pliknazwa = kevm.StaraZawartosc; } ksiazka.Naklad = kevm.KsiazkaViewModel.Naklad; ksiazka.Zawartosc = pliknazwa; ksiazka.Tytul = kevm.KsiazkaViewModel.Tytul; ksiazka.ISBN = kevm.KsiazkaViewModel.ISBN; ksiazka.Rok = kevm.KsiazkaViewModel.Rok; ksiazka.Opis = kevm.KsiazkaViewModel.Opis; ksiazka.Id_Kategorii = kevm.KsiazkaViewModel.Id_Kategorii; ksiazka.Kategoria = db.Kategorie.FirstOrDefault(x => x.Id_Kategoria == kevm.KsiazkaViewModel.Id_Kategorii); var wybranipisarzelista = new List <Pisarz>(); var wybranieetykietylista = new List <Etykieta>(); for (int i = 0; i < kevm.KsiazkaViewModel.WybraniPisarze.Length; i++) { var id = kevm.KsiazkaViewModel.WybraniPisarze[i]; var pisarz = db.Pisarze.FirstOrDefault(x => x.Id_Pisarza == id); if (pisarz != null) { wybranipisarzelista.Add(pisarz); } } db.SaveChanges(); for (int i = 0; i < kevm.KsiazkaViewModel.WybraneEtykiety.Length; i++) { var id = kevm.KsiazkaViewModel.WybraneEtykiety[i]; var etykieta = db.Etykiety.FirstOrDefault(x => x.Id_Etykieta == id); if (etykieta != null) { wybranieetykietylista.Add(etykieta); } } //Sprawdzenie Pisarzy var aktualnypisarz = db.Pisarze.Where(w => w.KsiazkaPisarze.Any(b => b.Id_Ksiazka == kevm.KsiazkaViewModel.Id_Ksiazka)).ToList(); db.SaveChanges(); foreach (var dbpisarz in db.Pisarze.ToList()) { if (wybranipisarzelista.Contains(dbpisarz)) { if (!aktualnypisarz.Contains(dbpisarz)) { var kp = new KsiazkaPisarz() { Id_Pisarz = dbpisarz.Id_Pisarza, Id_Ksiazka = kevm.KsiazkaViewModel.Id_Ksiazka }; db.KsiakaPisarze.Add(kp); } } else { if (aktualnypisarz.Contains(dbpisarz)) { var kp = db.KsiakaPisarze.FirstOrDefault( x => x.Id_Pisarz == dbpisarz.Id_Pisarza && x.Id_Ksiazka == kevm.KsiazkaViewModel.Id_Ksiazka); db.KsiakaPisarze.Remove(kp); } } db.SaveChanges(); } //Sprawdzenie etykiet var aktualnaetykieta = db.Etykiety.Where(w => w.KsiazkaEtykiety.Any(b => b.Id_Ksiazki == kevm.KsiazkaViewModel.Id_Ksiazka)).ToList(); db.SaveChanges(); foreach (var dbEtykiety in db.Etykiety.ToList()) { if (wybranieetykietylista.Contains(dbEtykiety)) { if (!aktualnaetykieta.Contains(dbEtykiety)) { var ke = new KsiazkaEtykieta() { Id_Ksiazki = kevm.KsiazkaViewModel.Id_Ksiazka, Id_Etykiety = dbEtykiety.Id_Etykieta }; db.KsiazkaEtykiety.Add(ke); } } else { if (aktualnaetykieta.Contains(dbEtykiety)) { var ke = db.KsiazkaEtykiety.FirstOrDefault (x => x.Id_Etykiety == dbEtykiety.Id_Etykieta && x.Id_Ksiazki == kevm.KsiazkaViewModel.Id_Ksiazka); db.KsiazkaEtykiety.Remove(ke); } } db.SaveChanges(); } //Sprawdzanie Plikow List <string> edytujzrodlopliku; List <string> edytujtesktpliku; if (kevm.StarePliki != null) { edytujzrodlopliku = kevm.StarePliki; } else { edytujzrodlopliku = new List <string>(); } if (kevm.StarePlikiTekst != null) { edytujtesktpliku = kevm.StarePlikiTekst; } else { edytujtesktpliku = new List <string>(); } var wszystkiepliki = db.Pliki.Where(f => f.Id_Ksiazka == kevm.KsiazkaViewModel.Id_Ksiazka).ToList(); var wszystkieplikizrodlo = wszystkiepliki.Select(f => f.Zrodlo).ToList(); if (kevm.KsiazkaViewModel.Pliki != null) { for (var i = 0; i < kevm.KsiazkaViewModel.Pliki.Count; i++) { if (kevm.KsiazkaViewModel.Pliki[i] != null) { var zrodlo = kevm.KsiazkaViewModel.Pliki[i].FileName; var sciezka = Path.Combine(directory, zrodlo); kevm.KsiazkaViewModel.Pliki[i].SaveAs(sciezka); edytujzrodlopliku.Add(zrodlo); edytujtesktpliku.Add(kevm.KsiazkaViewModel.PlikiNazwy[i]); } } } foreach (var dbplik in wszystkiepliki) { if (!edytujzrodlopliku.Contains(dbplik.Zrodlo)) { if (System.IO.File.Exists(Path.Combine(directory, dbplik.Zrodlo))) { System.IO.File.Delete(Path.Combine(directory, dbplik.Zrodlo)); } db.Pliki.Remove(dbplik); } } if (edytujzrodlopliku.Count > 0) { for (var i = 0; i < edytujzrodlopliku.Count; i++) { if (!wszystkieplikizrodlo.Contains(edytujzrodlopliku[i])) { Plik plik = new Plik() { Id_Ksiazka = kevm.KsiazkaViewModel.Id_Ksiazka, Nazwa = edytujtesktpliku[i], Zrodlo = edytujzrodlopliku[i] }; db.Pliki.Add(plik); db.SaveChanges(); } else { var zrodlo = edytujzrodlopliku[i]; var pliktekst = db.Pliki.FirstOrDefault( f => f.Id_Ksiazka == kevm.KsiazkaViewModel.Id_Ksiazka && f.Zrodlo == zrodlo); if (edytujtesktpliku != null) { if (edytujtesktpliku[i] != pliktekst.Nazwa) { pliktekst.Nazwa = edytujtesktpliku[i]; db.SaveChanges(); } } } db.SaveChanges(); } } db.Entry(ksiazka).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } SetViewBag(); return(View(kevm)); }
public ActionResult Create(KsiazkaViewModel kvm) { if (ModelState.IsValid) { var rozbudowa = Path.GetExtension(kvm.Zawartosc.FileName); Ksiazka ksiazka = new Ksiazka() { DodajDate = DateTime.Now, Naklad = kvm.Naklad, Id_Kategorii = kvm.Id_Kategorii, Rok = kvm.Rok, Tytul = kvm.Tytul, ISBN = kvm.ISBN, Opis = kvm.Opis, Pisarze = new List <KsiazkaPisarz>(), Etykiety = new List <KsiazkaEtykieta>() }; db.Ksiazki.Add(ksiazka); db.SaveChanges(); var nazwapliku = ksiazka.Id_Ksiazka + "zawartosc" + rozbudowa; ksiazka.Zawartosc = nazwapliku; var directory = Path.Combine(Server.MapPath("~/App_Data/uploads"), ksiazka.Id_Ksiazka.ToString()); Directory.CreateDirectory(directory); var sciezka = Path.Combine(directory, nazwapliku); kvm.Zawartosc.SaveAs(sciezka); db.SaveChanges(); for (int i = 0; i < kvm.WybraniPisarze.Length; i++) { var id = kvm.WybraniPisarze[i]; var pisarz = db.Pisarze.FirstOrDefault(x => x.Id_Pisarza == id); if (pisarz != null) { var y = new KsiazkaPisarz() { Id_Ksiazka = ksiazka.Id_Ksiazka, Id_KsiazkaPisarz = pisarz.Id_Pisarza }; db.KsiakaPisarze.Add(y); db.SaveChanges(); } } for (int i = 0; i < kvm.WybraneEtykiety.Length; i++) { var id = kvm.WybraneEtykiety[i]; var etykiety = db.Etykiety.FirstOrDefault(x => x.Id_Etykieta == id); if (etykiety != null) { var ke = new KsiazkaEtykieta() { Id_Ksiazki = ksiazka.Id_Ksiazka, Id_Etykiety = etykiety.Id_Etykieta }; db.KsiazkaEtykiety.Add(ke); db.SaveChanges(); } } db.Entry(ksiazka).State = EntityState.Modified; db.SaveChanges(); for (var i = 0; i < kvm.Pliki.Count; i++) { if (kvm.Pliki[i] != null) { Plik plik = new Plik(); plik.Id_Ksiazka = ksiazka.Id_Ksiazka; plik.Ksiazka = ksiazka; plik.Nazwa = kvm.PlikiNazwy[i]; plik.Zrodlo = kvm.Pliki[i].FileName; kvm.Pliki[i].SaveAs(Path.Combine(directory, kvm.Pliki[i].FileName)); db.Pliki.Add(plik); db.SaveChanges(); } } return(RedirectToAction("Index")); } IEnumerable <SelectListItem> pisarze = from p in db.Pisarze select new SelectListItem { Value = p.Id_Pisarza.ToString(), Text = p.Imie + " " + p.Nazwisko }; ViewBag.Id_Kategorii = new SelectList(db.Kategorie, "KategoriaId", "Nazwa"); ViewBag.Pisarze = new SelectList(pisarze, "Value", "Text"); ViewBag.Etykiety = new SelectList(db.Etykiety, "EtykietyId", "Nazwa"); return(View(kvm)); }