| Server IP : 95.46.96.79 / Your IP : 216.73.216.4 Web Server : Apache/2.4.41 (Ubuntu) System : Linux zaimer.uz 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : akslabs_uz_usr ( 1001) PHP Version : 7.4.3-4ubuntu2.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/sugurtatrip__usr95/data/www/sugurtatrip.uz/api/src/Models/Kapital/ |
Upload File : |
<?php
namespace Kapital;
use Core\HttpClient;
class KapitalPriceModel {
private $base_url;
private $api_username;
private $api_password;
private $start_date;
private $end_date;
private $day;
private $program_id;
private $activity_id;
private $group_id;
private $type_id;
private $multi_id;
private $date_reg;
private $date_births;
private $countries;
private $total_days;
public function __construct(
$start_date = null,
$end_date = null,
$day = 1,
$program_id = 0,
$activity_id = 0,
$group_id = 0,
$type_id = 0,
$multi_id = 0,
$date_reg = null,
$date_births = [],
$countries = []
) {
$this->setStartDate($start_date ?? (new \DateTime())->format('d.m.Y'));
$this->setEndDate($end_date ?? (new \DateTime('tomorrow'))->format('d.m.Y'));
$this->setProgramId($program_id);
$this->setActivityId($activity_id);
$this->setGroupId($group_id);
$this->setTypeId($type_id);
$this->setMultiId($multi_id);
$this->setDateReg($date_reg ?? (new \DateTime())->format('d.m.Y'));
$this->setDateBirths($date_births);
$this->setCountries($countries);
$this->total_days = $this->calculateTotalDays($this->start_date, $this->end_date);
$this->base_url = $_ENV['KAPITAL_API_URL'];
$this->api_username = $_ENV['KAPITAL_USERNAME'];
$this->api_password = $_ENV['KAPITAL_PASSWORD'];
}
public function setStartDate($start_date) {
if ($this->validateDate($start_date)) {
$this->start_date = $start_date;
} else {
throw new \Exception("Invalid start_date format");
}
}
public function setEndDate($end_date) {
if ($this->validateDate($end_date)) {
$this->end_date = $end_date;
} else {
throw new \Exception("Invalid end_date format");
}
}
public function setProgramId($program_id) {
if (is_int($program_id)) {
$this->program_id = $program_id;
} else {
throw new \Exception("Invalid program_id format");
}
}
public function setActivityId($activity_id) {
if (is_int($activity_id)) {
$this->activity_id = $activity_id;
} else {
throw new \Exception("Invalid activity_id format");
}
}
public function setGroupId($group_id) {
if (is_int($group_id)) {
$this->group_id = $group_id;
} else {
throw new \Exception("Invalid group_id format");
}
}
public function setTypeId($type_id) {
if (is_int($type_id)) {
$this->type_id = $type_id;
} else {
throw new \Exception("Invalid type_id format");
}
}
public function setMultiId($multi_id) {
if (is_int($multi_id)) {
$this->multi_id = $multi_id;
} else {
throw new \Exception("Invalid multi_id format");
}
}
public function setDateReg($date_reg) {
if ($this->validateDate($date_reg)) {
$this->date_reg = $date_reg;
} else {
throw new \Exception("Invalid date_reg format");
}
}
public function setDateBirths($date_births) {
if (is_array($date_births)) {
$this->date_births = $date_births;
} else {
throw new \Exception("Dates of birth must be an array");
}
}
public function setCountries($countries) {
if (is_array($countries)) {
$this->countries = $countries;
} else {
throw new \Exception("Countries must be an array");
}
}
private function validateDate($date) {
$d = \DateTime::createFromFormat('d.m.Y', $date);
return $d && $d->format('d.m.Y') === $date;
}
public function getStartDate() {
return $this->start_date;
}
public function getEndDate() {
return $this->end_date;
}
public function getDay() {
return $this->day;
}
public function getActivityId() {
return $this->activity_id;
}
public function getTypeId() {
return $this->type_id;
}
public function getCountries() {
return $this->countries;
}
public function getMultiId() {
return $this->multi_id;
}
public function getDateReg() {
return $this->date_reg;
}
public function getDateBirths() {
return $this->date_births;
}
public function getProgramId() {
return $this->program_id;
}
public function getGroupId() {
return $this->group_id;
}
public function calculateTotalDays($start_date, $end_date) {
$start = \DateTime::createFromFormat('d.m.Y', $start_date);
$end = \DateTime::createFromFormat('d.m.Y', $end_date);
if (!$start || !$end) {
throw new \Exception("Invalid date format. Dates should be in 'd.m.Y' format.");
}
$interval = $start->diff($end);
return $interval->days + 1; // Including the start date
}
public function initialRequest() {
$url = $this->base_url . KapitalEndpoints::INIT;
$data = [
'day' => $this->total_days,
'program_id' => $this->program_id,
'activity_id' => $this->activity_id,
'group_id' => $this->group_id,
'type_id' => $this->type_id,
'multi_id' => $this->multi_id,
'data_reg' => $this->date_reg,
];
$result = HttpClient::postWithAuth($url, $data, $this->api_username, $this->api_password);
return $result;
}
public function total() {
$url = $this->base_url . KapitalEndpoints::TOTAL;
$data = [
'day' => $this->total_days,
'program_id' => $this->program_id,
'activity_id' => $this->activity_id,
'group_id' => $this->group_id,
'type_id' => $this->type_id,
'multi_id' => $this->multi_id,
'data_reg' => $this->date_reg,
'date_births' => $this->date_births,
];
$result = HttpClient::postWithAuth($url, $data, $this->api_username, $this->api_password);
return $result;
}
public function totalWithCountry() {
$url = $this->base_url . KapitalEndpoints::TOTAL_WITH_COUNTRY;
$data = [
'day' => $this->total_days,
'program_id' => $this->program_id,
'activity_id' => $this->activity_id,
'group_id' => $this->group_id,
'type_id' => $this->type_id,
'multi_id' => $this->multi_id,
'data_reg' => $this->date_reg,
'date_births' => $this->date_births,
'countries' => $this->countries,
];
$result = HttpClient::postWithAuth($url, $data, $this->api_username, $this->api_password);
return $result;
}
public function create() {
}
}