public async Task <IActionResult> Edit(int id, [Bind("Id,LakeId,Year,LakePart,NH4,NO2,NO3,PPO4,Cu,Zn,Mn,Pb,Ni,Cd,Co")] ToxicologicalIndicator toxicologicalIndicator)
        {
            if (id != toxicologicalIndicator.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(toxicologicalIndicator);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ToxicologicalIndicatorExists(toxicologicalIndicator.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(toxicologicalIndicator));
        }
        public async Task <IActionResult> Create([Bind("Id,LakeId,Year,LakePart,NH4,NO2,NO3,PPO4,Cu,Zn,Mn,Pb,Ni,Cd,Co")] ToxicologicalIndicator toxicologicalIndicator)
        {
            if (ModelState.IsValid)
            {
                _context.Add(toxicologicalIndicator);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(toxicologicalIndicator));
        }
        public async Task <IActionResult> Upload(bool FirstRowHeader, IFormFile File)
        {
            try
            {
                string sContentRootPath = _hostingEnvironment.WebRootPath;
                sContentRootPath = Path.Combine(sContentRootPath, "Uploads");
                DirectoryInfo di = new DirectoryInfo(sContentRootPath);
                foreach (FileInfo filed in di.GetFiles())
                {
                    try
                    {
                        filed.Delete();
                    }
                    catch
                    {
                    }
                }
                string path_filename = Path.Combine(sContentRootPath, Path.GetFileName(File.FileName));
                using (var stream = new FileStream(Path.GetFullPath(path_filename), FileMode.Create))
                {
                    await File.CopyToAsync(stream);
                }
                FileInfo fileinfo = new FileInfo(Path.Combine(sContentRootPath, Path.GetFileName(path_filename)));
                using (ExcelPackage package = new ExcelPackage(fileinfo))
                {
                    int start_row = 1;
                    if (FirstRowHeader)
                    {
                        start_row++;
                    }
                    List <ToxicologicalIndicator> toxicologicalIndicators = new List <ToxicologicalIndicator>();
                    for (int i = start_row; ; i++)
                    {
                        if (package.Workbook.Worksheets.FirstOrDefault().Cells[i, 1].Value == null)
                        {
                            break;
                        }
                        ToxicologicalIndicator toxicologicalIndicator = new ToxicologicalIndicator();

                        try
                        {
                            toxicologicalIndicator.LakeId   = Convert.ToInt32(package.Workbook.Worksheets.FirstOrDefault().Cells[i, 1].Value);
                            toxicologicalIndicator.Year     = Convert.ToInt32(package.Workbook.Worksheets.FirstOrDefault().Cells[i, 2].Value);
                            toxicologicalIndicator.LakePart = (LakePart)Convert.ToInt32(package.Workbook.Worksheets.FirstOrDefault().Cells[i, 3].Value);
                            toxicologicalIndicator.NH4      = package.Workbook.Worksheets.FirstOrDefault().Cells[i, 4].Value == null ?
                                                              (decimal?)null :
                                                              Convert.ToDecimal(package.Workbook.Worksheets.FirstOrDefault().Cells[i, 4].Value);
                            toxicologicalIndicator.NO2 = package.Workbook.Worksheets.FirstOrDefault().Cells[i, 5].Value == null ?
                                                         (decimal?)null :
                                                         Convert.ToDecimal(package.Workbook.Worksheets.FirstOrDefault().Cells[i, 5].Value);
                            toxicologicalIndicator.NO3 = package.Workbook.Worksheets.FirstOrDefault().Cells[i, 6].Value == null ?
                                                         (decimal?)null :
                                                         Convert.ToDecimal(package.Workbook.Worksheets.FirstOrDefault().Cells[i, 6].Value);
                            toxicologicalIndicator.PPO4 = package.Workbook.Worksheets.FirstOrDefault().Cells[i, 7].Value == null ?
                                                          (decimal?)null :
                                                          Convert.ToDecimal(package.Workbook.Worksheets.FirstOrDefault().Cells[i, 7].Value);
                            toxicologicalIndicator.Cu = package.Workbook.Worksheets.FirstOrDefault().Cells[i, 8].Value == null ?
                                                        (decimal?)null :
                                                        Convert.ToDecimal(package.Workbook.Worksheets.FirstOrDefault().Cells[i, 8].Value);
                            toxicologicalIndicator.Zn = package.Workbook.Worksheets.FirstOrDefault().Cells[i, 9].Value == null ?
                                                        (decimal?)null :
                                                        Convert.ToDecimal(package.Workbook.Worksheets.FirstOrDefault().Cells[i, 9].Value);
                            toxicologicalIndicator.Mn = package.Workbook.Worksheets.FirstOrDefault().Cells[i, 10].Value == null ?
                                                        (decimal?)null :
                                                        Convert.ToDecimal(package.Workbook.Worksheets.FirstOrDefault().Cells[i, 10].Value);
                            toxicologicalIndicator.Pb = package.Workbook.Worksheets.FirstOrDefault().Cells[i, 11].Value == null ?
                                                        (decimal?)null :
                                                        Convert.ToDecimal(package.Workbook.Worksheets.FirstOrDefault().Cells[i, 11].Value);
                            toxicologicalIndicator.Ni = package.Workbook.Worksheets.FirstOrDefault().Cells[i, 12].Value == null ?
                                                        (decimal?)null :
                                                        Convert.ToDecimal(package.Workbook.Worksheets.FirstOrDefault().Cells[i, 12].Value);
                            toxicologicalIndicator.Cd = package.Workbook.Worksheets.FirstOrDefault().Cells[i, 13].Value == null ?
                                                        (decimal?)null :
                                                        Convert.ToDecimal(package.Workbook.Worksheets.FirstOrDefault().Cells[i, 13].Value);
                            toxicologicalIndicator.Co = package.Workbook.Worksheets.FirstOrDefault().Cells[i, 14].Value == null ?
                                                        (decimal?)null :
                                                        Convert.ToDecimal(package.Workbook.Worksheets.FirstOrDefault().Cells[i, 14].Value);
                        }
                        catch (Exception e)
                        {
                            ViewBag.Error = $"{_sharedLocalizer["Row"]} {i.ToString()}: " + e.Message + (e.InnerException == null ? "" : ": " + e.InnerException.Message);
                            break;
                        }

                        toxicologicalIndicators.Add(toxicologicalIndicator);
                        _context.Add(toxicologicalIndicators.LastOrDefault());
                    }
                    if (string.IsNullOrEmpty(ViewBag.Error))
                    {
                        _context.SaveChanges();
                        ViewBag.Report = $"{_sharedLocalizer["UploadedCount"]}: {toxicologicalIndicators.Count()}";
                    }
                }
                foreach (FileInfo filed in di.GetFiles())
                {
                    try
                    {
                        filed.Delete();
                    }
                    catch
                    {
                    }
                }
            }
            catch (Exception e)
            {
                if (File != null)
                {
                    ViewBag.Error = e.Message + (e.InnerException == null ? "" : ": " + e.InnerException.Message);
                }
            }
            return(View());
        }