예제 #1
0
        // GET: api/Coin

        public async Task <IEnumerable <Coins> > GetAsync()
        {
            url = Convert.ToString(ConfigurationManager.AppSettings["CoinUrl"]);

            coinRequest = new CoinRequest(url);
            return(await coinRequest.GetCoins());
        }
예제 #2
0
        public IActionResult AddCoin([FromBody] CoinRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Coin coin = _mapper.Map <CoinRequest, Coin>(request);

            _coinService.AddCoin(coin);
            return(Ok());
        }
예제 #3
0
        public async Task <ActionResult> GetCoins()
        {
            try
            {
                url = Convert.ToString(ConfigurationManager.AppSettings["CoinUrl"]);

                coinRequest = new CoinRequest(url);
                var coinsList = await coinRequest.GetCoinsAsync();

                //pagination
                var draw   = Request.Form.GetValues("draw").FirstOrDefault();
                var start  = Request.Form.GetValues("start").FirstOrDefault();
                var length = Request.Form.GetValues("length").FirstOrDefault();

                //Find Order Column
                var sortColumn    = Request.Form.GetValues("columns[" + Request.Form.GetValues("order[0][column]").FirstOrDefault() + "][name]").FirstOrDefault();
                var sortColumnDir = Request.Form.GetValues("order[0][dir]").FirstOrDefault();

                int pageSize = length != null?Convert.ToInt32(length) : 0;

                int skip = start != null?Convert.ToInt32(start) : 0;

                int recordsTotal = coinsList.Count();

                //Filter
                var searchValue = Request.Form.GetValues("search[value]").FirstOrDefault();
                if (!string.IsNullOrEmpty(searchValue))
                {
                    coinsList = coinsList.Where(s => s.ID.Contains(searchValue) || s.Symbol.Contains(searchValue) || s.Name.Contains(searchValue));
                }

                //Sorting
                List <Coins> sortedCoins = new List <Coins>();
                if (!(string.IsNullOrEmpty(sortColumn) && string.IsNullOrEmpty(sortColumnDir)))
                {
                    if (sortColumn.Equals("ID"))
                    {
                        if (sortColumnDir.Equals("asc"))
                        {
                            sortedCoins = coinsList.OrderBy(s => s.ID).ToList();
                        }
                        else
                        {
                            sortedCoins = coinsList.OrderByDescending(s => s.ID).ToList();
                        }
                    }

                    if (sortColumn.Equals("Symbol"))
                    {
                        if (sortColumnDir.Equals("asc"))
                        {
                            sortedCoins = coinsList.OrderBy(s => s.Symbol).ToList();
                        }
                        else
                        {
                            sortedCoins = coinsList.OrderByDescending(s => s.Symbol).ToList();
                        }
                    }

                    if (sortColumn.Equals("Name"))
                    {
                        if (sortColumnDir.Equals("asc"))
                        {
                            sortedCoins = coinsList.OrderBy(s => s.Name).ToList();
                        }
                        else
                        {
                            sortedCoins = coinsList.OrderByDescending(s => s.Name).ToList();
                        }
                    }
                }

                //Records to dispaly in Datatable based on page number and records per page
                var data = sortedCoins.Skip(skip).Take(pageSize);
                return(Json(new { draw, recordsFiltered = recordsTotal, recordsTotal = recordsTotal, data }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }