private List <StockModel> GetMarketStocks() { var csvData = new List <StockModel>(); var csvFile = marketDataPath; try { // Read stocks data (price, dividend) at current turn using (CSVHelper.CsvFileReader reader = new CSVHelper.CsvFileReader(csvFile)) { while (reader.ReadRow(searchAll)) { if (!searchAll.Contains("id")) { // Create stock model data from csv csvData.Add(new StockModel(int.Parse(searchAll[0]), searchAll[1].ToUpper(), decimal.Parse(searchAll[2]), decimal.Parse(searchAll[3]))); } } } } catch (Exception ex) { throw ex; } return(csvData); }
public JsonResult CurrentTurn() { int?turn = null; var csvFile = turnPath; try { // Find current turn using (CSVHelper.CsvFileReader reader = new CSVHelper.CsvFileReader(csvFile)) { while (reader.ReadRow(searchAll)) { if (!searchAll.Contains("turn")) { turn = int.Parse(searchAll[0]); } } } } catch (Exception ex) { return(JSONHelper.CreateJSONResult(false, ex)); } return(JSONHelper.CreateJSONResult(true, turn)); }
public static List <CsvRow> ParseBytes(byte[] datas) { CsvFileReader reader = new CSVHelper.CsvFileReader(new MemoryStream(datas)); List <CsvRow> result = new List <CsvRow>(); CsvRow row; do { row = new CsvRow(); result.Add(row); }while (reader.ReadRow(row)); return(result); }
public static List <CsvRow> ParseText(string text) { byte[] datas = System.Text.Encoding.UTF8.GetBytes(text); CsvFileReader reader = new CSVHelper.CsvFileReader(new MemoryStream(datas)); List <CsvRow> result = new List <CsvRow>(); CsvRow row; do { row = new CsvRow(); result.Add(row); }while (reader.ReadRow(row)); return(result); }
//public async Task<ActionResult> Register(RegisterViewModel model) public ActionResult Register(RegisterViewModel model) { if (ModelState.IsValid) { //var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; //var result = await UserManager.CreateAsync(user, model.Password); //if (result.Succeeded) //{ // await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false); // // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771 // // Send an email with this link // // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); // // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); // // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>"); // return RedirectToAction("Index", "Home"); //} //AddErrors(result); var path = string.Format("{0}\\{1}", System.Web.HttpContext.Current.Server.MapPath("~/App_Data"), ConfigurationManager.AppSettings["players"]); // Get latest player id var latestId = 0; using (var reader = new CSVHelper.CsvFileReader(path)) { var cols = new List <string>() { "id" }; //while (reader.ReadRow(new List<string>() { "id" })) while (reader.ReadRow(cols)) { int.TryParse(cols[0], out latestId); } } // Create new player using (var writer = new CSVHelper.CsvFileWriter(path)) { // Write each row of data var data = string.Format("{0},\"{1}\",\"{2}\"", latestId + 1, model.Email, model.Password); writer.AddRow(data); } return(RedirectToAction("Index", "Home")); } // If we got this far, something failed, redisplay form return(View(model)); }
/// <summary> /// Search player data (name, cash, portfolio value) by player name /// </summary> /// <returns>The player data</returns> private PlayerModel GetPlayerData() { PlayerModel result = null; var row = new List <string>(); playerPath = string.Format("{0}\\{1}.csv", PLAYER_NAMES_PATH, Session["USER_NAME"]); using (CSVHelper.CsvFileReader reader = new CSVHelper.CsvFileReader(playerPath)) { while (reader.ReadRow(row)) { if (!row[0].ToLower().Equals("id")) { result = new PlayerModel(int.Parse(row[0]), row[1], decimal.Parse(row[2]), decimal.Parse(row[3])); } } } return(result); }
public JsonResult NextTurn() { int?turn = null; var csvFile = turnPath; try { // Get current game turn using (CSVHelper.CsvFileReader reader = new CSVHelper.CsvFileReader(csvFile)) { while (reader.ReadRow(searchAll)) { if (!searchAll.Contains("turn")) { turn = int.Parse(searchAll[0]) + 1; } } } // Update game turn if (turn.HasValue) { using (CSVHelper.CsvFileWriter writer = new CSVHelper.CsvFileWriter(csvFile, false)) { // Write csv column writer.AddRow("turn"); // Write turn data writer.AddRow(turn.Value.ToString()); } UpdateMarketData(turn.Value); } } catch (Exception ex) { return(JSONHelper.CreateJSONResult(false, ex)); } return(JSONHelper.CreateJSONResult(true, turn)); }
/// <summary> /// Search for tradeable stock in market /// </summary> /// <param name="id">Specific stock name or null for search all</param> /// <returns>The list of stocks</returns> private List <StockModel> GetStockMarketByName(string name) { var csvData = new List <StockModel>(); var row = new CSVHelper.CsvRow(); try { // Read stocks data (price, dividend) at current turn using (CSVHelper.CsvFileReader reader = new CSVHelper.CsvFileReader(MARKET_PATH)) { while (reader.ReadRow(row)) { if (!row.Contains("id")) { var stockName = row[1].ToUpper(); // Create stock model data from csv if (string.IsNullOrEmpty(name)) { csvData.Add(new StockModel(int.Parse(row[0]), stockName, decimal.Parse(row[2]), decimal.Parse(row[3]))); } else if (stockName.ToLower().Equals(name.ToLower())) { csvData.Add(new StockModel(int.Parse(row[0]), stockName, decimal.Parse(row[2]), decimal.Parse(row[3]))); break; } } } } } catch (Exception ex) { throw ex; } return(csvData); }
public static List <CsvRow> ParseCSV_Exp(string pathNameInResource) { StreamReader mysr = new StreamReader(pathNameInResource); string str = mysr.ReadToEnd(); if (str == string.Empty) { return(null); } string contents = str; byte[] datas = System.Text.Encoding.UTF8.GetBytes(contents); CsvFileReader reader = new CSVHelper.CsvFileReader(new MemoryStream(datas)); List <CsvRow> result = new List <CsvRow>(); CsvRow row = new CsvRow(); while (reader.ReadRow(row)) { result.Add(row); row = new CsvRow(); } return(result); }
/// <summary> /// Search all stock in portfolio by specific player name /// </summary> /// <returns>List of stock</returns> private List <StockModel> GetPortfolio(bool isRemoveDuplicate = true) { var csvData = new List <StockModel>(); var row = new List <string>(); try { playerPortfolioPath = string.Format("{0}\\{1}{2}", PLAYER_NAMES_PATH, Session["USER_NAME"], PORTFOLIO_FILE_FORMAT); var info = new FileInfo(playerPortfolioPath); if (info != null) { // Get stock list using (CSVHelper.CsvFileReader reader = new CSVHelper.CsvFileReader(playerPortfolioPath)) { while (reader.ReadRow(row)) { if (!row[0].ToLower().Equals("id")) { csvData.Add(new StockModel(int.Parse(row[0]), row[1].ToUpper(), decimal.Parse(row[2]), decimal.Parse(row[3]), int.Parse(row[4]))); } } } // Remove duplicate stock and sum vol with average price if (isRemoveDuplicate) { for (var i = 0; i < csvData.Count; i++) { var item = csvData[i]; // Find all stock in portfolio with the same id var stocks = csvData.Where(p => p.Name.ToUpper() == item.Name.ToUpper()); if (stocks.Count() > 1) { // Combine duplicate stock decimal newPrice = 0; var newVol = 0; foreach (var stock in stocks) { newPrice += stock.Price; newVol += stock.Vol; } // Create new stock with avg cost var newStock = new StockModel(item.ID, item.Name, (newPrice / stocks.Count()), 0, newVol); // Remove all duplicate stocks csvData.RemoveAll(p => p.Name.ToUpper() == item.Name.ToUpper()); csvData.Add(newStock); } } } } } catch (Exception ex) { throw ex; } return(csvData.OrderBy(p => p.Name).ToList()); }
public JsonResult ChangeStockInMarket(string stockName, bool isAdd) { var csvData = new List <StockModel>(); var csvFile = marketDataPath; try { if (isAdd) { // Add new stock to market using (CSVHelper.CsvFileWriter writer = new CSVHelper.CsvFileWriter(csvFile)) { writer.AddRow(string.Format("0,{0},0,0", stockName.ToLower())); } } else { // Get all stock in market var market = GetMarketStocks(); // Remove stock from market var stockToRemove = market.Where(p => p.Name.Equals(stockName.ToUpper())).First(); market.Remove(stockToRemove); // Rewrite market data using (CSVHelper.CsvFileWriter writer = new CSVHelper.CsvFileWriter(csvFile, false)) { // Add market csv header writer.AddRow("id,name,price,dividend"); foreach (var item in market) { writer.AddRow(string.Format("0,{0},{1},{2}", item.Name, item.Price, item.Dividend)); } } // Read stocks data (price, dividend) at current turn //using (CSVHelper.CsvFileReader reader = new CSVHelper.CsvFileReader(csvFile)) //{ // while (reader.ReadRow(searchAll)) // { // if (!searchAll.Contains("id")) // { // // Create stock model data from csv // csvData.Add(new StockModel(int.Parse(searchAll[0]), searchAll[1].ToUpper(), decimal.Parse(searchAll[2]), decimal.Parse(searchAll[3]))); // } // } //} } // Find current turn int?turn = null; csvFile = turnPath; using (CSVHelper.CsvFileReader reader = new CSVHelper.CsvFileReader(csvFile)) { while (reader.ReadRow(searchAll)) { if (!searchAll.Contains("turn")) { turn = int.Parse(searchAll[0]); } } } //Update market value if (turn.HasValue) { UpdateMarketData(turn.Value); csvData = GetMarketStocks(); } } catch (Exception ex) { return(JSONHelper.CreateJSONResult(false, ex)); } return(JSONHelper.CreateJSONResult(true, csvData)); }
/// <summary> /// Update all stock data that in market /// </summary> /// <param name="turn">The board turn</param> private void UpdateMarketData(int turn) { turn--; //--------------------// // Update market data // //--------------------// var stockNames = new List <string>(); var csvFile = marketDataPath; // Read current market stock using (CSVHelper.CsvFileReader reader = new CSVHelper.CsvFileReader(csvFile)) { while (reader.ReadRow(searchAll)) { if (!searchAll.Contains("id")) { // Create stock model data from csv //csvData.Add(new StockModel(int.Parse(searchAll[0]), searchAll[1].ToUpper(), decimal.Parse(searchAll[2]), decimal.Parse(searchAll[3]))); stockNames.Add(searchAll[1].ToUpper()); } } } // Update stocks price in market accoring to current turn var csvFloder = stockNamesPath; var stocksData = new List <string>(); var stocksPriceAvg = new List <decimal>(); var stocksDivAvg = new List <decimal>(); // Find all stocks name foreach (var files in Directory.GetFiles(csvFloder)) { FileInfo info = new FileInfo(files); var stockName = info.Name.Replace(".csv", string.Empty).ToUpper(); if (stockNames.Contains(stockName)) { using (CSVHelper.CsvFileReader reader = new CSVHelper.CsvFileReader(info.FullName)) { while (reader.ReadRow(searchAll)) { if (!searchAll.Contains("id") && searchAll[0].Equals((turn).ToString())) { // Set stock id searchAll[0] = stocksData.Count.ToString(); // Create stock model data from csv stocksData.Add(string.Join(",", searchAll.ToArray())); // Add stock price/dividend to find market index price/dividend stocksPriceAvg.Add(decimal.Parse(searchAll[2])); stocksDivAvg.Add(decimal.Parse(searchAll[3])); break; } } } } } // Calculate market index var indexPrice = stocksPriceAvg.Count == 0 ? 0 : (stocksPriceAvg.Sum() / stocksPriceAvg.Count); var indexDiv = stocksDivAvg.Count == 0 ? 0 : (stocksDivAvg.Sum() / stocksDivAvg.Count); var indexStock = string.Format("{0},index,{1},{2}", stocksData.Count, indexPrice, indexDiv); stocksData.Add(indexStock); // Write new market data using (CSVHelper.CsvFileWriter writer = new CSVHelper.CsvFileWriter(csvFile, false)) { // Write csv column string marketCols = "id,name,price,dividend"; //var row = new List<string>() { "id,name,price,dividend" }; writer.AddRow(marketCols); foreach (var item in stocksData) { writer.AddRow(item); } } }
public JsonResult PlayersSearch() { var csvData = new List <PlayerModel>(); var csvFloder = System.Web.HttpContext.Current.Server.MapPath("~/App_Data") + "\\" + ConfigurationManager.AppSettings["players"]; try { // Get player info foreach (var files in Directory.GetFiles(csvFloder)) { FileInfo info = new FileInfo(files); var fileName = Path.GetFileName(info.FullName); // Skip player account info if (fileName.Equals("player.csv")) { continue; } // Player's portfolio path var csvFile = string.Format("{0}\\{1}", csvFloder, fileName); // Read player's portfolio data using (CSVHelper.CsvFileReader reader = new CSVHelper.CsvFileReader(csvFile)) { if (fileName.ToLower().Contains("stock")) { var stocks = new List <StockModel>(); var playerId = 0; while (reader.ReadRow(searchAll)) { if (!searchAll[0].ToLower().Equals("id")) { stocks.Add(new StockModel(int.Parse(searchAll[0]), searchAll[1].ToUpper(), decimal.Parse(searchAll[2]), decimal.Parse(searchAll[3]), int.Parse(searchAll[4]))); playerId = int.Parse(searchAll[5]); } } csvData.Where(p => p.ID == playerId).First().Stocks = stocks; } else { while (reader.ReadRow(searchAll)) { if (!searchAll[0].ToLower().Equals("id")) { var player = new PlayerModel(int.Parse(searchAll[0]), searchAll[1], decimal.Parse(searchAll[2]), decimal.Parse(searchAll[3])); csvData.Add(player); } } } } } } catch (Exception ex) { return(JSONHelper.CreateJSONResult(false, ex)); } return(JSONHelper.CreateJSONResult(true, csvData)); }