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 void NoviNalog_JednaStavka_DodajeEvente() { var noviNalog = new FinNalog(TipNaloga.UlazneFakture, new DateTime(2018, 10, 1), "opis", new[] { new FinStavka(1, 100, 0, "opis stavke") }); Assert.Equal(2, noviNalog.UncommittedEvents.Count); Assert.Collection(noviNalog.UncommittedEvents.OfType <NalogOtvoren>(), e => { Assert.NotEqual(Guid.Empty, e.IdNaloga.Id); Assert.Equal(noviNalog.Id, e.IdNaloga); Assert.Equal(new DateTime(2018, 10, 1), e.DatumNaloga); Assert.Equal(TipNaloga.UlazneFakture.Id, e.IdTip); Assert.Equal("opis", e.Opis); }); Assert.Collection(noviNalog.UncommittedEvents.OfType <StavkaProknjizena>(), e => { Assert.NotEqual(Guid.Empty, e.IdNaloga.Id); Assert.Equal(noviNalog.Id, e.IdNaloga); Assert.NotEqual(Guid.Empty, e.IdStavke); Assert.Equal(DateTime.Today, e.DatumKnjizenja); Assert.Equal(1, e.IdKonto); Assert.Equal(100, e.Duguje); Assert.Equal(0, e.Potrazuje); Assert.Equal("opis stavke", e.Opis); }); }
public async Task <bool> Handle(OtvoriNalogCommand cmd, CancellationToken cancellationToken) { var tip = TipNaloga.Get(cmd.IdTip); var idPostojeceg = await nalogRepo.GetPostojeciAsync(tip, cmd.DatumNaloga); if (idPostojeceg != null) { throw new KnjizenjeException("Nalog sa istim zaglavljem već postoji"); } var stavke = cmd.Stavke.Select(x => new FinStavka(x.IdKonto, x.Duguje, x.Potrazuje, x.Opis)); var nalog = new FinNalog(tip, cmd.DatumNaloga, cmd.Opis, stavke); await nalogRepo.SaveAsync(nalog, cmd.CommandId, cmd.Version, cmd.UserId); return(true); }
public async Task IzmeniZaglavljeAsync(FinNalog nalog, TipNaloga tip, DateTime datumNaloga, string opis) { if (nalog == null) { throw new ArgumentNullException(nameof(nalog)); } if (tip == null) { throw new ArgumentNullException(nameof(tip)); } var idPostojeceg = await nalogRepo.GetPostojeciAsync(tip, datumNaloga); if (idPostojeceg != null && idPostojeceg != nalog.Id) { throw new KnjizenjeException("Nalog sa istim zaglavljem već postoji"); } nalog.IzmeniZaglavlje(tip, datumNaloga, opis); }