/home/brandsfa/public_html/app/Http/Controllers/Admin/CategoryShippingCostController.php
<?php

namespace App\Http\Controllers\Admin;

use App\Contracts\Repositories\CategoryShippingCostRepositoryInterface;
use App\Http\Controllers\BaseController;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Brian2694\Toastr\Facades\Toastr;

class CategoryShippingCostController extends BaseController
{
    public function __construct(
        private readonly CategoryShippingCostRepositoryInterface $categoryShippingCostRepo,
    )
    {
    }

    /**
     * @param Request|null $request
     * @param string|null $type
     * @return View|RedirectResponse Index function is the starting point of a controller
     * Index function is the starting point of a controller
     */
    public function index(Request|null $request, string $type = null): View|RedirectResponse
    {
        return $this->add($request);
    }

    public function add(Request $request): RedirectResponse
    {
        if (isset($request->ids)) {
            foreach ($request->ids as $key => $id) {
                $this->categoryShippingCostRepo->updateOrInsert( params:['seller_id' => 0, 'category_id' => $request['category_ids'][$key]], data: [
                    'cost' => usdToDefaultCurrency(amount: $request['cost'][$key]),
                    'multiply_qty' => isset($request->multiplyQTY) ? (in_array($id, $request->multiplyQTY) ? 1 : 0) : 0,
                    'updated_at' => now()
                ]);
            }
        }

        Toastr::success(translate('Category_cost_successfully_updated'));
        return back();
    }
}