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.
59 lines
1.9 KiB
59 lines
1.9 KiB
<?php
|
|
|
|
class CreateComboNo{
|
|
private $comboarr = [
|
|
'week'=>'BW002',
|
|
'month'=>'EM002',
|
|
'quarter'=>'EQ002',
|
|
'half'=>'HY002',
|
|
'year'=>'EY002'
|
|
];
|
|
private $bwarr = [
|
|
'week','month','week','month','week','quarter',
|
|
'week','month','week','month','week','half',
|
|
'week','month','week','month','week','quarter',
|
|
'week','month','week','month','week','year'
|
|
];
|
|
private $emarr = [
|
|
'month','month','quarter','month','month','half',
|
|
'month','month','quarter','month','month','year'
|
|
];
|
|
private $combo;
|
|
private $startdate;
|
|
private $enddate;
|
|
public function __construct($combo, $startdate, $enddate){
|
|
$this->combo = $combo;
|
|
$this->startdate = $startdate;
|
|
$this->enddate = $enddate;
|
|
}
|
|
public function getComboNo(){
|
|
$comboarr = (array) $this->combo === 'bw' ? $this->bwarr : $this->emarr;
|
|
|
|
$startdate = new DateTime($this->startdate);
|
|
$enddate = new DateTime($this->enddate);
|
|
|
|
$interval = date_diff($startdate, $enddate);
|
|
|
|
$months = $interval->y * 12 + $interval->m;
|
|
$months = $this->combo === 'bw' ? $months*2 : $months;
|
|
|
|
$newarr = [];
|
|
$idx = 0;
|
|
$ori_first_month = date('m', strtotime($this->startdate));
|
|
$first_day = date('Y-m-d', strtotime($this->startdate. ' + 3 days'));
|
|
$new_first_month = date('m', strtotime($first_day));
|
|
if($ori_first_month != $new_first_month){
|
|
$first_day = date('Y-m-t', strtotime($this->startdate));
|
|
}
|
|
$scheduleDate = new DateTime($first_day);
|
|
for ($i = 0; $i < $months; $i++){
|
|
$newarr[] = [$this->comboarr[$comboarr[$idx]], $scheduleDate->format("Y-m-d")];
|
|
$idx ++;
|
|
$scheduleDate = $startdate->modify("+1 month");
|
|
if($idx >= count($comboarr)){
|
|
$idx = 0;
|
|
}
|
|
}
|
|
return json_encode($newarr);
|
|
}
|
|
}
|