import User from "../models/user"; import Course from "../models/course"; const stripe = require("stripe")(process.env.STRIPE_SECRET); export const makeInstructor = async(req, res) =>{ try{ const { name, email, ifsc, account_number, phone_number } = req.body; let userExist = await User.findOne({ email }).exec(); if(userExist){ if (userExist.role == "Instructor"){ res.send('Your are already an instructor') } User.findOneAndUpdate({email},{role:"Instructor",account_number, phone_number, ifsc}, (err,data)=>{ if(err){ console.log(err) }else{ console.log(data) } }) res.json({"status":"ok"}) } else{ res.json({"status":"No"}) } }catch(err){ console.log(err) } } export const getAccountStatus = async (req, res) => { try { const user = await User.findById(req.user._id).exec(); const account = await stripe.accounts.retrieve(user.stripe_account_id); // console.log("ACCOUNT => ", account); if (!account.charges_enabled) { return res.staus(401).send("Unauthorized"); } else { const statusUpdated = await User.findByIdAndUpdate( user._id, { stripe_seller: account, $addToSet: { role: "Instructor" }, }, { new: true } ) .select("-password") .exec(); res.json(statusUpdated); } } catch (err) { console.log(err); } }; export const currentInstructor = async (req, res) => { try { let user = await User.findById(req.user._id).select("-password").exec(); // console.log("CURRENT INSTRUCTOR => ", user); if (!user.role.includes("Instructor")) { return res.sendStatus(403); } else { res.json({ ok: true }); } } catch (err) { console.log(err); } }; export const instructorCourses = async (req, res) => { try { const courses = await Course.find({ instructor: req.user._id }) .sort({ createdAt: -1 }) .exec(); res.json(courses); } catch (err) { console.log(err); } }; export const studentCount = async (req, res) => { try { const users = await User.find({ courses: req.body.courseId }) .select("_id") .exec(); res.json(users); } catch (err) { console.log(err); } }; export const instructorBalance = async (req, res) => { try { let user = await User.findById(req.user._id).exec(); const balance = await stripe.balance.retrieve({ stripeAccount: user.stripe_account_id, }); res.json(balance); } catch (err) { console.log(err); } }; export const instructorPayoutSettings = async (req, res) => { try { const user = await User.findById(req.user._id).exec(); const loginLink = await stripe.accounts.createLoginLink( user.stripe_seller.id, { redirect_url: process.env.STRIPE_SETTINGS_REDIRECT } ); res.json(loginLink.url); } catch (err) { console.log("stripe payout settings login link err => , err"); } };