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/demo.intellicart.co/vendor/corals/woocommerce-reporting/src/Report/Classes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/demo.intellicart.co/vendor/corals/woocommerce-reporting/src/Report/Classes/Reports.php
<?php


namespace Corals\Modules\Report\Classes;


use Corals\Foundation\Facades\Breadcrumb\Breadcrumbs;
use Corals\Modules\WooCommerce\Models\OrderCoupon;
use Corals\Modules\WooCommerce\Models\SavedReportFilter;
use Illuminate\Support\Arr;

class Reports
{
    /**
     * @var array
     */
    protected $reportLists = [];

    /**
     * @param int $count
     * @return array
     */
    public function getLastYears($count = 5)
    {
        $years = [];

        $currentYear = now();

        for ($i = 0; $i < $count; $i++) {
            $years[$currentYear->year] = $currentYear->year;
            $currentYear->subYear();
        }

        return $years;
    }

    /**
     * @return array
     */
    public function getMonthsList(): array
    {
        return [
            1 => 'January',
            2 => 'February',
            3 => 'March',
            4 => 'April',
            5 => 'May',
            6 => 'June',
            7 => 'July',
            8 => 'August',
            9 => 'September',
            10 => 'October',
            11 => 'November',
            12 => 'December',
        ];
    }

    /**
     * @param $report
     * @param $attributes
     */
    public function pushReport($report, $attributes)
    {
        $this->reportLists[$report] = $attributes;

        $this->registerReportBreadcrumb($report, $attributes);
    }

    /**
     * @param $report
     * @return array|mixed
     */
    public function getReport($report)
    {
        return $this->reportLists[$report] ?? [];
    }

    /**
     * @param $reports
     */
    public function pushReports($reports)
    {
        foreach ($reports as $report => $attribute) {
            $this->pushReport($report, $attribute);
        }
    }

    /**
     * @return array
     */
    public function getReports()
    {
        return $this->reportLists;
    }

    /**
     * @param $reportKey
     * @return mixed
     * @throws \Illuminate\Contracts\Container\BindingResolutionException
     */
    public function resolveReportClass($reportKey)
    {
        $class = data_get($this->getReport($reportKey), 'class');

        if (!$class) {
            abort(404);
        }

        $report = app()->make($class);

        $report->setRequest(request());

        return $report;
    }

    /**
     * @param $reportKey
     * @param $attributes
     */
    protected function registerReportBreadcrumb($reportKey, $attributes)
    {
        Breadcrumbs::register($reportKey, function ($breadcrumbs) use ($attributes, $reportKey) {
            $breadcrumbs->parent('reports');
            $breadcrumbs->push(data_get($attributes, 'title'), url(data_get($attributes, 'resource_url')));
        });
    }

    /**
     * @return array
     */
    public function getPredefinedDates()
    {
        foreach (config('report.pre_defined_dates') as $key => $attr) {
            $from = data_get($attr, 'from');
            $to = data_get($attr, 'to');

            if (data_get($attr, 'is_eval')) {
                $startDate = eval($from);
                $endDate = eval($to);
            } else {
                $startDateCarbonMethod = key($from);
                $startDateCarbonValue = $from[$startDateCarbonMethod];
                $endDateCarbonMethod = key($to);
                $endDateCarbonValue = $to[$endDateCarbonMethod];

                $startDate = now()->{$startDateCarbonMethod}($startDateCarbonValue)->toDateString();
                $endDate = now()->{$endDateCarbonMethod}($endDateCarbonValue)->toDateString();
            }


            $result[$key] = [
                'label' => data_get($attr, 'label'),
                'start_date' => $startDate,
                'end_date' => $endDate
            ];
        }

        return $result ?? [];
    }

    /**
     * @return array|false
     */
    public function gerPredefinedDatesOptions()
    {
        $predefinedDates = $this->getPredefinedDates();
        return array_combine(array_keys($predefinedDates), Arr::pluck($predefinedDates, 'label'));
    }

    public function convertNameToKebabCase($name)
    {
        return str_replace(' ', '-', strtolower($name));
    }

    public function findReportSavedFilterByName($name)
    {
        return SavedReportFilter::where('name', $name)->first();
    }

    public function findReportSavedFilterByHashedId($hashed_id)
    {
        return SavedReportFilter::findByHash($hashed_id);
    }

    public function getNextSchedule($schedule)
    {
        $schedulesCarbonMap = config('wooCommerce.reports.schedules');

        $addScheduleCarbonMethod = sprintf("add%s", $schedulesCarbonMap[$schedule]);

        return now()->startOfDay()->{$addScheduleCarbonMethod}();
    }

    public function filterHttpQuery($filter, $return_array = false)
    {
        parse_str($filter, $params);

        if ($params) {
            $dates = \Corals\Modules\Report\Facades\Reports::getPredefinedDates();

            $pre_define_date = $params['pre_defined_date'];

            if ($pre_define_date != 'custom') {
                $params['start_date'] = $dates[$pre_define_date]['start_date'];
                $params['end_date'] = $dates[$pre_define_date]['end_date'];
            }
        }

        return $return_array ? $params : http_build_query($params);
    }

    public function getSchedulesKeysValues()
    {
        $schedules = array_keys(config('wooCommerce.reports.schedules'));

        return array_combine($schedules, array_map('ucfirst', $schedules));
    }

    public function getAvailableCoupons()
    {
        return
            \Cache::remember('orders.coupons', config('corals.cache_ttl'), function () {
                return
                    OrderCoupon::query()
                        ->groupBy('code')
                        ->get()
                        ->pluck('code', 'code');
            });
    }
}

Spamworldpro Mini