App\services\ImportService::transformRow PHP Method

transformRow() private method

private transformRow ( $source, $entityType, $row ) : boolean | mixed
$source
$entityType
$row
return boolean | mixed
    private function transformRow($source, $entityType, $row)
    {
        $transformer = $this->getTransformer($source, $entityType, $this->maps);
        // Create expesnse category
        if ($entityType == ENTITY_EXPENSE) {
            if (!empty($row->expense_category)) {
                $categoryId = $transformer->getExpenseCategoryId($row->expense_category);
                if (!$categoryId) {
                    $category = $this->expenseCategoryRepo->save(['name' => $row->expense_category]);
                    $this->addExpenseCategoryToMaps($category);
                }
            }
            if (!empty($row->vendor)) {
                $vendorId = $transformer->getVendorId($row->vendor);
                if (!$vendorId) {
                    $vendor = $this->vendorRepo->save(['name' => $row->vendor, 'vendor_contact' => []]);
                    $this->addVendorToMaps($vendor);
                }
            }
        }
        $resource = $transformer->transform($row);
        if (!$resource) {
            return false;
        }
        $data = $this->fractal->createData($resource)->toArray();
        // if the invoice number is blank we'll assign it
        if ($entityType == ENTITY_INVOICE && !$data['invoice_number']) {
            $account = Auth::user()->account;
            $invoice = Invoice::createNew();
            $data['invoice_number'] = $account->getNextInvoiceNumber($invoice);
        }
        if (EntityModel::validate($data, $entityType) !== true) {
            return false;
        }
        if ($entityType == ENTITY_INVOICE) {
            if (empty($this->processedRows[$data['invoice_number']])) {
                $this->processedRows[$data['invoice_number']] = $data;
            } else {
                // Merge invoice items
                $this->processedRows[$data['invoice_number']]['invoice_items'] = array_merge($this->processedRows[$data['invoice_number']]['invoice_items'], $data['invoice_items']);
                return true;
            }
        } else {
            $this->processedRows[] = $data;
        }
        end($this->processedRows);
        return key($this->processedRows);
    }