Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #5
0
        //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);
        }
Exemple #7
0
        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());
        }
Exemple #11
0
        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));
        }
Exemple #12
0
        /// <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);
                }
            }
        }
Exemple #13
0
        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));
        }