HEX
Server: LiteSpeed
System: Linux my-kul-web2054.main-hosting.eu 5.14.0-611.13.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 11 04:57:59 EST 2025 x86_64
User: u665686179 (665686179)
PHP: 8.2.30
Disabled: system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: /home/u665686179/domains/dealkr.com/public_html/app/Services/StockClearanceProductService.php
<?php

namespace App\Services;

class StockClearanceProductService
{
    public function checkConditions(object|array $request, object|array|null $product, object|array $config): array
    {
        $status = true;
        $message = 'update_successfully';

        if($product && $config->discount_type != 'flat') {
            if((!isset($request['discount_amount']) || $request['discount_amount'] == null)) {
                $status = false;
                $message = 'Discount_amount_can_not_be_empty';
            } else if (isset($request->discount_amount) && $request->discount_amount <= 0) {
                $status = false;
                $message = 'Discount_amount_can_not_be_less_than_zero';
            } else if (isset($request->discount_type) && $request->discount_type === 'percentage') {
                if (isset($request->discount_amount) && ($request->discount_amount < 1 || $request->discount_amount > 100)) {
                    $status = false;
                    $message = 'Discount_amount_for_percentage_type_must_be_between_1_and_100';
                }
            } else {
                if (empty($product->variation) || $product->variation === '[]') {
                    if (isset($request->discount_type) && $request->discount_type === 'flat' && currencyConverter(amount: $request->discount_amount) > $product->unit_price) {
                        $status = false;
                        $message = 'Discount_amount_can_not_be_greater_than_unit_price';
                    }
                } else {
                    $productVariation = json_decode($product->variation, true);
                    $prices = array_column($productVariation, 'price');
                    $lowestPrice = min($prices);
                    if ($request->discount_amount > $lowestPrice ) {
                        $status = false;
                        $message = 'Discount_amount_can_not_be_greater_than_any_variation_product_unit_price';
                    }
                }
            }
        }
        return [
            'status' => $status,
            'message' => translate($message),
        ];
    }

    public function checkAddConditions(object|array $request, object|array $product, object|array $config): array
    {
        $status = true;
        $message = 'product_added_successfully';

        if($config->discount_type != 'flat') {
            if(!isset($request['discount_amount'][$product->id]) || $request['discount_amount'][$product->id] == null){
                $status = false;
                $message = 'Discount_amount_can_not_be_empty';
            } else if (isset($request->discount_amount[$product->id]) && $request->discount_amount[$product->id] < 0) {
                $status = false;
                $message = 'Discount_amount_can_not_be_less_than_or_equal_to_zero';
            } else if (isset($request['discount_type'][$product->id]) && $request['discount_type'][$product->id] === 'percentage') {
                if (isset($request->discount_amount[$product->id]) && ($request->discount_amount[$product->id] < 1 || $request->discount_amount[$product->id] > 100)) {
                    $status = false;
                    $message = 'Discount_amount_for_percentage_type_must_be_between_1_and_100';
                }
            } else {
                if (empty($product->variation) || $product->variation === '[]') {
                    if (isset($request['discount_type'][$product->id]) && $request['discount_type'][$product->id] === 'flat' && currencyConverter(amount: $request['discount_amount'][$product->id]) > $product->unit_price) {
                        $status = false;
                        $message = 'Discount_amount_can_not_be_greater_than_unit_price';
                    }
                } else {
                    $productVariation = json_decode($product->variation, true);
                    $prices = array_column($productVariation, 'price');
                    $lowestPrice = min($prices);
                    if (isset($request->discount_amount[$product->id]) && $request->discount_amount[$product->id] > $lowestPrice ) {
                        $status = false;
                        $message = 'Discount_amount_can_not_be_greater_than_any_variation_product_unit_price';
                    }
                }
            }
        }

        return [
            'status' => $status,
            'message' => translate($message),
        ];
    }
}