Do not allow appointments being created with duration less than the predefined minimum (#805).

This commit is contained in:
Alex Tselegidis 2020-08-15 15:51:05 +03:00
parent 8f1e82019f
commit dbc45f6b27
2 changed files with 15 additions and 5 deletions

View file

@ -87,5 +87,7 @@ define('CALENDAR_VIEW_TABLE', 'table');
define('AVAILABILITIES_TYPE_FLEXIBLE', 'flexible'); define('AVAILABILITIES_TYPE_FLEXIBLE', 'flexible');
define('AVAILABILITIES_TYPE_FIXED', 'fixed'); define('AVAILABILITIES_TYPE_FIXED', 'fixed');
define('EVENT_MINIMUM_DURATION', 5); // Minutes
/* End of file constants.php */ /* End of file constants.php */
/* Location: ./application/config/constants.php */ /* Location: ./application/config/constants.php */

View file

@ -63,13 +63,12 @@ class Appointments_Model extends CI_Model {
{ {
$this->load->helper('data_validation'); $this->load->helper('data_validation');
// If a appointment id is given, check whether the record exists // If a appointment id is given, check whether the record exists in the database.
// in the database.
if (isset($appointment['id'])) if (isset($appointment['id']))
{ {
$num_rows = $this->db->get_where('appointments', $num_rows = $this->db->get_where('appointments', ['id' => $appointment['id']])->num_rows();
['id' => $appointment['id']])->num_rows();
if ($num_rows == 0) if ($num_rows === 0)
{ {
throw new Exception('Provided appointment id does not exist in the database.'); throw new Exception('Provided appointment id does not exist in the database.');
} }
@ -86,6 +85,15 @@ class Appointments_Model extends CI_Model {
throw new Exception('Appointment end datetime is invalid.'); throw new Exception('Appointment end datetime is invalid.');
} }
// Ensure the appointment lasts longer than the minimum duration (in minutes).
$diff = (strtotime($appointment['end_datetime']) - strtotime($appointment['start_datetime'])) / 60;
if ($diff < EVENT_MINIMUM_DURATION)
{
throw new Exception('The appointment duration is less than the minimum duration ('
. EVENT_MINIMUM_DURATION . ' minutes).');
}
// Check if the provider's id is valid. // Check if the provider's id is valid.
$num_rows = $this->db $num_rows = $this->db
->select('*') ->select('*')