public async Task <IActionResult> Edit(int id, [Bind("ID,MFundId,nav_date,net_asset,last_val,previous_val,LastUpdate")] DailyNav dailyNav)
        {
            if (id != dailyNav.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(dailyNav);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!DailyNavExists(dailyNav.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["MFundId"] = new SelectList(_context.MFund, "ID", "Abbr", dailyNav.MFundId);
            return(View(dailyNav));
        }
        public async Task <IActionResult> UpdateNav(int MFundId)
        {
            if (ModelState.IsValid)
            {
                var mfund = await _context.MFund.FirstOrDefaultAsync(x => x.ID == MFundId);

                var client = new HttpClient();
                var key    = _configuration.GetSection("SecSubscriptionKey").GetSection("FundDailyInfo").Value.ToString();

                // Request headers
                client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", key);

                var fDate   = DateTime.Now;
                var tDate   = DateTime.Now.AddDays(-7);
                var curDate = fDate;

                for (var day = fDate.Date; day.Date >= tDate.Date; day = day.AddDays(-1))
                {
                    var navDate  = day.ToString("yyyy-MM-dd");
                    var uri      = "https://api.sec.or.th/FundDailyInfo/" + mfund.ProjectId + "/dailynav/" + navDate;
                    var response = await client.GetAsync(uri);

                    if (response.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        var jsonString = await client.GetStringAsync(uri);

                        DailyNavModel jsonObj = JsonConvert.DeserializeObject <DailyNavModel>(jsonString);

                        var dailyNav = await _context.DailyNav.FirstOrDefaultAsync(m => m.MFundId == MFundId && m.nav_date == day);

                        // delete
                        if (dailyNav != null)
                        {
                            _context.DailyNav.Remove(dailyNav);
                        }

                        // insert
                        dailyNav = new DailyNav()
                        {
                            MFundId      = MFundId,
                            nav_date     = day,
                            net_asset    = jsonObj.net_asset,
                            last_val     = jsonObj.last_val,
                            previous_val = jsonObj.previous_val,
                            LastUpdate   = DateTime.Parse(jsonObj.last_upd_date)
                        };
                        _context.Add(dailyNav);

                        await _context.SaveChangesAsync();

                        //return RedirectToAction(nameof(Index));
                    }
                }
            }
            return(RedirectToAction(nameof(Index)));
        }
        public async Task <IActionResult> Create([Bind("ID,MFundId,nav_date,net_asset,last_val,previous_val,LastUpdate")] DailyNav dailyNav)
        {
            if (ModelState.IsValid)
            {
                _context.Add(dailyNav);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["MFundId"] = new SelectList(_context.MFund, "ID", "Abbr", dailyNav.MFundId);
            return(View(dailyNav));
        }