public async Task <bool> Handle(ProknjiziIzvodCommand cmd, CancellationToken cancellationToken) { var idNaloga = await nalogRepo.GetPostojeciAsync(TipNaloga.Izvodi, cmd.Datum); var stavkeIzvoda = cmd.Stavke.Select(x => new StavkaIzvoda(x.SifraPlacanja, x.Duguje, x.Potrazuje)); var stavke = await izvodSvc.FormirajStavkeNalogaAsync(stavkeIzvoda); if (idNaloga != null) { var nalog = await nalogRepo.GetAsync(idNaloga); foreach (var stavka in stavke) { nalog.ProknjiziStavku(stavka); } await nalogRepo.SaveAsync(nalog, cmd.CommandId, nalog.Version, cmd.UserId); } else { var nalog = new FinNalog(TipNaloga.Izvodi, cmd.Datum, null, stavke); await nalogRepo.SaveAsync(nalog, cmd.CommandId, cmd.Version, cmd.UserId); } return(true); }
public async Task <bool> Handle(ObrisiNalogCommand cmd, CancellationToken cancellationToken) { var nalog = await nalogRepo.GetAsync(new FinNalogId(cmd.IdNaloga)); if (nalog == null) { throw new NalogNePostojiException(cmd.IdNaloga); } nalog.Obrisi(); await nalogRepo.SaveAsync(nalog, cmd.CommandId, cmd.Version, cmd.UserId); return(true); }
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(UkloniStavkuCommand cmd, CancellationToken cancellationToken) { var nalog = await nalogRepo.GetAsync(new FinNalogId(cmd.IdNaloga)); if (nalog == null) { throw new NalogNePostojiException(cmd.IdNaloga); } var stavka = nalog.Stavke.SingleOrDefault(x => x.Id == cmd.IdStavke); nalog.UkloniStavku(stavka); await nalogRepo.SaveAsync(nalog, cmd.CommandId, cmd.Version, cmd.UserId); return(true); }
public async Task <bool> Handle(ProknjiziStavkuCommand cmd, CancellationToken cancellationToken) { var nalog = await nalogRepo.GetAsync(new FinNalogId(cmd.IdNaloga)); if (nalog == null) { throw new NalogNePostojiException(cmd.IdNaloga); } var stavka = new FinStavka(cmd.IdKonto, cmd.Duguje, cmd.Potrazuje, cmd.Opis); nalog.ProknjiziStavku(stavka); 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); }