CasperSecurity

Current Path : /var/www/orientalss.com/app/Http/Livewire/Tendermanagement/
Upload File :
Current File : /var/www/orientalss.com/app/Http/Livewire/Tendermanagement/WorkOrderLivewire.php

<?php

namespace App\Http\Livewire\Tendermanagement;

use App\Models\WorkOrdersBilling;
use Illuminate\Support\Facades\Auth;
use Livewire\Component;
use App\Exports\WorkOrdersExport;
use Maatwebsite\Excel\Facades\Excel;
use Livewire\WithPagination;
use Livewire\WithFileUploads;
use App\Models\CreateTender;
use App\Models\Client;
use App\Models\WorkOrders;

class WorkOrderLivewire extends Component
{
    use WithPagination;
    use WithFileUploads;
    protected $paginationTheme = 'bootstrap';
    public $page_names = "Manage Work Orders";
    public $page_name = "Work Order";

    public $search;
    public $perPage = 10;
    public $orderBy = 'id';
    public $orderAsc = '1';
    public $work_order_no, $work_order_date, $client_id, $tender_id, $work_order_closing_date, $renewal_required, $billing_cycle, $wo_copy_path, $status, $created_by, $modified_by;
    public $itemName = [], $itemQuantity = [], $itemRate = [], $itemTax = [];

    public $modelid, $itemCount = 0;
    public $showmodal = false;

    public $successmsg = "The workorder data has been saved successfully.";
    public $updatemsg = "The workorder data has been updated successfully.";
    public $deletemsg = "The workorder data has been deleted successfully.";
    public $duplicateerrormsg = "Sorry !!! Employee Type name has already exists in our database. Please Try Another Name";
    public $errormsg = "Sorry !!! Something went wrong. Please Try Again.";

    public $rules = [
        'work_order_no' => 'required|max:255',
        'work_order_date' => 'required|max:255',
        'client_id' => 'required|max:255',
        'tender_id' => 'required|max:255',
        'work_order_closing_date' => 'required',
        'renewal_required' => 'required|max:255',
        'billing_cycle' => 'required|max:255',
        //'wo_copy_path' => 'required|max:255',
    ];

    public $updatedrules = [
        'work_order_no' => 'required|max:255',
        'work_order_date' => 'required|max:255',
        'client_id' => 'required|max:255',
        'tender_id' => 'required|max:255',
        'work_order_closing_date' => 'required',
        'renewal_required' => 'required|max:255',
        'billing_cycle' => 'required|max:255',
       // 'wo_copy_path' => 'required|max:255',
    ];

    public $messages = [
        'work_order_no.required' => 'This field is required',
        'work_order_date.required' => 'This field is required',
        'client_id.required' => 'This field is required',
        'tender_id.required' => 'This field is required',
        'work_order_closing_date.required' => 'This field is required',
        'renewal_required.required' => 'This field is required',
        'billing_cycle.required' => 'This field is required',
       // 'wo_copy_path.required' => 'This field is required',

    ];

    protected $listeners = ['delete'];


    public function updatingSearch()
    {
        $this->resetPage();
    }

    public function showmodalclick()
    {
        $this->resetValidation();
        $this->showmodal = true;
        //$this->dispatchBrowserEvent('livewire:load');
    }

    public function closemodalclick()
    {
        $this->resetValidation();
        $this->showmodal = false;
    }

    public function updateclick($id)
    {
        $this->modelid = $id;
        $this->loadData($this->modelid);
        $this->showmodal = true;
    }

    public function deleteclick($id)
    {
        $this->modelid = $id;
        $this->dispatchBrowserEvent('confirmdelete', [
            'message' => 'Are you sure want to delete this data ?',
            'funcname' => 'delete'
        ]);
    }


    public function workorder_details()
    {
        return Excel::download(new WorkOrdersExport , 'work_orders.xlsx');
    }

    public function cleanVar()
    {
        $this->modelid = null;
        $this->work_order_no = null;
        $this->client_id = null;
        $this->tender_id = null;
        $this->work_order_closing_date = null;
        $this->renewal_required = null;
        $this->billing_cycle = null;
        $this->wo_copy_path = null;
        $this->itemCount = 0;
        $this->itemName = [];
        $this->itemQuantity = [];
        $this->itemRate = [];
        $this->itemTax = [];
        $this->status = null;
        $this->showmodal = false;
    }

    public function loadData($id)
    {
        $response = WorkOrders::find($id);
        if ($response) {
            $this->work_order_no = $response['work_order_no'];
            $this->client_id = $response['client_id'];
            $this->tender_id = $response['tender_id'];
            $this->work_order_date = $response['work_order_date'];
            $this->work_order_closing_date = $response['work_order_closing_date'];
            $this->renewal_required = $response['renewal_required'];
            $this->billing_cycle = $response['billing_cycle'];
            $this->wo_copy_path = $response['wo_copy_path'];
            $this->status = $response['status'];
        }
        if ($response->id) {
            $workOderBilling = WorkOrdersBilling::where('work_order_id', $response->id)->get();
            if (!empty($workOderBilling)) {
                foreach ($workOderBilling as $key => $item) {
                    $this->itemName[$key] = $item->item_name;
                    $this->itemQuantity[$key] = $item->item_quantity;
                    $this->itemRate[$key] = $item->item_rate;
                    $this->itemTax[$key] = $item->item_tax;
                    $this->itemCount += 1;
                }
                $this->itemCount = sizeof($this->itemName) - 1;
            }
        }
    }

    public function updatedTenderId($value){
        $res=CreateTender::where('id',$value)->first();
        $this->client_id=$res->client_id;
    }

    public function modelData()
    {
        if ($this->wo_copy_path != null && $this->wo_copy_path instanceof \Illuminate\Http\UploadedFile) {
            $this->wo_copy_path = $this->wo_copy_path->store('work_order');
        }
        else{
            $this->wo_copy_path=null;
        }

        $res = WorkOrders::where('id', $this->modelid)->first();
        if ($res) {
            $data = [
                'work_order_no' => $this->work_order_no,
                'work_order_date' => $this->work_order_date,
                'client_id' => $this->client_id,
                'tender_id' => $this->tender_id,
                'work_order_closing_date' => $this->work_order_closing_date,
                'renewal_required' => $this->renewal_required,
                'billing_cycle' => $this->billing_cycle,
                'wo_copy_path' => $this->wo_copy_path,
                'status' => $this->status,
                'modified_by' => Auth::user()->id,
            ];
        } else {

            $data = [
                'work_order_no' => $this->work_order_no,
                'work_order_date' => $this->work_order_date,
                'client_id' => $this->client_id,
                'tender_id' => $this->tender_id,
                'work_order_closing_date' => $this->work_order_closing_date,
                'renewal_required' => $this->renewal_required,
                'billing_cycle' => $this->billing_cycle,
                'wo_copy_path' => $this->wo_copy_path,
                'created_by' => Auth::user()->id,
            ];
        }

        return $data;
    }

    public function save()
    {
        $this->validate($this->rules, $this->messages);
        if (sizeof($this->itemName) > 0) {
            $response = WorkOrders::create($this->modelData());
            if ($response) {
                $workOrderId = $response->id;
                if (!empty($this->itemName) && !empty($this->itemQuantity) && !empty($this->itemRate) && !empty($this->itemTax)) {
                    $itemArray = [];
                    foreach ($this->itemName as $key => $name) {
                        $itemArray[] = [
                            'work_order_id' => $workOrderId,
                            'item_name' => $this->itemName[$key],
                            'item_quantity' => $this->itemQuantity[$key],
                            'item_rate' => $this->itemRate[$key],
                            'item_tax' => $this->itemTax[$key],
                        ];
                    }

                    $workOrderBilling = WorkOrdersBilling::insert($itemArray);
                }
                $this->cleanVar();
                $this->dispatchBrowserEvent('closeOffCanvas');
                $this->dispatchBrowserEvent('showsuccessmsg', [
                    'type' => 'success',
                    'message' => $this->successmsg
                ]);
            } else {
                $this->dispatchBrowserEvent('showsuccessmsg', [
                    'type' => 'error',
                    'message' => $this->errormsg
                ]);
            }
        }
        else {
            $response = WorkOrders::create($this->modelData());
            if($response){
                $this->cleanVar();
                $this->dispatchBrowserEvent('closeOffCanvas');
                $this->dispatchBrowserEvent('showsuccessmsg', [
                    'type' => 'success',
                    'message' => $this->successmsg
                ]);
            }
            else {
                $this->dispatchBrowserEvent('showsuccessmsg', [
                    'type' => 'error',
                    'message' => $this->errormsg
                ]);
            }

        }

    }

    public function update()
    {
        $this->validate($this->updatedrules, $this->messages);
        if (sizeof($this->itemName) > 0) {
            $response = WorkOrders::find($this->modelid);
            if ($response) {
                $response->update($this->modelData());
                if ($response) {
                    $workOrderId = $response->id;
                    $existingItems = WorkOrdersBilling::where('work_order_id', $workOrderId)->get();
                    if (!$existingItems->isEmpty()) {
                        foreach ($existingItems as $item) {
                            $item->delete();
                        }
                    }
                    if (!empty($this->itemName) && !empty($this->itemQuantity) && !empty($this->itemRate) && !empty($this->itemTax)) {
                        $itemArray = [];
                        foreach ($this->itemName as $key => $name) {
                            $itemArray[] = [
                                'work_order_id' => $workOrderId,
                                'item_name' => $this->itemName[$key],
                                'item_quantity' => $this->itemQuantity[$key],
                                'item_rate' => $this->itemRate[$key],
                                'item_tax' => $this->itemTax[$key],
                            ];
                        }
                        WorkOrdersBilling::insert($itemArray);
                    }
                    $this->cleanVar();
                    $this->dispatchBrowserEvent('closeOffCanvas');
                    $this->dispatchBrowserEvent('showsuccessmsg', [
                        'type' => 'success',
                        'message' => $this->updatemsg
                    ]);
                } else {
                    $this->dispatchBrowserEvent('showsuccessmsg', [
                        'type' => 'error',
                        'message' => $this->errormsg
                    ]);
                }
            }
        } else {
            $this->dispatchBrowserEvent('showsuccessmsg', [
                'type' => 'error',
                'message' => 'Enter atleast one workorder item'
            ]);
        }

    }

    public function delete()
    {
        $response = WorkOrders::find($this->modelid);
        if ($response) {
            if ($response->delete()) {
                $this->cleanVar();
                $this->dispatchBrowserEvent('showsuccessmsg', [
                    'type' => 'success',
                    'message' => $this->deletemsg
                ]);
            } else {
                $this->dispatchBrowserEvent('showsuccessmsg', [
                    'type' => 'error',
                    'message' => $this->errormsg
                ]);
            }
        }
    }

    public function addItem()
    {
        $prevrules = [];
        $prevmessages = [];

        for ($i = 0; $i <= $this->itemCount; $i++) {
            $prevrules["itemName.$i"] = 'required';
            $prevrules["itemQuantity.$i"] = 'required|numeric';
            $prevrules["itemRate.$i"] = 'required|numeric';
            $prevrules["itemTax.$i"] = 'required|numeric';

            $prevmessages += [
                "itemName.$i.required" => 'This field is required.',
                "itemQuantity.$i.required" => 'This field is required.',
                "itemQuantity.$i.numeric" => 'The quantity must be a number.',
                "itemRate.$i.required" => 'This field is required.',
                "itemRate.$i.numeric" => 'The rate must be a number.',
                "itemTax.$i.required" => 'This field is required.',
                "itemTax.$i.numeric" => 'The tax must be a number.',
            ];
        }

        $this->validate($prevrules, $prevmessages);
        $this->itemCount++;
    }

    private function reorderArray(&...$arrays)
    {
        foreach ($arrays as &$array) {
            $array = array_values($array);
        }
    }

    public function removeItem($key)
    {
        unset($this->itemName[$key], $this->itemQuantity[$key], $this->itemRate[$key], $this->itemTax[$key]);
        $this->reorderArray($this->itemName, $this->itemQuantity, $this->itemRate, $this->itemTax);
        $this->itemCount--;
    }


    public function read()
    {
        $workorder = WorkOrders::search($this->search)
            ->orderBy($this->orderBy, $this->orderAsc ? 'asc' : 'desc')->paginate($this->perPage);
        return $workorder;
    }

    public function render()
    {
        $tenders = CreateTender::where('tender_status', 7)->get();

        $clients = Client::where('status', 1)->get();

        $work_orders = $this->read();
        return view('livewire.tendermanagement.work-order-livewire', compact('work_orders', 'clients', 'tenders'));
    }
}
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY