![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/dceprojects.corals.io/Corals/modules/ProjectPlan/Import/ |
<?php namespace Corals\Modules\ProjectPlan\Import; use Corals\Modules\ProjectPlan\Http\Requests\VendorRequest; use Corals\Modules\ProjectPlan\Models\Vendor; use Corals\Modules\ProjectPlan\Services\VendorService; use Corals\Modules\Utility\Models\Comment\Comment; class VendorImporter implements \Corals\Modules\ProjectPlan\Contracts\ModelImportContract { public function getValidationRules(): array { return [ 'name' => 'required|max:191', 'phone' => 'nullable|required_without:email', 'email' => 'nullable|email|required_without:phone', 'address' => 'nullable', 'address2' => 'nullable', 'city' => 'nullable', 'state' => 'nullable', 'zip' => 'nullable', 'country' => 'nullable', 'notes' => 'nullable', 'types' => 'required|array', 'types.*' => 'exists:utility_list_of_values,code', ]; } public function getData($record): array { $address = []; $address['address_1'] = data_get($record, 'address'); $address['address_2'] = data_get($record, 'address2'); $address['city'] = data_get($record, 'city'); $address['state'] = data_get($record, 'state'); $address['zip'] = data_get($record, 'zip'); $address['country'] = data_get($record, 'country'); $phone = data_get($record, 'phone',''); if ($phone){ $phone = getFormattedPhoneNumber($phone); } return [ 'name' => data_get($record, 'name'), 'email' => data_get($record, 'email'), 'phone' => $phone, 'address' => $address, 'notes' => explode('|', data_get($record, 'notes')), 'types' => explode('|', data_get($record, 'types')), ]; } public function saveData($data): void { $phone = $data['phone']; $email = $data['email']; $vendorModel = Vendor::query() ->when($phone && !$email,function ($queryP) use ($phone){ $queryP->where('phone', $phone); }) ->when($email && !$phone ,function ($queryE) use ($email){ $queryE->where('email', $email); }) ->when($email && $phone ,function ($queryE) use ($email,$phone){ $queryE->where('email', $email)->orWhere('phone',$phone); }) ->first(); $userId = $data['userId']; unset($data['userId']); $vendorRequest = new VendorRequest(); $vendorRequest->replace($data); $vendorService = new VendorService(); if ($vendorModel) { $vendor = $vendorService->update($vendorRequest, $vendorModel); } else { $vendor = $vendorService->store($vendorRequest, Vendor::class); } $notes = $data['notes']; $comments = []; foreach ($notes as $note) { $comments[] = new Comment(['body' => $note, 'author_type' => 'User', 'author_id' => $userId]); } $vendor->comments()->saveMany($comments); } }