new login screen added
This commit is contained in:
parent
bfef307725
commit
d6426f705b
@ -29,6 +29,11 @@ const findDistrictByName = async (districtName: string, stateName?: string) => {
|
||||
});
|
||||
};
|
||||
|
||||
const toTitleCase = (str: string) => {
|
||||
if (!str) return str;
|
||||
return str.split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(' ');
|
||||
};
|
||||
|
||||
export const submitApplication = async (req: AuthRequest, res: Response) => {
|
||||
try {
|
||||
const {
|
||||
@ -57,6 +62,8 @@ export const submitApplication = async (req: AuthRequest, res: Response) => {
|
||||
|
||||
const applicationId = NomenclatureService.generateApplicationId();
|
||||
let districtId = null;
|
||||
// Normalize incoming ID sources for robustness
|
||||
const incomingLocationId = req.body.locationId || req.body.districtId;
|
||||
|
||||
// Primary Mapping: Resolve district by Name (State + District combination)
|
||||
// This is robust for external sources where ID mapping is difficult.
|
||||
@ -67,16 +74,36 @@ export const submitApplication = async (req: AuthRequest, res: Response) => {
|
||||
}
|
||||
}
|
||||
|
||||
// Secondary Fallback: If ID is explicitly provided (Legacy/Internal use)
|
||||
if (!districtId && req.body.districtId) {
|
||||
const selectedDistrict = await District.findByPk(req.body.districtId);
|
||||
// Secondary Fallback: If ID is explicitly provided
|
||||
if (!districtId && incomingLocationId) {
|
||||
const selectedDistrict = await District.findByPk(incomingLocationId);
|
||||
if (selectedDistrict) {
|
||||
districtId = selectedDistrict.id;
|
||||
}
|
||||
}
|
||||
|
||||
let activeOpportunityId = null;
|
||||
if (districtId) {
|
||||
|
||||
// CASE 1: Explicit Opportunity ID provided (Trust but verify active status)
|
||||
if (opportunityId) {
|
||||
const explicitOpp = await Opportunity.findOne({
|
||||
where: {
|
||||
id: opportunityId,
|
||||
status: 'active',
|
||||
[Op.or]: [
|
||||
{ openTo: null },
|
||||
{ openTo: { [Op.gte]: new Date() } }
|
||||
]
|
||||
}
|
||||
});
|
||||
if (explicitOpp) {
|
||||
activeOpportunityId = explicitOpp.id;
|
||||
if (!districtId) districtId = explicitOpp.districtId;
|
||||
}
|
||||
}
|
||||
|
||||
// CASE 2: Auto-discover active opportunity for the resolved district
|
||||
if (!activeOpportunityId && districtId) {
|
||||
const opportunity = await Opportunity.findOne({
|
||||
where: {
|
||||
districtId,
|
||||
@ -131,11 +158,14 @@ export const submitApplication = async (req: AuthRequest, res: Response) => {
|
||||
}
|
||||
|
||||
// Send Email (Async)
|
||||
const displayApplicantName = toTitleCase(applicantName);
|
||||
const displayLocation = toTitleCase(city || preferredLocation);
|
||||
|
||||
if (isOpportunityAvailable) {
|
||||
sendOpportunityEmail(email, applicantName, city || preferredLocation, applicationId)
|
||||
sendOpportunityEmail(email, displayApplicantName, displayLocation, applicationId)
|
||||
.catch(err => console.error('Error sending opportunity email', err));
|
||||
} else {
|
||||
sendNonOpportunityEmail(email, applicantName, city || preferredLocation)
|
||||
sendNonOpportunityEmail(email, displayApplicantName, displayLocation)
|
||||
.catch(err => console.error('Error sending non-opportunity email', err));
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user