Пример #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 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);
        }
Пример #3
0
        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);
        }
Пример #4
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);
        }
        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);
        }
Пример #6
0
        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);
        }