public static decimal Izracunaj(KonverzijaCmd cmd)
        {
            var rezultat = (decimal)0;

            if (cmd.Iznos < 0 ||
                string.IsNullOrEmpty(cmd.SifraValutaIz) ||
                string.IsNullOrEmpty(cmd.SifraValutaU) ||
                VratiValutu(cmd.SifraValutaIz) == null ||
                VratiValutu(cmd.SifraValutaU) == null ||
                string.Equals(cmd.SifraValutaIz, cmd.SifraValutaU, StringComparison.InvariantCultureIgnoreCase))
            {
                if (string.IsNullOrEmpty(cmd.SifraValutaIz) == false &&
                    string.IsNullOrEmpty(cmd.SifraValutaU) == false &&
                    string.Equals(cmd.SifraValutaIz, cmd.SifraValutaU, StringComparison.InvariantCultureIgnoreCase))
                {
                    rezultat = cmd.Iznos;
                }

                return(rezultat);
            }

            var sifraDomaceValute = VratiDomacuValutu();

            var stavkaU = VratiStavkuKursneListe(sifraDomaceValute, cmd.SifraValutaU);

            var stavkaIz = VratiStavkuKursneListe(sifraDomaceValute, cmd.SifraValutaIz);

            if (stavkaU == null || stavkaIz == null)
            {
                return(rezultat);
            }

            var medjuIznos = stavkaIz.KupovniKurs * cmd.Iznos;

            rezultat = Math.Round(medjuIznos / stavkaU.ProdajniKurs, 2);

            return(rezultat);
        }
 public static void Izvrsi(KonverzijaCmd cmd)
 {
     IzvrsiInternal(cmd);
 }
        private static Dictionary <string, List <string> > IzvrsiInternal(KonverzijaCmd cmd, bool validacija = false)
        {
            var rezultat = new Dictionary <string, List <string> >();

            if (cmd.Iznos < 0)
            {
                DodajValidacionuGresku(rezultat, "Iznos", "Iznos mora biti veći od 0!");
                if (validacija == false)
                {
                    throw new Exception("Iznos mora biti veći od 0!");
                }
            }

            if (string.IsNullOrEmpty(cmd.SifraValutaIz) || string.IsNullOrEmpty(cmd.SifraValutaU))
            {
                DodajValidacionuGresku(rezultat, "SifraValuta", "Valuta mora biti uneta!!!");
                if (validacija == false)
                {
                    throw new Exception("Valuta mora biti uneta!!!");
                }
            }

            if (VratiValutu(cmd.SifraValutaIz) == null)
            {
                DodajValidacionuGresku(rezultat, "SifraValutaIz", $"Nepostojeca valuta {cmd.SifraValutaIz}!!!");
                if (validacija == false)
                {
                    throw new Exception($"Nepostojeca valuta {cmd.SifraValutaIz}!!!");
                }
            }

            if (VratiValutu(cmd.SifraValutaU) == null)
            {
                DodajValidacionuGresku(rezultat, "SifraValutaU", $"Nepostojeca valuta {cmd.SifraValutaU}!!!");
                if (validacija == false)
                {
                    throw new Exception($"Nepostojeca valuta {cmd.SifraValutaU}!!!");
                }
            }

            var sifraDomaceValute = VratiDomacuValutu();

            var stavkaU  = VratiStavkuKursneListe(sifraDomaceValute, cmd.SifraValutaU);
            var stavkaIz = VratiStavkuKursneListe(sifraDomaceValute, cmd.SifraValutaIz);

            if (stavkaU == null || stavkaIz == null)
            {
                DodajValidacionuGresku(rezultat, "", "Nepostojeca kursna lista!!!");
                if (validacija == false)
                {
                    throw new Exception("Nepostojeca kursna lista!!!");
                }
            }
            else
            {
                var medjuIznos = stavkaU.KupovniKurs * cmd.Iznos;

                var iznosProdaje = Math.Round(medjuIznos / stavkaIz.ProdajniKurs, 2);

                var sifraValuteProdaje = cmd.SifraValutaU;

                var iznosOtkupa = cmd.Iznos;

                var sifraValutaOtkupa = cmd.SifraValutaIz;

                var menjackaTransakcija = new MenjackaTransakcija
                {
                    DatumTransakcije   = DateTime.Now,
                    IznosOtkupa        = iznosOtkupa,
                    SifraValutaOtkupa  = sifraValutaOtkupa,
                    SifraValutaProdaje = sifraValuteProdaje,
                    Naziv                  = cmd.Naziv,
                    Opis                   = cmd.Opis,
                    Tip                    = TipMenjackeTransakcije.Konverzija,
                    IznosProdaje           = iznosProdaje,
                    FinansijskeTransakcije = NapraviFinansijskeTransakcije(sifraValutaOtkupa, iznosOtkupa,
                                                                           sifraDomaceValute, iznosProdaje, medjuIznos)
                };

                IzvrsiTransakciju(menjackaTransakcija, validacija, rezultat);
            }

            return(rezultat);
        }
 public static Dictionary <string, List <string> > Validiraj(KonverzijaCmd cmd)
 {
     return(IzvrsiInternal(cmd, true));
 }