signup-login-module-with-authorizedotnet-gateway
Version:
User Signup-login-module-with-AuthorizedotNet payment gateway
361 lines (355 loc) • 16.1 kB
JavaScript
;
// Uncomment these imports to begin using these cool features!
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
// import {inject} from '@loopback/context';
const repository_1 = require("@loopback/repository");
const repositories_1 = require("../repositories");
var path = require('path');
const mongodb = require('mongodb');
var createSubscription = require('../../../service/createSubscription');
var updateSubscription = require('../../../service/updateSubscription');
var cancelSubscription = require('../../../service/cancelSubscription');
var getSubscription = require('../../../service/getSubscription');
var getSubscriptionStatus = require('../../../service/getSubscriptionStatus');
var constants = require('../../../constants');
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
service: constants.service,
auth: {
user: constants.email,
pass: constants.password
}
});
const models_1 = require("../models");
const rest_1 = require("@loopback/rest");
let UserController = class UserController {
constructor(userRepo) {
this.userRepo = userRepo;
}
async createUser(user) {
let data;
if (!user.email) {
throw new rest_1.HttpErrors.BadRequest('email is required');
}
let response = await this.userRepo.find({ where: { email: user.email } });
console.log(response);
if (response.length > 0) {
throw new rest_1.HttpErrors.BadRequest('email already exists');
}
else {
let creation_response = await this.userRepo.create(user);
if (creation_response) {
let repo = this.userRepo;
return new Promise((resolve, reject) => {
createSubscription.createSubscription(user, function (err, transaction_result) {
if (err) {
reject(err);
}
else {
if (transaction_result.messages.resultCode == "Error") {
throw new rest_1.HttpErrors.BadRequest(transaction_result.messages.message[0].text);
reject(transaction_result.messages.message[0].text);
}
else {
data = { "subscription_id": transaction_result.subscriptionId, "subscription_status": "active" };
let mailOptions = {
from: constants.email,
to: user.email,
subject: 'Subscription successfully completed',
html: '<strong>Hi </strong>' + user.username + '<p>Your subscription successfully completed</p><p>Your subscription ID: <strong>' + transaction_result.subscriptionId + '</strong></p>',
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log('Message sent: %s', info.messageId);
});
console.log(creation_response._id);
update(user);
async function update(user) {
let result = await repo.updateById(creation_response._id, data);
if (result == true) {
let id = creation_response._id;
let updatedResult = await repo.findById(id);
resolve(updatedResult);
}
}
}
}
});
});
}
}
}
async updateSubscription(user) {
let repo = this.userRepo;
let id = new mongodb.ObjectID(user.user_id);
console.log(id)
let response = await this.userRepo.findById(id);
console.log(response._id)
if (response) {
return new Promise((resolve, reject) => {
updateSubscription.updateSubscription(response.subscription_id, user, function (err, transaction_result) {
if (err) {
reject(err);
}
else {
if (transaction_result.messages.resultCode == "Error") {
throw new rest_1.HttpErrors.BadRequest(transaction_result.messages.message[0].text);
reject(transaction_result.messages.message[0].text);
}
else {
user.subscription_status = "active";
console.log(response._id);
update(user);
async function update(user) {
let result = await repo.updateById(response._id, user);
if (result == true) {
let id = response._id;
let updatedResult = await repo.findById(id);
resolve(updatedResult);
}
}
}
}
});
});
}
else {
throw new rest_1.HttpErrors.BadRequest('subscription_id not found');
}
}
async getSubscriptionDetails(user) {
let repo = this.userRepo;
let id = new mongodb.ObjectID(user.user_id);
console.log(id)
let response = await this.userRepo.findById(id);
console.log(response._id)
if (response) {
return new Promise((resolve, reject) => {
getSubscription.getSubscription(response.subscription_id, function (err, transaction_result) {
if (err) {
throw new rest_1.HttpErrors.BadRequest('subscription_id not found');
reject(err);
}
else {
if (transaction_result.messages.resultCode == "Error") {
throw new rest_1.HttpErrors.BadRequest(transaction_result.messages.message[0].text);
reject(transaction_result.messages.message[0].text);
}
else {
resolve(transaction_result);
}
}
});
});
}
else {
throw new rest_1.HttpErrors.BadRequest('subscription_id not found');
}
}
async getSubscriptionStatus(user) {
let repo = this.userRepo;
let id = new mongodb.ObjectID(user.user_id);
console.log(id)
let response = await this.userRepo.findById(id);
console.log(response._id)
if (response) {
return new Promise((resolve, reject) => {
getSubscriptionStatus.getSubscriptionStatus(response.subscription_id, function (err, transaction_result) {
if (err) {
throw new rest_1.HttpErrors.BadRequest('subscription_id not found');
reject(err);
}
else {
if (transaction_result.messages.resultCode == "Error") {
throw new rest_1.HttpErrors.BadRequest(transaction_result.messages.message[0].text);
reject(transaction_result.messages.message[0].text);
}
else {
resolve(transaction_result);
}
}
});
});
}
else {
throw new rest_1.HttpErrors.BadRequest('subscription_id not found');
}
}
async cancelSubscription(user) {
let repo = this.userRepo;
let id = new mongodb.ObjectID(user.user_id);
console.log(id)
let response = await this.userRepo.findById(id);
console.log(response._id)
if (response) {
return new Promise((resolve, reject) => {
cancelSubscription.cancelSubscription(response.subscription_id, function (err, transaction_result) {
if (err) {
throw new rest_1.HttpErrors.BadRequest('subscription_id not found');
reject(err);
}
else {
if (transaction_result.messages.resultCode == "Error") {
throw new rest_1.HttpErrors.BadRequest(transaction_result.messages.message[0].text);
reject(transaction_result.messages.message[0].text);
}
else {
user.subscription_status = "inactive";
console.log(response._id);
update(user);
async function update(user) {
let result = await repo.updateById(response._id, user);
if (result == true) {
let id = response._id;
let updatedResult = await repo.findById(id);
let mailOptions = {
from: constants.email,
to: response.email,
subject: 'Subscription successfully Cancelled',
html: '<strong>Hi </strong>' + response.username + '<p>Your subscription successfully cancelled</p><p>Your subscription ID: <strong>' + transaction_result.subscriptionId + '</strong></p>',
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log('Message sent: %s', info.messageId);
});
resolve(updatedResult);
}
}
}
}
});
});
}
else {
throw new rest_1.HttpErrors.BadRequest('subscription_id not found');
}
}
async loginUser(user) {
// let userget = await this.userRepo.find();
if (!user.email && !user.password) {
throw new rest_1.HttpErrors.BadRequest('email or password is empty');
}
let response = await this.userRepo.find({ where: { email: user.email } });
if (response.length > 0) {
return response[0];
}
else {
throw new rest_1.HttpErrors.BadRequest('email or password is incorrect!!!!');
}
}
async findUserById(id) {
return await this.userRepo.findById(id);
}
async findUser() {
return await this.userRepo.find();
}
async replaceUser(id, user) {
return await this.userRepo.replaceById(id, user);
}
async updateUser(id, user) {
return await this.userRepo.updateById(id, user);
}
async deleteUser(id) {
return await this.userRepo.deleteById(id);
}
};
__decorate([
rest_1.post('/users/signup'),
__param(0, rest_1.requestBody()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [models_1.User]),
__metadata("design:returntype", Promise)
], UserController.prototype, "createUser", null);
__decorate([
rest_1.post('/users/updateSubscription'),
__param(0, rest_1.requestBody()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", Promise)
], UserController.prototype, "updateSubscription", null);
__decorate([
rest_1.post('/users/getSubscriptionDetails'),
__param(0, rest_1.requestBody()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", Promise)
], UserController.prototype, "getSubscriptionDetails", null);
__decorate([
rest_1.post('/users/getSubscriptionStatus'),
__param(0, rest_1.requestBody()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", Promise)
], UserController.prototype, "getSubscriptionStatus", null);
__decorate([
rest_1.post('/users/cancelSubscription'),
__param(0, rest_1.requestBody()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", Promise)
], UserController.prototype, "cancelSubscription", null);
__decorate([
rest_1.post('/users/login'),
__param(0, rest_1.requestBody()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", Promise)
], UserController.prototype, "loginUser", null);
__decorate([
rest_1.get('/users/{id}'),
__param(0, rest_1.param.path.number('id')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String]),
__metadata("design:returntype", Promise)
], UserController.prototype, "findUserById", null);
__decorate([
rest_1.get('/users'),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", Promise)
], UserController.prototype, "findUser", null);
__decorate([
rest_1.put('/users/{id}'),
__param(0, rest_1.param.path.number('id')),
__param(1, rest_1.requestBody()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String, models_1.User]),
__metadata("design:returntype", Promise)
], UserController.prototype, "replaceUser", null);
__decorate([
rest_1.patch('/users/{id}'),
__param(0, rest_1.param.path.number('id')),
__param(1, rest_1.requestBody()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String, models_1.User]),
__metadata("design:returntype", Promise)
], UserController.prototype, "updateUser", null);
__decorate([
rest_1.del('/users/{id}'),
__param(0, rest_1.param.path.number('id')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String]),
__metadata("design:returntype", Promise)
], UserController.prototype, "deleteUser", null);
UserController = __decorate([
__param(0, repository_1.repository(repositories_1.UserRepository)),
__metadata("design:paramtypes", [repositories_1.UserRepository])
], UserController);
exports.UserController = UserController;
//# sourceMappingURL=user.controller.js.map