Esempio n. 1
0
        public void Remove(ClientPortfolio portfolio)
        {
            var portfolioToRemove = dBContext.ClientsPortfolios.Where(x => x.ShareID == portfolio.ShareID && x.ClientID == portfolio.ClientID).FirstOrDefault();

            dBContext.ClientsPortfolios.Remove(portfolioToRemove);
            dBContext.SaveChanges();
        }
        public void RegisterPortfolioTest()
        {
            // Arrange
            var portfoliosRepositoryMock = Substitute.For <IPortfolioRepository>();

            var sut = new PortfoliosService(portfoliosRepositoryMock);

            PortfolioData portfolio = new PortfolioData
            {
                ClientID       = 10,
                ShareID        = 10,
                AmountOfShares = 100
            };

            ClientPortfolio portfolios = new ClientPortfolio
            {
                ClientID       = 10,
                ShareID        = 10,
                AmountOfShares = 100
            };

            // Act
            sut.RegisterPortfolio(portfolio);

            // Asserts
            portfoliosRepositoryMock.Received(1).Insert(Arg.Is <ClientPortfolio>(x => x.ClientID == portfolio.ClientID &&
                                                                                 x.ShareID == portfolio.ShareID && x.AmountOfShares == portfolio.AmountOfShares));
        }
Esempio n. 3
0
        public void Update(ClientPortfolio newPortfolio)
        {
            var oldPortfolio = GetPortfolioByClientID(newPortfolio.ClientID);

            dBContext.Entry(oldPortfolio).CurrentValues.SetValues(newPortfolio);
            dBContext.SaveChanges();
        }
        public void RegisterPortfolio(PortfolioData portfolioData)
        {
            var newPortfolio = new ClientPortfolio()
            {
                ClientID       = portfolioData.ClientID,
                ShareID        = portfolioData.ShareID,
                AmountOfShares = portfolioData.AmountOfShares
            };

            portfolioRepository.Insert(newPortfolio);
            portfolioRepository.SaveChanges();
        }
Esempio n. 5
0
        public ClientPortfolio GetPortfolio(string AccountNumber, string StartDate, string EndDate, string Token)
        {
            ClientPortfolio clientPortfolio = null;

            try
            {
                if (string.IsNullOrEmpty(AccountNumber) || string.IsNullOrEmpty(StartDate) || string.IsNullOrEmpty(EndDate))
                {
                    throw new HttpResponseException(SetHttpResonse("ONE OR MORE INVALID PARAMETER SUPPLIED,PLEASE CHECK PARAMETER AND RESUMBIT REQUEST", "ResponseCode", "2"));
                }

                DateTime StrDt = new DateTime();
                DateTime EnDt  = new DateTime();
                if (!(((DateTime.TryParse(StartDate, out StrDt)) && (DateTime.TryParse(EndDate, out EnDt)))))
                {
                    throw new HttpResponseException(SetHttpResonse("ONE OR MORE INVALID DATE PARAMETER SUPPLIED,PLEASE CHECK PARAMETER AND RESUMBIT REQUEST", "ResponseCode", "2"));
                }

                SessionID = Login(UserName, Password, Participant);
                if (string.IsNullOrEmpty(SessionID))
                {
                    Logger logger = LogManager.GetCurrentClassLogger();
                    logger.Error(DateTime.Now.ToString() + "\t" + "Login failed. Terminating");

                    throw new HttpResponseException(SetHttpResonse("LOGIN FAILED PLEASE VERIFY CREDENTAIL OR CONTACT ADMINISTRATOR", "ResponseCode", "2"));
                }


                else
                {
                    clientPortfolio = GetListOperations(AccountNumber, StartDate, EndDate);
                    //clientPortfolio = GetTransactions(AccountNumber, StartDate, EndDate);
                    //Logout();
                }
            }
            catch (Exception ex)
            {
                Logger logger = LogManager.GetCurrentClassLogger();
                logger.Error(DateTime.Now.ToString() + ex.Message.ToString());

                throw new HttpResponseException(SetHttpResonse("ERROR RETRIEVING DATA, PLEASE CONTACT ADMINISTRATOR", "ResponseCode", "2"));

                //   Console.WriteLine(String.Format("Application Exception:\r\n{0}", ex.Message));
            }
            finally
            {
                // Console.WriteLine("Press any key to terminate the application");
                //Console.ReadKey(true);
            }
            return(clientPortfolio);
        }
        public void Execute()
        {
            string url               = "http://localhost/clients/update";
            int    clientID          = 0;
            int    shareID           = 0;
            int    newAmountOfShares = 0;

            this.ioModule.WriteOutput("Write client ID, that you want to update:");
            while (true)
            {
                if (int.TryParse(this.ioModule.ReadInput(), out clientID))
                {
                    break;
                }
                this.ioModule.WriteOutput("Please enter valid client ID.");
            }

            this.ioModule.WriteOutput("Write share ID:");
            while (true)
            {
                if (int.TryParse(this.ioModule.ReadInput(), out shareID))
                {
                    break;
                }
                this.ioModule.WriteOutput("Please enter valid share ID.");
            }

            this.ioModule.WriteOutput("Write amount of shares:");
            while (true)
            {
                if (int.TryParse(this.ioModule.ReadInput(), out newAmountOfShares))
                {
                    break;
                }
                this.ioModule.WriteOutput("Please enter valid amount of shares.");
            }

            ClientPortfolio portfolioToUpdate = new ClientPortfolio
            {
                ClientID       = clientID,
                ShareID        = shareID,
                AmountOfShares = newAmountOfShares
            };

            HttpContent contentString = new StringContent(JsonConvert.SerializeObject(portfolioToUpdate), Encoding.UTF8, "application/json");
            var         result        = this.httpRequestService.PostAsync(url, contentString);

            this.ioModule.WriteOutput(result.ToString());
        }
Esempio n. 7
0
        public void CreateRandomShares()
        {
            int clientID       = this.random.Next(1, this.clientService.GetAllClients().Count());
            int shareID        = this.random.Next(1, this.clientService.GetAllClients().Count());
            int amountOfShares = this.random.Next(1, 10);

            var portfolio = new ClientPortfolio
            {
                ClientID       = clientID,
                ShareID        = shareID,
                AmountOfShares = amountOfShares
            };

            this.portfoliosService.ChangeAmountOfShares(portfolio);
        }
        public void ChangeAmountOfSharesTest()
        {
            // Arrange
            var portfoliosRepositoryMock = Substitute.For <IPortfolioRepository>();

            var sut = new PortfoliosService(portfoliosRepositoryMock);

            ClientPortfolio portfolios = new ClientPortfolio
            {
                ClientID       = 10,
                ShareID        = 10,
                AmountOfShares = 100
            };

            // Act
            sut.ChangeAmountOfShares(portfolios);

            // Asserts
            portfoliosRepositoryMock.Received(1).ChangeAmountOfShares(Arg.Is <ClientPortfolio>(x => x.ClientID == portfolios.ClientID));
        }
        public void ChangeAmountOfShares(ClientPortfolio portfolios)
        {
            var newSharesForClient = portfolioRepository.GetPortfolioByClientID(portfolios.ClientID);

            if (newSharesForClient != null)
            {
                newSharesForClient.AmountOfShares += portfolios.AmountOfShares;
            }

            else
            {
                newSharesForClient = new ClientPortfolio()
                {
                    ClientID       = portfolios.ClientID,
                    ShareID        = portfolios.ShareID,
                    AmountOfShares = portfolios.AmountOfShares,
                };
                portfolioRepository.Insert(newSharesForClient);
            }

            portfolioRepository.SaveChanges();
        }
        public void SellOrBuyShares(Transaction transaction)
        {
            ClientPortfolio portfolios = new ClientPortfolio()
            {
                ClientID       = transaction.SellerID,
                ShareID        = transaction.ShareID,
                AmountOfShares = -transaction.AmountOfShares
            };

            if (transaction.SellerID == transaction.BuyerID)
            {
                throw new ArgumentException("Seller and buyer are the same person.");
            }

            portfoliosService.ChangeAmountOfShares(portfolios);
            portfolios.AmountOfShares *= -1;
            portfolios.ClientID        = transaction.BuyerID;
            portfoliosService.ChangeAmountOfShares(portfolios);

            decimal sharePrice = sharesService.GetAllShares().Where(x => x.ShareID == transaction.ShareID).Select(x => x.Price).FirstOrDefault();

            clientService.ChangeBalance(transaction.SellerID, sharePrice * transaction.AmountOfShares);
            clientService.ChangeBalance(transaction.BuyerID, -(sharePrice * transaction.AmountOfShares));
        }
Esempio n. 11
0
 public void ChangeAmountOfShares(ClientPortfolio portfolios)
 {
     dBContext.ClientsPortfolios.Where(x => x.ClientID == portfolios.ClientID).FirstOrDefault().AmountOfShares += portfolios.AmountOfShares;
     dBContext.SaveChanges();
 }
Esempio n. 12
0
 public void Insert(ClientPortfolio portfolio)
 {
     dBContext.ClientsPortfolios.Add(portfolio);
 }
Esempio n. 13
0
 public HttpResponseMessage Post([FromBody] ClientPortfolio portfolio)
 {
     portfoliosService.Update(portfolio);
     return(Request.CreateResponse(HttpStatusCode.OK));
 }
Esempio n. 14
0
 public void Remove(ClientPortfolio portfolio)
 {
     this.portfolioRepository.Remove(portfolio);
 }
Esempio n. 15
0
 public void Update(ClientPortfolio portfolio)
 {
     this.portfolioRepository.Update(portfolio);
 }
Esempio n. 16
0
        private ClientPortfolio GetTransactions(string AccountNumber, string StartDate, string EndDate)
        {
            byte[] bs;
            string schema;

            string TimeZone = Properties.Settings.Default.TimeInfo.ToString();

            string strtDate = StartDate + TimeZone;
            string edDate   = EndDate + TimeZone;

            string fileName = Properties.Settings.Default.LIST_TRANSACTION_QUERY.ToString();

            int RowCount = 10;

            RowCount = Properties.Settings.Default.DEFAULT_ROW_COUNT;



            string TemplateFileName = HttpContext.Current.Server.MapPath("~/" + fileName);
            string filter           = FileToString(TemplateFileName);

            filter = filter.Replace("@ACCOUNT_REFERENCE", AccountNumber);
            filter = filter.Replace("@StartDate", strtDate);
            filter = filter.Replace("@EndDate", edDate);

            ClientPortfolio       clientPortfolio    = new ClientPortfolio();
            List <InstrumentInfo> instrumentInfoList = new List <InstrumentInfo>();
            BrokerInfo            brokerInfo         = new BrokerInfo();
            AccountDetails        accountDetails     = new AccountDetails();

            try
            {
                rt = mid.DataSetListZIP(SessionID, "LIST_TRANSACTION.1", RowCount, filter, out schema, out bs);


                if (rt.HasError) // lets see what server thinks about that
                {
                    Logger logger = LogManager.GetCurrentClassLogger();
                    logger.Error(DateTime.Now.ToString() + "\t" + rt.ErrorInfo.ErrorReference + "\t" + rt.ErrorInfo.ErrorText);
                }
                else
                {
                    /* unzip output from server */
                    DataSet opListDS = Utils.unZipDS(bs, schema);

                    DataTable Transacitons = opListDS.Tables["LIST_TRANSACTION"];



                    var TransactionList = from Trans in Transacitons.AsEnumerable()
                                          select new
                    {
                        TransactionID       = Trans.Field <int>("TRANS_ID"),
                        TransactionQty      = Trans.Field <decimal>("BALCHANGE_QTY"),
                        TransactionISIN     = Trans.Field <int?>("BALCHANGE_ISIN"),
                        TransactionAccount  = Trans.Field <int?>("BALCHANGE_ACCOUNT"),
                        TransactionDate     = Trans.Field <DateTime?>("BALCHANGE_DATE"),
                        TransactionTypeDesc = Trans.Field <string>("TRANTYPE_DESCRIPTION"),
                        ISINCode            = Trans.Field <string>("ISIN_CODE"),
                        TransactionPrice    = Trans.Field <decimal?>("TRANS_PRICE"),
                        TransactionValue    = Trans.Field <decimal?>("TRANS_VALUE"),
                        // Name = Trans.Field<string>("NAME_BLOCK_1"),
                        BrokerName       = Trans.Field <string>("TRANS_BROKER"),
                        BrokerCode       = Trans.Field <string>("TRANS_BROKER"),
                        TransactionMatch = Trans.Field <int?>("TRANS_MATCH")
                    };
                }
            }
            catch (Exception ex)
            {
                Logger logger = LogManager.GetCurrentClassLogger();
                logger.Error(DateTime.Now.ToString() + "\t" + ex.Message);
            }
            finally
            {
                mid.Close();
            }
            return(clientPortfolio);
        }
Esempio n. 17
0
 public HttpResponseMessage DeletePortfolio([FromBody] ClientPortfolio portfolio)
 {
     this.portfoliosService.Remove(portfolio);
     return(Request.CreateResponse(HttpStatusCode.OK));
 }
Esempio n. 18
0
        private ClientPortfolio GetListOperations(string AccountNumber, string StartDate, string EndDate)
        {
            byte[] bs;
            string schema;

            string TimeZone = Properties.Settings.Default.TimeInfo.ToString();

            string strtDate = StartDate + TimeZone;
            string edDate   = EndDate + TimeZone;

            string fileName      = Properties.Settings.Default.REP_REGADVICE_QUERY.ToString();
            string OperationName = Properties.Settings.Default.REP_REGADVICE_OPNAME.ToString();

            int RowCount = 10;

            RowCount = Properties.Settings.Default.DEFAULT_ROW_COUNT;



            string TemplateFileName = HttpContext.Current.Server.MapPath("~/" + fileName);
            string filter           = FileToString(TemplateFileName);

            filter = filter.Replace("@AccountReference", AccountNumber);
            filter = filter.Replace("@StartDate", strtDate);
            filter = filter.Replace("@EndDate", edDate);

            ClientPortfolio       clientPortfolio    = new ClientPortfolio();
            List <InstrumentInfo> instrumentInfoList = new List <InstrumentInfo>();
            BrokerInfo            brokerInfo         = new BrokerInfo();
            AccountDetails        accountDetails     = new AccountDetails();

            try
            {
                rt = mid.DataSetListZIP(SessionID, OperationName, RowCount, filter, out schema, out bs);


                if (rt.HasError) // lets see what server thinks about that
                {
                    Logger logger = LogManager.GetCurrentClassLogger();
                    logger.Error(DateTime.Now.ToString() + "\t" + rt.ErrorInfo.ErrorReference + "\t" + rt.ErrorInfo.ErrorText);
                }
                else
                {
                    /* unzip output from server */
                    DataSet opListDS = Utils.unZipDS(bs, schema);

                    DataTable Balances    = opListDS.Tables["BALANCE"];
                    DataTable Balchange   = opListDS.Tables["BALCHANGE"];
                    DataTable ISIN        = opListDS.Tables["ISIN"];
                    DataTable TranTypes   = opListDS.Tables["CONFIG_TRANSACTION_TYPE"];
                    decimal   NetActivity = 0.0M;



                    var balanceList = from Balance in Balances.AsEnumerable()
                                      select new
                    {
                        BalanceAccount   = Balance.Field <int>("BALANCE_ACCOUNT"),
                        AccountReference = Balance.Field <string>("ACCOUNT_REFERENCE"),
                        StartPledge      = Balance.Field <decimal?>("BALTIME_PLEDGED_OPEN") == null ? 0 : Balance.Field <decimal?>("BALTIME_PLEDGED_OPEN"),
                        EndingPledge     = Balance.Field <decimal?>("BALTIME_PLEDGED_CLOSE") == null ? 0 : Balance.Field <decimal?>("BALTIME_PLEDGED_CLOSE"),
                        Price            = Balance.Field <decimal?>("PHIST_CLOSE") == null ? 0 : Balance.Field <decimal?>("PHIST_CLOSE"),
                        // Value = Balance.Field<decimal?>("PHIST_CLOSE") == null ? 0 : Balance.Field<decimal?>("PHIST_CLOSE") * Balance.Field<decimal?>("BALTIME_BALANCE_CLOSE") ,//== null ? 0 : Balance.Field<decimal?>("BALTIME_BALANCE_CLOSE"),
                        Value             = Balance.Field <decimal?>("PHIST_CLOSE") * Balance.Field <decimal?>("BALTIME_BALANCE_CLOSE"),    //== null ? 0 : Balance.Field<decimal?>("BALTIME_BALANCE_CLOSE"),
                        ISINCCY           = Balance.Field <string>("PHIST_CCY"),
                        Name              = Balance.Field <string>("NAME_BLOCK_1"),
                        BrokerName        = Balance.Field <string>("DEPOPART_NAME"),
                        BrokerCode        = Balance.Field <string>("DEPOPART_CODE"),
                        BalCarriedForward = Balance.Field <decimal?>("BALTIME_BALANCE_CLOSE"),
                        BalBroughtForward = Balance.Field <decimal?>("BALTIME_BALANCE_OPEN"),
                        ISIN              = Balance.Field <int?>("BALANCE_ISIN"),
                        ISIN_CCY          = Balance.Field <string>("PHIST_CCY")
                    };



                    List <InstrumentInfo> InstrumentInfoList = new List <InstrumentInfo>();
                    NetActivity = 0;
                    foreach (var b in balanceList.ToList())
                    {
                        brokerInfo.BrokerCode  = b.BrokerCode;
                        brokerInfo.BrokerName  = b.BrokerName;
                        accountDetails.Name    = b.Name;
                        accountDetails.Account = b.AccountReference.ToString();


                        InstrumentInfo InstrInfo = new InstrumentInfo();
                        InstrInfo.InstrumentISINCode = b.ISIN.ToString();

                        //Get Balance Data
                        var BalChange = from Balch in Balchange.AsEnumerable()
                                        where Balch.Field <int>("BALCHANGE_ACCOUNT") == b.BalanceAccount &&
                                        Balch.Field <int>("BALCHANGE_ISIN") == b.ISIN &&
                                        Balch.Field <string>("TRANS_CCY") == b.ISINCCY  /* No records will be returned if there is a transaction without currency  */

                                        select new
                        {
                            TransactionID   = Balch.Field <int>("Trans_ID"),
                            TransactionType = Balch.Field <string>("Trans_Type"),
                            TransactionDate = Balch.Field <DateTime>("BALCHANGE_DATE"),
                            TransactonQty   = Balch.Field <decimal?>("BALCHANGE_QTY"),
                            TransactonCurr  = Balch.Field <string>("TRANS_CCY")
                        };



                        //GetInstruments Header
                        var Instrument = from isin in ISIN.AsEnumerable()
                                         where isin.Field <int>("ISIN_ID") == b.ISIN
                                         select new
                        {
                            ISINID          = isin.Field <int>("ISIN_ID"),
                            ISIN_Code       = isin.Field <string>("ISIN_CODE"),
                            ISIN_CCY        = isin.Field <string>("ISIN_CCY"),
                            ISIN_FULL_NAME  = isin.Field <string>("ISIN_FULL_NAME"),
                            ISIN_SHORT_NAME = isin.Field <string>("ISIN_SHORT_NAME")
                        };

                        InstrInfo.InstrumentISINCode = b.ISIN.ToString();


                        foreach (var inst in Instrument.ToList())
                        {
                            InstrInfo.InstrumentISINCode = inst.ISIN_Code;
                            InstrInfo.InstrumentCode     = inst.ISIN_SHORT_NAME.ToString();
                            InstrInfo.InstrumentName     = inst.ISIN_FULL_NAME.ToString();
                            InstrInfo.ISINCurrency       = inst.ISIN_CCY.ToString();
                        }


                        //Get Transaction Details ----------------------------------------------------Balchange --------------------------------------------------------------
                        NetActivity = 0;
                        List <TransactionActivity> TransActivityList = new List <TransactionActivity>();

                        foreach (var bal in BalChange.ToList())
                        {
                            TransactionActivity TransActivity = new TransactionActivity();
                            TransActivity.TransactionDate = bal.TransactionDate.ToString("yyyy-MM-dd");
                            TransActivity.TransactionID   = bal.TransactionID.ToString();
                            TransActivity.TransCurrency   = bal.TransactonCurr;

                            TransActivity.Quantity = bal.TransactonQty.ToString();
                            NetActivity            = NetActivity + Convert.ToDecimal(TransActivity.Quantity);

                            var TransType = from TranType in TranTypes.AsEnumerable()
                                            where TranType.Field <string>("TRANTYPE") == bal.TransactionType

                                            select new
                            {
                                TranType = TranType.Field <string>("TRANTYPE"),
                                TranDesc = TranType.Field <string>("TRANTYPE_DESCRIPTION")
                            };


                            foreach (var Tran in TransType.ToList())
                            {
                                TransActivity.TransType = Tran.TranDesc;
                            }
                            TransActivityList.Add(TransActivity);
                        }


                        // InstrInfo.TransactionActivity = TransActivityList;
                        // TransActivityList.GroupBy(x => x.TransactionID).Select(g => g.First());

                        //InstrInfo.TransactionActivity = TransActivityList.Distinct().ToList();
                        //InstrInfo.TransactionActivity =

                        InstrInfo.TransactionActivity = TransActivityList.GroupBy(p => p.TransactionID).Select(g => g.First()).ToList();

                        InstrInfo.BroughtForwardDate = StartDate.ToString();
                        InstrInfo.CarryForwardDate   = EndDate.ToString();

                        //;
                        InstrInfo.PledgeEndingBalance  = b.EndingPledge.ToString();
                        InstrInfo.PlegeStartingBalance = b.StartPledge.ToString();
                        InstrInfo.Value             = b.Value.ToString().Trim() == "" ? "0" : b.Value.ToString().Trim();
                        InstrInfo.Price             = b.Price.ToString();
                        InstrInfo.NetActivityAmount = NetActivity.ToString();

                        InstrInfo.CarryForwardAmount   = b.BalCarriedForward.ToString();
                        InstrInfo.BroughtForwardAmount = b.BalBroughtForward.ToString();

                        InstrInfo.ISINCurrency = b.ISINCCY;

                        InstrumentInfoList.Add(InstrInfo);
                    }

                    //GrandTotal
                    List <GrandTotal> GrandTotalList = new List <Models.GrandTotal>();
                    try
                    {
                        var GrandTotal = from t in InstrumentInfoList
                                         group t by t.ISINCurrency into g
                                         select new
                        {
                            ISINCurrency = g.Key,
                            totalAmount  = g.Sum(a => (decimal.Parse(a.Value)))                 // blanks will be treated as 0
                        };

                        foreach (var g in GrandTotal.ToList())
                        {
                            GrandTotal grandTotal = new GrandTotal();
                            grandTotal.GrandTotalCurrency = g.ISINCurrency;
                            grandTotal.GrandTotalAmount   = g.totalAmount.ToString();
                            GrandTotalList.Add(grandTotal);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger logger = LogManager.GetCurrentClassLogger();
                        logger.Error(DateTime.Now.ToString() + "\t" + ex.Message);
                    }



                    clientPortfolio.GrandTotal     = GrandTotalList;
                    clientPortfolio.AccountDetails = accountDetails;
                    clientPortfolio.Broker         = brokerInfo;
                    clientPortfolio.InstrumentInfo = InstrumentInfoList;
                }
            }
            catch (Exception ex)
            {
                Logger logger = LogManager.GetCurrentClassLogger();
                logger.Error(DateTime.Now.ToString() + "\t" + ex.Message);

                //Console.WriteLine(String.Format("Operations list exception:\r\n{0}", ex.Message));
            }
            finally
            {
                //always close once done.
                //if (mid != null)
                //
                mid.Close();
            }
            return(clientPortfolio);
        }