예제 #1
0
        public IActionResult Create()
        {
            int maxbr    = ctx.Dokument.Max(d => d.BrDokumenta) + 1; //samo za primjer, inače u stvarnosti može biti paralelnih korisnika
            var dokument = new DokumentViewModel
            {
                DatDokumenta = DateTime.Now,
                BrDokumenta  = maxbr
            };

            return(View(dokument));
        }
예제 #2
0
        public IActionResult Create(DokumentViewModel model)
        {
            if (ModelState.IsValid)
            {
                Dokument d = new Dokument();
                d.BrDokumenta      = model.BrDokumenta;
                d.DatDokumenta     = model.DatDokumenta.Date;
                d.IdPartnera       = model.IdPartnera;
                d.IdPrethDokumenta = model.IdPrethDokumenta;
                d.PostoPorez       = model.PostoPorez;
                d.VrDokumenta      = model.VrDokumenta;
                foreach (var stavka in model.Stavke)
                {
                    Stavka novaStavka = new Stavka();
                    novaStavka.SifArtikla    = stavka.SifArtikla;
                    novaStavka.KolArtikla    = stavka.KolArtikla;
                    novaStavka.PostoRabat    = stavka.PostoRabat;
                    novaStavka.JedCijArtikla = stavka.JedCijArtikla;
                    d.Stavka.Add(novaStavka);
                }

                d.IznosDokumenta = (1 + d.PostoPorez)
                                   * d.Stavka.Sum(s => s.KolArtikla * (1 - s.PostoRabat) * s.JedCijArtikla);
                //eventualno umanji iznos za dodatni popust za kupca i sl... nešto što bi bilo poslovno pravilo
                try
                {
                    ctx.Add(d);
                    ctx.SaveChanges();

                    TempData[Constants.Message]       = $"Dokument uspješno dodan. Id={d.IdDokumenta}";
                    TempData[Constants.ErrorOccurred] = false;
                    return(RedirectToAction(nameof(Edit), new { id = d.IdDokumenta }));
                }
                catch (Exception exc)
                {
                    ModelState.AddModelError(string.Empty, exc.CompleteExceptionMessage());
                    return(View(model));
                }
            }
            else
            {
                return(View(model));
            }
        }
예제 #3
0
        public IActionResult Edit(DokumentViewModel model, int position, string filter, int page = 1, int sort = 1, bool ascending = true)
        {
            ViewBag.Page      = page;
            ViewBag.Sort      = sort;
            ViewBag.Ascending = ascending;
            ViewBag.Filter    = filter;
            ViewBag.Position  = position;
            if (ModelState.IsValid)
            {
                var dokument = ctx.Dokument
                               .Include(d => d.Stavka)
                               .Where(d => d.IdDokumenta == model.IdDokumenta)
                               .FirstOrDefault();
                if (dokument == null)
                {
                    return(NotFound("Ne postoji dokument s id-om: " + model.IdDokumenta));
                }

                SetPreviousAndNext(position, filter, sort, ascending);
                dokument.BrDokumenta      = model.BrDokumenta;
                dokument.DatDokumenta     = model.DatDokumenta.Date;
                dokument.IdPartnera       = model.IdPartnera;
                dokument.IdPrethDokumenta = model.IdPrethDokumenta;
                dokument.PostoPorez       = model.StopaPoreza / 100m;
                dokument.VrDokumenta      = model.VrDokumenta;

                List <int> idStavki = model.Stavke
                                      .Where(s => s.IdStavke > 0)
                                      .Select(s => s.IdStavke)
                                      .ToList();
                //izbaci sve koje su nisu više u modelu
                ctx.RemoveRange(dokument.Stavka.Where(s => !idStavki.Contains(s.IdStavke)));

                foreach (var stavka in model.Stavke)
                {
                    //ažuriraj postojeće i dodaj nove
                    Stavka novaStavka;
                    if (stavka.IdStavke > 0)
                    {
                        novaStavka = dokument.Stavka.First(s => s.IdStavke == stavka.IdStavke);
                    }
                    else
                    {
                        novaStavka = new Stavka();
                        dokument.Stavka.Add(novaStavka);
                    }
                    novaStavka.SifArtikla    = stavka.SifArtikla;
                    novaStavka.KolArtikla    = stavka.KolArtikla;
                    novaStavka.PostoRabat    = stavka.PostoRabat;
                    novaStavka.JedCijArtikla = stavka.JedCijArtikla;
                }

                dokument.IznosDokumenta = (1 + dokument.PostoPorez) *
                                          dokument.Stavka.Sum(s => s.KolArtikla * (1 - s.PostoRabat) * s.JedCijArtikla);
                //eventualno umanji iznos za dodatni popust za kupca i sl... nešto što bi bilo poslovno pravilo
                try
                {
                    ctx.SaveChanges();

                    TempData[Constants.Message]       = $"Dokument {dokument.IdDokumenta} uspješno ažuriran.";
                    TempData[Constants.ErrorOccurred] = false;
                    return(RedirectToAction(nameof(Edit), new {
                        id = dokument.IdDokumenta,
                        position = position,
                        filter = filter,
                        page = page,
                        sort = sort,
                        ascending = ascending
                    }));
                }
                catch (Exception exc)
                {
                    ModelState.AddModelError(string.Empty, exc.CompleteExceptionMessage());
                    return(View(model));
                }
            }
            else
            {
                return(View(model));
            }
        }