Untitled
unknown
csharp
a year ago
10 kB
4
Indexable
Using System.IO; Using OfficeOpenXml; Using OfficeOpenXml.ExcelPackage; Using OfficeOpenXml.ExcelRange; internal final class CeImportBonus { /// <summary> /// Runs the class with the specified arguments. /// </summary> /// <param name = "_args">The specified arguments.</param> public static void main(Args _args) { int insertCounter; int updateCounter; container updateInfo; str moreThan1Ins = ""; str moreThan1Upd = ""; updateInfo = conIns(updateInfo,1,insertCounter); updateInfo = conIns(updateInfo,1,updateCounter); System.IO.Stream stream; FileUploadTemporaryStorageResult fileUploadResult=file::GetFileFromUser(classStr(FileUploadTemporaryStorageStrategy)); if(fileUploadResult!= null && fileUploadResult.getUploadStatus()) { stream=fileUploadResult.openResult(); if(strEndsWith(fileUploadResult.getFileName() ,'xlsx')) { updateInfo = CeImportBonus::RunIfExcel(stream, updateInfo); if (conPeek(updateInfo,2) > 1) { moreThan1Upd = "s"; } if (conPeek(updateInfo,1) > 1) { moreThan1Ins = "s"; } if(conPeek(updateInfo,1) >= 1 && conPeek(updateInfo,2) >= 1) { Info(strFmt("%1 row%4 have been added, %2 row%3 have been updated", conPeek(updateInfo,1), conPeek(updateInfo,2),moreThan1Upd,moreThan1Ins)); } else if(conPeek(updateInfo,1) >= 1) { Info(strFmt("%1 row%2 have been added", conPeek(updateInfo,1),moreThan1Ins)); } else if(conPeek(updateInfo,2) >= 1) { Info(strFmt("%1 row%2 have been updated", conPeek(updateInfo,2),moreThan1Upd)); } else { Info("Nothing to update"); } } else if(strEndsWith(fileUploadResult.getFileName() ,'csv')) { updateInfo = CeImportBonus::RunIfCSV(fileUploadResult, updateInfo); if (conPeek(updateInfo,2) > 1) { moreThan1Upd = "s"; } if (conPeek(updateInfo,1) > 1) { moreThan1Ins = "s"; } if(conPeek(updateInfo,1) >= 1 && conPeek(updateInfo,2) >= 1) { Info(strFmt("%1 row%4 have been added, %2 row%3 have been updated", conPeek(updateInfo,1), conPeek(updateInfo,2),moreThan1Upd,moreThan1Ins)); } else if(conPeek(updateInfo,1) >= 1) { Info(strFmt("%1 row%2 have been added", conPeek(updateInfo,1),moreThan1Ins)); } else if(conPeek(updateInfo,2) >= 1) { Info(strFmt("%1 row%2 have been updated", conPeek(updateInfo,2),moreThan1Upd)); } else { Info("Nothing to update"); } } CeImportBonus::Update(_args); } } public static container RunIfCSV(FileUploadTemporaryStorageResult fileUploadResult, container counter) { int insertCounter; int updateCounter; AsciiStreamIo file; FileUploadTemporaryStorageResult fileUpload; CeBonustabell Bonustabell; fileUpload = fileUploadResult; File = AsciiStreamIo::constructForRead(fileUpload.openResult()); if (file) { if (file.status()) { throw error("@SYS52680"); } file.inFieldDelimiter(','); file.inRecordDelimiter('\r\n'); } container record; while (!file.status()) { record = file.read(); try { select * from Bonustabell where Bonustabell.Id == conPeek(record,1); } catch { continue; } if(conLen(record) && any2Str(conPoke(record,1)) != "ID") { if(Bonustabell) { str incomingActive = any2Str(Bonustabell.Inactive); str dbActive = any2Str(conPeek(record,4)); if(any2Str(conPeek(record,4)) == "Yes") { dbActive = "1"; } else { dbActive = "0"; } if(Bonustabell.Id != conPeek(record,1) || Bonustabell.Description != conPeek(record,2) || any2Real(Bonustabell.BonusAmount) != any2Real(conPeek(record,3)) || incomingActive != dbActive) { Bonustabell.SelectForUpdate(true); Bonustabell.Id = conPeek(record,1); Bonustabell.Description = conPeek(record,2); Bonustabell.BonusAmount = conPeek(record,3); if(conPeek(record,4) == "Yes") { Bonustabell.Inactive = 1; } else { Bonustabell.Inactive = conPeek(record,4); } ttsbegin; Bonustabell.update(); ttscommit; updateCounter++; } } else { Bonustabell.Id = conPeek(record,1); Bonustabell.Description = conPeek(record,2); Bonustabell.BonusAmount = conPeek(record,3); if(conPeek(record,4) == "Yes") { Bonustabell.Inactive = 1; } else { Bonustabell.Inactive = conPeek(record,4); } ttsbegin; Bonustabell.insert(); ttscommit; insertCounter++; } } } counter = conPoke(counter,1,insertCounter); counter = conPoke(counter,2,updateCounter); return counter; } public static container RunIfExcel(Stream stream, container counter) { int insertCounter; int updateCounter; using(ExcelPackage package= new ExcelPackage(stream)) { int rowCount, i; package.Load(stream); ExcelWorksheet worksheet= package.get_workbook().get_worksheets().get_Item(1); OfficeOpenXml.ExcelRange range=worksheet.Cells; rowCount = worksheet.Dimension.End.Row - worksheet.Dimension.Start.Row + 1; for (i = 2; i<= rowCount; i++) { NoYes mEnum; CeBonustabell Bonustabell; select firstonly Bonustabell where BonusTabell.Id == (range.get_Item(i, 1).value); if(Bonustabell) { if(Bonustabell.Id != any2Str((range.get_Item(i, 1).value)) || Bonustabell.Description != any2Str((range.get_Item(i, 2).value)) || Bonustabell.BonusAmount != any2Real(range.get_Item(i, 3).value) || Bonustabell.Inactive != str2Enum(mEnum, range.get_Item(i, 4).value)) { try { Bonustabell.selectForUpdate(true); Bonustabell.Id = any2Str((range.get_Item(i, 1).value)); Bonustabell.Description = any2Str((range.get_Item(i, 2).value)); Bonustabell.BonusAmount = any2Real(range.get_Item(i, 3).value); Bonustabell.Inactive = str2Enum(mEnum, range.get_Item(i, 4).value); ttsbegin; Bonustabell.update(); ttscommit; updateCounter++; } catch { continue; } } } else { Bonustabell.Id = any2Str((range.get_Item(i, 1).value)); Bonustabell.Description = any2Str((range.get_Item(i, 2).value)); Bonustabell.BonusAmount = (range.get_Item(i, 3).value); Bonustabell.Inactive = str2Enum(mEnum, range.get_Item(i, 4).value); ttsbegin; Bonustabell.insert(); ttscommit; insertCounter++; } } } counter = conPoke(counter,1,insertCounter); counter = conPoke(counter,2,updateCounter); return counter; } public static void Update(Args _args) { FormDataSource formDs = _args.record().dataSource(); formDs.research(); } }
Editor is loading...