public async Task <IActionResult> Edit(ZapisnikViewModel model, int?position, int page = 1, int sort = 1, bool ascending = true) { ViewBag.Page = page; ViewBag.Sort = sort; ViewBag.Ascending = ascending; ViewBag.Position = position; if (ModelState.IsValid) { var zapisnik = await ctx.Zapisniks .Include(d => d.StavkaZapisniks) .Where(d => d.ZapisnikId == model.ZapisnikId) .FirstOrDefaultAsync(); if (zapisnik == null) { return(NotFound("Ne postoji zapisnik s id-om: " + model.ZapisnikId)); } if (position.HasValue) { page = 1 + position.Value / appSettings.PageSize; await SetPreviousAndNext(position.Value, sort, ascending); } zapisnik.ZapisnikId = model.ZapisnikId; zapisnik.PonudaId = model.IdPonude; zapisnik.IdPovjerenstva = model.IdPovjerenstva; zapisnik.NazivZapisnik = model.NazivZapisnik; zapisnik.IdPrethZapisnika = model.IdPrethZapisnika; zapisnik.IspravnostZapisnik = model.ispravnostZapisnik; List <int> idStavki = model.StavkeZapisnika .Where(s => s.idStavka > 0) .Select(s => s.idStavka) .ToList(); //izbaci sve koje su nisu više u modelu ctx.RemoveRange(zapisnik.StavkaZapisniks.Where(s => !idStavki.Contains(s.idStavke))); foreach (var stavka in model.StavkeZapisnika) { //ažuriraj postojeće i dodaj nove StavkaZapisnik novaStavka; // potpuno nova ili dohvaćena ona koju treba izmijeniti if (stavka.idStavka > 0) { novaStavka = zapisnik.StavkaZapisniks.First(s => s.idStavke == stavka.idStavka); } else { novaStavka = new StavkaZapisnik(); zapisnik.StavkaZapisniks.Add(novaStavka); } // stavka.paramteri su prazni?? novaStavka.idStavke = stavka.idStavka; novaStavka.zapisnikID = stavka.ZapisnikId; novaStavka.idOdredba = stavka.idOdredba; novaStavka.ispravnostStavka = stavka.ispravnostStavka; novaStavka.cijenaKršenja = stavka.cijenaKršenjaOdluke; } try { await ctx.SaveChangesAsync(); TempData[Constants.Message] = $"Zapisnik {zapisnik.ZapisnikId} uspješno ažuriran."; TempData[Constants.ErrorOccurred] = false; return(RedirectToAction(nameof(Edit), new { id = zapisnik.ZapisnikId, position, page, sort, ascending })); } catch (Exception exc) { ModelState.AddModelError(string.Empty, exc.CompleteExceptionMessage()); return(View(model)); } } else { return(View(model)); } }
public async Task <IActionResult> Edit(PonudaViewModel model, int page = 1, int sort = 1, bool ascending = true) { ViewBag.Page = page; ViewBag.Sort = sort; ViewBag.Ascending = ascending; if (ModelState.IsValid) { var ponuda = await ctx.Ponuda .Include(d => d.PonDokumentis) .Where(d => d.PonudaId == model.PonudaId) .FirstOrDefaultAsync(); if (ponuda == null) { return(NotFound("Ne postoji ponuda s id-om: " + model.PonudaId)); } /* if (position.HasValue) * { * page = 1 + position.Value / appData.PageSize; * await SetPreviousAndNext(position.Value, filter, sort, ascending); * } */ ponuda.PonudaId = model.PonudaId; ponuda.EvidBrojNatječaj = model.EvidBrojNatječaj; ponuda.Text = model.Text; ponuda.Naslov = model.Naslov; ponuda.OibPonuditelj = model.OibPonuditelj; List <int> DoksId = model.doks .Where(s => s.DokumentId > 0) .Select(s => s.DokumentId) .ToList(); //izbaci sve koje su nisu više u modelu ctx.RemoveRange(ponuda.PonDokumentis.Where(s => !DoksId.Contains(s.DokumentId))); ctx.RemoveRange(ctx.Dokuments.Where(s => !DoksId.Contains(s.DokumentId))); foreach (var dokument1 in model.doks) { //ažuriraj postojeće i dodaj nove Dokument noviDokkument; // potpuno nova ili dohvaćena ona koju treba izmijeniti if (dokument1.DokumentId > 0) { noviDokkument = ponuda.PonDokumentis.First(s => s.DokumentId == dokument1.DokumentId).Dokument; } else { noviDokkument = new Dokument(); ctx.Add(noviDokkument); } noviDokkument.DokumentId = dokument1.DokumentId; noviDokkument.Naslov = dokument1.Naslov; noviDokkument.Vrsta = dokument1.Vrsta; noviDokkument.Blob = dokument1.Blob; noviDokkument.PonudaId = dokument1.PonudaId; noviDokkument.DatumPredaje = dokument1.DatumPredaje; } try { await ctx.SaveChangesAsync(); TempData[Constants.Message] = $"Ponuda {ponuda.PonudaId} uspješno ažuriran."; TempData[Constants.ErrorOccurred] = false; return(RedirectToAction(nameof(Edit), new { id = ponuda.PonudaId, page, sort, ascending })); } catch (Exception exc) { ModelState.AddModelError(string.Empty, exc.CompleteExceptionMessage()); return(View(model)); } } else { return(View(model)); } }