public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            if (Iznos.HasValue == false)
            {
                yield return(new ValidationResult("Iznos mora biti unet.", new List <string>()
                {
                    "Iznos"
                }));
            }

            if (!Iznos.HasValue)
            {
                yield break;
            }

            var validacije = ExchangeEngine.Validiraj(
                new OtkupCmd()
            {
                Iznos       = Iznos.Value,
                SifraValuta = SifraValuta
            });

            foreach (var validacija in validacije)
            {
                foreach (var poruka in validacija.Value)
                {
                    yield return(new ValidationResult(poruka, new List <string>()
                    {
                        validacija.Key
                    }));
                }
            }
        }
Ejemplo n.º 2
0
        public static void Main()
        {
            /* INSTANCE */

            String assemblyGuid = Assembly.GetExecutingAssembly().GetCustomAttributes(false).OfType <GuidAttribute>().SingleOrDefault()?.Value ?? "Trinance";
            Mutex  mutex        = new Mutex(true, String.Format(CultureInfo.InvariantCulture, @"Global\{{{0}}}", assemblyGuid));

            if (!mutex.WaitOne(TimeSpan.FromSeconds(5), false))
            {
                Console.WriteLine(Resources.AnotherInstance);
                Exit(mutex, 0x01);
            }

            /* CONFIGURATION */

            Console.WriteLine(Resources.EnvironmentInitialization);

            try
            {
                Uri    assemblyUri   = new Uri(Assembly.GetExecutingAssembly().CodeBase);
                String baseDirectory = Path.GetDirectoryName(assemblyUri.LocalPath) ?? String.Empty;
                String configPath    = Path.Combine(baseDirectory, "Config.json");

                Config.Load(configPath);

                Console.WriteLine(FormatMessage(Resources.BaseDirectory, NativeMethods.GetShortPath(baseDirectory)));
                Console.WriteLine(FormatMessage(Resources.Investment, Config.InvestmentBaseAsset, Config.InvestmentMinimum, Config.InvestmentMaximum, Config.InvestmentStep));
                Console.WriteLine(FormatMessage(Resources.TradingStatus, Config.TradingEnabled ? Resources.Enabled : Resources.Disabled, (!Config.TradingEnabled || (Config.TradingExecutionsCap == 0)) ? String.Empty : FormatMessage(Resources.TradingCap, Config.TradingExecutionsCap)));
                Console.WriteLine(FormatMessage(Resources.TradingProcess, Config.TradingStrategy, Config.TradingPositions[0], Config.TradingPositions[1], Config.TradingPositions[2]));
                Console.WriteLine();
            }
            catch (Exception e)
            {
                Console.WriteLine(FormatMessage(Resources.ConfigurationKO, GetExceptionMessage(e)));
                Exit(mutex, 0x02);
            }

            /* PROCESS */

            using (ConsolePump pump = new ConsolePump())
                using (ExchangeEngine exchangeEngine = ExchangeEngine.FromConfiguration(pump))
                {
                    if (!exchangeEngine.Initialize())
                    {
                        Exit(mutex, 0x03);
                    }

                    using (AutoResetEvent are = new AutoResetEvent(false))
                    {
                        Console.CancelKeyPress += (o, e) => are.Set();

                        using (new TradingEngine(pump, exchangeEngine))
                            are.WaitOne();
                    }
                }

            Exit(mutex, 0x00);
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            //ExchangeEngine.Izvrsi(new UplataCmd
            //{
            //    Iznos = 100000,
            //    SifraValuta = "RSD"
            //});


            var validacioniProblemi = ExchangeEngine.Validiraj(new OtkupCmd
            {
                Iznos       = 100000,
                SifraValuta = "EUR"
            });
        }
        public ActionResult IzracunajIznosProdaje(ProdajaViewModel wm)
        {
            var rezultat = (decimal)0;

            if (wm.Iznos.HasValue)
            {
                rezultat = ExchangeEngine.Izracunaj(new ProdajaCmd
                {
                    Iznos       = wm.Iznos.Value,
                    SifraValuta = wm.SifraValuta
                });
            }

            return(Json(rezultat, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 5
0
        public ActionResult Uplata(UplataViewModel wm)
        {
            if (ModelState.IsValid == false)
            {
                Response.StatusCode = 400;
                return(PartialView("_UplataPartial", wm));
            }

            ExchangeEngine.Izvrsi(new UplataCmd()
            {
                Iznos       = wm.Iznos.Value,
                SifraValuta = wm.SifraValuta
            });

            return(new HttpStatusCodeResult(200));
        }
        public ActionResult IzracunajIznosKonverzije(KonverzijaViewModel wm)
        {
            var rezultat = (decimal)0;

            if (wm.IznosIz.HasValue)
            {
                rezultat = ExchangeEngine.Izracunaj(new KonverzijaCmd
                {
                    Iznos         = wm.IznosIz.Value,
                    SifraValutaIz = wm.SifraValutaIz,
                    SifraValutaU  = wm.SifraValutaU,
                });
            }

            return(Json(rezultat, JsonRequestBehavior.AllowGet));
        }
        public ActionResult Konverzija(KonverzijaViewModel wm)
        {
            if (ModelState.IsValid == false)
            {
                Response.StatusCode = 400;
                return(PartialView("_KonverzijaPartial", wm));
            }

            ExchangeEngine.Izvrsi(new KonverzijaCmd
            {
                Iznos         = wm.IznosIz.Value,
                SifraValutaIz = wm.SifraValutaIz,
                Naziv         = wm.Naziv,
                SifraValutaU  = wm.SifraValutaU,
                Opis          = wm.Opis
            });

            return(new HttpStatusCodeResult(200));
        }
        public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            var validacije = ExchangeEngine.Validiraj(
                new UplataCmd()
            {
                Iznos       = Iznos.Value,
                SifraValuta = SifraValuta
            });

            foreach (var validacija in validacije)
            {
                foreach (var poruka in validacija.Value)
                {
                    yield return(new ValidationResult(poruka, new List <string>()
                    {
                        validacija.Key
                    }));
                }
            }
        }
        public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            if (SifraValutaIz == SifraValutaU)
            {
                yield return(new ValidationResult("Ulazna i izlazna valuta moraju se razlikovati."));
            }

            if (IznosIz.HasValue == false)
            {
                yield return(new ValidationResult("Iznos mora biti unet.", new List <string>()
                {
                    "IznosIz"
                }));
            }

            if (!IznosIz.HasValue)
            {
                yield break;
            }

            var validacije = ExchangeEngine.Validiraj(
                new KonverzijaCmd
            {
                Iznos         = IznosIz.Value,
                SifraValutaIz = SifraValutaIz,
                SifraValutaU  = SifraValutaU,
                Opis          = Opis,
                Naziv         = Naziv
            });

            foreach (var validacija in validacije)
            {
                foreach (var poruka in validacija.Value)
                {
                    yield return(new ValidationResult(poruka, new List <string>()
                    {
                        validacija.Key
                    }));
                }
            }
        }