Example #1
0
        public ActionResult DataSheet(int month, int year, HttpPostedFileBase file)
        {
            var viewModel = new DataSheetViewModel
            {
                Year    = year,
                Month   = month,
                Years   = MonthYearHelper.GetYearList(),
                Months  = MonthYearHelper.GetMonthList(),
                HasTags = true
            };

            if (file != null && file.ContentLength > 0)
            {
                if (file.FileName.EndsWith(".csv"))
                {
                    using (var stream = file.InputStream)
                    {
                        using (var csvTable = new DataTable())
                        {
                            using (var reader = new CsvReader(new StreamReader(stream), true))
                            {
                                csvTable.Load(reader);

                                if (!csvTable.IsHeaderValid(Common.Constants.Constants.DATASHEET_HEADERS))
                                {
                                    ModelState.AddModelError("", String.Format("Uploaded file does not contain all the required headers: {0}", String.Join(",", Common.Constants.Constants.DATASHEET_HEADERS)));
                                    return(View(viewModel));
                                }

                                try
                                {
                                    _dataSheetService.UploadDataSheet(month, year, csvTable);
                                }
                                catch (Exception ex)
                                {
                                    ModelState.AddModelError("", ex.Message);
                                }
                            }
                        }
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Invalid file format. Please select only .csv file");
                }
            }

            //TempData["Message"] = "Datasheet has been successfully uploaded";
            return(View(viewModel));
        }