コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            });
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }