HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux vmi1674223.contaboserver.net 5.4.0-182-generic #202-Ubuntu SMP Fri Apr 26 12:29:36 UTC 2024 x86_64
User: root (0)
PHP: 7.4.3-4ubuntu2.22
Disabled: 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,
Upload Files
File: /var/www/html/unitime/Documentation/Scripts/Create Daybreak Constraint.xml
<?xml version="1.0" encoding="UTF-8"?>

<script name="Distribution Types: Create Daybreak Constraint" engine="ECMAScript" created="Sat Oct 22 20:07:58 CEST 2022">
  <description><![CDATA[The Daybreak constraint checks for cases when there is an evening class and a morning class the following day.<br>
There should be at least the given number of hours between an evening class followed by a morning class the next day.<br>
The constraint can be also parametrised by a distance between the two classes:<br>
&nbsp;&nbsp;&nbsp;&nbsp;The constraint only triggers when the distance between the two classes is over the provided distance.]]></description>
  <parameter name="distance" label="Minimal distance in minutes (-1 for no distance check)" type="integer" default="-1"/>
  <parameter name="hours" label="Minimal number of hours between the two classes" type="double" default="10.0"/>
  <body><![CDATA[var reqId = hibSession.createQuery('select max(requirementId) from DistributionType').uniqueResult();
var reference = 'DAYBREAK(' + hours + ',' + distance + ')';
var type = hibSession.createQuery('from DistributionType where reference = :reference').setParameter('reference', reference).uniqueResult();
var abbv = 'Daybreak ' + hours + 'h' + (distance < 0 ? '' : ' >' + distance + 'min');
var label = 'Daybreak of ' + hours + ' hours' + (distance < 0 ? '' : ' when over ' + distance + ' mins');
var desc = 'There should be at least of ' + hours + ' hours between an evening class followed by a morning class the next day';
if (distance < 0) {
  desc += '.';
} else {
  desc += ', but only when the distance is over ' + distance + ' minutes.';
}
if (type == null) {
  type = new org.unitime.timetable.model.DistributionType();
  type.setReference(reference);
  log.info('Creating ' + label + ' constraint...');
} else {
  log.warn('Constraint ' + label + ' already exists.');
}
type.setLabel(label);
type.setSequencingRequired(false);
type.setRequirementId(++reqId);
type.setAllowedPref('210R');
type.setDescr(desc);
type.setAbbreviation(abbv);
type.setInstructorPref(true);
type.setExamPref(false);
type.setVisible(true);
hibSession.saveOrUpdate(type);
log.info('All done.');]]></body>
</script>