Untitled

 avatar
unknown
typescript
a month ago
1.5 kB
1
Indexable
 const processUploadedFile = (currentFile: File) => {
    if (!currentFile) {
      return;
    }

    setErrors({});
    setCsvFileName(currentFile.name);

    Papa.parse<Record<string, string>>(currentFile, {
      header: true,
      skipEmptyLines: true,
      complete: parsingResults => {
        const values = parsingResults.data.map(item => {
          const transformedItem: Product = {
            mpk: "",
            sapId: "",
            name: "",
            outcomeUnit: "",
            productGroup: "",
            orderedQuantity: ""
          };

          const lowerCaseItem = mapKeys(item, (_, key) => key.toLowerCase());

          csvColumnTranslationMap.forEach((newKey, oldKey) => {
            const value = lowerCaseItem[oldKey.toLowerCase()];

            if (value !== undefined) {
              transformedItem[newKey] = value;
            }
          });

          return transformedItem;
        });

        const valuesWithOrderingNumber = values.map((item, index) => ({
          LP: index + 1,
          ...item
        })) as ExpandedRecord[];

        valuesWithOrderingNumber.forEach(item => {
          const quantity = item.orderedQuantity;
          const sapId = item.sapId;
          const isSapIdValid = validateSapId(sapId);

          if (!quantity || !isSapIdValid) {
            setErrors(prevErrors => ({
              ...prevErrors,
              [item.LP]: "Error"
            }));
          }
        });

        setParsedData(values);
      }
    });
  };
Leave a Comment