Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed the bugs in Top Speaker Services #63

Merged
merged 12 commits into from
Nov 30, 2021
145 changes: 87 additions & 58 deletions src/api/services/TopSpeaker.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,87 +5,116 @@ import TopSpeakerModel from "../models/TopSpeaker.model";
* @todo create @function insertTopSpeaker to save a speaker in the database
*/
export const insertTopSpeaker = async (topSpeakerData: DocumentDefinition<ITopSpeaker>) => {
return await TopSpeakerModel.create(topSpeakerData)
.then(async (topSpeaker) => {
return topSpeaker;
})
.catch((error) => {
throw new Error(error.message);
});
};
return await TopSpeakerModel.create(topSpeakerData)
.then((topSpeaker) => {
return topSpeaker;
})
.catch((error) => {
throw new Error(error.message);
});
};

/**
* @todo create @function getTopSpeaker to fetch a TopSpeaker in the system
* @param topSpeakerId @type string
*/
export const getTopSpeaker = async (topSpeakerId: string) => {
return await TopSpeakerModel.findById(topSpeakerId)
.then(async (topSpeaker) => {
return await TopSpeakerModel.findById(topSpeakerId)
senuravihanjayadeva marked this conversation as resolved.
Show resolved Hide resolved
.then((topSpeaker) => {
if (topSpeaker && topSpeaker.deletedAt) {
return topSpeaker;
})
.catch((error) => {
throw new Error(error.message);
});
};
} else {
throw new Error("Speaker is not found");
}
})
.catch((error) => {
throw new Error(error.message);
});
};

/**
* @todo create @function getTopSpeakers to fetch all the TopSpeakers in the system
*/
export const getTopSpeakers = async () => {
return await TopSpeakerModel.find()
.then(async (topSpeaker) => {
return topSpeaker;
})
.catch((error) => {
throw new Error(error.message);
});
};
return await TopSpeakerModel.aggregate([{ $match: { deletedAt: { $eq: null } } }])
.then((topSpeakers) => {
return topSpeakers;
})
.catch((error) => {
throw new Error(error.message);
});
};

/**
* @todo create @function updateTopSpeaker to update a TopSpeaker in the system
* @param topSpeakerId @type string
* @param updateData @type DocumentDefinition<ITopSpeaker>
*/
export const updateTopSpeaker = async (
topSpeakerId: string,
updateData: DocumentDefinition<ITopSpeaker>
) => {
return await TopSpeakerModel.findById(topSpeakerId)
.then(async (topSpeakerDetails) => {
if (topSpeakerDetails) {
topSpeakerDetails.title = updateData.title;
topSpeakerDetails.description = updateData.description;
topSpeakerDetails.imageUrl = updateData.imageUrl;
topSpeakerDetails.socialMediaURLs.facebook = updateData.socialMediaURLs.facebook;
topSpeakerDetails.socialMediaURLs.instagram = updateData.socialMediaURLs.instagram;
topSpeakerDetails.socialMediaURLs.linkedIn = updateData.socialMediaURLs.linkedIn;
topSpeakerDetails.socialMediaURLs.twitter = updateData.socialMediaURLs.twitter;
topSpeakerDetails.socialMediaURLs.web = updateData.socialMediaURLs.web;
return await topSpeakerDetails.save();
} else {
return null;
topSpeakerId: string,
updateData: DocumentDefinition<ITopSpeaker>
) => {
return await TopSpeakerModel.findById(topSpeakerId)
.then(async (topSpeakerDetails) => {
if (topSpeakerDetails) {
senuravihanjayadeva marked this conversation as resolved.
Show resolved Hide resolved

if (updateData.title) {
senuravihanjayadeva marked this conversation as resolved.
Show resolved Hide resolved
topSpeakerDetails.title = updateData.title;
}

if (updateData.description) {
topSpeakerDetails.description = updateData.description;
}
})
.catch((error) => {
throw new Error(error.message);
});
};

if (updateData.imageUrl) {
topSpeakerDetails.imageUrl = updateData.imageUrl;
}

if (updateData.socialMediaURLs && updateData.socialMediaURLs.facebook) {
topSpeakerDetails.socialMediaURLs.facebook = updateData.socialMediaURLs.facebook;
}

if (updateData.socialMediaURLs && updateData.socialMediaURLs.instagram) {
topSpeakerDetails.socialMediaURLs.instagram = updateData.socialMediaURLs.instagram;
}

if (updateData.socialMediaURLs && updateData.socialMediaURLs.linkedIn) {
topSpeakerDetails.socialMediaURLs.linkedIn = updateData.socialMediaURLs.linkedIn;
}

if (updateData.socialMediaURLs && updateData.socialMediaURLs.twitter) {
topSpeakerDetails.socialMediaURLs.twitter = updateData.socialMediaURLs.twitter;
}

if (updateData.socialMediaURLs && updateData.socialMediaURLs.web) {
topSpeakerDetails.socialMediaURLs.web = updateData.socialMediaURLs.web;
}

return await topSpeakerDetails.save();
} else {
return null;
}
})
.catch((error) => {
throw new Error(error.message);
});
};

/**
* @todo create @function deleteTopSpeaker to delete a past event
* @param topSpeakerId @type string
*/
export const deleteTopSpeaker = async (topSpeakerId: string) => {
return await TopSpeakerModel.findById(topSpeakerId)
.then(async (topSpeakerDetails) => {
if (topSpeakerDetails) {
topSpeakerDetails.deletedAt = new Date();
return await topSpeakerDetails.save();
} else {
return null;
}
})
.catch((error) => {
throw new Error(error.message);
});
};
return await TopSpeakerModel.findById(topSpeakerId)
.then(async (topSpeakerDetails) => {
if (topSpeakerDetails) {
topSpeakerDetails.deletedAt = new Date();
return await topSpeakerDetails.save();
} else {
return null;
}
})
.catch((error) => {
throw new Error(error.message);
});
};