Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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();
                }
            }
        }
Ejemplo n.º 3
0
        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();
                }
            }
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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));
        }