public ActionResult ValidateFile() { ViewData["SortedErrors"] = null; DataStructureManager dsm = new DataStructureManager(); IOUtility iOUtility = new IOUtility(); try { BExIS.Dcm.UploadWizard.TaskManager TaskManager = (BExIS.Dcm.UploadWizard.TaskManager)Session["TaskManager"]; ValidationModel model = new ValidationModel(); model.StepInfo = TaskManager.Current(); if (TaskManager.Bus.ContainsKey(TaskManager.DATASET_ID) && TaskManager.Bus.ContainsKey(TaskManager.DATASTRUCTURE_ID)) { try { long id = (long)Convert.ToInt32(TaskManager.Bus[TaskManager.DATASET_ID]); long iddsd = (long)Convert.ToInt32(TaskManager.Bus[TaskManager.DATASTRUCTURE_ID]); StructuredDataStructure sds = dsm.StructuredDataStructureRepo.Get(iddsd); dsm.StructuredDataStructureRepo.LoadIfNot(sds.Variables); // Add Number of Variables to the BUS if (sds != null) { TaskManager.AddToBus(TaskManager.NUMBERSOFVARIABLES, sds.Variables.Count); } if (TaskManager.Bus[TaskManager.EXTENTION].ToString().Equals(".xlsm")) { // open FileStream ExcelReader reader = new ExcelReader(sds, new ExcelFileReaderInfo()); Stream = reader.Open(TaskManager.Bus[TaskManager.FILEPATH].ToString()); reader.ValidateTemplateFile(Stream, TaskManager.Bus[TaskManager.FILENAME].ToString(), id); model.ErrorList = reader.ErrorMessages; TaskManager.AddToBus(TaskManager.NUMBERSOFROWS, reader.NumberOfRows); } if (iOUtility.IsSupportedExcelFile(TaskManager.Bus[TaskManager.EXTENTION].ToString())) { // open FileStream ExcelReader reader = new ExcelReader(sds, (ExcelFileReaderInfo)TaskManager.Bus[TaskManager.FILE_READER_INFO]); Stream = reader.Open(TaskManager.Bus[TaskManager.FILEPATH].ToString()); reader.ValidateFile(Stream, TaskManager.Bus[TaskManager.FILENAME].ToString(), id); model.ErrorList = reader.ErrorMessages; TaskManager.AddToBus(TaskManager.NUMBERSOFROWS, reader.NumberOfRows); } if (iOUtility.IsSupportedAsciiFile(TaskManager.Bus[TaskManager.EXTENTION].ToString())) { AsciiReader reader = new AsciiReader(sds, (AsciiFileReaderInfo)TaskManager.Bus[TaskManager.FILE_READER_INFO]); Stream = reader.Open(TaskManager.Bus[TaskManager.FILEPATH].ToString()); reader.ValidateFile(Stream, TaskManager.Bus[TaskManager.FILENAME].ToString(), id); model.ErrorList = reader.ErrorMessages; TaskManager.AddToBus(TaskManager.NUMBERSOFROWS, reader.NumberOfRows); } } catch (Exception ex) { model.ErrorList.Add(new Error(ErrorType.Other, "Can not valid. : " + ex.Message)); TaskManager.AddToBus(TaskManager.VALID, false); } finally { Stream.Close(); } } else { model.ErrorList.Add(new Error(ErrorType.Dataset, "Dataset is not selected.")); TaskManager.AddToBus(TaskManager.VALID, false); } if (model.ErrorList.Count() == 0) { model.Validated = true; TaskManager.AddToBus(TaskManager.VALID, true); } List <Error> errorList = new List <Error>(); for (int i = 0; i < model.ErrorList.Count; i++) { // Assume not duplicate. bool duplicate = false; for (int z = 0; z < i; z++) { if (model.ErrorList[z].ToString() == model.ErrorList[i].ToString()) { // This is a duplicate. duplicate = true; break; } } // If not duplicate, add to result. if (!duplicate) { errorList.Add(model.ErrorList[i]); } } model.ErrorList = errorList; if (errorList.Count > 0) { // split up the error messages for a btter overview-- > // set all value error with the same var name, datatypoe and issue-- > // create a dictionary for error messages // variable issues var varNames = errorList.Where(e => e.GetType().Equals(ErrorType.Value)).Select(e => e.getName()).Distinct(); var varIssues = errorList.Where(e => e.GetType().Equals(ErrorType.Value)).Select(e => e.GetMessage()).Distinct(); List <Tuple <string, int, string> > sortedErrors = new List <Tuple <string, int, string> >(); foreach (string vn in varNames) { foreach (string i in varIssues) { int c = errorList.Where(e => e.getName().Equals(vn) && e.GetMessage().Equals(i)).Count(); if (c > 0) { sortedErrors.Add(new Tuple <string, int, string>(vn, c, i)); } } } if (sortedErrors.Count > 0) { ViewData["SortedValueErrors"] = sortedErrors; } } return(PartialView(TaskManager.Current().GetActionInfo.ActionName, model)); } finally { dsm.Dispose(); } }
public ActionResult ValidateFile() { DataStructureManager dsm = new DataStructureManager(); try { BExIS.Dcm.UploadWizard.TaskManager TaskManager = (BExIS.Dcm.UploadWizard.TaskManager)Session["TaskManager"]; ValidationModel model = new ValidationModel(); model.StepInfo = TaskManager.Current(); if (TaskManager.Bus.ContainsKey(TaskManager.DATASET_ID) && TaskManager.Bus.ContainsKey(TaskManager.DATASTRUCTURE_ID)) { try { long id = (long)Convert.ToInt32(TaskManager.Bus[TaskManager.DATASET_ID]); long iddsd = (long)Convert.ToInt32(TaskManager.Bus[TaskManager.DATASTRUCTURE_ID]); StructuredDataStructure sds = dsm.StructuredDataStructureRepo.Get(iddsd); dsm.StructuredDataStructureRepo.LoadIfNot(sds.Variables); if (TaskManager.Bus[TaskManager.EXTENTION].ToString().Equals(".xlsm")) { // open FileStream ExcelReader reader = new ExcelReader(); Stream = reader.Open(TaskManager.Bus[TaskManager.FILEPATH].ToString()); reader.ValidateFile(Stream, TaskManager.Bus[TaskManager.FILENAME].ToString(), sds, id); model.ErrorList = reader.ErrorMessages; if (TaskManager.Bus.ContainsKey(TaskManager.NUMBERSOFROWS)) { TaskManager.Bus[TaskManager.NUMBERSOFROWS] = reader.NumberOfRows; } else { TaskManager.Bus.Add(TaskManager.NUMBERSOFROWS, reader.NumberOfRows); } } if (TaskManager.Bus[TaskManager.EXTENTION].ToString().Equals(".csv") || TaskManager.Bus[TaskManager.EXTENTION].ToString().Equals(".txt")) { AsciiReader reader = new AsciiReader(); Stream = reader.Open(TaskManager.Bus[TaskManager.FILEPATH].ToString()); reader.ValidateFile(Stream, TaskManager.Bus[TaskManager.FILENAME].ToString(), (AsciiFileReaderInfo)TaskManager.Bus[TaskManager.FILE_READER_INFO], sds, id); model.ErrorList = reader.ErrorMessages; if (TaskManager.Bus.ContainsKey(TaskManager.NUMBERSOFROWS)) { TaskManager.Bus[TaskManager.NUMBERSOFROWS] = reader.NumberOfRows; } } } catch (Exception ex) { model.ErrorList.Add(new Error(ErrorType.Other, "Can not valid. : " + ex.Message)); TaskManager.AddToBus(TaskManager.VALID, false); } finally { Stream.Close(); } } else { model.ErrorList.Add(new Error(ErrorType.Dataset, "Dataset is not selected.")); TaskManager.AddToBus(TaskManager.VALID, false); } if (model.ErrorList.Count() == 0) { model.Validated = true; TaskManager.AddToBus(TaskManager.VALID, true); } return(PartialView(TaskManager.Current().GetActionInfo.ActionName, model)); } finally { dsm.Dispose(); } }
public async Task <bool> Validate() { Debug.WriteLine("start validate data"); string error = ""; //load strutcured data structure if (_dataStructure == null) { // send email to user ("failed to load datatructure"); return(false); } // validate file Stream = reader.Open(_filepath); reader.ValidateFile(Stream, Path.GetFileName(_filepath), _dataset.Id); List <Error> errors = reader.ErrorMessages; // if errors exist -> send messages back if (errors.Count > 0) { List <string> errorArray = new List <string>(); foreach (var e in errors) { errorArray.Add(e.GetMessage()); } var es = new EmailService(); es.Send(MessageHelper.GetPushApiValidateHeader(_dataset.Id, _title), MessageHelper.GetPushApiValidateMessage(_dataset.Id, _user.UserName, errorArray.ToArray()), new List <string>() { _user.Email }, new List <string>() { ConfigurationManager.AppSettings["SystemEmail"] } ); return(false); } else { var es = new EmailService(); es.Send(MessageHelper.GetPushApiValidateHeader(_dataset.Id, _title), MessageHelper.GetPushApiValidateMessage(_dataset.Id, _user.UserName), new List <string>() { _user.Email }, new List <string>() { ConfigurationManager.AppSettings["SystemEmail"] } ); } Debug.WriteLine("end validate data"); return(await Upload()); }