service = $service; /* need debugger $this->logger = Log::build([ 'driver' => 'single', 'path' => storage_path('logs/debug.log'), ]); */ } private function convertWeekProductSelectArrayToDays($Order, $indexed = 'weekDayPointer') { $orderItemsArray = (array) json_decode($Order->productSelected, true); $daysArray = []; foreach ($orderItemsArray as $productIndex => $productArray) { foreach ($productArray as $dayIndex => $value) { $daysArray[$dayIndex][$productIndex] = $value; } } if ($indexed == 'weekDayDate') { $ret = []; foreach ($daysArray as $dayNum => $dayData) { $deliveryDate = Carbon::parse($Order->deliveryDate); // var_export($dayNum-1); $deliveryDate->addDays($dayNum - 1); $ret[$deliveryDate->format('Y-m-d')] = $dayData; } } else { $ret = $daysArray; } ksort($ret); return $ret; } /** * Display a listing of the resource. */ public function index(): View|Response|JsonResponse { // test mode /* $productRepo=new ProductRepository(); $productsGroupIds=$productRepo->getSupplierProductGroupsIdFromPriceList(7,'2021-11-19',37); $ProductGroups=new ProductGroup(); //dd($ProductGroups->allToTreeArray()); dd($ProductGroups->nodesWithParentToTree($productsGroupIds)); */ /* $productRepo=new ProductRepository(); $products=$productRepo->getSupplierProductFromPriceList(7,'2021-11-19',37); dd($products);*/ // debug('itt'.__LINE__); if (\request()->input('t') == 1) { if (\request()->input('w') == 1) { $testOrderId = 16497; // heti $testOrderId = 16467; // heti $testOrderId = 16507; // heti // $testOrderId=16512; //heti } else { $testOrderId = 12140; // napi $testOrderId = 16506; // napi $testOrderId = 16571; // napi } /******** create Excel ***********/ return $this->testExcelCreate($testOrderId); /******** invoiceView test ***********/ return $this->testInvoiceView($testOrderId); return response()->noContent(); /******** set session order data***********/ return $this->updateSend(\request(), $testOrderId); return response()->noContent(); echo '
';
            $this->updateSend(new Request, $testOrderId);

            $testOrderId = 62;

            /******** create Excel ***********/
            return $this->testExcelCreate($testOrderId);

            /******** create Pdf from oder ***********/
            return $this->testPdfCreate($testOrderId);

            /******** archiveOrder ***********/
            return $this->archiveOrder(null, $testOrderId);

            /******** Eamil send ***********/
            return $this->testSendEmail($testOrderId);

            /******** invoiceView test ***********/
            return $this->testInvoiceView($testOrderId);

            return response()->noContent();

            /******** getgumanId ***********/
            var_dump($this->getOrderHumanId($testOrderId));

            return response()->noContent();

            /******** createSupplierOrderNumber ***********/
            dd($this->createSupplierOrderNumber(244));

            return response()->noContent();

            /******** OrderHumanId test data***********/
            var_dump($this->getOrderHumanId(null, 1212, 'JANER', '2021-11-18', 'HAN'));
            var_dump($this->getOrderHumanId(1));

            return response()->noContent();

            /******** set session order data***********/
            return $this->testGetSessionData();

            /******** set session order data***********/
            return $this->testSetSessionData();

            debug($this->testMode);
            $orders = Order::where('profit_center_id', 1)->where('orderStatus', '!=', 'sent')->orderBY('deliveryDate')->get();
            if (count($orders->toArray()) > 0) {
                dd($orders->toArray());
            }
            dd('vege itt L:'.__LINE__);
        }

        if (! \request()->input('force')) {
            // dd(auth()->user()->id);
            $profitCenterId = auth()->user()->profitCenters()->first()->id;
            $orders = Order::with('supplier')->where('profit_center_id', $profitCenterId)->whereNotIn('orderStatus', ['sent', 'confirmed', 'archived'])->orderBY('deliveryDate')->get();
            debug($orders);
            if (count($orders->toArray()) > 0) {
                /*            $orders=$orders->sortBy(function($value,$key){
                                if(!$value->deliveryDate){
                                    return '9999-12-31';
                                }
                                return ($value->deliveryDate);
                            });*/
                // dd($orders->toArray());

                foreach ($orders as $order) {
                    $today = Carbon::parse(\Carbon\Carbon::now()->format('Y-m-d'));
                    $deliveryDate = \Carbon\Carbon::parse($order->deliveryDate);
                    // $order->a=$today->toString();
                    // $order->aa=\Carbon\Carbon::parse($order->deliveryDate)->toString();
                    $order->diffInHours = \Carbon\Carbon::parse($order->deliveryDate)->diffInHours($today);
                    $order->diffInDays = \Carbon\Carbon::parse($order->deliveryDate)->diffInDays($today);
                    $order->diffForHumans = \Carbon\Carbon::parse($order->deliveryDate)->diffForHumans($today);

                    if (! $order->deliveryDate) {
                        $order->diffWarningLevel = 99;

                        continue;
                    }
                    if ($order->deliveryDate < $today || $order->deliveryDate == $today) {
                        $order->diffWarningLevel = 0;

                        continue;
                    }
                    if ($order->diffInDays >= 1 && $order->diffInDays <= 3) {
                        $order->diffWarningLevel = 1;

                        continue;
                    }
                    $order->diffWarningLevel = 98;
                }
                $orders = $orders->sortBy(['diffWarningLevel', 'deliveryDate']);
                // dd($orders->toArray());

                return view('modules.order.indexSelect')->with([
                    'testMode' => $this->testMode,
                    'orders' => $orders,

                ]
                );
            }
            // dd(\request()->input('force'));
        }

        return view('modules.order.indexStepper')->with('testMode', $this->testMode);
    }

    private function testGetSessionData(): void
    {
        echo '
';
        echo 'testGetSessionData';
        echo 'session_status():'.var_export(session_status(), true).PHP_EOL;
        echo "var_export(session()->get('orderData'),true):".PHP_EOL.var_export(session()->get('orderData'), true).PHP_EOL;
        echo 'var_export(session()->all(),true):'.PHP_EOL.var_export(session()->all(), true).PHP_EOL;

    }

    private function testSetSessionData(): void
    {
        echo '
';
        echo 'testSetSessionData';
        $this->testGetSessionData();
        /******** set session order data***********/
        $orderDataForSession = [
            'productSelected' => [
                34 => '2',
                116 => '1',
            ],
            'supplierId' => '7',
            'contactName' => 'Contact Name',
            'note' => 'Note',
            'type' => 'daily',
            'deliveryDate' => '2021-11-15',
            'deliveryAddress' => '12',
        ];
        // print ":"..PHP_EOL;
        session()->put('orderData', $orderDataForSession);
        session()->save();
        echo "var_export(session()->get('orderData'),true):".PHP_EOL.var_export(session()->get('orderData'), true).PHP_EOL;
        \response();

        /************************/

    }

    private function testPdfCreate($orderId = null)
    {
        if (! $orderId) {
            $orderId = 1;
        }
        if (! $Order = Order::find($orderId)) {
            return \response()->json(['success' => false], 500);
        }
        $orderData = $this->getOrderData($Order->id);
        $pdf = PDF::loadView('modules.order.invoiceEmail', $orderData);

        return $pdf->stream();

        $attachmentFile = new Attachment;
        $ret = $attachmentFile->addStreamedFile($pdf->output());

        // $orderData=$this->getOrderData(null,$Order);
        // $ret=$attachmentFile->addStreamedFile(Excel::raw(new ExportOrderInvoiceExcel($orderData), \Maatwebsite\Excel\Excel::XLSX)) ;

        // $ret=$attachmentFile->addStreamedFile(Excel::raw(new ExportOrderInvoiceExcel($orderData), \Maatwebsite\Excel\Excel::XLSX)) ;
        /*
         * XLS formatumot tesztelni
         */
        dd($ret);

        return $pdf->stream();

    }

    private function testPdfCreateBlank()
    {
        \Debugbar::disable();

        $HTMLStr = '
 
     
 
 
     

árvíztűrő tükörfúrógép

'; $HTMLStr = '

árvíztűrő tükörfúrógép

'; // return \response($HTMLStr); $pdf = PDF::loadHTML($HTMLStr); // $pdf->loadHTML('

proba

'); return $pdf->stream('probacska.pdf'); } private function testExcelCreate($orderId = null) { $orderData = $this->getOrderData($orderId); $orderData['feedBackIdLinkParam'] = base64_encode($orderData['feedBackId']); $orderData['sentTime'] = Carbon::now()->toDateTimeString(); $orderData['noPrintButton'] = true; // return view('modules.order.excelExport')->with($orderData); return Excel::download(new ExportOrderInvoiceExcel($orderData), 'invoices'.time().'.xlsx'); // dd($orderData); return view('modules.order.excelExport')->with($orderData); dd($orderData['deliveryDate'], formatterDate($orderData['deliveryDate'])); dd(formatterDate($orderData['deliveryDate'])); } private function testSendEmail($orderId = null) { if (! $orderId) { $orderId = 1; } if (! $Order = Order::find($orderId)) { return \response()->json(['success' => false], 500); } $orderData = $this->getOrderData($orderId); $orderData['feedBackIdLinkParam'] = base64_encode($orderData['feedBackId']); // \Debugbar::disable(); // return view('modules.order.invoiceEmail')->with($orderData); $orderData['noPrintButton'] = true; $HTMLInvoice = view('modules.order.invoice')->with($orderData )->render(); $profitCenterName = 'Hankook - Delirest Étterem'; $attach = null; $fileType = 'pdf'; $fileType = 'excel'; $fileName = preg_replace('/[^a-zA-Z0-9\-\._]/', '_', $orderData['humanId']); if ($fileType == 'pdf') { $pdf = PDF::loadView('modules.order.invoiceEmail', $orderData); $fileNameWithExt = $fileName.'.pdf'; $attach = $pdf->output(); } elseif ($fileType == 'excel') { $fileNameWithExt = $fileName.'.xlsx'; /* $fileExcel=Excel::download(new ExportOrderInvoiceExcel($orderData), $fileNameWithExt); $attach=$fileExcel->getFile(); */ $attach = Excel::raw(new ExportOrderInvoiceExcel($orderData), \Maatwebsite\Excel\Excel::XLSX); } $send = \Mail::send('email.order', [ 'orderHTMLInvoice' => $HTMLInvoice, 'orderData' => $orderData, 'profitCenterName' => $profitCenterName, ], function ($m) use ($orderData, $attach, $fileNameWithExt) { $m->subject('Delirest - Hankook - '.$orderData['humanId']); // $m->to('beszerzes@eurest.hu'); $m->to(config('mail.MailToOrderAddress')); if (config('mail.MailToOrderAddress') != 'city@e98.hu') { $m->bcc('city@e98.hu'); } // $m->attach($attach,['as'=>$fileNameWithExt]); $m->attachData($attach, $fileNameWithExt); }); debug($send); return \response('okes'); return $pdf->stream($fileName); return \response($HTMLInvoice); } private function testInvoiceView($orderId = null) { if (! $orderId) { $orderId = 1; } if (! $Order = Order::find($orderId)) { return \response()->json(['success' => false], 500); } $orderData = $this->getOrderData($orderId); // print "
";var_dump($orderData);print "
"; /* $HTMLInvoice=view('modules.order.invoice')->with($orderData )->render();*/ // $orderData['noPrintButton']=true; return view('modules.order.invoice')->with($orderData ); } private function createSupplier(Request $request) { // select('name')-> $profitCenterId = auth()->user()->profitCenters->first()->id; $accessSupplier = ProfitCenter::with('suppliers')->find($profitCenterId)->suppliers->pluck('id')->toArray(); // $suppliers=Supplier::all()->toArray(); $repo = new SupplierRepository; $suppliers = $repo->allWithRelations(); $suppliers = array_filter($suppliers, function ($item) use ($accessSupplier) { if (in_array($item['id'], $accessSupplier) && $item['canSeeInOrder'] == 1) { return true; } return false; }); return view('modules.order.supplier')->with([ 'suppliers' => $suppliers, ]); } private ?ProfitCenterService $ServiceProfitCenter = null; private function initProfitCenterService() { if (! $this->ServiceProfitCenter) { $this->ServiceProfitCenter = App::make(ProfitCenterService::class); } return $this->ServiceProfitCenter; } private function getProfitCenterAddress($ProfitCenter = null) { if (! $ProfitCenter) { $ProfitCenter = $this->initProfitCenterService()->getWithAllRelations(auth()->user()->profitCenters()->first()->id); } if ($ProfitCenter['addressEqual']) { $ProfitCenterAddress = $ProfitCenter['fullAddress']; } else { $address = $ProfitCenter['address'][0]; $ProfitCenterAddress = "{$address['postCode']} {$address['city']} {$address['street']}"; } return $ProfitCenterAddress; } private function createParameter(Request $request) { // $this->initProfitCenterService(); // kiveheto innen??? vagy nem mert kell a multiaddresshez if (! $Order = Order::with('supplier')->find($request->get('id'))) { return false; } $supplierNote = null; if ($Order->supplier->note) { $supplierNote = $Order->supplier->note; } $ProfitCenter = $this->initProfitCenterService()->getWithAllRelations(auth()->user()->profitCenters()->first()->id); $oneAddress = true; $ProfitCenterAddress = ''; if ($ProfitCenter['multiAddress']) { $oneAddress = false; $ProfitCenterAddress = []; foreach ($ProfitCenter['address'] as $address) { $ProfitCenterAddress[] = [ 'id' => $address['id'], 'address' => $address['name'].' - '.$address['fullAddress'], ]; } } else { $ProfitCenterAddress = $this->getProfitCenterAddress($ProfitCenter); } $hasCustomNotificationEmail = false; $CustomNotificationEmailData = []; $Supplier = Supplier::with('contactOrderMail')->find($Order->supplier->id); if (count($Supplier->contactOrderMail->toArray()) > 0) { $hasCustomNotificationEmail = true; $CustomNotificationEmailData = $Supplier->contactOrderMail->toArray(); } return view('modules.order.parameter')->with([ // 'supplier'=>$ProfitCenter[''], 'oneAddress' => $oneAddress, 'hasCustomNotificationEmail' => $hasCustomNotificationEmail, 'CustomNotificationEmailData' => $CustomNotificationEmailData, 'supplierNote' => $supplierNote, 'profitCenterAddress' => $ProfitCenterAddress, ]); } private function createProductSelect(Request $request) { if (! $Order = Order::with('supplier', 'profitCenter')->find($request->get('id'))) { return false; } $productRepo = new ProductRepository; $productsGroupIds = $productRepo->getSupplierProductGroupsIdFromPriceList( $Order->supplier_id, $Order->deliveryDate); debug($productsGroupIds); $productGroupArray = []; if ($productsGroupIds && count($productsGroupIds) > 0) { $ProductGroups = new ProductGroup; $productGroupArray = $ProductGroups->nodesWithParentToTree($productsGroupIds); } return view('modules.order.productSelect')->with('productGroup', $productGroupArray); $ProductGroup = new ProductGroup; return view('modules.order.productSelect')->with('productGroup', $ProductGroup->allToTreeArray()); } private function getOrderItemsProductIds(Order $Order) { $orderItemsArray = (array) json_decode($Order->productSelected); return array_keys($orderItemsArray); } private function getOrderItemsFromOrderData(?int $orderId = null, ?Order $Order = null) { if ($orderId) { $Order = Order::find($orderId); } if (! $Order) { return null; } $items = []; if ($Order->productSelected) { $productRepo = new ProductRepository; $productRepo->setNeedPrice(true); $productRepo->setDeliveryDate($Order->deliveryDate); $orderItemsArray = (array) json_decode($Order->productSelected, true); // $items=$productRepo->getWithRelations(array_keys($orderItemsArray)); $items = $productRepo->getWithRelations($this->getOrderItemsProductIds($Order)); if ($Order->productComment) { $orderItemsCommentArray = (array) json_decode($Order->productComment); } else { $orderItemsCommentArray = []; } if ($Order->orderType == 'daily') { foreach ($items as $key => $product) { $quantity = $orderItemsArray[$product['id']]; $quantity = str_replace(',', '.', $quantity); // debug($orderItemsArray[$product['id']],floatval($quantity)); if ($quantity > 0.01 || $quantity < 0.01) { // $price=$product['last_price'][0]['pivot']['price']; // $price=$product->price($Order->deliveryDate); $items[$key]['quantity'] = $quantity; // $items[$key]['price']=$price; // $items[$key]['amount']=$quantity*$product['unitMultiplier']* $price; $items[$key]['amount'] = floatval($quantity) * $product['unitMultiplier'] * $product['price']; // unset($items[$key]['last_price']); // debug($product['id']); // debug($orderItemsCommentArray[$key]); if (isset($orderItemsCommentArray[$product['id']])) { $items[$key]['comment'] = $orderItemsCommentArray[$product['id']]; } else { // $items[$key]['comment'] =''; } } else { unset($items[$key]); } } } elseif ($Order->orderType == 'weekly') { // print "
";
                $weekDayItems = [];
                $deliveryDate = Carbon::parse($Order->deliveryDate);
                for ($i = 1; $i <= 7; $i++) {
                    $weekDayItem = [];
                    $weekDayItem['date'] = formatterDate($deliveryDate);
                    $weekDayItem['sumPrice'] = 0;
                    $weekDayItem['items'] = [];
                    foreach ($items as $key => $product) {
                        // dd([$orderItemsArray,$product['id'],$orderItemsArray[$product['id']][$i]]);
                        if (isset($orderItemsArray[$product['id']][$i])) {
                            // var_export([$key,$product['name']]);
                            $quantity = $orderItemsArray[$product['id']][$i];
                            $currentItemData = [
                                'quantity' => $quantity,
                                'amount' => floatval($quantity) * $product['unitMultiplier'] * $product['price'],
                                'name' => $product['name'],
                                'id' => $product['id'],
                            ];
                            if (isset($orderItemsCommentArray[$product['id']])) {
                                $currentItemData['comment'] = $orderItemsCommentArray[$product['id']];
                            }

                            $weekDayItem['items'][] = $currentItemData;
                            $weekDayItem['sumPrice'] += $currentItemData['amount'];
                        }
                    }
                    if (count($weekDayItem['items']) > 0) {
                        $weekDayItems[$i] = $weekDayItem;
                    }
                    $deliveryDate->addDays(1);
                }
                $products = $items;
                $items = [];
                foreach ($products as $product) {
                    $items['products'][$product['id']] = $product;
                }
                $items['weekDayItems'] = $weekDayItems;
                /*
                var_export($items['weekDayItems']);
                dd($items['weekDayItems']);
                dd($items);
                */
            }

        }

        return $items;
    }

    /*
     * @todo: deprecate ki kell vezetni, csak bemutatohoz hasznaltuk
     */
    private function getParsedOrderDataFromSession()
    {
        $orderData = session()->get('orderData');
        if (! $orderData) {
            $orderData = [
                'contactName' => '-',
                'note' => '',
                'deliveryDate' => '',
                'orderIdHuman' => '',
                'sumPrice' => 0,
                'items' => [],
                'productSelected' => [],
                'created_by' => Carbon::today(),
            ];

            return $orderData;
        }
        /*
        print "
";
        var_dump($orderData);
        exit();

        */
        $orderData['created_by'] = \Carbon\Carbon::now();
        $productRepo = new ProductRepository;
        $productRepo->setRelation(
            'LastPrice');

        // var_dump(array_keys($orderData['productSelected']);
        $products = [];
        if (isset($orderData['productSelected']) && is_array($orderData['productSelected'])) {
            $products = $productRepo->getWithRelations(array_keys($orderData['productSelected']));
            $orderData['sumPrice'] = 0;
            foreach ($products as $key => $product) {
                $quantity = $orderData['productSelected'][$product['id']];
                if ($quantity > 0) {
                    $price = $product['last_price'][0]['pivot']['price'];

                    $products[$key]['quantity'] = $quantity;
                    $products[$key]['price'] = $price;
                    $products[$key]['amount'] = $quantity * $product['unitMultiplier'] * $price;
                    $orderData['sumPrice'] += $products[$key]['amount'];
                    unset($products[$key]['last_price']);
                } else {
                    unset($products[$key]);
                }

            }
        }

        /*            print "
";
                    var_dump($products[0]);
                    print "
";*/ $orderData['items'] = $products; return $orderData; } private function createSupplierOrderNumberOLD(int $orderId): ?array { $ret = []; if ($Order = Order::find($orderId)) { if ($o = OrderNumber::where('order_id', $orderId)->get()->first()) { } else { $o = OrderNumber::create([ 'year' => Carbon::createFromDate($Order->deliveryDate)->format('y'), 'supplier_id' => $Order->supplier_id, 'order_id' => $Order->id, ]); } $ret = $o->toArray(); } else { $ret = null; } return $ret; } private function createSupplierOrderNumber(int $orderId): ?array { $ret = []; if ($Order = Order::find($orderId)) { // dd($Order->toArray()); if ($o = OrderNumber::where('order_id', $orderId)->get()->first()) { } else { $orderYear = Carbon::createFromDate($Order->deliveryDate)->format('y'); $maxSupplierOrderNumber = OrderNumber::where('supplier_id', $Order->supplier_id) ->where('year', $orderYear) ->max('supplier_order_number'); $nextSupplierOrderNumber = $maxSupplierOrderNumber ? ($maxSupplierOrderNumber + 1) : 1; LOG::info(__FUNCTION__." OrderId: $orderId SupplierId:".$Order->supplier_id." maxSupplierOrderNumber> $maxSupplierOrderNumber nextSupplierOrderNumber>$nextSupplierOrderNumber"); $maxRetry = 5; while ($maxRetry > 0) { try { $o = OrderNumber::create([ 'supplier_order_number' => $nextSupplierOrderNumber, 'year' => $orderYear, 'supplier_id' => $Order->supplier_id, ]); $o->order_id = $orderId; $o->save(); break; } catch (\Exception $e) { LOG::error('Error creating OrderNumber for supplier:'.$Order->supplier_id.' - '.$e->getMessage()); $maxRetry--; $nextSupplierOrderNumber++; usleep(rand(400, 600)); } } if (! $o) { LOG::error('Error creating OrderNumber for supplier:'.$Order->supplier_id.' - maxRetry'); throw new \Exception('Error creating OrderNumber for supplier:'.$Order->supplier_id); return null; } } $ret = $o->toArray(); } else { $ret = null; } return $ret; } private function getOrderSumPrice(?int $orderId = null, ?Order $Order = null, ?array $itemsArray = null) { if ($orderId) { $Order = $Order->find($orderId); } if ($Order) { $itemsArray = $this->getOrderItemsFromOrderData(null, $Order); } $sumPrice = 0; if (is_array($itemsArray)) { foreach ($itemsArray as $item) { $sumPrice += $item['amount']; } } return $sumPrice; } public function getOrderData(?int $orderId = null, ?Order $Order = null): array { if (! $orderId) { $orderId = $Order->id; } if (! $Order = Order::with('supplier', 'profitCenter')->find($orderId)) { return false; } $orderData = $Order->toArray(); if ($Order->orderType == 'weekly') { $orderData['items'] = $this->getOrderItemsFromOrderData(null, $Order); if (is_array($orderData['items']['weekDayItems'])) { $orderData['sumPrice'] = 0; foreach ($orderData['items']['weekDayItems'] as $weekDayItem) { $orderData['sumPrice'] += $weekDayItem['sumPrice']; } } } else { $orderData['items'] = $this->getOrderItemsFromOrderData(null, $Order); $orderData['sumPrice'] = $this->getOrderSumPrice(null, null, $orderData['items']); } // dd($orderData); return $orderData; } private function getOrderStatus(int $orderId) { if ($Order = Order::find($orderId)) { return $Order->orderStatus; } return false; } private function updateStatus(int $orderId, string $status): bool { if ($Order = Order::find($orderId)) { $Order->orderStatus = $status; $Order->save(); return true; } return false; } private function updateStatusFromRequest(): bool { if (\request()->input('id')) { if ($Order = Order::find(\request())) { if (\request()->input('type') && in_array(\request()->input('type'), OrderStatusEnum::getValues()) ) { return $this->updateStatus(\request()->input('id'), \request()->input('type')); } } } return false; } private function createInvoice(Request $request) { // $orderData=$this->getParsedOrderDataFromSession(); // $orderData['humanId']=$this->getOrderHumanId($orderData['id']); // debug($request->all()); $orderData = []; if ($request->input('id')) { $orderData = $this->getOrderData($request->input('id')); } return view('modules.order.invoice', $orderData); } private function createSend(Request $request) { $orderData = []; if ($request->input('id')) { $orderData = $this->getOrderData($request->input('id')); } return view('modules.order.send', $orderData); } /** * Show the form for creating a new resource. */ public function create(Request $request): View|Response|JsonResponse { $functionName = 'create'.ucfirst($request->input('type')); if (method_exists($this, $functionName)) { if ($request->input('id')) { $orderStatus = $this->getOrderStatus($request->input('id')); if ($orderStatus && $orderStatus !== 'archived') { $this->updateStatusFromRequest(); } else { return \response()->json([], 400); } } $result = call_user_func([$this, $functionName], $request); if ($result === false) { return \response()->json([], 400); } return $result; } return \response()->json([], 400); } private function getOrderHumanId(?int $orderId = null, ?int $orderNum = null, ?string $supplierShortName = null, ?string $deliveryDate = null, ?string $profitCenterName = null, ?string $orderType = null, ?string $orderPostfix = null ): string { $year = ''; $orderTypeSign = [ 'weekly' => 'H', 'weeklyDay' => 'H', ]; if ($orderId) { $supplierShortName = ''; $profitCenterName = ''; $deliveryDate = ''; if ($Order = Order::find($orderId)) { if ($Order->orderNumber) { $orderNum = $Order->orderNumber->supplier_order_number; $year = $Order->orderNumber->year; } else { $deliveryDate = $Order->deliveryDate; } $supplierShortName = $Order->supplier->nameId; if ($Order->profitCenter) { $profitCenterName = $Order->profitCenter->hooreycaId; } $orderType = $Order->orderType; if ($Order->orderType == 'weekly') { $orderPostfix = $orderTypeSign[$Order->orderType]; } elseif (! is_null($Order->parent_id)) { /* * ez csak akkor lehet igaz ha közvetlen heti rendeléshez kapcsolodik * ha heti rendelés napjanak modositoja akkor mashogy kell kezelni!!! */ $orderPostfix = $orderTypeSign['weeklyDay']; } } } if ($deliveryDate) { $year = substr($deliveryDate, 2, 2); } $humanId = "$supplierShortName/$profitCenterName/$year/"; // 'JANER/HANKOK/21/' if ($orderNum) { $humanId .= \Str::padLeft($orderNum, 4, '0'); // 'JANER/HANKOK/21/'.sprintf('%04d',$orderNum); } if ($orderType) { if (isset($orderTypeSign[$orderType])) { $orderPostfix = $orderTypeSign[$orderType]; } } if (strlen($orderPostfix) > 0) { $humanId .= $orderPostfix; } return $humanId; } private function createOrder($supplierId, $parent_id = null, $orderType = null): Order { $Supplier = Supplier::find($supplierId); $Order = new Order; // debug(auth()->user()->profitCenters()->first()->id); $Order->profit_center_id = auth()->user()->profitCenters()->first()->id; $Order->supplier()->associate($Supplier); $Order->orderStatus = OrderStatusEnum::supplierSelect; if ($parent_id) { $Order->parent_id = $parent_id; } if ($orderType) { $Order->orderType = $orderType; } $Order->save(); return $Order; } private function storeSupplierSelect($request) { if (! $request->get('supplierId')) { return \response()->json('need Supplier', 400); } /* $Supplier=Supplier::find($request->get('supplierId')); $Order=new Order(); //debug(auth()->user()->profitCenters()->first()->id); $Order->profit_center_id=auth()->user()->profitCenters()->first()->id; $Order->supplier()->associate($Supplier); $Order->orderStatus=OrderStatusEnum::supplierSelect; $Order->save(); */ $Order = $this->createOrder($request->get('supplierId')); $orderData = $Order->toArray(); return \response()->json(['success' => true, 'data' => $orderData]); } /** * Store a newly created resource in storage. */ public function store(Request $request): Response|JsonResponse { debug($request->get('storeType')); if (strlen($request->input('storeType')) < 1) { return \response()->json([], 400); } $functionName = 'store'.ucfirst($request->input('storeType')); if (method_exists($this, $functionName)) { return call_user_func([$this, $functionName], $request); } return \response()->json([], 400); } /** * Display the specified resource. */ public function show(int $OrderId): Response|JsonResponse { return response()->noContent(); } /** * Show the form for editing the specified resource. */ public function edit(int $OrderId): View { $orderData = []; if ($Order = Order::find($OrderId)) { $orderData = $Order->toArray(); } $orderData['supplierId'] = $orderData['supplier_id']; if (! $orderData['productSelected']) { $orderData['productSelected'] = []; } else { // debug($orderData['productSelected']); $orderData['productSelected'] = json_decode($orderData['productSelected']); } if (! $orderData['productComment']) { $orderData['productComment'] = []; } else { // debug($orderData['productSelected']); $orderData['productComment'] = json_decode($orderData['productComment']); } unset($orderData['supplier_id']); $orderData['supplierName'] = $Order->supplier->name; return view('modules.order.indexStepper')->with([ 'testMode' => $this->testMode, 'orderData' => $orderData, ]); } private function updateParameter(Request $request, int $orderId): JsonResponse { $ret = new ArrayObject; $ret['success'] = false; $acceptedIndex = [ 'contactName', 'note', 'orderType', 'deliveryDate', 'deliveryAddressId', 'customNotificationEmail', ]; $orderData = $request->all($acceptedIndex); $Order = Order::find($orderId); // $orderData->de if (! $orderData['deliveryAddressId']) { $orderData['deliveryAddressId'] = null; $deliveryAddress = $this->getProfitCenterAddress(); if (! $Order->deliveryAddress || $Order->dedeliveryAddress != $deliveryAddress) { $orderData['deliveryAddress'] = $deliveryAddress; } } else { if ($Order['deliveryAddressId'] !== $orderData['deliveryAddressId']) { $addressData = Address::find($orderData['deliveryAddressId']); $orderData['deliveryAddress'] = $addressData->fullAddress; $orderData['deliveryAddressName'] = $addressData->name; } } if (! $orderData['customNotificationEmail']) { $orderData['customNotificationEmail'] = null; } else { if ($orderData['customNotificationEmail'] == '') { $orderData['customNotificationEmail'] = null; } } $diffDay = Carbon::parse($orderData['deliveryDate'])->diffInDays(Carbon::now(), false); if ($diffDay > 0) { return \response()->json([ 'success' => false, 'errors' => ['Nem megfelelő dátum'], ], 500); } // var_export($Order->toArray()); $Order->fill($orderData); // var_export($Order->toArray());die(); $Order->orderStatus = OrderStatusEnum::parameter; $Order->save(); $ret['orderData'] = $Order->toArray(); $ret['success'] = true; return \response()->json($ret); } private function updateProductSelect(Request $request, int $orderId): JsonResponse { $acceptedIndex = [ 'productSelected', 'productComment', 'supplierId', 'contactName', 'note', 'orderType', 'deliveryDate', 'deliveryAddress', ]; $orderData = $request->all($acceptedIndex); debug($orderData); // session()->forget('orderData'); session()->put('orderData', $orderData); session()->save(); $Order = Order::find($orderId); if (isset($orderData['productSelected']) && is_array($orderData['productSelected'])) { $Order->productSelected = json_encode($orderData['productSelected']); } else { $Order->productSelected = null; } if (isset($orderData['productComment']) && is_array($orderData['productComment'])) { $Order->productComment = json_encode($orderData['productComment']); } else { $Order->productComment = null; } $Order->orderStatus = OrderStatusEnum::productSelect; $Order->save(); // sleep(2); return \response()->json(['success' => true, 'data' => $orderData]); } private function storeAttachedFile(): void {} private function OrderStorno(Order $OrderOriginal): Order { if (true) { $OrderStorno = $OrderOriginal->replicate([ 'archive_id', 'productSelected', 'humanId', 'supplierOrderNumber', 'feedBackId', 'confirmed', 'created_by', 'updated_by', 'deleted_by', 'deleted_at', ])->fill([ 'sentTime' => Carbon::now(), 'orderFlag' => OrderFlag::storno, 'rel_id' => $OrderOriginal->id, 'sumPrice' => (0 - $OrderOriginal->sumPrice), 'orderStatus' => OrderStatusEnum::sent, ]); $productSelected = []; foreach (json_decode($OrderOriginal->productSelected) as $index => $item) { $productSelected[$index] = 0 - $item; } $OrderStorno->productSelected = json_encode($productSelected); $OrderStorno->save(); $OrderStorno = $this->createOrderIds($OrderStorno); } else { $OrderStorno = Order::find(16515); $OrderStorno->sentTime = Carbon::now(); $OrderStorno = $this->createOrderIds($OrderStorno); $OrderStorno->save(); } return $OrderStorno; /* * ha kell itt lehet ay OrderOriginalra raragasztani a rel_id hogy meglegyen hol lett stornozva */ // dd($OrderOriginal->toArray(),$OrderStorno->toArray()); } private function modifierOrder($Order): OrderArchive { // create new storno order // archive storno order $originalArchiveOrder = OrderArchive::find($Order->rel_id); $originalOrder = Order::where('humanId', $originalArchiveOrder->humanId)->first(); /* * create storno Order */ $OrderStorno = $this->OrderStorno($originalOrder); $orderStornoArchive = $this->archiveOrder($OrderStorno); $orderStornoArchive->rel_id = $originalArchiveOrder->id; $orderStornoArchive->save(); return $orderStornoArchive; dd($Order->toArray()); } private function archiveOrder(?Order $Order = null, ?int $orderId = null, ?int $parentId = null): OrderArchive|false { debug('archivalas indul'); /* print "\n*****************************\n"; var_dump('archivalas indul');*/ if (! $Order) { debug('Nincs order'); // var_dump('Nincs order'); if (! $Order = Order::find($orderId)) { return false; } } // var_dump($Order->toArray()); if ($Order->orderStatus !== OrderStatusEnum::sent) { // var_dump('nem jo status'); debug('nem jo status'); return false; } if ($Order->orderFlag == 'modifier') { $this->modifierOrder($Order); } debug('archivalunk'); // var_dump('**uj archiv nyitasa kezdet'); $debugArray = []; // array_unshift($debugArray,$Order->toArray()); $orderData = $this->getOrderData($Order->id); array_unshift($debugArray, $orderData); // dd('tova'.__LINE__,$Order->toArray(),$orderData); /** * uj archiv nyitasa */ $OrderArchive = new OrderArchive; $exclude = ['id']; $prefixed = ['created_by', 'updated_by', 'deleted_by', 'created_by', 'updated_by', 'deleted_by']; foreach ($Order->toArray() as $k => $v) { if (! in_array($k, $exclude)) { if (in_array($k, $prefixed)) { $k = 'original_'.$k; } $OrderArchive->$k = $v; } } $OrderArchive->profit_center_name = $orderData['profit_center']['name']; $OrderArchive->supplier_name = $orderData['supplier']['name']; $OrderArchive->supplier_emailAttachmentType = $orderData['supplier']['emailAttachmentType']; if ($parentId) { $OrderArchive->parent_id = $parentId; } $OrderArchive->save(); if ($Order->orderFlag == 'modifier') { $originalArchiveOrder = OrderArchive::find($Order->rel_id); $originalArchiveOrderId = $originalArchiveOrder->id; $originalArchiveOrder->orderFlag = OrderFlag::modified; $originalArchiveOrder->rel_id = $OrderArchive->id; $originalArchiveOrder->save(); } array_unshift($debugArray, $OrderArchive->toArray()); // dd($orderData); // var_dump('**csatolmany mentes kezdet'); /** * csatolmany elmentese */ $fileType = $orderData['supplier']['emailAttachmentType']; if ($fileType !== 'nincs') { $fileName = preg_replace('/[^a-zA-Z0-9\-\._]/', '_', $orderData['humanId']); if ($fileType == 'pdf') { $pdf = PDF::loadView('modules.order.invoiceEmail', $orderData); $fileNameWithExt = $fileName.'.pdf'; $attach = $pdf->output(); } elseif ($fileType == 'excel') { $attach = Excel::raw(new ExportOrderInvoiceExcel($orderData), \Maatwebsite\Excel\Excel::XLSX); $fileNameWithExt = $fileName.'.xlsx'; } // file eltarolasa $attachmentFile = new Attachment; $attachmentFile->addStreamedFile($attach, $fileNameWithExt); // fajl csatolasa $attachmentFile->attachable()->associate($OrderArchive); $attachmentFile->save(); array_unshift($debugArray, $attachmentFile->toArray()); } // var_dump('**tetelek mentes kezdet'); if ($Order->orderType !== 'weekly') { /** * tetelek elmentese */ array_unshift($debugArray, $orderData['items']); $exclude = ['id', 'created_at', 'updated_at', 'deleted_at', 'created_by', 'updated_by', 'deleted_by', ]; $exclude = array_merge($exclude, Product::getRelationshipsNames(true, 'snake_case')); foreach ($orderData['items'] as $orderItem) { $OrderArchiveItem = new OrderArchivesItem; foreach ($orderItem as $k => $v) { if (! in_array($k, $exclude)) { if (! is_array($v)) { $OrderArchiveItem->$k = $v; } } } $OrderArchiveItem->order_archive_id = $OrderArchive->id; $OrderArchiveItem->supplier_name = $orderItem['supplier']['name']; if (isset($orderItem['producer'])) { $OrderArchiveItem->producer_name = $orderItem['producer']['name']; } if (isset($orderItem['product_group'])) { $OrderArchiveItem->product_group_name = $orderItem['product_group']['name']; } $OrderArchiveItem->price = $orderItem['price']; $OrderArchiveItem->quantity = $orderItem['quantity']; $OrderArchiveItem->amount = $orderItem['amount']; $OrderArchiveItem->save(); } // array_unshift($debugArray,$OrderArchiveItem->toArray()); } // dd($debugArray); return $OrderArchive; } private function createOrderIds($Order = null, $orderId = null, $parentId = null): Order|false { if (! $Order) { $Order = Order::find($orderId); } if (! is_null($Order->supplierOrderNumber)) { return $Order; } $supplierOrderID = $this->createSupplierOrderNumber($Order->id); // debug($supplierOrderID); $Order->supplierOrderNumber = $supplierOrderID['supplier_order_number']; $Order->humanId = $this->getOrderHumanId($Order->id); $Order->feedBackId = (string) \Str::orderedUuid(); if ($parentId) { $Order->parentId = $parentId; } $Order->save(); return $Order; } private function createWeekDayOrders(Order $Order, $status = 'send') { // $orderData=$this->getOrderData($Order->id); $orderData = []; $needCopyFromOriginalOrderPointers = [ 'contactName', 'note', 'deliveryAddressId', 'deliveryAddressName', 'deliveryAddress', 'customNotificationEmail', 'productComment', ]; $productDaysArray = $this->convertWeekProductSelectArrayToDays($Order, 'weekDayDate'); foreach ($productDaysArray as $dayDate => $dayData) { // check if exist $dayOrder = Order::where('parent_id', $Order->id)->where('deliveryDate', $dayDate)->get(); if (count($dayOrder) > 0) { continue; } // create day Order $dayOrder = $this->createOrder($Order->supplier_id, $Order->id); foreach ($needCopyFromOriginalOrderPointers as $pointer) { $dayOrder->setAttribute($pointer, $Order->getAttribute($pointer)); } $dayOrder->deliveryDate = $dayDate; $dayOrder->productSelected = json_encode($dayData); $dayOrder->save(); $orderData = $this->getOrderData(null, $dayOrder); $dayOrder->sumPrice = $orderData['sumPrice']; $dayOrder = $this->createOrderIds($dayOrder); $dayOrder->orderStatus = $status; $dayOrder->save(); } } private function makeEmailAttachment($orderData, $fileType): array { $ret = []; $fileName = preg_replace('/[^a-zA-Z0-9\-\._]/', '_', $orderData['humanId']); if ($fileType == 'pdf') { $pdf = PDF::loadView('modules.order.invoiceEmail', $orderData); $ret = [ 'fileNameWithExt' => $fileName.'.pdf', 'attach' => $pdf->output(), ]; } elseif ($fileType == 'excel') { /* $fileExcel=Excel::download(new ExportOrderInvoiceExcel($orderData), $fileNameWithExt); $attach=$fileExcel->getFile(); */ /* $fileNameWithExt=$fileName.'.xlsx'; $attach=Excel::raw(new ExportOrderInvoiceExcel($orderData), \Maatwebsite\Excel\Excel::XLSX); */ $ret = [ 'fileNameWithExt' => $fileName.'.xlsx', 'attach' => Excel::raw(new ExportOrderInvoiceExcel($orderData), \Maatwebsite\Excel\Excel::XLSX), ]; } return $ret; } public function getEmailAttachment($orderData, $fileType): array { $ret = []; $ret[] = $this->makeEmailAttachment($orderData, $fileType); if ($orderData['orderType'] == 'weekly') { foreach (Order::find($orderData['id'])->children->toArray() as $dayOrder) { $dayOrderData = $this->getOrderData($dayOrder['id']); if (is_null($dayOrderData['sentTime'])) { $dayOrderData['sentTime'] = Carbon::now()->toDateTimeString(); } $ret[] = $this->makeEmailAttachment($dayOrderData, $fileType); } } return $ret; } private function updateSend(Request $request, int $orderId): JsonResponse { if (! $Order = Order::find($orderId)) { return \response()->json(['success' => false], 500); } $diffDay = Carbon::parse($Order->deliveryDate)->diffInDays(Carbon::now(), false); if ($diffDay > 0) { return \response()->json([ 'success' => false, 'errors' => ['Nem megfelelő dátum ['.$Order->deliveryDate.']'], ], 500); } /* sleep(3); return \response()->json([ 'success' => true, 'retHTML'=>'$HTMLInvoice' ]); return \response()->json([ 'success' => false, 'errors' => ['Nem megfelelő dátum [' . $Order->deliveryDate . ']'] ], 500); */ $Order = $this->createOrderIds($Order); $orderData = $this->getOrderData($Order->id); $Order->sumPrice = $orderData['sumPrice']; // nem a legszebb, de ott mar kiszamolasra kerult. /* * heti esetén legyártani a napikat!!! */ if ($Order->orderType == 'weekly') { $this->createWeekDayOrders($Order); } /* * update order */ $Order->orderStatus = OrderStatusEnum::send; $Order->save(); $orderData['feedBackIdLinkParam'] = base64_encode($orderData['feedBackId']); $orderData['sentTime'] = Carbon::now()->toDateTimeString(); $orderData['noPrintButton'] = true; $HTMLInvoice = view('modules.order.invoice')->with($orderData )->render(); if ($Order->orderFlag == OrderFlag::modifier) { // parent_id ha van akkor heti napjanak modositasa // dd($orderData,formatterDate(Carbon::parse($orderData['deliveryDate'])->startOfWeek()),formatterDate(Carbon::parse($orderData['deliveryDate'])->endOfWeek())); // dd($orderData,$Order->toArray()); } $attach = null; $fileNameWithExt = 'blank.txt'; $fileType = 'pdf'; $fileType = 'excel'; $fileType = $orderData['supplier']['emailAttachmentType']; // return \response()->json(['success'=>true],201); if (true) { $attachments = $this->getEmailAttachment($orderData, $fileType); \Mail::send('email.order', [ 'orderHTMLInvoice' => $HTMLInvoice, 'orderData' => $orderData, ], function ($m) use ($orderData, $fileType, $attachments) { $subject = 'Delirest - '.$orderData['profit_center']['name'].' - '.$orderData['humanId']; if ($orderData['orderFlag'] == OrderFlag::modifier) { $subject .= ' MÓDOSÍTÁS'; } $m->subject($subject); if ($orderData['customNotificationEmail'] && $orderData['customNotificationEmail'] != 'NULL') { $m->to($orderData['customNotificationEmail']); } if (config('app.stage', 'DEV') == 'PROD') { $m->to($orderData['supplier']['orderEmail']); if ($orderData['supplier']['orderEmail2']) { $m->to($orderData['supplier']['orderEmail2']); } } else { $m->to(config('mail.MailToOrderAddress')); } if (config('mail.MailToOrderAddress') != 'city99@e98.hu') { $m->bcc('city@e98.hu'); } // $m->attach($attach,['as'=>$fileNameWithExt]); if ($fileType !== 'none') { if (is_array($attachments) && count($attachments) > 0) { foreach ($attachments as $attachData) { $m->attachData($attachData['attach'], $attachData['fileNameWithExt']); } } } /* debug mail logging $this->logger->info(__FUNCTION__.':'.__LINE__." ---------------------"); try { $symfonyMessage = $m->getSymfonyMessage(); $debugInfo = [ 'to' => collect($symfonyMessage->getTo())->map(fn($addr) => $addr->toString())->toArray(), 'cc' => collect($symfonyMessage->getCc())->map(fn($addr) => $addr->toString())->toArray(), 'bcc' => collect($symfonyMessage->getBcc())->map(fn($addr) => $addr->toString())->toArray(), ]; $this->logger->info("FINAL MAIL RECIPIENTS for Order: " . $orderData['humanId'], $debugInfo); } catch (\Exception $e) { $this->logger->error("Debug hiba a címzettek lekérdezésekor: " . $e->getMessage()); } */ }); } $Order->sentTime = $orderData['sentTime']; $Order->orderStatus = OrderStatusEnum::sent; $Order->save(); /* * @todo:eredei archivra modified flaget tenni, rel_id-t beallitani * @todo:uj archivra rel_id-t beallitani */ if ($OrderArchived = $this->archiveOrder($Order)) { $Order->orderStatus = OrderStatusEnum::archived; $Order->save(); $SupplierNotifier = new SupplierNotifier; $SupplierNotifier->makeNotificationsForOrderArchive($OrderArchived->id); } if ($Order->orderType == 'weekly') { foreach (Order::find($orderData['id'])->children as $dayOrder) { $dayOrder->orderStatus = OrderStatusEnum::sent; $dayOrder->sentTime = $orderData['sentTime']; $dayOrder->save(); if ($this->archiveOrder($dayOrder, null, $OrderArchived->id)) { $dayOrder->orderStatus = OrderStatusEnum::archived; $dayOrder->save(); } else { // dd('Archive Error!!!!'); } } } return \response()->json(['success' => true, 'retHTML' => $HTMLInvoice]); var_dump('updateSend End '.__LINE__); dd($orderData); return \response()->json(['success' => true], 201); } /** * Update the specified resource in storage. */ public function update(Request $request, int $orderId): JsonResponse { debug($request->get('updateType')); if (strlen($request->input('updateType')) < 1) { return \response()->json([], 400); } $functionName = 'update'.ucfirst($request->input('updateType')); if (method_exists($this, $functionName)) { return call_user_func_array([$this, $functionName], [$request, $orderId]); } return \response()->json([], 400); } /** * Remove the specified resource from storage. */ public function destroy(int $OrderId): Response|JsonResponse { if ($Order = Order::find($OrderId)) { if ($Order->delete()) { return \response()->json(['success' => true]); } } return \response()->json([ 'success' => false, 'errors' => ['deleted error'], ], 500); } public function getDataTableContent(): JsonResponse { $groupId = null; $searchStr = null; $profitCenterId = auth()->user()->profitCenters()->first()->id; if (\request()->get('supplierId')) { $supplierId = \request()->get('supplierId'); } else { return \response()->json(['data' => []]); } if (\request()->get('deliveryDate')) { $deliveryDate = \request()->get('deliveryDate'); } else { $deliveryDate = Carbon::now()->format('Y-m-d'); } $special = []; $special['withFavorites'] = true; if (\request()->get('searchStr')) { $searchStr = \request()->get('searchStr'); if (substr($searchStr, 0, 2) == '**') { $special['type'] = str_replace('*', '', $searchStr); $special['profitCenterId'] = $profitCenterId; $searchStr = null; } } else { if (\request()->get('groupId')) { $groupId = \request()->get('groupId'); } } if (\request()->get('krel')) { if (request()->get('krel') === 'true') { $special['krel'] = 1; } } debug(\request()->all()); $productRepo = new ProductRepository; $productRepo->setRelation( 'ProductGroup', 'Supplier', 'Producer', 'PriceList', 'LastPrice', 'picture', 'specification'); // $products=$productRepo->getByGroupId($groupId,true); $products = $productRepo->getSupplierProductFromPriceList($supplierId, $profitCenterId, $deliveryDate, $groupId, $searchStr, $special); // debug($products[1]); $ret = ['data' => []]; // dd($products); foreach ($products as $product) { // dd(count($product['price_list'])); // if(count($product['price_list'])>0){ if ($product['price_list_price']) { $data = []; $data['id'] = $product['id']; $data['name'] = $product['name']; $data['packing'] = $product['packing']; $data['unitValue'] = $product['unitValue']; $data['productUnit'] = $product['productUnit']; $data['sellerUnit'] = $product['sellerUnit']; $data['unitMultiplier'] = $product['unitMultiplier']; $data['amountUnit'] = $product['amountUnit']; $data['note'] = ($product['note'] ? $product['note'] : ''); // $product['product_group']['name']; // $data['price']=$product['last_price'][0]['pivot']['price']; $data['price'] = $product['price_list_price']['price']; $data['hooreycaId'] = $product['hooreycaId']; $data['office'] = ''; $data['extn'] = ''; $data['favorites'] = $product['favorites']; if ($product['krel'] == 1) { $product['krel'] = '*'; } else { $product['krel'] = ''; } $data['krel'] = $product['krel']; $data['stock_status'] = $product['stock_status']; $data['picture'] = false; if ($product['picture']) { // $data['aa_picture']=$product['picture']; $data['picture'] = $product['picture']['PublicUrl'].DIRECTORY_SEPARATOR.$product['picture']['filename']; } $data['specification'] = false; if ($product['specification']) { // $data['aa_specification']=$product['specification']; $data['specification'] = $product['specification']['PublicUrl'].DIRECTORY_SEPARATOR.$product['specification']['filename']; } $ret['data'][] = $data; } else { } } return \response()->json($ret); return \response()->file('exapmle2.json'); } public function checkReadyToSend(Request $request, int $orderId): JsonResponse { $readyToSend = true; $orderData = $this->getParsedOrderDataFromSession(); debug($orderData); $why = []; if (! isset($orderData['supplierId']) || $orderData['supplierId'] < 1) { $why[] = 'supplierId'; $readyToSend = false; } if (! isset($orderData['items']) || ! is_array($orderData['items']) || count($orderData['items']) < 1) { $why[] = 'items'; $readyToSend = false; } return \response()->json(['success' => true, 'readyToSend' => $readyToSend, 'orderData' => $orderData, 'why' => $why]); } }