示例#1
0
        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));
        }
示例#2
0
        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));
        }