public async Task <bool> Handle(IzmeniZaglavljeNalogaCommand cmd, CancellationToken cancellationToken) { var nalog = await nalogRepo.GetAsync(new FinNalogId(cmd.IdNaloga)); if (nalog == null) { throw new NalogNePostojiException(cmd.IdNaloga); } var tip = TipNaloga.Get(cmd.IdTip); await nalogSvc.IzmeniZaglavljeAsync(nalog, tip, cmd.DatumNaloga, cmd.Opis); await nalogRepo.SaveAsync(nalog, cmd.CommandId, cmd.Version, cmd.UserId); return(true); }
public async Task <bool> Handle(IzmeniNalogCommand cmd, CancellationToken cancellationToken) { var nalog = await nalogRepo.GetAsync(new FinNalogId(cmd.IdNaloga)); if (nalog == null) { throw new NalogNePostojiException(cmd.IdNaloga); } var tip = TipNaloga.Get(cmd.IdTip); await nalogSvc.IzmeniZaglavljeAsync(nalog, tip, cmd.DatumNaloga, cmd.Opis); var zaBrisanje = nalog.Stavke.Where(x => !cmd.Stavke.Select(y => y.IdStavke).Contains(x.Id)).ToList(); foreach (var item in cmd.Stavke) { if (!nalog.Stavke.Any(x => x.Id == item.IdStavke)) { nalog.ProknjiziStavku(new FinStavka(item.IdKonto, item.Duguje, item.Potrazuje, item.Opis)); } if (item.Stornirana) { var s = nalog.Stavke.SingleOrDefault(x => x.Id == item.IdStavke); if (s != null) { nalog.StornirajStavku(s); } } } foreach (var item in zaBrisanje) { nalog.UkloniStavku(item); } await nalogRepo.SaveAsync(nalog, cmd.CommandId, cmd.Version, cmd.UserId); return(true); }