public async Task <IActionResult> Create(ZapisnikViewModel model) { if (ModelState.IsValid) { Zapisnik z = new Zapisnik(); z.ZapisnikId = model.ZapisnikId; z.IdPovjerenstva = model.IdPovjerenstva; z.PonudaId = model.IdPonude; z.NazivZapisnik = model.NazivZapisnik; z.IdPrethZapisnika = model.IdPrethZapisnika; z.IspravnostZapisnik = model.ispravnostZapisnik; foreach (var stavka in model.StavkeZapisnika) { StavkaZapisnik novaStavka = new StavkaZapisnik(); novaStavka.idOdredba = stavka.idOdredba; novaStavka.cijenaKršenja = stavka.cijenaKršenjaOdluke; novaStavka.ispravnostStavka = stavka.ispravnostStavka; z.StavkaZapisniks.Add(novaStavka); } try { ctx.Add(z); await ctx.SaveChangesAsync(); TempData[Constants.Message] = $"Zapisnik uspješno dodan. Id={z.ZapisnikId}"; TempData[Constants.ErrorOccurred] = false; return(RedirectToAction(nameof(Edit), new { id = z.ZapisnikId })); } catch (Exception exc) { ModelState.AddModelError(string.Empty, exc.CompleteExceptionMessage()); return(View(model)); } } else { return(View(model)); } }
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)); } }