import { Document } from 'mongoose'; import { IDefaultAttributes } from './commonInterface'; import { OFFER_APPLICABLE_TO, OFFER_CATEGORY, OFFER_COMMAND_STATUS, OFFER_CONDITION_TYPE, OFFER_NAME, OFFER_TYPE, PAYMENT_TYPE, USER_TYPES } from '../constants'; export interface ICondition { type: OFFER_CONDITION_TYPE; value?: string | number | boolean; } export interface IUsageRule { title: 'BATCH' | 'FEE' | 'STD' | 'SUBJECT'; entityIds: string[]; limit?: number; usedCount?: number; } export interface IOfferAndDiscountModelAttributes extends IDefaultAttributes, Document { id: string; instituteId: string; academicCalendarId: string; title?: string; description?: string; offerType: OFFER_TYPE; offerApplicableTo: OFFER_APPLICABLE_TO; offerCategory?: OFFER_CATEGORY; offerFor: OFFER_NAME; discount: number; maximumDiscount?: number; minimumFee?: number; startTime?: Date; whoCanOfferApply?: USER_TYPES[]; paymentMode?: PAYMENT_TYPE[]; endTime?: Date; userLimit?: number; usedCount?: number; conditions?: ICondition[]; usageRules?: IUsageRule[]; needApproval: boolean; userId: string; status: OFFER_COMMAND_STATUS; parentOfferId?: string; }