import get from "lodash/get"
import BaseController from "../../BaseController"
import UserModel from "../users/model"
/**
* Controller for the @namespace /memberships
*
* @class ConnectionsController
* @extends {BaseController}
*/
class ConnectionsController extends BaseController {
constructor() {
super()
this.validate = this.validate.bind(this)
}
/**
* POST /validate Validate the memebership of a user by email address
*
* @param {string} emailAddress
* @memberof ConnectionsController
*/
async validate(req, res) {
const {
success, notFound, unprocessableEntity, forbidden,
} = this.codes
const { emailAddress } = req.body
const user = new UserModel()
const result = await user.find({ emailAddress }).catch((error) => {
res.status(unprocessableEntity).send({
success: "false",
message: "membership_error",
error,
})
throw error
})
user.set(get(result, "rows[0]"))
if (user.error) {
res.status(notFound).send({
success: "false",
message: "user_not_found",
error: user.error,
})
return
}
const member = await user.validateMembership()
if (!member) {
res.status(forbidden).send({
success: "false",
message: "user_not_subscribed",
error: user.error,
})
return
}
res.status(success).send({
success: "true",
message: "user_subscribed",
member,
})
}
}
export default ConnectionsController