![]() 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/ |
<?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'); }); } }