Import CSV file using file upload
public class discountCodeImportEventHandle
{
[FormControlEventHandler(formControlStr(Discount, Discount), FormControlEventType::Clicked)]
public static void CouponUpload_OnClicked(FormControl sender, FormControlEventArgs e)
{
#File
str availableTypes = ".csv";
DialogGroup dialogGroup;
Filename textFile;
FileUpload fileUploadControl, fileUpload;
FormBuildControl formBuildControl;
FileUploadBuild dialogFileUpload;
CommaTextStreamIo localStream;
container currentLine;
Counter fileLineNumber;
Discount discount;
FormDataSource discount_DS;
xxxDiscountTable xxxDiscountTable;
discount = sender.formRun().dataSource("Discount").cursor();
discount_DS = sender.formRun().dataSource(formDataSourceStr(Discount,Discount)) as FormDataSource;
Dialog dialog = new Dialog("Import discount");
dialogGroup = dialog.addGroup("File path");
formBuildControl = dialog.formBuildDesign().control(dialogGroup.name());
dialogFileUpload = formBuildControl.addControlEx(classstr(FileUpload), 'Upload');
dialogFileUpload.style(FileUploadStyle::MinimalWithFilename);
dialogFileUpload.baseFileUploadStrategyClassName(classstr(FileUploadTemporaryStorageStrategy));
dialogFileUpload.fileTypesAccepted(availableTypes);
dialog.run();
fileUpload = dialog.formRun().control(dialog.formRun().controlId('Upload'));
textFile = fileUpload.fileName();
fileUploadControl = dialog.formRun().control(dialog.formRun().controlId('Upload'));
FileUploadTemporaryStorageResult fileUploadResult = fileUploadControl.getFileUploadResult();
if (fileUploadResult != null && fileUploadResult.getUploadStatus())
{
textFile = fileUploadResult.getDownloadUrl();
}
localStream = CommaTextStreamIo::constructForRead(File::UseFileFromURL(textFile));
localStream.inFieldDelimiter("\,");
localStream.inRecordDelimiter("\n");
currentLine = localStream.read();
fileLineNumber++;
System.Globalization.CultureInfo culture = System.Globalization.CultureInfo::get_InvariantCulture();
while (currentLine)
{
// Insert imported CSV file records to table
xxxDiscountTable.CouponNumber = Discount.CouponNumber;
xxxDiscountTable.DiscountCodeId = conPeek(currentLine, 1);
xxxDiscountTable.DiscountCode = conPeek(currentLine, 2);
xxxDiscountTable.ActivatedDate = System.DateTime::ParseExact(conPeek(currentLine, 3),'MM/dd/yyyy',culture);
if(conPeek(currentLine, 4) == enum2Str(DiscountStatus::Inactive))
{
xxxDiscountTable.Status = DiscountStatus::Inactive;
}
else if(conPeek(currentLine, 4) == enum2Str(DiscountStatus::Active))
{
xxxDiscountTable.Status = DiscountStatus::Active;
}
xxxDiscountTableLoc.insert();
currentLine = localStream.read();
}
Discount_DS.refresh();
Discount_DS.research(true);
}
}
Comments
Post a Comment