Ensure that multiple attendant services can be modified with proper availability.
This commit is contained in:
parent
75905752f7
commit
bde91f5a14
2 changed files with 13 additions and 4 deletions
|
@ -58,7 +58,7 @@ class Availability {
|
|||
|
||||
if ($service['attendants_number'] > 1)
|
||||
{
|
||||
$available_hours = $this->consider_multiple_attendants($date, $service, $provider);
|
||||
$available_hours = $this->consider_multiple_attendants($date, $service, $provider, $exclude_appointment_id);
|
||||
}
|
||||
|
||||
return $this->consider_book_advance_timeout($date, $available_hours, $provider);
|
||||
|
@ -326,6 +326,7 @@ class Availability {
|
|||
* @param string $date Selected date (Y-m-d).
|
||||
* @param array $service Service record.
|
||||
* @param array $provider Provider record.
|
||||
* @param int|null $exclude_appointment_id Exclude an appointment from the availability generation.
|
||||
*
|
||||
* @return array Returns the available hours array.
|
||||
*
|
||||
|
@ -334,7 +335,8 @@ class Availability {
|
|||
protected function consider_multiple_attendants(
|
||||
$date,
|
||||
$service,
|
||||
$provider
|
||||
$provider,
|
||||
$exclude_appointment_id = NULL
|
||||
)
|
||||
{
|
||||
$unavailability_events = $this->CI->appointments_model->get_batch([
|
||||
|
@ -390,7 +392,8 @@ class Availability {
|
|||
$appointment_attendants_number = $this->CI->appointments_model->get_attendants_number_for_period(
|
||||
$slot_start,
|
||||
$slot_end,
|
||||
$service['id']
|
||||
$service['id'],
|
||||
$exclude_appointment_id
|
||||
);
|
||||
|
||||
if ($appointment_attendants_number < $service['attendants_number'])
|
||||
|
|
|
@ -556,11 +556,17 @@ class Appointments_model extends EA_Model {
|
|||
* @param DateTime $slot_start When the slot starts
|
||||
* @param DateTime $slot_end When the slot ends.
|
||||
* @param int $service_id Selected service ID.
|
||||
* @param int|null $exclude_appointment_id Exclude an appointment from the availability generation.
|
||||
*
|
||||
* @return int Returns the number of attendants for selected time period.
|
||||
*/
|
||||
public function get_attendants_number_for_period(DateTime $slot_start, DateTime $slot_end, $service_id)
|
||||
public function get_attendants_number_for_period(DateTime $slot_start, DateTime $slot_end, $service_id, $exclude_appointment_id = NULL)
|
||||
{
|
||||
if ($exclude_appointment_id)
|
||||
{
|
||||
$this->db->where('id !=', $exclude_appointment_id);
|
||||
}
|
||||
|
||||
return (int)$this->db
|
||||
->select('count(*) AS attendants_number')
|
||||
->from('appointments')
|
||||
|
|
Loading…
Reference in a new issue