Ejemplo n.º 1
0
        private static async Task RateBOMX(string Currency, DateTime date)
        {
            IBank       ibank  = BankFactory.GetBank(BankFactory.SupportedBanks.BOMX, Resources.bmxSecret);
            IBankResult result = await ibank.GetRateAsync(Currency, date);

            PrintReSult(Currency, result);
        }
Ejemplo n.º 2
0
        public async Task RBA_GetRateAsyncShoudReturn()
        {
            DateTime date = new DateTime(2018, 1, 17);

            #region Arrange
            IBankResult expected = new BankResult()
            {
                BankName     = "Reserve Bank of Australia",
                HomeCurrency = "AUD",
                ExchangeRate = 1.2571M,
                RateDate     = date
            };
            #endregion

            #region Act
            IBank       ibank  = BankFactory.GetBank(BankFactory.SupportedBanks.RBA);
            IBankResult actual = await ibank.GetRateAsync("USD", date);

            #endregion

            #region Assert
            //Assert.Equal(expected, actual);
            Assert.Equal(expected.RateDate, actual.RateDate);
            Assert.Equal(expected.ExchangeRate, actual.ExchangeRate);
            Assert.Equal(expected.BankName, actual.BankName);
            Assert.Equal(expected.HomeCurrency, actual.HomeCurrency);
            #endregion
        }
Ejemplo n.º 3
0
        public async Task BOC_GetRateAsyncShoudReturn(decimal expectedExchangeRate,
                                                      DateTime requestedRateDate, DateTime expectedRateDate, string currency)
        {
            #region Arrange
            IBankResult expected = new BankResult()
            {
                BankName     = "Bank of Canada",
                HomeCurrency = "CAD",
                ExchangeRate = expectedExchangeRate,
                RateDate     = expectedRateDate
            };
            IBank ibank = BankFactory.GetBank(BankFactory.SupportedBanks.BOC);
            #endregion

            #region Act
            IBankResult actual = await ibank.GetRateAsync(currency, requestedRateDate);

            #endregion

            #region Assert
            //Assert.Equal(expected, actual);
            Assert.Equal(expected.RateDate, actual.RateDate);
            Assert.Equal(expected.ExchangeRate, actual.ExchangeRate);
            Assert.Equal(expected.BankName, actual.BankName);
            Assert.Equal(expected.HomeCurrency, actual.HomeCurrency);

            #endregion
        }
Ejemplo n.º 4
0
        public override void OnSaved(object sender, EntityAfterEventArgs e)
        {
            base.OnSaved(sender, e);
            Entity entity = (Entity)sender;
            //UserConnection = entity.UserConnection;

            var    amountFC      = entity.GetTypedColumnValue <decimal>("AmountFC");
            var    date          = entity.GetTypedColumnValue <DateTime>("TransactionDate");
            var    currencyId    = entity.GetTypedColumnValue <Guid>("CurrencyId");
            string shortCurrency = entity.FindValueById <string>("Currency", currencyId, "ShortName");

            IBank       ibank  = BankFactory.GetBank(BankFactory.SupportedBanks.BOC);
            IBankResult result = null;

            Task.Run(async() =>
            {
                result = await ibank.GetRateAsync(shortCurrency, date);
            }).Wait();


            entity.SetColumnValue("FxRate", result.ExchangeRate);
            entity.SetColumnValue("AmountHC", amountFC * result.ExchangeRate);
            entity.Save();
            _log.Info($"rate:{result.ExchangeRate} on {result.RateDate:dd-MMM-yyyy}");
        }
Ejemplo n.º 5
0
        private static async Task RateRBA(string Currency, DateTime date)
        {
            IBank       ibank  = BankFactory.GetBank(BankFactory.SupportedBanks.RBA);
            IBankResult result = await ibank.GetRateAsync(Currency, date);

            PrintReSult(Currency, result);
        }
Ejemplo n.º 6
0
        private static async Task RateBOE(string Currency, DateTime date)
        {
            IBank       ibank  = BankFactory.GetBank(BankFactory.SupportedBanks.BOE);
            IBankResult result = await ibank.GetRateAsync(Currency, date);

            result.ExchangeRate = Decimal.Round((1 / result.ExchangeRate), 4);
            PrintReSult(Currency, result);
        }
Ejemplo n.º 7
0
        public void CreatingBankWithSameNameGetsSameBank()
        {
            _bank.CreateAccount(1);
            _bank.CreateAccount(2);
            var accounts = _bank.GetAccounts();

            Assert.AreEqual(2, accounts.Count);
            var bankDuplicate = BankFactory.GetBank("DNB");

            accounts = bankDuplicate.GetAccounts();
            Assert.AreEqual(2, accounts.Count);
        }
Ejemplo n.º 8
0
        DV_10132020_EN_INTERFACES.BankResult IForeignExchangeApi.GetEcbRate(string currency, DateTime date)
        {
            var         ECB       = BankFactory.GetBank(BankFactory.SupportedBanks.ECB);
            IBankResult EcbResult = ECB.GetRateAsync(currency, date).Result;

            DV_10132020_EN_INTERFACES.BankResult result = new DV_10132020_EN_INTERFACES.BankResult();

            result.BankName     = EcbResult.BankName;
            result.ExchangeRate = EcbResult.ExchangeRate;
            result.RateDate     = EcbResult.RateDate;
            result.HomeCurrency = EcbResult.HomeCurrency;
            return(result);
        }
Ejemplo n.º 9
0
        public DV_10132020_EN_INTERFACES.BankResult GetBOCRate(string currency, DateTime date)
        {
            var         BOC       = BankFactory.GetBank(BankFactory.SupportedBanks.BOC);
            IBankResult BocResult = BOC.GetRateAsync(currency, date).Result;

            DV_10132020_EN_INTERFACES.BankResult result = new DV_10132020_EN_INTERFACES.BankResult();

            result.BankName     = BocResult.BankName;
            result.ExchangeRate = BocResult.ExchangeRate;
            result.RateDate     = BocResult.RateDate;
            result.HomeCurrency = BocResult.HomeCurrency;
            return(result);
        }
Ejemplo n.º 10
0
        public BankResult Validate(PrevalidateExpenseReportLineDataContract request)
        {
            //Call: [APP]/0/rest/PrevalidateExpenseReportLine/Validate
            userConnection = UserConnection ?? SystemUserConnection;

            IBank      Bank          = BankFactory.GetBank(BankFactory.SupportedBanks.BOC);
            BankResult result        = new BankResult();
            string     shortCurrency = FindValueById <string>("Currency", request.CurrencyId, "ShortName");

            System.Threading.Tasks.Task.Run(async() =>
            {
                IBankResult response = await Bank.GetRateAsync(shortCurrency, request.TransactionDate);
                result = (BankResult)response;
            }).Wait();
            return(result);
        }
        public override void OnSaved(object sender, EntityAfterEventArgs e)
        {
            base.OnSaved(sender, e);
            Entity entity = (Entity)sender;

            userConnection = entity.UserConnection;

            string[] ObservableColumns   = { "AmountHC", "AmountFC", "Currency" };
            bool     isChangeInteresting = false;

            foreach (EntityColumnValue mc in e.ModifiedColumnValues)
            {
                if (Array.IndexOf(ObservableColumns, mc.Column.Name) > -1)
                {
                    isChangeInteresting = true;
                }
            }

            if (!isChangeInteresting)
            {
                return;
            }


            Guid   currencyId   = entity.GetTypedColumnValue <Guid>("CurrencyId");
            string currencyName = GetCurrencyName(currencyId);

            IBank       bank       = BankFactory.GetBank(BankFactory.SupportedBanks.BOC);
            IBankResult bankResult = Task.Run(() => bank.GetRateAsync(currencyName, DateTime.Today)).Result;

            decimal rate = bankResult.ExchangeRate;

            decimal amountFC = entity.GetTypedColumnValue <decimal>("AmountFC");
            decimal amountHC = rate * amountFC;

            entity.SetColumnValue("AmountHC", amountHC);
            entity.Save();

            Guid expenseReportId = entity.GetTypedColumnValue <Guid>("ExpenseReportId");

            UpdateExpenseReport(entity.UserConnection, expenseReportId);

            MsgChannelUtilities.PostMessage(userConnection, GetType().Name, "UpdatedExpenseReportLine");
        }
Ejemplo n.º 12
0
        public void BOC_ShoudThrowDate()
        {
            #region Arrange
            DateTime date            = new DateTime(2017, 1, 2);
            string   expectedMessage = @"Date must be greater than 03-Jan-2017 (Parameter 'date')";
            #endregion

            #region Act
            IBank ibank = BankFactory.GetBank(BankFactory.SupportedBanks.BOC);
            #endregion

            #region Assert
            var exception = Record.ExceptionAsync(
                async() => await ibank.GetRateAsync("USD", date));
            exception.Wait();

            Assert.IsType <ArgumentOutOfRangeException>(exception.Result);
            Assert.Equal("date", ((ArgumentException)exception.Result).ParamName);
            Assert.Equal(exception.Result.Message, expectedMessage);
            #endregion
        }
        public async Task CBR_ShoudThrowCurrency()
        {
            #region Arrange
            DateTime date            = new DateTime(2020, 1, 8);
            string   expectedMessage = $"Central bank of the Russian Federation does not support XXX";
            IBank    ibank           = BankFactory.GetBank(BankFactory.SupportedBanks.CBR);
            #endregion

            #region Act
            var exception = Record.ExceptionAsync(
                async() => await ibank.GetRateAsync("XXX", date));
            exception.Wait();
            #endregion

            #region Assert
            Assert.Equal(expectedMessage, exception.Result.Message);
            Assert.IsType <NotImplementedException>(exception.Result);
            await Assert.ThrowsAsync <NotImplementedException>(
                async() => await ibank.GetRateAsync("XXX", date));

            #endregion
        }
        public async Task CBR_ShoudThrowDate()
        {
            #region Arrange
            DateTime date            = new DateTime(1992, 6, 1);
            string   expectedMessage = @"Date must be greater than 03-Jan-2017 (Parameter 'date')";
            IBank    ibank           = BankFactory.GetBank(BankFactory.SupportedBanks.BOC);
            #endregion

            #region Act
            var exception = Record.ExceptionAsync(
                async() => await ibank.GetRateAsync("USD", date));
            exception.Wait();
            #endregion

            #region Assert
            Assert.Equal(expectedMessage, exception.Result.Message);
            Assert.IsType <ArgumentOutOfRangeException>(exception.Result);
            await Assert.ThrowsAsync <ArgumentOutOfRangeException>(
                async() => await ibank.GetRateAsync("USD", date));

            #endregion
        }
Ejemplo n.º 15
0
        public async Task RBA_ShoudThrowDate()
        {
            #region Arrange
            DateTime date            = new DateTime(2017, 1, 8);
            string   expectedMessage = @"Date must be greater than 01-Jan-2018";
            #endregion

            #region Act
            IBank ibank = BankFactory.GetBank(BankFactory.SupportedBanks.RBA);
            #endregion

            #region Assert
            var exception = Record.ExceptionAsync(
                async() => await ibank.GetRateAsync("KRW", date));
            exception.Wait();

            Assert.Equal(exception.Result.Message, expectedMessage);
            Assert.IsType <NotImplementedException>(exception.Result);
            await Assert.ThrowsAsync <NotImplementedException>(
                async() => await ibank.GetRateAsync("KRW", date));

            #endregion
        }
Ejemplo n.º 16
0
 public void Initialize()
 {
     _bazaar = new Bazaar();
     _bank   = BankFactory.GetBank("DnB");
 }
Ejemplo n.º 17
0
 /// <summary>
 ///		Constructor
 /// </summary>
 /// <param name="amountOfCustomers">
 ///		Number of customer to be created
 /// </param>
 public Client(int amountOfCustomers)
 {
     _bank          = BankFactory.GetBank("DNB");
     _bazaar        = new Bazaar();
     _threadHandler = new ThreadHandler(amountOfCustomers);
 }
Ejemplo n.º 18
0
        static void Main(string[] args)
        {
            #region singleton

            /* Task task1 = Task.Factory.StartNew(() => {
             * Counter counter1 = Counter.GetInstance();
             * counter1.AddOne();
             * Console.WriteLine("counter 1 :"+ counter1.count.ToString());
             * });
             *
             * Task task2 = Task.Factory.StartNew(() => {
             * Counter counter2 = Counter.GetInstance();
             * counter2.AddOne();
             * Console.WriteLine("counter 2 :"+ counter2.count.ToString());
             * Console.WriteLine();
             * });  */
            //counter1.AddOne();
            //Console.WriteLine("counter 1 :"+ counter1.count.ToString());
            //Console.WriteLine("counter 2 :"+ counter2.count.ToString());
            #endregion

            #region prototype

            /*EmployeePrototype tempEmp1 = new TempEmployee();
             * tempEmp1.Name = "temp employee 1";
             * tempEmp1.Id = 1;
             * tempEmp1.EmpAddress = new Address{City="city 1", Building="B1", StreetName="street name"};
             *
             * EmployeePrototype tempEmp2 =tempEmp1.ShallowCopy();
             *
             * Console.WriteLine("========= Temp Emp 1 Original Values=============");
             * Console.WriteLine(tempEmp1.ToString());
             * Console.WriteLine("========= Temp Emp 2 Copy========================");
             * Console.WriteLine(tempEmp2.ToString());
             *
             * tempEmp2.EmpAddress.City="new city";
             * tempEmp2.Name="sadasdasd";
             * tempEmp2.Id=1000;
             * Console.ForegroundColor = ConsoleColor.Cyan;
             * Console.WriteLine("========= Temp Emp 1 After Change =============");
             * Console.WriteLine(tempEmp1.ToString());
             * Console.WriteLine("========= Temp Emp 2 ==========================");
             * Console.WriteLine(tempEmp2.ToString());*/

            #endregion

            #region Builder

            /*System.Text.StringBuilder sb =new System.Text.StringBuilder();
             * sb.Append("Word 1,");
             * sb.Append("Word 2");
             *
             * WriteColoredLine(sb.ToString(),ConsoleColor.Cyan);*/
            /*WriteColoredLine("***Builder Pattern***",ConsoleColor.Yellow);
             * Director director = new Director();
             * IBuilder carBuilder = new Car("Jeep");
             * IBuilder motorCycleBuilder = new MotorCycle("Honda");*/

            // Making Car

            /*director.Construct(carBuilder);
             * Product car = carBuilder.GetVehicle();
             * WriteColoredLine($"Car {car.Show()}");
             *
             * //Making MotorCycle
             * director.Construct(motorCycleBuilder);
             * Product motorCycle = motorCycleBuilder.GetVehicle();
             * WriteColoredLine($"MotorCycle {motorCycle.Show()}");*/
            #endregion

            #region Factory Method
            string      cardNumber, bankCode;
            BankFactory bankFactory = new BankFactory();

            WriteColoredLine("Enter your card number", ConsoleColor.Cyan);
            cardNumber = Console.ReadLine();
            bankCode   = cardNumber.Substring(0, 6);
            IBank        bank        = bankFactory.GetBank(bankCode);
            IPaymentCard paymentCard = bankFactory.GetPaymentCard("12");

            WriteColoredLine(bank.Withdraw());
            WriteColoredLine(paymentCard.GetName());
            #endregion

            Console.ReadKey();
        }
Ejemplo n.º 19
0
 public void SetUp()
 {
     _bank = BankFactory.GetBank("DNB");
 }