You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.2 KiB
75 lines
2.2 KiB
<?php
|
|
namespace App\Models;
|
|
use CodeIgniter\Model;
|
|
|
|
class Reports extends Model
|
|
{
|
|
/**
|
|
* table name
|
|
* @var string
|
|
*/
|
|
protected $table = 'orders';
|
|
|
|
/**
|
|
* total month
|
|
* @return array<int|string>
|
|
*/
|
|
private function months()
|
|
{
|
|
return ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
|
|
}
|
|
|
|
/**
|
|
* Getting the year of the orders (paid_status = 1 or 3)
|
|
* @return array
|
|
*/
|
|
public function getOrderYear()
|
|
{
|
|
$result = $this->whereIn('paid_status', [1, 3])->findAll(); // ← CHANGÉ ICI
|
|
|
|
$return_data = array_map(function($v) {
|
|
return date('Y', strtotime($v['date_time']));
|
|
}, $result);
|
|
|
|
return array_values(array_unique($return_data));
|
|
}
|
|
|
|
/**
|
|
* Getting the order reports based on the year and months
|
|
* @param mixed $year
|
|
* @return array<array>
|
|
*/
|
|
public function getOrderData($year)
|
|
{
|
|
if ($year) {
|
|
$months = $this->months();
|
|
|
|
// Fetch orders with paid_status = 1 or 3
|
|
$result = $this->whereIn('paid_status', [1, 3])->findAll();
|
|
|
|
$final_data = [];
|
|
|
|
foreach ($months as $month) {
|
|
$get_mon_year = $year . '-' . $month;
|
|
$final_data[$get_mon_year] = [];
|
|
|
|
foreach ($result as $v) {
|
|
$month_year = date('Y-m', strtotime($v['date_time']));
|
|
if ($get_mon_year == $month_year) {
|
|
// Modifier le montant selon votre logique
|
|
if (!empty($v['discount']) && $v['discount'] > 0) {
|
|
$v['amount_to_display'] = $v['discount']; // Utiliser le rabais
|
|
} else {
|
|
$v['amount_to_display'] = $v['gross_amount']; // Utiliser gross_amount
|
|
}
|
|
$final_data[$get_mon_year][] = $v;
|
|
}
|
|
}
|
|
}
|
|
|
|
return $final_data;
|
|
}
|
|
|
|
return [];
|
|
}
|
|
}
|