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/Reports/Teaching Conflicts Report.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE report PUBLIC "-//UniTime//UniTime HQL Reports DTD/EN" "http://www.unitime.org/interface/Reports.dtd">
<!-- 
 * Licensed to The Apereo Foundation under one or more contributor license
 * agreements. See the NOTICE file distributed with this work for
 * additional information regarding copyright ownership.
 *
 * The Apereo Foundation licenses this file to you under the Apache License,
 * Version 2.0 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at:
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 -->
<report name="TA: Teaching Conflicts" created="Tue Jun 06 16:56:11 CEST 2023">
  <flag>APPEARANCE_COURSES</flag>
  <description><![CDATA[This report shows cases, where the instructor is also a student and he or she is enrolled in a class that is overlapping with the class that the instructor is teaching.]]></description>
  <query><![CDATA[select distinct
  ci.instructor.uniqueId as __Instructor,
  s.externalUniqueId as Student_Id, s.lastName || ' ' || s.firstName as Student_Name, s.email as Student_Email,
  e.courseOffering.subjectAreaAbbv || ' ' || e.courseOffering.courseNbr as Enrolled_Course,
  c1.schedulingSubpart.itype.abbv || ' ' || c1.sectionNumberCache as Section_1,
  ((case ((a1.days - (mod(cast((a1.days) as int), 64)))/64) when 1 then 'M' else '' end) ||
  (case mod(cast(((a1.days - (mod(cast((a1.days) as int), 32)))/32) as int), 2) when 1 then 'T' else '' end) ||
  (case mod(cast(((a1.days - (mod(cast((a1.days) as int), 16)))/16) as int), 2) when 1 then 'W' else '' end) ||
  (case mod(cast(((a1.days - (mod(cast((a1.days) as int), 8)))/8) as int), 2) when 1 then 'Th' else '' end) ||
  (case mod(cast(((a1.days - (mod(cast((a1.days) as int), 4)))/4) as int), 2) when 1 then 'F' else '' end) ||
  (case mod(cast(((a1.days - (mod(cast((a1.days) as int), 2)))/2) as int), 2) when 1 then 'S' else '' end) ||
  (case mod(cast((a1.days) as int), 2) when 1 then 'Su' else '' end)) || ' ' ||
  str(floor((5 * m1.startPeriod + m1.startOffset - (mod(cast((5 * m1.startPeriod + m1.startOffset) as int), 60))) /60)) || ':' || lpad(str(mod(cast((5 * m1.startPeriod + m1.startOffset) as int), 60)), 2, '0') || ' - ' ||
  str(floor((5 * m1.stopPeriod + m1.stopOffset - (mod(cast((5 * m1.stopPeriod + m1.stopOffset) as int), 60))) /60)) || ':' || lpad(str(mod(cast((5 * m1.stopPeriod + m1.stopOffset) as int), 60)), 2, '0') ||
  ' ' || a1.datePattern.name as Time_1,
  co2.subjectAreaAbbv || ' ' || co2.courseNbr as Teaching_Course,
  c2.schedulingSubpart.itype.abbv || ' ' || c2.sectionNumberCache as Section_2,
  ((case ((a2.days - (mod(cast((a2.days) as int), 64)))/64) when 1 then 'M' else '' end) ||
  (case mod(cast(((a2.days - (mod(cast((a2.days) as int), 32)))/32) as int), 2) when 1 then 'T' else '' end) ||
  (case mod(cast(((a2.days - (mod(cast((a2.days) as int), 16)))/16) as int), 2) when 1 then 'W' else '' end) ||
  (case mod(cast(((a2.days - (mod(cast((a2.days) as int), 8)))/8) as int), 2) when 1 then 'Th' else '' end) ||
  (case mod(cast(((a2.days - (mod(cast((a2.days) as int), 4)))/4) as int), 2) when 1 then 'F' else '' end) ||
  (case mod(cast(((a2.days - (mod(cast((a2.days) as int), 2)))/2) as int), 2) when 1 then 'S' else '' end) ||
  (case mod(cast((a2.days) as int), 2) when 1 then 'Su' else '' end)) || ' ' ||
  str(floor((5 * m2.startPeriod + m2.startOffset - (mod(cast((5 * m2.startPeriod + m2.startOffset) as int), 60))) /60)) || ':' || lpad(str(mod(cast((5 * m2.startPeriod + m2.startOffset) as int), 60)), 2, '0') || ' - ' ||
  str(floor((5 * m2.stopPeriod + m2.stopOffset - (mod(cast((5 * m2.stopPeriod + m2.stopOffset) as int), 60))) /60)) || ':' || lpad(str(mod(cast((5 * m2.stopPeriod + m2.stopOffset) as int), 60)), 2, '0') ||
  ' ' || a2.datePattern.name as Time_2
from
  StudentClassEnrollment e inner join e.student s inner join e.clazz c1, Assignment a1,
  ClassInstructor ci inner join ci.classInstructing c2 inner join c2.schedulingSubpart.instrOfferingConfig.instructionalOffering.courseOfferings co2,
  ClassEvent e1 inner join e1.meetings m1, ClassEvent e2 inner join e2.meetings m2, Assignment a2
where
  e1.clazz = c1 and e2.clazz = c2 and m1.startPeriod < m2.stopPeriod and m1.stopPeriod > m2.startPeriod and m1.approvalStatus <= 1 and m2.approvalStatus <= 1 and m1.meetingDate = m2.meetingDate and
  co2.subjectArea.uniqueId in %SUBJECTS% and co2.isControl = true and ci.instructor.externalUniqueId = s.externalUniqueId and e.courseOffering.instructionalOffering.session.uniqueId = %SESSION% and
  a1.clazz.uniqueId = c1.uniqueId and a1.solution.commited = true and
  a2.clazz.uniqueId = c2.uniqueId and a2.solution.commited = true and ci.lead = true]]></query>
</report>