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)); }
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(); }
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()); }
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)); }
public void ChangeAmountOfShares(ClientPortfolio portfolios) { dBContext.ClientsPortfolios.Where(x => x.ClientID == portfolios.ClientID).FirstOrDefault().AmountOfShares += portfolios.AmountOfShares; dBContext.SaveChanges(); }
public void Insert(ClientPortfolio portfolio) { dBContext.ClientsPortfolios.Add(portfolio); }
public HttpResponseMessage Post([FromBody] ClientPortfolio portfolio) { portfoliosService.Update(portfolio); return(Request.CreateResponse(HttpStatusCode.OK)); }
public void Remove(ClientPortfolio portfolio) { this.portfolioRepository.Remove(portfolio); }
public void Update(ClientPortfolio portfolio) { this.portfolioRepository.Update(portfolio); }
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); }
public HttpResponseMessage DeletePortfolio([FromBody] ClientPortfolio portfolio) { this.portfoliosService.Remove(portfolio); return(Request.CreateResponse(HttpStatusCode.OK)); }
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); }