public async Task <IActionResult> ChartReport(int?_id) { var user = await GetCurrentUserAsync(); ViewData["CountryId"] = new SelectList(_context.Countries, "CountryId", "Name"); if (_id == null) { List <Country> list = _context.Countries.ToList(); _id = list[0].CountryId; } List <List <object> > Arr = new List <List <object> >(); List <object> array1 = new List <object>(); array1.Add("ticker"); array1.Add("Qty"); Arr.Add(array1); ListOfStocks listOfStock = new ListOfStocks(); listOfStock.Stocks = await _context.Stocks.Include(s => s.Country) .Include(s => s.Sector) .Include(s => s.Transactions) .ThenInclude(t => t.UserAgency) .Where(s => s.CountryId == _id) .Distinct().ToListAsync(); foreach (Stock st in listOfStock.Stocks) { st.Transactions = st.Transactions.Where(t => t.UserAgency.UserId == user.Id).ToList(); } foreach (Stock st in listOfStock.Stocks) { foreach (Transaction t in st.Transactions) { if (t.BuyOrSell) { double total = st.TotalQty * st.AvarageRate; total = total + (t.Qty * t.Rate); st.TotalQty += t.Qty; st.AvarageRate = Math.Round((total / st.TotalQty) * 100) / 100; } else { st.TotalQty -= t.Qty; } } List <object> array = new List <object>(); array.Add(st.Ticker); array.Add(st.TotalQty * st.AvarageRate); Arr.Add(array); } Arr = Arr.ToList(); string json = JsonConvert.SerializeObject(Arr); ViewBag.Arr = json; return(View()); }
private void MogStockButton_Click(object sender, EventArgs e) { string s = ListOfStocks.SelectedItem.ToString(); int value; int.TryParse(string.Join("", s.Where(c => char.IsDigit(c))), out value); DialogResult result = MessageBox.Show("Вы действительно собираетесь заложить акцию? \n " + "Все постройки на в этом месте будут утеряны", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { if (value <= 22) { player[data.ActivePlayer].DeleteStock(value); stock[value - 1].Owner = 4; stock[value - 1].Buildings = 0; player[data.ActivePlayer].Money += stock[value - 1].MortgagePrice; bank[data.ActivePlayer].AddStock(stock[value - 1]); ListOfStocks.Items.RemoveAt(ListOfStocks.SelectedIndex); ListOfStocks.SelectedIndex = -1; ListOfStocks.Update(); } else if (value >= 23 && value <= 26) { player[data.ActivePlayer].DeleteStock(value); companie[value - 23].Owner = 4; player[data.ActivePlayer].Money += companie[value - 23].MortgagePrice; bank[data.ActivePlayer].AddStock(companie[value - 23]); ListOfStocks.Items.RemoveAt(ListOfStocks.SelectedIndex); ListOfStocks.SelectedIndex = -1; ListOfStocks.Update(); } else { player[data.ActivePlayer].DeleteStock(value); tVRadioComp[value - 27].Owner = 4; player[data.ActivePlayer].Money += tVRadioComp[value - 27].MortgagePrice; bank[data.ActivePlayer].AddStock(tVRadioComp[value - 27]); ListOfStocks.Items.RemoveAt(ListOfStocks.SelectedIndex); ListOfStocks.SelectedIndex = -1; ListOfStocks.Update(); } } }
private void MogStockButton_Click(object sender, EventArgs e) { string s = ListOfStocks.SelectedItem.ToString(); int value; int.TryParse(string.Join("", s.Where(c => char.IsDigit(c))), out value); DialogResult result = MessageBox.Show("Вы действительно хотите выкупить акцию", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { if (value <= 22) { bank[data.ActivePlayer].DeleteStock(value); stosk[value - 1].Owner = (byte)(data.ActivePlayer + 1); stosk[value - 1].Buildings = 0; player[data.ActivePlayer].Money -= stosk[value - 1].MortgagePrice + 20; player[data.ActivePlayer].AddStock(stosk[value - 1]); ListOfStocks.Items.RemoveAt(ListOfStocks.SelectedIndex); ListOfStocks.SelectedIndex = -1; ListOfStocks.Update(); } else if (value >= 23 && value <= 26) { bank[data.ActivePlayer].DeleteStock(value); companie[value - 23].Owner = (byte)(data.ActivePlayer + 1); player[data.ActivePlayer].Money -= companie[value - 23].MortgagePrice + 20; player[data.ActivePlayer].AddStock(companie[value - 23]); ListOfStocks.Items.RemoveAt(ListOfStocks.SelectedIndex); ListOfStocks.SelectedIndex = -1; ListOfStocks.Update(); } else { bank[data.ActivePlayer].DeleteStock(value); tVRadios[value - 27].Owner = (byte)(data.ActivePlayer + 1); player[data.ActivePlayer].Money -= tVRadios[value - 27].MortgagePrice + 20; player[data.ActivePlayer].AddStock(tVRadios[value - 27]); ListOfStocks.Items.RemoveAt(ListOfStocks.SelectedIndex); ListOfStocks.SelectedIndex = -1; ListOfStocks.Update(); } } }
public async Task <IActionResult> ProfitReport() { var user = await GetCurrentUserAsync(); ListOfStocks listOfStock = new ListOfStocks(); listOfStock.Stocks = await _context.Stocks.Include(s => s.Country) .Include(s => s.Sector) .Include(s => s.Transactions) .ThenInclude(t => t.UserAgency) .Distinct().ToListAsync(); //select transactions of the logged in user only foreach (Stock st in listOfStock.Stocks) { st.Transactions = st.Transactions.Where(t => t.UserAgency.UserId == user.Id).ToList(); } foreach (Stock st in listOfStock.Stocks) { foreach (Transaction t in st.Transactions) { if (t.BuyOrSell) { double total = st.TotalQty * st.AvarageRate; total = total + (t.Qty * t.Rate); st.TotalQty += t.Qty; st.AvarageRate = Math.Round((total / st.TotalQty) * 100) / 100; } else { st.Profit = st.Profit + ((t.Qty * t.Rate) - (t.Qty * st.AvarageRate)); st.TotalQty -= t.Qty; st.ProfitQty += t.Qty; } } } listOfStock.TotalValues = listOfStock.Stocks .GroupBy(s => s.Country.Name) .Select(group => new TotalValue { CountryName = group.Key, Currnecy = group.Select(item => item.Country.Currency).First().ToString(), Total = group.Sum(item => item.Profit) }).ToList(); return(View(listOfStock)); }
public async Task <IActionResult> AllStockReport(string _orderBy, string _sortDirection) { var user = await GetCurrentUserAsync(); ListOfStocks listOfStock = new ListOfStocks(); listOfStock.Stocks = await _context.Stocks.Include(s => s.Country) .Include(s => s.Sector) .Include(s => s.Transactions) .ThenInclude(t => t.UserAgency) .ToListAsync(); if (_orderBy != null) { switch (_orderBy) { case "Name": if (_sortDirection == null || _sortDirection == "asc") { listOfStock.Stocks = listOfStock.Stocks.OrderBy(s => s.Name).ToList(); ViewData["NameDirection"] = "desc"; } else { listOfStock.Stocks = listOfStock.Stocks.OrderByDescending(s => s.Name).ToList(); ViewData["NameDirection"] = "asc"; } break; case "Country": if (_sortDirection == null || _sortDirection == "asc") { listOfStock.Stocks = listOfStock.Stocks.OrderBy(s => s.Country.Name).ToList(); ViewData["CountryDirection"] = "desc"; } else { listOfStock.Stocks = listOfStock.Stocks.OrderByDescending(s => s.Country.Name).ToList(); ViewData["CountryDirection"] = "asc"; } break; case "Sector": if (_sortDirection == null || _sortDirection == "asc") { listOfStock.Stocks = listOfStock.Stocks.OrderBy(s => s.Sector.Name).ToList(); ViewData["SectorDirection"] = "desc"; } else { listOfStock.Stocks = listOfStock.Stocks.OrderByDescending(s => s.Sector.Name).ToList(); ViewData["SectorDirection"] = "asc"; } break; } } //select transactions of the logged in user only foreach (Stock st in listOfStock.Stocks) { st.Transactions = st.Transactions.Where(t => t.UserAgency.UserId == user.Id).ToList(); } foreach (Stock st in listOfStock.Stocks) { foreach (Transaction t in st.Transactions) { if (t.BuyOrSell) { double total = st.TotalQty * st.AvarageRate; total = total + (t.Qty * t.Rate); st.TotalQty += t.Qty; st.AvarageRate = Math.Round((total / st.TotalQty) * 100) / 100; } else { st.TotalQty -= t.Qty; } } } listOfStock.TotalValues = listOfStock.Stocks .GroupBy(s => s.Country.Name) .Select(group => new TotalValue { CountryName = group.Key, Currnecy = group.Select(item => item.Country.Currency).First().ToString(), Total = group.Sum(item => item.TotalQty * item.AvarageRate) }).ToList(); return(View(listOfStock)); }