public ActionResult SaveExcelFileInfos(FileInfoModel info) { TaskManager TaskManager = (TaskManager)Session["TaskManager"]; ExcelFileReaderInfo excelFileReaderInfo = new ExcelFileReaderInfo(); excelFileReaderInfo.Data = info.Data; excelFileReaderInfo.Dateformat = "";//info.Dateformat; excelFileReaderInfo.Decimal = info.Decimal; excelFileReaderInfo.Offset = info.Offset; excelFileReaderInfo.Orientation = info.Orientation; excelFileReaderInfo.Variables = info.Variables; TaskManager.AddToBus(TaskManager.FILE_READER_INFO, excelFileReaderInfo); GetFileInformationModel model = new GetFileInformationModel(); model.StepInfo = TaskManager.Current(); model.Extention = TaskManager.Bus[TaskManager.EXTENTION].ToString(); model.FileInfoModel = info; model.FileInfoModel.Extention = TaskManager.Bus[TaskManager.EXTENTION].ToString(); model.IsSaved = true; return(RedirectToAction("ReloadUploadWizard", new { restart = false })); }
private FileInfoModel GetFileInfoModel(ExcelFileReaderInfo info, string extention) { FileInfoModel FileReaderInfo = new FileInfoModel(); FileReaderInfo.Data = info.Data; FileReaderInfo.Dateformat = info.Dateformat; FileReaderInfo.Decimal = info.Decimal; FileReaderInfo.Offset = info.Offset; FileReaderInfo.Orientation = info.Orientation; FileReaderInfo.Variables = info.Variables; //Use the given file and the given sheet format to create a json-table string filePath = TaskManager.Bus[EasyUploadTaskManager.FILEPATH].ToString(); string jsonTable = "[]"; FileStream fis = null; //FileStream for the users file fis = new FileStream(filePath, FileMode.Open, FileAccess.Read); UploadUIHelper uploadUIHelper = new UploadUIHelper(fis); string activeWorksheet; if (!TaskManager.Bus.ContainsKey(TaskManager.ACTIVE_WOKSHEET_URI)) { activeWorksheet = uploadUIHelper.GetFirstWorksheetUri().ToString(); TaskManager.AddToBus(TaskManager.ACTIVE_WOKSHEET_URI, activeWorksheet); } else { activeWorksheet = TaskManager.Bus[EasyUploadTaskManager.ACTIVE_WOKSHEET_URI].ToString(); } FileReaderInfo.activeSheetUri = activeWorksheet; FileReaderInfo.SheetUriDictionary = uploadUIHelper.GetWorksheetUris(); // Check if the areas have already been selected, if yes, use them (Important when jumping back to this step) if (TaskManager.Bus.ContainsKey(TaskManager.SHEET_DATA_AREA)) { FileReaderInfo.DataArea = (List <string>)TaskManager.Bus[TaskManager.SHEET_DATA_AREA]; } if (TaskManager.Bus.ContainsKey(TaskManager.SHEET_HEADER_AREA)) { FileReaderInfo.HeaderArea = TaskManager.Bus[TaskManager.SHEET_HEADER_AREA].ToString(); } //Generate the table for the active worksheet jsonTable = uploadUIHelper.GenerateJsonTable(activeWorksheet); if (!String.IsNullOrEmpty(jsonTable)) { TaskManager.AddToBus(EasyUploadTaskManager.SHEET_JSON_DATA, jsonTable); } fis.Close(); return(FileReaderInfo); }
public ActionResult GetFileInformation() { IOUtility iOUtility = new IOUtility(); TaskManager = (TaskManager)Session["TaskManager"]; TaskManager.Current().SetValid(false); GetFileInformationModel model = new GetFileInformationModel(); if (TaskManager.Bus[TaskManager.IS_TEMPLATE].ToString().Equals("true")) { TaskManager.Current().SetValid(true); } if (TaskManager.Bus.ContainsKey(TaskManager.FILE_READER_INFO)) { FileReaderInfo fri = (FileReaderInfo)TaskManager.Bus[TaskManager.FILE_READER_INFO]; if (fri is ExcelFileReaderInfo) { ExcelFileReaderInfo efri = (ExcelFileReaderInfo)fri; if (efri.VariablesStartRow == 0) { TaskManager.Current().SetValid(false); model.ErrorList.Add(new Error(ErrorType.Other, "Header is not set.")); } if (efri.DataStartRow == 0) { TaskManager.Current().SetValid(false); model.ErrorList.Add(new Error(ErrorType.Other, "Data is not set.")); } if (model.ErrorList.Count == 0) { TaskManager.Current().SetValid(true); } } else { TaskManager.Current().SetValid(true); } } if (!TaskManager.Current().IsValid()) { model.StepInfo = TaskManager.Current(); model.Extention = TaskManager.Bus[TaskManager.EXTENTION].ToString(); model.FileInfoModel.Extention = TaskManager.Bus[TaskManager.EXTENTION].ToString(); model.ErrorList.Add(new Error(ErrorType.Other, "File Information not saved.")); if (TaskManager.Bus.ContainsKey(TaskManager.FILE_READER_INFO)) { if (iOUtility.IsSupportedAsciiFile(model.Extention)) { model.FileInfoModel = GetFileInfoModel((AsciiFileReaderInfo)TaskManager.Bus[TaskManager.FILE_READER_INFO], TaskManager.Bus[TaskManager.EXTENTION].ToString()); } if (iOUtility.IsSupportedExcelFile(model.Extention)) { model.FileInfoModel = GetFileInfoModel((ExcelFileReaderInfo)TaskManager.Bus[TaskManager.FILE_READER_INFO], TaskManager.Bus[TaskManager.EXTENTION].ToString()); } } model.FileInfoModel.Extention = TaskManager.Bus[TaskManager.EXTENTION].ToString(); return(PartialView(model)); } else { TaskManager.AddExecutedStep(TaskManager.Current()); TaskManager.GoToNext(); Session["TaskManager"] = TaskManager; ActionInfo actionInfo = TaskManager.Current().GetActionInfo; return(RedirectToAction(actionInfo.ActionName, actionInfo.ControllerName, new RouteValueDictionary { { "area", actionInfo.AreaName }, { "index", TaskManager.GetCurrentStepInfoIndex() } })); } }
public ActionResult SelectedAreaToBus() { string headerArea = null; string dataArea = null; string worksheeturi = ""; TaskManager TaskManager = (TaskManager)Session["TaskManager"]; foreach (string key in Request.Form.AllKeys) { if ("dataArea" == key) { dataArea = Request.Form[key]; } if ("headerArea" == key) { headerArea = Request.Form[key]; } } FileInfoModel model = new FileInfoModel(); //read data area from request if (dataArea != null) { if (TaskManager.Bus.ContainsKey(TaskManager.SHEET_DATA_AREA)) { model.DataArea = (List <string>)TaskManager.Bus[TaskManager.SHEET_DATA_AREA]; } //dataArea == "" means the resetButton was clicked if (model.DataArea == null || dataArea == "") { model.DataArea = new List <string>(); } if (dataArea != "") { int[] newArea = JsonConvert.DeserializeObject <int[]>(dataArea); Boolean contains = false; foreach (string area in model.DataArea) { int[] oldArea = JsonConvert.DeserializeObject <int[]>(area); //If one of the already selected areas contains the new one, don't add the new one to the selection (prevents duplicate selection) if (oldArea[0] <= newArea[0] && oldArea[2] >= newArea[2] && oldArea[1] <= newArea[1] && oldArea[3] >= newArea[3]) { contains = true; } } if (!contains) { //If the new area contains one (or several) of the already selected areas, remove the old ones for (int i = model.DataArea.Count - 1; i >= 0; i--) { int[] oldArea = JsonConvert.DeserializeObject <int[]>(model.DataArea[i]); if (newArea[0] <= oldArea[0] && newArea[2] >= oldArea[2] && newArea[1] <= oldArea[1] && newArea[3] >= oldArea[3]) { model.DataArea.RemoveAt(i); } } //Insert the new area model.DataArea.Add(dataArea); } } TaskManager.AddToBus(TaskManager.SHEET_DATA_AREA, model.DataArea); } //read header area from request if (headerArea != null) { TaskManager.AddToBus(TaskManager.SHEET_HEADER_AREA, headerArea); model.HeaderArea = headerArea; } string filePath = TaskManager.Bus[TaskManager.FILEPATH].ToString(); FileStream fis = null; //get worksheets try { //FileStream for the users file fis = new FileStream(filePath, FileMode.Open, FileAccess.Read); UploadUIHelper uploadUiHelper = new UploadUIHelper(fis); //Get the worksheet uris and save them to the model model.SheetUriDictionary = uploadUiHelper.GetWorksheetUris(); } catch (Exception ex) { LoggerFactory.LogCustom(ex.Message); } finally { if (fis != null) { fis.Close(); } } if (TaskManager.Bus.ContainsKey(TaskManager.ACTIVE_WOKSHEET_URI)) { worksheeturi = TaskManager.Bus[TaskManager.ACTIVE_WOKSHEET_URI].ToString(); } // STore in the excelfilereader info int[] areaDataValues = null; int[] areaHeaderValues = null; //load or create FILE_READER_INFO ExcelFileReaderInfo excelFileReaderInfo = new ExcelFileReaderInfo(); if (TaskManager.Bus.ContainsKey(TaskManager.FILE_READER_INFO)) { excelFileReaderInfo = (ExcelFileReaderInfo)TaskManager.Bus[TaskManager.FILE_READER_INFO]; } if (TaskManager.Bus.ContainsKey(TaskManager.SHEET_DATA_AREA)) { List <string> selectedDataAreaJsonArray = (List <string>)TaskManager.Bus[TaskManager.SHEET_DATA_AREA]; List <int[]> areaDataValuesList = new List <int[]>(); foreach (string area in selectedDataAreaJsonArray) { areaDataValuesList.Add(JsonConvert.DeserializeObject <int[]>(area)); } if (areaDataValuesList != null && areaDataValuesList.Count > 0) { areaDataValues = areaDataValuesList[0]; if (areaDataValues != null) { excelFileReaderInfo.DataStartRow = areaDataValues[0] + 1; //End row is either at the end of the batch or the end of the marked area //DataEndRow = (currentBatchEndRow > areaDataValuesList[0][2] + 1) ? areaDataValues[2] + 1 : currentBatchEndRow, excelFileReaderInfo.DataEndRow = areaDataValues[2] + 1; //Column indices as marked in a previous step excelFileReaderInfo.DataStartColumn = areaDataValues[1] + 1; excelFileReaderInfo.DataEndColumn = areaDataValues[3] + 1; excelFileReaderInfo.Offset = areaDataValues[1]; } } } if (TaskManager.Bus.ContainsKey(TaskManager.SHEET_HEADER_AREA)) { string selectedHeaderAreaJsonArray = TaskManager.Bus[TaskManager.SHEET_HEADER_AREA].ToString(); if (!string.IsNullOrEmpty(selectedHeaderAreaJsonArray)) { areaHeaderValues = JsonConvert.DeserializeObject <int[]>(selectedHeaderAreaJsonArray); if (areaHeaderValues != null) { //Header area as marked in a previous step excelFileReaderInfo.VariablesStartRow = areaHeaderValues[0] + 1; excelFileReaderInfo.VariablesStartColumn = areaHeaderValues[1] + 1; excelFileReaderInfo.VariablesEndRow = areaHeaderValues[2] + 1; excelFileReaderInfo.VariablesEndColumn = areaHeaderValues[3] + 1; } } } excelFileReaderInfo.Orientation = Orientation.columnwise; excelFileReaderInfo.WorksheetUri = worksheeturi; //reset if (string.IsNullOrEmpty(dataArea) && string.IsNullOrEmpty(headerArea)) { excelFileReaderInfo = new ExcelFileReaderInfo(); if (TaskManager.Bus.ContainsKey(TaskManager.SHEET_HEADER_AREA)) { TaskManager.Bus.Remove(TaskManager.SHEET_HEADER_AREA); } if (TaskManager.Bus.ContainsKey(TaskManager.SHEET_DATA_AREA)) { TaskManager.Bus.Remove(TaskManager.SHEET_DATA_AREA); } } TaskManager.AddToBus(TaskManager.FILE_READER_INFO, excelFileReaderInfo); Session["TaskManager"] = TaskManager; return(PartialView("_xlsFormularView", model)); }
//temporary solution: norman :FinishUpload2 public async Task <List <Error> > FinishUpload() { DataStructureManager dsm = new DataStructureManager(); DatasetManager dm = new DatasetManager(); IOUtility iOUtility = new IOUtility(); List <Error> temp = new List <Error>(); long id = 0; string title = ""; int numberOfRows = 0; int numberOfSkippedRows = 0; try { DatasetVersion workingCopy = new DatasetVersion(); //datatuple list List <DataTuple> rows = new List <DataTuple>(); //Dataset ds = null; bool inputWasAltered = false; if (Bus.ContainsKey(TaskManager.DATASET_ID) && Bus.ContainsKey(TaskManager.DATASTRUCTURE_ID)) { id = Convert.ToInt32(Bus[TaskManager.DATASET_ID]); long iddsd = Convert.ToInt32(Bus[TaskManager.DATASTRUCTURE_ID]); //GetValues from the previus version // Status DatasetVersion latestVersion = dm.GetDatasetLatestVersion(id); title = latestVersion.Title; string status = DatasetStateInfo.NotValid.ToString(); if (latestVersion.StateInfo != null) { status = latestVersion.StateInfo.State; } #region Progress Informations if (Bus.ContainsKey(TaskManager.CURRENTPACKAGESIZE)) { Bus[TaskManager.CURRENTPACKAGESIZE] = 0; } else { Bus.Add(TaskManager.CURRENTPACKAGESIZE, 0); } if (Bus.ContainsKey(TaskManager.CURRENTPACKAGE)) { Bus[TaskManager.CURRENTPACKAGE] = 0; } else { Bus.Add(TaskManager.CURRENTPACKAGE, 0); } #endregion Progress Informations #region structured data if (Bus.ContainsKey(TaskManager.DATASTRUCTURE_TYPE) && Bus[TaskManager.DATASTRUCTURE_TYPE].Equals(DataStructureType.Structured)) { long datasetid = id; XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); try { // load all data tuple ids from the latest version List <long> datatupleFromDatabaseIds = dm.GetDatasetVersionEffectiveTupleIds(dm.GetDatasetLatestVersion(id)); // load structured data structure StructuredDataStructure sds = dsm.StructuredDataStructureRepo.Get(iddsd); dsm.StructuredDataStructureRepo.LoadIfNot(sds.Variables); #region excel reader if (Bus[TaskManager.EXTENTION].ToString().Equals(".xlsm") || iOUtility.IsSupportedExcelFile(Bus[TaskManager.EXTENTION].ToString())) { int packageSize = 100000; Bus[TaskManager.CURRENTPACKAGESIZE] = packageSize; int counter = 0; //schleife dm.CheckOutDatasetIfNot(id, User.Name); // there are cases, the dataset does not get checked out!! if (!dm.IsDatasetCheckedOutFor(id, User.Name)) { throw new Exception(string.Format("Not able to checkout dataset '{0}' for user '{1}'!", id, User.Name)); } workingCopy = dm.GetDatasetWorkingCopy(id); //set StateInfo of the previus version if (workingCopy.StateInfo == null) { workingCopy.StateInfo = new Vaiona.Entities.Common.EntityStateInfo() { State = status }; } else { workingCopy.StateInfo.State = status; } ExcelReader reader = null; ExcelFileReaderInfo excelFileReaderInfo = null; if (iOUtility.IsSupportedExcelFile(Bus[TaskManager.EXTENTION].ToString())) { excelFileReaderInfo = (ExcelFileReaderInfo)Bus[TaskManager.FILE_READER_INFO]; } reader = new ExcelReader(sds, excelFileReaderInfo); do { counter++; Bus[TaskManager.CURRENTPACKAGE] = counter; //open stream Stream = reader.Open(Bus[TaskManager.FILEPATH].ToString()); rows = new List <DataTuple>(); if (iOUtility.IsSupportedExcelFile(Bus[TaskManager.EXTENTION].ToString())) { if (reader.Position < excelFileReaderInfo.DataEndRow) { rows = reader.ReadFile(Stream, Bus[TaskManager.FILENAME].ToString(), (int)id, packageSize); } } else { rows = reader.ReadTemplateFile(Stream, Bus[TaskManager.FILENAME].ToString(), (int)id, packageSize); } //Debug.WriteLine("ReadFile: " + counter + " Time " + upload.Elapsed.TotalSeconds.ToString()); if (reader.ErrorMessages.Count > 0) { //model.ErrorList = reader.errorMessages; } else { //XXX Add packagesize to excel read function if (Bus.ContainsKey(TaskManager.DATASET_STATUS)) { if (Bus[TaskManager.DATASET_STATUS].ToString().Equals("new") || ((UploadMethod)Bus[TaskManager.UPLOAD_METHOD]).Equals(UploadMethod.Append)) { dm.EditDatasetVersion(workingCopy, rows, null, null); //Debug.WriteLine("EditDatasetVersion: " + counter + " Time " + upload.Elapsed.TotalSeconds.ToString()); //Debug.WriteLine("----"); } else if (Bus[TaskManager.DATASET_STATUS].ToString().Equals("edit")) { if (rows.Count() > 0) { Dictionary <string, List <DataTuple> > splittedDatatuples = new Dictionary <string, List <DataTuple> >(); splittedDatatuples = uploadWizardHelper.GetSplitDatatuples(rows, (List <long>)Bus[TaskManager.PRIMARY_KEYS], workingCopy, ref datatupleFromDatabaseIds); dm.EditDatasetVersion(workingCopy, splittedDatatuples["new"], splittedDatatuples["edit"], null); } } } else { } } Stream?.Close(); //count rows numberOfRows += rows.Count(); } while (rows.Count() > 0 && rows.Count() <= packageSize); numberOfSkippedRows = reader.NumberOSkippedfRows; } #endregion excel reader #region ascii reader if (iOUtility.IsSupportedAsciiFile(Bus[TaskManager.EXTENTION].ToString())) { // open file AsciiReader reader = new AsciiReader(sds, (AsciiFileReaderInfo)Bus[TaskManager.FILE_READER_INFO]); if (dm.IsDatasetCheckedOutFor(id, User.Name) || dm.CheckOutDataset(id, User.Name)) { workingCopy = dm.GetDatasetWorkingCopy(id); //set packagsize for one loop int packageSize = 100000; Bus[TaskManager.CURRENTPACKAGESIZE] = packageSize; //schleife int counter = 0; //set StateInfo of the previus version if (workingCopy.StateInfo == null) { workingCopy.StateInfo = new Vaiona.Entities.Common.EntityStateInfo() { State = status }; } else { workingCopy.StateInfo.State = status; } do { counter++; inputWasAltered = false; Bus[TaskManager.CURRENTPACKAGE] = counter; Stream = reader.Open(Bus[TaskManager.FILEPATH].ToString()); rows = reader.ReadFile(Stream, Bus[TaskManager.FILENAME].ToString(), id, packageSize); Stream.Close(); if (reader.ErrorMessages.Count > 0) { foreach (var err in reader.ErrorMessages) { temp.Add(new Error(ErrorType.Dataset, err.GetMessage())); } //return temp; } if (Bus.ContainsKey(TaskManager.DATASET_STATUS)) //check wheter there is a dataset status in the upload wizard bus { // based the dataset status and/ or the upload method if (Bus[TaskManager.DATASET_STATUS].ToString().Equals("new") || ((UploadMethod)Bus[TaskManager.UPLOAD_METHOD]).Equals(UploadMethod.Append)) { dm.EditDatasetVersion(workingCopy, rows, null, null); // add all datatuples to the datasetversion } else if (Bus[TaskManager.DATASET_STATUS].ToString().Equals("edit")) // datatuples allready exist { if (rows.Count() > 0) { //split the incoming datatuples to (new|edit) based on the primary keys var splittedDatatuples = uploadWizardHelper.GetSplitDatatuples(rows, (List <long>)Bus[TaskManager.PRIMARY_KEYS], workingCopy, ref datatupleFromDatabaseIds); dm.EditDatasetVersion(workingCopy, splittedDatatuples["new"], splittedDatatuples["edit"], null); inputWasAltered = true; } } } else // if there is no dataset status in the bus, use dataset status edit { if (rows.Count() > 0) { //split the incoming datatuples to (new|edit) based on the primary keys Dictionary <string, List <DataTuple> > splittedDatatuples = new Dictionary <string, List <DataTuple> >(); splittedDatatuples = uploadWizardHelper.GetSplitDatatuples(rows, (List <long>)Bus[TaskManager.PRIMARY_KEYS], workingCopy, ref datatupleFromDatabaseIds); dm.EditDatasetVersion(workingCopy, splittedDatatuples["new"], splittedDatatuples["edit"], null); inputWasAltered = true; } } //count rows numberOfRows += rows.Count(); } while ((rows.Count() > 0 && rows.Count() <= packageSize) || inputWasAltered == true); numberOfSkippedRows = reader.NumberOSkippedfRows; } //Stream.Close(); } #endregion ascii reader #region contentdescriptors //remove all contentdescriptors from the old version //generatedTXT if (workingCopy.ContentDescriptors.Any(c => c.Name.Equals("generatedTXT"))) { ContentDescriptor tmp = workingCopy.ContentDescriptors.Where(c => c.Name.Equals("generatedTXT")) .FirstOrDefault(); dm.DeleteContentDescriptor(tmp); } //generatedCSV if (workingCopy.ContentDescriptors.Any(c => c.Name.Equals("generatedCSV"))) { ContentDescriptor tmp = workingCopy.ContentDescriptors.Where(c => c.Name.Equals("generatedCSV")) .FirstOrDefault(); dm.DeleteContentDescriptor(tmp); } //generated if (workingCopy.ContentDescriptors.Any(c => c.Name.Equals("generated"))) { ContentDescriptor tmp = workingCopy.ContentDescriptors.Where(c => c.Name.Equals("generated")) .FirstOrDefault(); dm.DeleteContentDescriptor(tmp); } #endregion contentdescriptors #region set System value into metadata if (Bus.ContainsKey(TaskManager.DATASET_STATUS)) { bool newdataset = Bus[TaskManager.DATASET_STATUS].ToString().Equals("new"); int v = 1; if (workingCopy.Dataset.Versions != null && workingCopy.Dataset.Versions.Count > 1) { v = workingCopy.Dataset.Versions.Count(); } //set modification workingCopy.ModificationInfo = new EntityAuditInfo() { Performer = User.Name, Comment = "Data", ActionType = newdataset ? AuditActionType.Create : AuditActionType.Edit }; setSystemValuesToMetadata(id, v, workingCopy.Dataset.MetadataStructure.Id, workingCopy.Metadata, newdataset); dm.EditDatasetVersion(workingCopy, null, null, null); } #endregion set System value into metadata // ToDo: Get Comment from ui and users MoveAndSaveOriginalFileInContentDiscriptor(workingCopy); dm.CheckInDataset(id, numberOfRows + " rows", User.Name); //send email var es = new EmailService(); es.Send(MessageHelper.GetUpdateDatasetHeader(datasetid), MessageHelper.GetUpdateDatasetMessage(datasetid, title, User.DisplayName), ConfigurationManager.AppSettings["SystemEmail"] ); } catch (Exception e) { temp.Add(new Error(ErrorType.Other, "Can not upload. : " + e.Message)); var es = new EmailService(); es.Send(MessageHelper.GetErrorHeader(), "Can not upload. : " + e.Message, ConfigurationManager.AppSettings["SystemEmail"] ); } finally { } } #endregion structured data #region unstructured data if (Bus.ContainsKey(TaskManager.DATASTRUCTURE_TYPE) && Bus[TaskManager.DATASTRUCTURE_TYPE].Equals(DataStructureType.Unstructured)) { // checkout the dataset, apply the changes, and check it in. if (dm.IsDatasetCheckedOutFor(id, User.Name) || dm.CheckOutDataset(id, User.Name)) { try { workingCopy = dm.GetDatasetWorkingCopy(id); using (var unitOfWork = this.GetUnitOfWork()) { workingCopy.VersionNo += 1; //set StateInfo of the previus version if (workingCopy.StateInfo == null) { workingCopy.StateInfo = new Vaiona.Entities.Common.EntityStateInfo() { State = status }; } else { workingCopy.StateInfo.State = status; } unitOfWork.GetReadOnlyRepository <DatasetVersion>().Load(workingCopy.ContentDescriptors); SaveFileInContentDiscriptor(workingCopy); } if (Bus.ContainsKey(TaskManager.DATASET_STATUS)) { bool newdataset = Bus[TaskManager.DATASET_STATUS].ToString().Equals("new"); int v = 1; if (workingCopy.Dataset.Versions != null && workingCopy.Dataset.Versions.Count > 1) { v = workingCopy.Dataset.Versions.Count(); } //set modification workingCopy.ModificationInfo = new EntityAuditInfo() { Performer = User.Name, Comment = "File", ActionType = AuditActionType.Create }; setSystemValuesToMetadata(id, v, workingCopy.Dataset.MetadataStructure.Id, workingCopy.Metadata, newdataset); dm.EditDatasetVersion(workingCopy, null, null, null); } //filename string filename = ""; if (Bus.ContainsKey(TaskManager.FILENAME)) { filename = Bus[TaskManager.FILENAME]?.ToString(); } // ToDo: Get Comment from ui and users dm.CheckInDataset(id, filename, User.Name, ViewCreationBehavior.None); } catch (Exception ex) { throw ex; } } } #endregion unstructured data } else { temp.Add(new Error(ErrorType.Dataset, "Dataset is not selected.")); } if (temp.Count <= 0) { dm.CheckInDataset(id, "no update on data tuples", User.Name, ViewCreationBehavior.None); } else { dm.UndoCheckoutDataset(id, User.Name); } } catch (Exception ex) { temp.Add(new Error(ErrorType.Dataset, ex.Message)); dm.CheckInDataset(id, "no update on data tuples", User.Name, ViewCreationBehavior.None); } finally { if (RunningASync) { var user = User; if (temp.Any()) { var es = new EmailService(); es.Send(MessageHelper.GetPushApiUploadFailHeader(id, title), MessageHelper.GetPushApiUploadFailMessage(id, user.Name, temp.Select(e => e.ToString()).ToArray()), new List <string> { user.Email }, null, new List <string> { ConfigurationManager.AppSettings["SystemEmail"] }); } else { var es = new EmailService(); es.Send(MessageHelper.GetASyncFinishUploadHeader(id, title), MessageHelper.GetASyncFinishUploadMessage(id, title, numberOfRows, numberOfSkippedRows), new List <string> { user.Email }, null, new List <string> { ConfigurationManager.AppSettings["SystemEmail"] }); } } dm.Dispose(); dsm.Dispose(); } return(temp); }