Я хотел бы сделать поиск штрих-кода.
При первой попытке штрих-код просматривается локально по штрих-кодам пользователей.
Если дубликат, функция возвращает первый экземпляр с текстом «найдено локально»
Если штрих-код не найден локально, он должен выполнить глобальный поиск.
Проблема, с которой я столкнулся, связана с оператором if else, когда штрих-код не найден локально.
Следует проверить, найдено ли оно глобально, если оно не найдено локально.
public function updatePricelist(Request $request)
{
$user_id = Auth::user()->id;
$counter = count($_POST["product_name"]);
//product barcode
for ($x = 0; $x < $counter; $x++) {
$product_barcode[] = $_POST["product_barcode"][$x];
}
//check the barcode locally
$result = $this->barcodeLookUp($product_barcode, 'local');
if (!empty($result)) {
$result = "found locally";
}
else {
$result = $this->barcodeLookUp($product_barcode, 'global');
if (!empty($result)) {
$result = "found globally";
}
}
return $result;
}
public function barcodeLookUp($product_barcode, $type)
{
$user_id = Auth::user()->id;
if ($type === 'local') {
$db_barcodes = $this->getBarcodes($user_id, 'local');
}
if ($type === 'global') {
$db_barcodes = $this->getBarcodes($user_id, 'global');
}
//merge arrays
$merge_array = array_merge($db_barcodes, $product_barcode);
function array_dup($ar)
{
return array_unique(array_diff_assoc($ar, array_unique($ar)));
}
$result = array_dup($merge_array);
return current($result);
}
public function getBarcodes($user_id, $type)
{
if ($type === 'local') {
$result = DB::select('SELECT products FROM vendor_pricelist WHERE user_id = ?', [$user_id]);
}
if ($type === 'global') {
$result = DB::select('SELECT products FROM vendor_pricelist WHERE user_id != ?', [$user_id]);
}
$count_results = count($result);
$temp = [];
$temp_2 = [];
for ($x = 0; $x < $count_results; $x++) {
array_push($temp, json_decode($result[$x]->products));
}
$x = 0;
while ($x < $count_results) {
foreach ($temp[$x] as $value) {
array_push($temp_2, $value[2]);
}
$x++;
}
$result = $temp_2;
return $result;
}