fix(ui): payment due date calculation, datepicker colors, scrollable tabs, optional receipt, default today date
This commit is contained in:
@@ -82,3 +82,38 @@ export function calculateClassEndDate(startDate, days = [], numberOfSessions = 0
|
||||
|
||||
return lastMatchingDate ? lastMatchingDate.locale('fa').format('jYYYY/jMM/jDD') : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the halfway due date for a class in Jalali (jYYYY/jMM/jDD).
|
||||
* If class has 10 sessions, due date is calculated until the 5th session.
|
||||
* @param {Object} cls - Class object
|
||||
* @returns {string} Jalali formatted date string, or today's date if not calculable
|
||||
*/
|
||||
export function calculateClassMidDate(cls) {
|
||||
if (!cls) return moment().locale('fa').format('jYYYY/jMM/jDD');
|
||||
|
||||
const totalSessions = parseInt(cls.numberOfSessions || cls.course?.sectionCount || 0, 10);
|
||||
const midSessions = totalSessions > 0 ? Math.ceil(totalSessions / 2) : 0;
|
||||
|
||||
if (cls.startDate && Array.isArray(cls.days) && cls.days.length > 0 && midSessions >= 1) {
|
||||
const computed = calculateClassEndDate(cls.startDate, cls.days, midSessions);
|
||||
if (computed) return computed;
|
||||
}
|
||||
|
||||
if (cls.startDate && cls.endDate) {
|
||||
const startM = moment(cls.startDate);
|
||||
const endM = moment(cls.endDate);
|
||||
if (startM.isValid() && endM.isValid()) {
|
||||
const midTime = startM.valueOf() + (endM.valueOf() - startM.valueOf()) / 2;
|
||||
return moment(midTime).locale('fa').format('jYYYY/jMM/jDD');
|
||||
}
|
||||
}
|
||||
|
||||
if (cls.startDate) {
|
||||
const startM = moment(cls.startDate);
|
||||
if (startM.isValid()) return startM.locale('fa').format('jYYYY/jMM/jDD');
|
||||
}
|
||||
|
||||
return moment().locale('fa').format('jYYYY/jMM/jDD');
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user