public async Task <IActionResult> ImportAsync(Models.Modules.Export.ImportModel model) { var fileCount = GetRequestFileCount(); using var ctrl = Factory.Create <Contract>(SessionWrapper.SessionToken); if (fileCount == 1) { var hpf = GetRequestFileData(0); if (hpf.Length > 0) { var idIdx = Array.IndexOf(CsvHeader, "Id"); var text = Encoding.Default.GetString(hpf, 0, hpf.Length); var lines = text.Split(Environment.NewLine); var logInfos = new List <Models.Modules.Export.ImportModel.LogInfo>(); for (int i = 1; i < lines.Length; i++) { var action = ImportAction.None; try { var data = lines[i].Split(Separator); if (idIdx >= 0 && CsvHeader.Length == data.Length) { if (Int32.TryParse(data[idIdx], out int id)) { if (id < 0) { action = ImportAction.Delete; await ctrl.DeleteAsync(Math.Abs(id)); } else if (id > 0) { action = ImportAction.Update; await ctrl.UpdateAsync(CreateModelFromCsv(CsvHeader, data)); } else { action = ImportAction.Insert; await ctrl.InsertAsync(CreateModelFromCsv(CsvHeader, data)); } } else { data[idIdx] = "0"; action = ImportAction.Insert; await ctrl.InsertAsync(CreateModelFromCsv(CsvHeader, data)); } logInfos.Add(new Models.Modules.Export.ImportModel.LogInfo { IsError = false, Prefix = $"Line: {i} - {action}", Text = "OK", }); } } catch (Exception ex) { logInfos.Add(new Models.Modules.Export.ImportModel.LogInfo { IsError = true, Prefix = $"Line: {i} - {action}", Text = ex.Message, }); } } model.LogInfos = logInfos; } } return(View(model)); }
public ActionResult Import() { var model = new Models.Modules.Export.ImportModel(); return(View(model)); }