handler method
- @override
override
Must be implemented
Implementation
@override
Future<Response> handler() async {
final vendorDataLinkId = vendorDatalink.vendor.id;
var excel = Excel.createExcel();
var sheetObject = excel['Sheet1'];
List<int>? fileBytes;
try {
if (reportType == availablesStocks) {
final products =
await postgresDatalinkRepository.getProductsByVendorIdForExcel(
vendorId: vendorDataLinkId,
);
sheetObject.cell(CellIndex.indexByString('A1')).value = 'NAME';
sheetObject.cell(CellIndex.indexByString('B1')).value = 'SKU';
sheetObject.cell(CellIndex.indexByString('C1')).value = 'TOTAL';
for (var i = 0; i < products.length; i++) {
final skuTotalObj = products[i];
sheetObject.updateCell(
CellIndex.indexByColumnRow(columnIndex: 0, rowIndex: i + 1),
skuTotalObj.name,
);
sheetObject.updateCell(
CellIndex.indexByColumnRow(columnIndex: 1, rowIndex: i + 1),
skuTotalObj.sku,
);
sheetObject.updateCell(
CellIndex.indexByColumnRow(columnIndex: 2, rowIndex: i + 1),
skuTotalObj.total,
);
}
excel.rename('Sheet1', 'Available stocks');
fileBytes = excel.save(fileName: 'available_stocks.xlsx');
} else {
final orders = await postgresDatalinkRepository.getOrderInfosForExcel(
vendorDatalinkId: vendorDatalink.id,
);
for (var cell in allOrdersExcelTitleCells) {
sheetObject.cell(CellIndex.indexByString(cell.keys.first)).value =
cell.values.first;
}
for (var i = 0; i < orders.length; i++) {
final order = orders[i];
for (var j = 0; j < order.values.length; j++) {
sheetObject.updateCell(
CellIndex.indexByColumnRow(columnIndex: j, rowIndex: i + 1),
order.values[j],
);
}
}
excel.rename('Sheet1', 'All orders');
fileBytes = excel.save(fileName: 'all_orders.xlsx');
}
return Response.ok(
fileBytes,
headers: {
'Content-Type':
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
},
);
} catch (e) {
return Response.internalServerError(
body: jsonEncode({'error': 'Webhook error: $e'}),
);
}
}