Exam Fee/Re-evaluation Fee
Overview
The Fee Configuration feature provides functionality to manage and configure Exam Fees based on different types of exam notifications. The re-evaluation fee type can be for all types of exam notification. This feature consists of two APIs: Create/Update Fee Configuration, and Get Fee Configurations. These APIs allow the creation, modification, and retrieval of exam fee configurations to accommodate different exam notifications regular exam, supplementary exam, and a combination of both.
The Fee Configuration feature incorporates two types of fees:
-
Exam Fee: The exam fee is determined based on the type of exam notification being created. This fee is configured to handle various exam notification scenarios such as regular exam, supplementary exam, and a combination of both.
-
Re-evaluation Fee: In addition to the Exam Fee, there is Re-evaluation Fee configuration. The re-evaluation fee can be on any type of exam notification. It is associated with the process of re-evaluating exam results. This allows students the facility to request a re-evaluation of their answer scripts.
Feature Description
1. Create Fee Configuration API
-
Purpose: The purpose of this API is to allow administrators to define and set up Exam Fee/Re-evaluation Fee dynamically. It enables the creation of Exam Fee, accommodating all types of exam notifications. Also it is specifically designed for configuring Fee for students opting to re-evaluate their answer scripts.
-
Key functions:
-
Exam Fee:
- Regular Exam Notification:
- Allows administrators to set regular exam fee amount and due date for the fee payment.
- Provides flexibility in configuring late fees, handles late fee payment with various penalty amounts associated with multiple deadlines.
- Supplementary Exam Notification:
- Considers the number of supplementary subjects the student is applying for.
- Can configure the fee amount based on this number of subjects, and a single due date for payment.
- Handle late fee payment similar to regular exam.
- Regular+Supplementary Exam Notification:
- Integrates conditions from both regular and supplementary exam notifications.
- Combines regular exam fee, supplementary exam fee, provides a single due date for payment of the fee.
- Handle late fee payment similar to regular exam.
- Regular Exam Notification:
-
Re-evaluation Fee:
- Allows administrators to set re-evaluation fee amount and due date for the fee payment.
- Provides flexibility in configuring late fees, handles late fee payment with various penalty amounts associated with multiple deadlines.
-
-
Output:
- Successfully configuring Exam Fee/Re-evaluation Fee for the exam notification.
- The API outputs a confirmation of the successful creation of a new Exam Fee/Re-evaluation Fee configuration, including details of the configured amounts, due dates, and associated late fees.
2. Get Fee Configuration API
-
Purpose: This API serves the purpose of retrieving details about created or modified exam fee configurations, enabling administrators or other system components to access/view the configured fee details.
-
Key functions:
-
Exam Fee:
- Regular Exam Notification:
- Returns information on the regular exam fee configuration for the exam notification.
- Response includes the regular exam fee amount and due date, also includes information on exam late fees with various penalty amounts associated with multiple deadlines.
- Supplementary Exam Notification:
- Retrieves details for the supplementary exam fee configuration.
- Response includes the number of subjects a student applies for and the corresponding fee, a single due date for payment of the supplementary exam fee, also includes information on exam late fees with various penalty amounts associated with multiple deadlines.
- Regular+Supplementary Exam Notification:
- Fetches a combined response with information from both regular and supplementary exam configurations.
- Includes details on the regular exam fee amount, supplementary fees based on the number of subjects, and a single due date for payment, also information on exam late fees with various penalty amounts associated with multiple deadlines.
- Regular Exam Notification:
-
Re-evaluation Fee:
- Returns information on the re-evaluation fee configuration for the exam notification.
- Response includes the re-evaluation fee amount and due date, also includes information on re-evaluation late fees considering multiple deadlines associated with each fee.
-
-
Output: The API outputs a comprehensive response containing details of the exam fee configurations based on the type of notification.
3. Update Fee Configuration
-
Purpose: This feature facilitates the modification of existing exam fee configurations, allowing administrators to update the exam fee amount, due date, or associated late fees.
-
Key functions:
- Regular Exam Notification:
- Accepts inputs for updating regular exam fee amount and due date.
- Allows modifications to the late fee penalty amount or due date, or both.
- Supplementary Exam Notification:
- Accepts inputs for updating fee amount for supplementary subjects. The administrator can add or modify fee.
- Allows modifications to the late fee penalty amount or due date, or both.
- Regular+Supplementary Exam Notification:
- Integrates conditions from both regular and supplementary notifications.supplementary exam configurations.
- Allows updates to the regular exam fee, supplementary fees, and late fee penalty amount.
- Regular Exam Notification:
-
Note:
- The update functionality is integrated into the Create Fee Configuration API.
- If no fee configuration exists for an exam notification
- The Create Fee Configuration API creates a new Exam Fee configuration.
- And the same API is used to create a new Re-evaluation Fee configuration.
- If an exam fee is already configured, the Create Fee Configuration API handles modifications to relevant information, ensuring a consistent and streamlined approach for both creation and updates.
-
Output: The API outputs the updated fee configuration.
Process Flow
Development Steps
1. Create/Update Fee Configuration
-
The
type
variable within the exam fee entity plays a crucial role in distinguishing between the two fee types. It can take two values:exam_fee
This corresponds to the fee associated with regular exams, supplementary exams or both.re-evaluation_fee
This is specifically configured to accommodate the fee for students opting to re-evaluate their answer scripts.
-
Check Permission: Validate that user attempting to create exam possess the
end_semester_examinations_add
permission. -
Check Authorization: Only Master Institution can configure fee for an exam notification.
-
Validate Exam Notification: Validate if the exam notification for which the user is configuring exam fee is available.
-
Check Duplicate: Validate if an exam fee configuration for the specific exam notification is already created.
- Create a Fee configuration: If there is no duplicate fee record available, create a new fee configuration.
- Update the fee configuration: If there is a duplicate fee record available, update the fee configuration.
-
Creating a Exam Fee configuration:
- Create an empty exam fee from
ExamFee entity
.- Save the fee type as
exam_fee
- Save the exam notification details like
examGroupId
- exam notification idcourseId
- course idregulationId
- regulation idsemNo
- semester numbermonthYear
- exam month, yearbatches
- student batch details
- Save the inputs exam fee amount for regular exam, supplementary subject fee for supplementary exam. And the due date to pay the fee.
amount
- if exam is regular, exam fee amountsuppFee
- if exam is supplementary, array of number of subjects, amountdueDate
- due date to pay the fee
- Save the late fee penalty amount and associated due date in the ExamLateFee entity.
- Save the fee type as
- Create an empty exam late fee
ExamLateFee entity
- For each late penalty fee create a new record in the ExamLateFee entity.
- Save the
examFeeId
amount
dueDate
- Save the
- For each late penalty fee create a new record in the ExamLateFee entity.
- Create an empty exam fee from
-
Creating a Re-evaluation Fee configuration:
- Create an empty exam fee, exam late fee from ExamFee, ExamLateFee entities.
- Save the fee type as
re-evaluation_fee
- Similar to exam fee configuration
- Save the exam notification details as above.
- Save inputs
amount
- re-evaluation fee amount,dueDate
- due date to pay fee.
- Save the late fee penalty amount and associated due date in the ExamLateFee entity as above.
-
Updating the Fee configuration:
- Verify if a duplicate fee configuration record is present for the exam notification for a particular fee type.
- Update the existing fee record with new input values by replacing the existing values in the related attributes.
2. Get Fee Configuration
- Based on the fee type we retrieve external exam fee or internal exam fee or re-evaluation fee.
- Get fee
type
examGroupId
as params. - Validate Exam Notification: Validate if the exam notification for which the user is requesting exam fee details.
- SQL Query:
- Query the ExamFee entity for specific exam notification, fee type using
examGroupId
type
. - Join the
ExamFee entity
andExamLateFee entity
to get late fee information. - Convert the supplementary fee to JSON and return the object.
- Query the ExamFee entity for specific exam notification, fee type using
Schema
@Entity()
export class ExamFee {
@PrimaryGeneratedColumn()
id: number;
@Column({ nullable: true })
examGroupId: number;
@Column()
type: string;
@Column()
feeName: string;
@Column()
feeDescription: string;
@Column({ nullable: true })
amount: number;
@Column()
batches: string;
@Column({ type: 'date' })
dueDate: string;
@Column()
courseId: number;
@Column()
regulationId: number;
@Column()
monthYear: string;
@Column({ nullable: true })
semNo: number;
@Column()
regSupp: string;
@Column({ nullable: true, type: 'json' })
suppFees: any;
@CreateDateColumn()
createdAt: string;
@UpdateDateColumn()
updatedAt: string;
currentLateFee?: number;
examFeeDueDate?: string;
@OneToMany(() => ExamLateFee, (examLateFee) => examLateFee.examFee)
examLateFee: ExamLateFee[];
}
@Entity()
export class ExamLateFee {
@PrimaryGeneratedColumn()
id: number;
@Column()
examFeeId: number;
@Column()
dueDate: string;
@Column()
amount: number;
@CreateDateColumn()
createdAt: string;
@UpdateDateColumn()
updatedAt: string;
@ManyToOne(() => ExamFee, (examFee) => examFee.examLateFee)
examFee: ExamFee;
}
Functions with individual test cases
-
createdExamFee
- Create/update an external exam fee configuration(exam fee, re-evaluation fee).
-
getExamFee
- Retrieve the fee configuration.
Dependent Modules
- ExamFee entity
- ExamLateFee entity
Conclusion
The provided APIs support the creation, update, and retrieval of exam fee configurations. The APIs support two different fee types and accommodates both regular and supplementary or a combination of both notifications.
References
- Create/Update API Postman Link:
- Get API Postman Link: