From 8e941b5b20ff8934ecda2e4eaf4a01bb985eb956 Mon Sep 17 00:00:00 2001 From: Barry Low Date: Thu, 21 Mar 2019 17:32:01 +0100 Subject: [PATCH] Add strategy creation to create team --- .../resolvers/Mutation/createStrategy.js | 40 ++++++++++++++++ api/src/graphql/resolvers/Mutation/index.js | 48 ++++++++++++------- 2 files changed, 71 insertions(+), 17 deletions(-) create mode 100644 api/src/graphql/resolvers/Mutation/createStrategy.js diff --git a/api/src/graphql/resolvers/Mutation/createStrategy.js b/api/src/graphql/resolvers/Mutation/createStrategy.js new file mode 100644 index 000000000..12e73c281 --- /dev/null +++ b/api/src/graphql/resolvers/Mutation/createStrategy.js @@ -0,0 +1,40 @@ +import axios from 'axios' + +import { logger, DatabaseError } from '../../../logger' + +export const createStrategy = fbSlug => { + logger.info('createStrategy') + logger.info(fbSlug) + return new Promise((resolve, reject) => { + try { + return axios.post(process.env.PLATFORM_API_URL, { + query: `mutation strategizer_CreateStrategy($fbSlug: String!) { + strategizer_CreateStrategy(fbSlug: $fbSlug){ + id + } + }`, + variables: { + fbSlug: fbSlug + } + }, { + headers: { + 'Content-Type': 'application/json' + } + }) + .then(res => { + logger.info('createStrategy result') + logger.info(res.data) + resolve(res.data) + }) + .catch(err => { + logger.error('createStrategy err') + logger.error(err) + reject(err) + }) + } catch (error) { + reject(error) + } + }) +} + +export default createStrategy diff --git a/api/src/graphql/resolvers/Mutation/index.js b/api/src/graphql/resolvers/Mutation/index.js index 600bd914c..618a3ab5c 100644 --- a/api/src/graphql/resolvers/Mutation/index.js +++ b/api/src/graphql/resolvers/Mutation/index.js @@ -2,6 +2,7 @@ import axios from 'axios' import { ApolloError } from 'apollo-server-express' import { getUser } from '../../../middleware/getMember' +import { createStrategy } from './createStrategy' import { notifications_sendTeamCreateConfirmation, notifications_sendTeamMemberInvite, notifications_VerifyTeamMemberInviteToken } from '../notifications/sendgrid' @@ -110,27 +111,40 @@ export const resolvers = { return new DatabaseError(err) }) - if(createTeam) notifications_sendTeamCreateConfirmation(email, name, botName) } - - await ctx.db.mutation.createFinancialBeings({ data:{ - type:'BOT', - kind:'INDICATOR', - name:'Simulator ' + botName, - slug:'simulator-' + botSlug, - avatar:avatar, - team: { - connect:{ - id:createTeam.id + let createFB; + if(createTeam){ + createFB = await ctx.db.mutation.createFinancialBeings({ data:{ + type:'BOT', + kind:'INDICATOR', + name:'Simulator ' + botName, + slug:'simulator-' + botSlug, + avatar:avatar, + team: { + connect:{ + id:createTeam.id + } } } + }, FB_FRAGMENT) + .catch((err) => { + logger.debug(err, 'Error creating the simulator: ') + return new DatabaseError(err) + }) + logger.info('createTeam creating simulator success') + logger.info(JSON.stringify(await createFB)) + let createdStrategy + if(await createFB){ + logger.info('createStrategy:' + 'simulator-' + botSlug) + createdStrategy = await createStrategy('simulator-' + botSlug) + logger.info('createStrategy:') + logger.info(JSON.stringify(await createStrategy)) } - }, FB_FRAGMENT) - .catch((err) => { - logger.debug(err, 'Error creating the simulator: ') - return new DatabaseError(err) - }) - logger.info('createTeam creating simulator success') + } + + if(await createTeam && await createFB && await createStrategy){ + notifications_sendTeamCreateConfirmation(email, name, botName) + } return createTeam }, async updateTeamProfile(parent, { slug, owner, description, motto, avatar, banner }, ctx, info) {