Exemplo n.º 1
0
    public async Task <IActionResult> Diary(string babyName, string inputDate)
    {
        var date = DateTime.Now;

        if (!string.IsNullOrEmpty(inputDate))
        {
            date = DateTime.Parse(inputDate);
        }

        var entries = await _sqLiteService.GetEntriesFromDb(date, User, babyName);

        var importResultModel = new ImportResultModel
        {
            Entries = entries
        };
        var model = DiaryService.GetDays(importResultModel);

        model.Date         = date.ToString("yyyy-MM-dd");
        model.DateNext     = date.AddDays(1).ToString("yyyy-MM-dd");
        model.DatePrevious = date.AddDays(-1).ToString("yyyy-MM-dd");
        model.BabyName     = babyName;
        model.Profile      = await _accountService.GetProfile(User);

        var memories = await _sqLiteService.GetMemoriesFromDb(DateTime.Now, User, babyName);

        model.MemoriesBadgeCount = memories.Count;
        model.ShowMemoriesLink   = true;

        ViewData["LastEntry"] = await _sqLiteService.GetLastEntryDateTime(User, babyName);

        return(View("Diary", model));
    }
Exemplo n.º 2
0
    private async Task <string> GetMJML(List <EntryModel> memories, string userId, string babyName)
    {
        var importResultModel = new ImportResultModel
        {
            Entries = memories
        };

        var model = DiaryService.GetDays(importResultModel);

        model.BabyName           = babyName;
        model.MemoriesBadgeCount = memories.Count;
        model.ShowMemoriesLink   = true;
        model.BaseUrl            = _configuration["BASE_URL"];
        model.Profile            = new Profile
        {
            UserId = userId
        };

        model.Entries = model.Entries
                        .OrderByDescending(entry => entry.TimeUTC.Year)
                        .OrderBy(entry => entry.TimeUTC.TimeOfDay);

        var mjml = await RazorTemplateEngine.RenderAsync("/Views/Emails/MemoriesEmail.cshtml", model);

        return(mjml);
    }
Exemplo n.º 3
0
 public IHttpActionResult ConfirmImport(ImportResultModel model)
 {
     if (model != null)
     {
         try
         {
             if (model.Books != null && model.Books.Any())
             {
                 DataContext.Books.InsertAllOnSubmit(model.Books.Where(bs => bs.Selected)
                                                     .Select(book => new Book()
                 {
                     Amount  = book.Amount,
                     Author  = book.Author,
                     Genre   = book.Genre,
                     Pages   = book.Pages,
                     PhotoId = book.PhotoId,
                     Price   = book.Price,
                     Title   = book.Title,
                     Year    = book.Year
                 }));
                 DataContext.SubmitChanges();
             }
             if (model.Journals != null && model.Journals.Any())
             {
                 DataContext.Journals.InsertAllOnSubmit(model.Journals.Where(jour => jour.Selected)
                                                        .Select(journal => new Journal()
                 {
                     Amount      = journal.Amount,
                     Periodicity = journal.Periodicity,
                     Subjects    = journal.Subjects,
                     Date        = journal.Date,
                     PhotoId     = journal.PhotoId,
                     Price       = journal.Price,
                     Title       = journal.Title
                 }));
                 DataContext.SubmitChanges();
             }
             if (model.Newspapers != null && model.Newspapers.Any())
             {
                 DataContext.Newspapers.InsertAllOnSubmit(model.Newspapers.Where(np => np.Selected)
                                                          .Select(newspaper => new Newspaper()
                 {
                     Amount      = newspaper.Amount,
                     Periodicity = newspaper.Periodicity,
                     Date        = newspaper.Date,
                     PhotoId     = newspaper.PhotoId,
                     Price       = newspaper.Price,
                     Title       = newspaper.Title
                 }));
                 DataContext.SubmitChanges();
             }
         }
         catch (Exception e)
         {
             return(InternalServerError(e));
         }
     }
     return(Ok());
 }
        private async Task HandleSuccessedImportResultAsync(ImportResultModel importResult)
        {
            var importRequest = await _importRequestRepository.GetAsync(importResult.RequestId);

            var importInfo = new ImportInfo
            {
                ImportedTvMazeShowId = importRequest.TvMazeShowId
            };

            await _importInfoRepository.AddAsync(importInfo);

            await _importRequestRepository.DeleteAsync(importResult.RequestId);
        }
Exemplo n.º 5
0
    public async Task <IActionResult> Memories(string babyName)
    {
        var memories = await _sqLiteService.GetMemoriesFromDb(DateTime.Now, User, babyName);

        var importResultModel = new ImportResultModel
        {
            Entries = memories
        };

        var model = DiaryService.GetDays(importResultModel);

        model.BabyName           = babyName;
        model.MemoriesBadgeCount = memories.Count;
        model.ShowMemoriesLink   = true;
        model.Profile            = await _accountService.GetProfile(User);

        return(View("Memories", model));
    }
Exemplo n.º 6
0
        public ImportResultModel Import(Stream stream, ImportSheetModel sheet, bool isCoverData)
        {
            ImportResultModel result = new ImportResultModel();

            using (var xlPackage = new ExcelPackage(stream))
            {
                var worksheet = xlPackage.Workbook.Worksheets[sheet.SheetName];
                if (worksheet == null)
                {
                    throw new Exception("未找到名为 " + sheet.SheetName + " 的Sheet");
                }

                for (var i = 1; i <= sheet.ColCount; i++)
                {
                    result.HeaderRow.Add(worksheet.Cells[sheet.HeaderRowIndex, i].Value == null ? "" : worksheet.Cells[sheet.HeaderRowIndex, i].Value.ToString().Trim());
                }

                var extraCols = new List <string>();
                if (sheet.ExtraCols != null && sheet.ExtraCols.Count > 0)
                {
                    ProcessExtraData(sheet, isCoverData, result, worksheet, extraCols);
                    if (result.ErrorRows.Count > 0)
                    {
                        result.Result = ImportResult.Failed;
                        return(result);
                    }
                }

                ProcessMainData(sheet, isCoverData, result, worksheet, extraCols);
            }

            if (result.ErrorRows.Count > 0)
            {
                result.Result = ImportResult.Failed;
            }
            else
            {
                result.Result = ImportResult.Successful;
            }
            return(result);
        }
Exemplo n.º 7
0
        public async Task <IHttpActionResult> UploadImportFile()
        {
            ImportResultModel             result   = new ImportResultModel();
            MultipartMemoryStreamProvider provider = new MultipartMemoryStreamProvider();

            await Request.Content.ReadAsMultipartAsync(provider);

            foreach (HttpContent content in provider.Contents)
            {
                byte[] fileBytes = await content.ReadAsByteArrayAsync();

                try
                {
                    FileInfo info = new FileInfo(content.Headers.ContentDisposition.FileName.Trim('\"'));
                    result = ImportHelper.Import(new MemoryStream(fileBytes), info.Extension == ".xml");
                }
                catch (Exception e)
                {
                    return(InternalServerError(e));
                }
            }
            return(Ok(result));
        }
        public async Task ImportAsync(IEnumerable <ImportRequestModel> importRequests)
        {
            importRequests = importRequests.ToList();
            var shows         = importRequests.Select(request => request.Show).ToList();
            var importResults = new ImportResultModel[importRequests.Count()];

            // Try adding shows within a single transaction
            if (await _showsService.AddShowsAsync(shows))
            {
                _logger.LogInformation(_strings[StringsEnum.START_SHOW_IMPORT_SINGLE_BLOCK]);

                int index = 0;
                foreach (var request in importRequests)
                {
                    importResults[index] = new ImportResultModel(request.Id, true, shows[index].Id);
                    ++index;
                }
            }
            // If failed, try adding one by one
            else
            {
                _logger.LogInformation(_strings[StringsEnum.FAILED_SHOW_IMPORT_SINGLE_BLOCK]);
                _logger.LogInformation(_strings[StringsEnum.START_SHOW_IMPORT_ONE_BY_ONE]);

                int index = 0;
                foreach (var request in importRequests)
                {
                    var importSuccess = await _showsService.AddShowAsync(request.Show);

                    importResults[index] = new ImportResultModel(request.Id, importSuccess, request.Show.Id);
                    ++index;
                }
            }

            _communicationService.EnqueueImportResults(importResults);
        }
        public IHttpActionResult Import(ImportModel importModel)
        {
            var database     = Sitecore.Configuration.Factory.GetDatabase("master");
            var languageItem = database.GetItem(importModel.Language);
            var uploadedFile = (MediaItem)database.GetItem(importModel.MediaItemId);

            if (uploadedFile == null)
            {
                return(new JsonResult <ImportResultModel>(null, new JsonSerializerSettings(), Encoding.UTF8, this));
            }

            ImportResultModel result;

            try
            {
                var args = new ImportItemsArgs
                {
                    Database       = database,
                    FileExtension  = uploadedFile.Extension.ToLower(),
                    FileStream     = uploadedFile.GetMediaStream(),
                    RootItemId     = new ID(importModel.ImportLocationId),
                    TargetLanguage = Sitecore.Globalization.Language.Parse(languageItem.Name),
                    Map            = Map.Factory.BuildMapInfo(new ID(importModel.MappingId)),

                    ImportOptions = new ImportOptions
                    {
                        CsvDelimiter  = new[] { importModel.CsvDelimiter },
                        QuotationMark = importModel.QuotationMark,
                        MultipleValuesImportSeparator = importModel.MultipleValuesSeparator,
                        TreePathValuesImportSeparator = @"\",
                        FirstRowAsColumnNames         = importModel.FirstRowAsColumnNames
                    }
                };
                args.ImportOptions.ExistingItemHandling = (ExistingItemHandling)
                                                          Enum.Parse(typeof(ExistingItemHandling), importModel.ExistingItemHandling);
                args.ImportOptions.InvalidLinkHandling = (InvalidLinkHandling)
                                                         Enum.Parse(typeof(InvalidLinkHandling), importModel.InvalidLinkHandling);
                args.ImportOptions.DataStructureType = (DataStructureType)
                                                       Enum.Parse(typeof(DataStructureType), importModel.DataStructureType);

                Sitecore.Diagnostics.Log.Info(
                    string.Format("EzImporter: mappingId:{0} mediaItemId:{1} firstRowAsColumnNames:{2}",
                                  importModel.MappingId, importModel.MediaItemId, args.ImportOptions.FirstRowAsColumnNames),
                    this);
                args.Timer.Start();
                CorePipeline.Run("importItems", args);
                args.Timer.Stop();
                if (args.Aborted)
                {
                    result = new ImportResultModel
                    {
                        HasError     = true,
                        Log          = args.Statistics.ToString(),
                        ErrorMessage = args.Message,
                        ErrorDetail  = args.ErrorDetail
                    };
                }
                else
                {
                    result = new ImportResultModel
                    {
                        Log = args.Statistics.ToString() + " Duration: " + args.Timer.Elapsed.ToString("c")
                    };
                }
            }
            catch (Exception ex)
            {
                result = new ImportResultModel
                {
                    HasError     = true,
                    ErrorMessage = ex.Message,
                    ErrorDetail  = ex.ToString()
                };
            }

            return(new JsonResult <ImportResultModel>(result, new JsonSerializerSettings(), Encoding.UTF8, this));
        }
Exemplo n.º 10
0
        public static ImportResultModel Import(Stream stream, bool isXml)
        {
            ImportResultModel result = new ImportResultModel();

            try
            {
                switch (GetType(stream, isXml))
                {
                case "Book":
                    result.Books = ImportBooks(stream, isXml).Select(b => new ExportableBookModel
                    {
                        Id        = b.Id,
                        Amount    = b.Amount,
                        PhotoId   = b.PhotoId,
                        Pages     = b.Pages,
                        Genre     = b.Genre,
                        Author    = b.Author,
                        Title     = b.Title,
                        Year      = b.Year,
                        Price     = b.Price,
                        Selected  = true,
                        PhotoPath = b.PhotoPath
                    }).ToList();
                    break;

                case "Journal":
                    result.Journals = ImportJournals(stream, isXml).Select(b => new ExportableJournalModel()
                    {
                        Id          = b.Id,
                        Date        = b.Date,
                        Amount      = b.Amount,
                        PhotoId     = b.PhotoId,
                        Periodicity = b.Periodicity,
                        Subjects    = b.Subjects,
                        Title       = b.Title,
                        Price       = b.Price,
                        Selected    = true,
                        PhotoPath   = b.PhotoPath
                    })
                                      .ToList();
                    break;

                case "Newspaper":
                    result.Newspapers = ImportNewspapers(stream, isXml).Select(b => new ExportableNewspaperModel()
                    {
                        Id          = b.Id,
                        Date        = b.Date,
                        Amount      = b.Amount,
                        PhotoId     = b.PhotoId,
                        Periodicity = b.Periodicity,
                        Title       = b.Title,
                        Price       = b.Price,
                        Selected    = true,
                        PhotoPath   = b.PhotoPath
                    })
                                        .ToList();
                    break;
                }
            }
            catch (Exception e)
            {
                result.Message = e.Message;
                return(result);
            }

            return(result);
        }
Exemplo n.º 11
0
 public static DiaryViewModel GetDays(ImportResultModel model)
 => new DiaryViewModel
 {
     Days    = model.Entries.OrderByDescending(e => e.Time).GroupBy(e => e.Time.Date),
     Entries = model.Entries.OrderByDescending(e => e.Time)
 };
        public ActionResult SummitImport(string CityId, string CountyId, string ProjectId, int isRename = 1)
        {
            var file = Request.Files[0];

            string path     = @"D:\项目\聚力环境测评系统\NFine.Web\bin\TemporaryFilesDiskPath\";
            string fileName = file.FileName;
            string filePath = Path.Combine(path, fileName);

            ImportResultModel result = new ImportResultModel();
            int failureQuantity, successfulQuantity;

            try
            {
                if (NFine.Code.FileHelper.IsExistFile(path))
                {
                    NFine.Code.FileHelper.DeleteFile(path);
                }

                file.SaveAs(filePath);

                using (ExcelHelper exHelp = new ExcelHelper(filePath))
                {
                    var datatable = exHelp.ExcelToDataTable(filePath, true);

                    ProfileSanitationGarbageBoxEntity[] models = new ProfileSanitationGarbageBoxEntity[datatable.Rows.Count];

                    ProfileSanitationGarbageBoxEntity model;
                    for (int i = 0; i < datatable.Rows.Count; i++)
                    {
                        model = new ProfileSanitationGarbageBoxEntity();

                        var code               = datatable.Rows[i]["序"].ToString();
                        var streetName         = datatable.Rows[i]["街道"].ToString();
                        var garbageBoxTypeName = datatable.Rows[i]["类型"].ToString();
                        var address            = datatable.Rows[i]["地址"].ToString();

                        string streetKey = "";

                        var streetList = StreetApp.GetDictionary(d => d.StreetName == streetName);
                        if (streetList.Count > 0)
                        {
                            streetKey = streetList[0].Key;
                        }
                        else
                        {
                            continue;
                        }

                        model.F_EnCode  = int.Parse(code);
                        model.CityId    = CityId;
                        model.CountyId  = CountyId;
                        model.ProjectId = ProjectId;
                        model.StreetId  = streetKey;
                        model.Address   = address;

                        models[i] = model;
                    }

                    App.ImportData(models, out successfulQuantity, out failureQuantity);
                    result.IsSucceed          = true;
                    result.FailureQuantity    = failureQuantity;
                    result.SuccessfulQuantity = successfulQuantity;
                    result.TotalQuantity      = models.Length;
                }
            }
            catch (Exception ex)
            {
                result.IsSucceed    = false;
                result.ErrorMessage = ex.ToString();
            }
            finally
            {
                if (NFine.Code.FileHelper.IsExistFile(path))
                {
                    NFine.Code.FileHelper.DeleteFile(path);
                }
            }


            return(Success(string.Format("总条数:{0},成功条数:{1},失败条数:{2}", result.TotalQuantity, result.FailureQuantity, result.ErrorMessage)));
        }
Exemplo n.º 13
0
        private static void ProcessExtraData(ImportSheetModel sheet, bool isCoverData, ImportResultModel result, ExcelWorksheet worksheet, List <string> extraCols)
        {
            foreach (var ex in sheet.ExtraCols)
            {
                extraCols.Add(worksheet.Cells[ex.RowIndex, ex.ColIndex].Value == null ? "" : worksheet.Cells[ex.RowIndex, ex.ColIndex].Value.ToString().Trim());
            }
            var modelExtra  = new ImportErrorRowModel();
            var errorsExtra = new List <ImportErrorColModel>();

            try
            {
                sheet.ParseToEntityExtra(extraCols, ref errorsExtra, isCoverData);
                if (errorsExtra.Count > 0)
                {
                    modelExtra.RowIndex  = 0;
                    modelExtra.Values    = extraCols;
                    modelExtra.ErrorCols = errorsExtra;
                    result.ErrorRows.Add(modelExtra);
                }
            }
            catch (Exception e)
            {
                modelExtra.RowIndex = 0;
                modelExtra.Values   = extraCols;
                modelExtra.ErrorCols.Add(new ImportErrorColModel()
                {
                    ColName = "",
                    Message = e.ToString(),
                });
                result.ErrorRows.Add(modelExtra);
            }
        }
Exemplo n.º 14
0
        public ActionResult SummitImport(string CityId, string CountyId, int isRename = 1)
        {
            var file = Request.Files[0];

            string path     = @"D:\项目\卫星设备台账流程管理\NFine.Web\bin\TemporaryFilesDiskPath\";
            string fileName = file.FileName;

            ImportResultModel result = new ImportResultModel();
            int failureQuantity, successfulQuantity;

            try
            {
                file.SaveAs(Path.Combine(path, fileName));

                #region 导出

                if (FileHelper.IsExistFile(Path.Combine(path, fileName)))
                {
                    FileHelper.DeleteFile(Path.Combine(path, fileName));

                    using (ExcelHelper exHelp = new ExcelHelper(Path.Combine(path, fileName)))
                    {
                        var datatable = exHelp.ExcelToDataTable(fileName, true);
                        ProfileMainWayEntity[] models = new ProfileMainWayEntity[datatable.Rows.Count];
                        ProfileMainWayEntity   model;

                        for (int i = 0; i < datatable.Rows.Count; i++)
                        {
                            var mainWayName = datatable.Rows[i]["主路名"].ToString();
                            var jdName      = datatable.Rows[i]["街道"].ToString();
                            var fCode       = datatable.Rows[i]["序号"].ToString();

                            var StreetNamekey = StreetApp.GetDictionary(d => d.StreetName == jdName)[0].Key;

                            var streetModel = StreetApp.GetForm(StreetNamekey);

                            model = new ProfileMainWayEntity()
                            {
                                CityId      = streetModel.CityId,
                                CountyId    = streetModel.CountyId,
                                StreetId    = streetModel.F_Id,
                                MainWayName = mainWayName,
                                F_EnCode    = fCode
                            };

                            models[i] = model;
                        }
                        mainWayApp.ImportData(models, out successfulQuantity, out failureQuantity);
                        result.IsSucceed          = true;
                        result.FailureQuantity    = failureQuantity;
                        result.SuccessfulQuantity = successfulQuantity;
                        result.TotalQuantity      = models.Length;
                    }
                }
                #endregion
            }
            catch (Exception ex)
            {
                result.IsSucceed    = false;
                result.ErrorMessage = ex.ToString();
            }
            finally
            {
            }
            return(Success(string.Format("总条数:{0},成功条数:{1},失败条数:{2}", result.TotalQuantity, result.FailureQuantity, result.ErrorMessage)));
        }
Exemplo n.º 15
0
        protected ImportResultModel <TImportModel, TImportOverviewModel> SaveImportResult <TImportModel, TImportOverviewModel>(ImportResultModel <TImportModel, TImportOverviewModel> importResultModel, List <TImportModel> allImportModel, Func <TImportModel, TImportModel> create, Func <TImportModel, TImportModel> update)
            where TImportModel : IExternalIdHolder
        {
            foreach (var updateImportModel in importResultModel.UpdateImportModels)
            {
                if (allImportModel.Any(m => m.Id == updateImportModel.Id))
                {
                    update(updateImportModel);
                }
                else
                {
                    //We will recreate Deleted Items with a different ID (Deleted between Import and Commit)
                    updateImportModel.Id = Guid.NewGuid();
                    create(updateImportModel);
                }
            }

            foreach (var updateImportModel in importResultModel.CreateImportModels)
            {
                create(updateImportModel);
            }

            return(importResultModel);
        }
Exemplo n.º 16
0
        protected ImportResultModel <TImportModel, TImportOverviewModel> GetImportResultModel <TImportModel, TImportOverviewModel>(XlsxImportResult <TImportModel> importResult, List <TImportModel> allImportModel, Func <TImportModel, TImportModel, bool> areEqual, Func <TImportModel, TImportModel, bool> isExternalIdEqual, List <string> warnings)
            where TImportModel : IExternalIdHolder
        {
            if (importResult.HasError)
            {
                return(new ImportResultModel <TImportModel, TImportOverviewModel>(importResult.ErrorList, warnings));
            }

            var validator = validatorFactory.GetValidator <TImportModel>();

            var errorList = new List <string>();

            foreach (var modelInfo in importResult.ModelInfos)
            {
                ValidationResult validationResult = validator.Validate(modelInfo.Model);
                errorList.AddRange(validationResult.Errors.Select(e => e.ErrorMessage + string.Format(LocalizationService.GetLocalizedError(ValidationError.RowN), modelInfo.RowNumber)));
            }

            LogImportEreigniss(errorList.Count);

            if (errorList.Any())
            {
                return(new ImportResultModel <TImportModel, TImportOverviewModel>(errorList, warnings));
            }

            var resultModel = new ImportResultModel <TImportModel, TImportOverviewModel>(null, warnings);

            foreach (var importModel in importResult.ModelInfos.ToList())
            {
                var model = importModel.Model;
                //case a ExtrnalID matches -> Update
                if ((allImportModel.FirstOrDefault(m => isExternalIdEqual(m, model))) != null)
                {
                    model.Id = allImportModel.FirstOrDefault(m => isExternalIdEqual(m, model)).Id;

                    resultModel.UpdateImportModels.Add(model);
                    resultModel.UpdateImportOverviewModels.Add(Translate <TImportModel, TImportOverviewModel>(model));
                }
                else
                {
                    var firstOrDefaultImprotModel = allImportModel.FirstOrDefault(m => areEqual(m, model));

                    //we found an entity with
                    if (firstOrDefaultImprotModel != null)
                    {
                        if (string.IsNullOrEmpty(model.ExternalId) ||
                            string.IsNullOrEmpty(firstOrDefaultImprotModel.ExternalId))
                        {
                            model.Id = firstOrDefaultImprotModel.Id;

                            resultModel.UpdateImportModels.Add(model);
                            resultModel.UpdateImportOverviewModels.Add(
                                Translate <TImportModel, TImportOverviewModel>(model));
                        }
                        //non of the ExternalIds is null but they are not qual B/2 case -> error
                        else
                        {
                            errorList.Add(
                                string.Format(
                                    LocalizationService.GetLocalizedError(ValidationError.NonMatchingExternalId),
                                    importModel.RowNumber));
                        }
                    }
                    //we cannot find it by enternalid or by natural key case C -> create
                    else
                    {
                        allImportModel.Add(model);
                        resultModel.CreateImportModels.Add(model);
                        resultModel.CreateImportOverviewModels.Add(Translate <TImportModel, TImportOverviewModel>(model));
                    }
                }
            }

            if (errorList.Any())
            {
                return(new ImportResultModel <TImportModel, TImportOverviewModel>(errorList, warnings));
            }

            return(resultModel);
        }
 private async Task HandleFailedImportResultAsync(ImportResultModel importResult)
 {
     await _importRequestRepository.UpdateStatusAsync(importResult.RequestId, ImportRequestStatus.FAILED);
 }
Exemplo n.º 18
0
        public ImportResultModel ImportWithExtra(Stream stream, ImportSheetModel sheet, bool isCoverData)
        {
            ImportResultModel result = new ImportResultModel();

            using (var xlPackage = new ExcelPackage(stream))
            {
                var worksheet = xlPackage.Workbook.Worksheets[sheet.SheetName];
                if (worksheet == null)
                {
                    throw new Exception("未找到名为 " + sheet.SheetName + " 的Sheet");
                }

                for (var i = 1; i <= sheet.ColCount; i++)
                {
                    result.HeaderRow.Add(worksheet.Cells[sheet.HeaderRowIndex, i].Value == null ? "" : worksheet.Cells[sheet.HeaderRowIndex, i].Value.ToString().Trim());
                }

                var extraCols = new List <string>();
                if (sheet.ExtraCols != null && sheet.ExtraCols.Count > 0)
                {
                    foreach (var ex in sheet.ExtraCols)
                    {
                        extraCols.Add(worksheet.Cells[ex.RowIndex, ex.ColIndex].Value == null ? "" : worksheet.Cells[ex.RowIndex, ex.ColIndex].Value.ToString().Trim());
                    }
                    var modelExtra  = new ImportErrorRowModel();
                    var errorsExtra = new List <ImportErrorColModel>();
                    try
                    {
                        sheet.ParseToEntityExtra(extraCols, ref errorsExtra, isCoverData);
                        if (errorsExtra.Count > 0)
                        {
                            modelExtra.RowIndex  = 0;
                            modelExtra.Values    = extraCols;
                            modelExtra.ErrorCols = errorsExtra;
                            result.ErrorRows.Add(modelExtra);
                        }
                    }
                    catch (Exception e)
                    {
                        modelExtra.RowIndex = 0;
                        modelExtra.Values   = extraCols;
                        modelExtra.ErrorCols.Add(new ImportErrorColModel()
                        {
                            ColName = "",
                            Message = e.ToString(),
                        });
                        result.ErrorRows.Add(modelExtra);
                    }
                }

                //如果extra出错,则读取所有单元格到error里,以便原样输出
                if (result.ErrorRows.Count > 0)
                {
                    int iRow = sheet.StartRowIndex;
                    while (true)
                    {
                        bool allColumnsAreEmpty = true;
                        for (var i = 1; i <= sheet.ColCount; i++)
                        {
                            if (worksheet.Cells[iRow, i].Value != null && !String.IsNullOrEmpty(worksheet.Cells[iRow, i].Value.ToString()))
                            {
                                allColumnsAreEmpty = false;
                                break;
                            }
                        }
                        if (allColumnsAreEmpty)
                        {
                            break;
                        }

                        List <string> values = new List <string>();
                        for (var i = 1; i <= sheet.ColCount; i++)
                        {
                            values.Add(worksheet.Cells[iRow, i].Value == null ? "" : worksheet.Cells[iRow, i].Value.ToString().Trim());
                        }

                        var modelRow = new ImportErrorRowModel()
                        {
                            RowIndex  = iRow,
                            Values    = values,
                            ErrorCols = new List <ImportErrorColModel>()
                            {
                                new ImportErrorColModel()
                                {
                                    ColIndex = -1,
                                }
                            },
                        };
                        result.ErrorRows.Add(modelRow);

                        iRow++;
                    }
                }
                //extra没有错,转实体
                else
                {
                    int iRow = sheet.StartRowIndex;
                    while (true)
                    {
                        bool allColumnsAreEmpty = true;
                        for (var i = 1; i <= sheet.ColCount; i++)
                        {
                            if (worksheet.Cells[iRow, i].Value != null && !String.IsNullOrEmpty(worksheet.Cells[iRow, i].Value.ToString()))
                            {
                                allColumnsAreEmpty = false;
                                break;
                            }
                        }
                        if (allColumnsAreEmpty)
                        {
                            break;
                        }

                        List <string> values = new List <string>();
                        for (var i = 1; i <= sheet.ColCount; i++)
                        {
                            values.Add(worksheet.Cells[iRow, i].Value == null ? "" : worksheet.Cells[iRow, i].Value.ToString().Trim());
                        }
                        if (extraCols.Count > 0)
                        {
                            values.AddRange(extraCols);
                        }
                        var model  = new ImportErrorRowModel();
                        var errors = new List <ImportErrorColModel>();
                        try
                        {
                            sheet.ParseToEntityMain(values, ref errors, isCoverData);
                            if (errors.Count > 0)
                            {
                                model.RowIndex = iRow;
                                if (extraCols.Count > 0)
                                {
                                    model.Values = values.Take(sheet.ColCount).ToList();
                                }
                                else
                                {
                                    model.Values = values;
                                }
                                model.ErrorCols = errors;
                                result.ErrorRows.Add(model);
                            }
                        }
                        catch (Exception ex)
                        {
                            model.RowIndex = iRow;
                            if (extraCols.Count > 0)
                            {
                                model.Values = values.Take(sheet.ColCount).ToList();
                            }
                            else
                            {
                                model.Values = values;
                            }
                            model.ErrorCols.Add(new ImportErrorColModel()
                            {
                                ColName = "",
                                Message = ex.ToString(),
                            });
                            result.ErrorRows.Add(model);
                        }

                        iRow++;
                    }
                }
            }

            if (result.ErrorRows.Count > 0)
            {
                result.Result = ImportResult.Failed;
            }
            else
            {
                result.Result = ImportResult.Successful;
            }
            return(result);
        }
Exemplo n.º 19
0
        private static void ProcessMainData(ImportSheetModel sheet, bool isCoverData, ImportResultModel result, ExcelWorksheet worksheet, List <string> extraCols)
        {
            int iRow = sheet.StartRowIndex;

            while (true)
            {
                bool allColumnsAreEmpty = true;
                for (var i = 1; i <= sheet.ColCount; i++)
                {
                    if (worksheet.Cells[iRow, i].Value != null && !String.IsNullOrEmpty(worksheet.Cells[iRow, i].Value.ToString()))
                    {
                        allColumnsAreEmpty = false;
                        break;
                    }
                }
                if (allColumnsAreEmpty)
                {
                    break;
                }

                List <string> values = new List <string>();
                for (var i = 1; i <= sheet.ColCount; i++)
                {
                    values.Add(worksheet.Cells[iRow, i].Value == null ? "" : worksheet.Cells[iRow, i].Value.ToString().Trim());
                }
                if (extraCols.Count > 0)
                {
                    values.AddRange(extraCols);
                }
                var model  = new ImportErrorRowModel();
                var errors = new List <ImportErrorColModel>();
                try
                {
                    sheet.ParseToEntityMain(values, ref errors, isCoverData);
                    if (errors.Count > 0)
                    {
                        model.RowIndex = iRow;
                        if (extraCols.Count > 0)
                        {
                            model.Values = values.Take(sheet.ColCount).ToList();
                        }
                        else
                        {
                            model.Values = values;
                        }
                        model.ErrorCols = errors;
                        result.ErrorRows.Add(model);
                    }
                }
                catch (Exception ex)
                {
                    model.RowIndex = iRow;
                    if (extraCols.Count > 0)
                    {
                        model.Values = values.Take(sheet.ColCount).ToList();
                    }
                    else
                    {
                        model.Values = values;
                    }
                    model.ErrorCols.Add(new ImportErrorColModel()
                    {
                        ColName = "",
                        Message = ex.ToString(),
                    });
                    result.ErrorRows.Add(model);
                }

                iRow++;
            }
        }