Skip to content

Conversation

@Abi107717
Copy link
Contributor

@Abi107717 Abi107717 commented Jan 23, 2026

Checklist

General

Server

  • Important: I implemented the changes with a very good performance and prevented too many (unnecessary) and too complex database calls.
  • I strictly followed the principle of data economy for all database calls.
  • I strictly followed the server coding and design guidelines.
  • I documented the Java code using JavaDoc style.

Client

  • Important: I implemented the changes with a very good performance, prevented too many (unnecessary) REST calls and made sure the UI is responsive, even with large data (e.g. using paging).
  • I strictly followed the principle of data economy for all client-server REST calls.
  • I strictly followed the client coding and design guidelines.
  • I documented the TypeScript code using JSDoc style.
  • I added multiple screenshots/screencasts of my UI changes.

Motivation and Context

Currently, it is possible to send invitations to more applicants than there are available interview slots, which leads to booking issues.

Description

This PR improves the invitation flow by adding a warning dialog if the number of available future slots is insufficient for the selected applicants. It integrates the empty slot state directly into the calendar view for a cleaner UI and refactors the slot creation trigger to use Angular Signals. Past slots are now visually distinguished (greyed out), and the "Add Slots" button visibility is optimized.

Steps for Testing

Prerequisites:

Log in to TumApply as professor
Navigate to an Interview Process with some uncontacted applicants. (interviews/overview)

Scenario 1: Insufficient Slots Warning

  1. Ensure the number of uncontacted applicants is greater than the available future slots.
  2. Click "Send Invitations" in the Interviewee Section.
  3. Verify that a warning dialog appears stating "Not enough slots available".
  4. Click "Add Slots" and verify the slot creation modal opens.

Scenario 2: Empty State & adding Slots

  1. Ensure the process has no future slots.
  2. Verify the calendar view shows the "Currently no slots available" message with an "Add Slots" button.
  3. Verify the top-right "Add Slots" button in the month navigation is hidden.
  4. Add a new slot.
  5. Verify the empty state disappears and the newly added slot is visible.

Scenario 3: Past Slots

  1. Navigate to a month with past execution slots.
  2. Verify that past slots appear with reduced opacity (greyed out).

Review Progress

Code Review

  • Code Review 1

Manual Tests

  • Test 1

Test Coverage

Warning: Both client and server tests failed. Coverage could not be fully measured. Please check the workflow logs.

Last updated: 2026-01-27 13:10:57 UTC

Screenshots

Scenario 1
image

Scenario2
image

Scenario 3
image

** If it's a completely new interview process and there are no slots at all**
image

@Abi107717 Abi107717 self-assigned this Jan 23, 2026
@github-actions github-actions bot added the server Pull requests that update Java code. (Added Automatically!) label Jan 23, 2026
@github-actions
Copy link
Contributor

@Abi107717 Test coverage could not be fully measured because some tests failed. Please check the workflow logs for details.

@github-actions
Copy link
Contributor

@Abi107717 Test coverage could not be fully measured because some tests failed. Please check the workflow logs for details.

@github-actions
Copy link
Contributor

🤖 OpenAPI spec and client code auto-updated and committed.

@github-actions github-actions bot added the client Pull requests that update TypeScript code. (Added Automatically!) label Jan 23, 2026
@github-actions
Copy link
Contributor

@Abi107717 Test coverage could not be fully measured because some tests failed. Please check the workflow logs for details.

@github-actions
Copy link
Contributor

🤖 No OpenAPI or client changes needed.

- Apply disabled styles (greyed out) for past slots in UI
- Hide edit/delete/assign actions for past slots
@github-actions
Copy link
Contributor

@Abi107717 Test coverage could not be fully measured because some tests failed. Please check the workflow logs for details.

@github-actions
Copy link
Contributor

🤖 No OpenAPI or client changes needed.

@github-actions
Copy link
Contributor

@Abi107717 Test coverage could not be fully measured because some tests failed. Please check the workflow logs for details.

@github-actions
Copy link
Contributor

🤖 No OpenAPI or client changes needed.

@github-actions
Copy link
Contributor

@Abi107717 Test coverage could not be fully measured because some tests failed. Please check the workflow logs for details.

@github-actions
Copy link
Contributor

🤖 No OpenAPI or client changes needed.

@github-actions
Copy link
Contributor

@Abi107717 Test coverage could not be fully measured because some tests failed. Please check the workflow logs for details.

@github-actions
Copy link
Contributor

🤖 No OpenAPI or client changes needed.

@Abi107717 Abi107717 marked this pull request as ready for review January 23, 2026 22:04
@Abi107717 Abi107717 requested a review from az108 as a code owner January 23, 2026 22:04
@github-actions
Copy link
Contributor

@Abi107717 Test coverage could not be fully measured because some tests failed. Please check the workflow logs for details.

@github-actions
Copy link
Contributor

@Abi107717 Test coverage could not be fully measured because some tests failed. Please check the workflow logs for details.

@github-actions
Copy link
Contributor

🤖 No OpenAPI or client changes needed.

Copy link
Contributor

@Bofan-Zhu Bofan-Zhu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for improving this 😊. I left some comments.
Functionality looks good to me

"""
SELECT COUNT(s) FROM InterviewSlot s
WHERE s.interviewProcess.id = :processId
AND s.startDateTime > :now
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think hibernate provides CURRENT_TIMESTAMP or something similar if I'm not mistaken

@github-actions
Copy link
Contributor

@Abi107717 Test coverage could not be fully measured because some tests failed. Please check the workflow logs for details.

@github-actions
Copy link
Contributor

🤖 No OpenAPI or client changes needed.

@Abi107717 Abi107717 marked this pull request as draft January 27, 2026 16:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

client Pull requests that update TypeScript code. (Added Automatically!) server Pull requests that update Java code. (Added Automatically!)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Improve Professor Slot Visibility + Prevent Sending Invitations Without Enough Slots

3 participants