1. Go to this page and download the library: Download revosystems/sidecar library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
class AppServiceProvider extends ServiceProvider
public function boot() {
Sidecar::$usesMultitenant = true; // When true, all the caches and jobs will use the `auth()->user()->id` as prefix
Sidecar::serving(function(){
\Revo\Sidecar\ExportFields\Date::$timezone = auth()->user()->timezone; // The timezone to display the dates
\Revo\Sidecar\ExportFields\Date::$openingTime = auth()->user()->getBusiness()->openingTime; // To define a day change time instead of 00:00
\Revo\Sidecar\ExportFields\Currency::setFormatter('es_ES', auth()->user()->currency ?? 'EUR'); // For the currency field
});
}
namespace App\Reports;
use Revo\Sidecar\Report;
use App\Post;
class OrdersReport extends Report {
protected $model = Post::class;
public function getFields() : array{
return [ ];
}
}
namespace App\Reports\Sidecar;
use Revo\Sidecar\ExportFields\Link;
class Preview extends Link
{
protected ?string $linkClasses = "showPopup";
public static function make($field, $title = null, $dependsOnField = null)
{
$field = parent::make($field, $title, $dependsOnField);
$field->route = $title;
return $field;
}
public function getTitle(): string
{
return "";
}
public function getLinkTitle($row) : string {
return '<i class="fa fa-eye fa-fw"></i>';
}
public function toHtml($row): string
{
$link = route($this->route, $this->getValue($row));
return "<a href='{$link}' class='{$this->linkClasses}' style='color:gray;'>{$this->getLinkTitle($row)}</a>";
}
}
namespace App\Reports\V2;
use App\Models\Orders\Order;
use Revo\Sidecar\Widgets\Count;
use Revo\Sidecar\Widgets\Sum;
class OrdersReport extends Report
{
protected $model = Order::class;
public function getFields() : array{
return [
...
];
}
public function getWidgets() : array
{
return [
Count::make('id', __('admin.count')),
Sum::make('guests', trans_choice('admin.guest', 2)),
];
}
}
namespace App\Reports\V2\Sidecar\Widgets;
use App\Models\Orders\Order;
use App\Reports\V2\OrdersReport;
use Illuminate\Database\Eloquent\Builder;
use Revo\Sidecar\ExportFields\Currency;
use Revo\Sidecar\ExportFields\Date;
use Revo\Sidecar\ExportFields\ExportField;
use Revo\Sidecar\Filters\Filters;
use Revo\Sidecar\Panels\Panel;
class Sales extends Panel
{
protected $model = Order::class;
protected ?string $tooltip = "salesByDayDesc";
public function query() : Builder{
return parent::query()->whereNull('canceled')->whereNull('merged')->whereNotNull('opened');
}
public function __construct()
{
$filters = (new Filters())->groupingBy(['opened' => 'day'])
->forPeriod('opened', 'last30days')
->sortBy('opened', 'asc');
parent::__construct("salesByDay", $filters);
}
public function metricField(): ExportField
{
return Currency::make('total');
}
public function dimensionField(): ExportField
{
return Date::make('opened')->filterable();
}
public function getFullReportLink(): ?string
{
return url('reports/v2/orders?' . $this->filters->getQueryString() );
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.