def __init__(self, email, customer_id=None, stripe_id=None, root=True, sub_id=None):
		self.customer_id = customer_id
		self.stripe_id = stripe_id
		self.root = root
		self.sub_id = sub_id
		self.stripe_obj = PaymentsService(email, customer_id=stripe_id)
		self.compile()
Esempio n. 2
0
def analytics_checkout():
    obj = PaymentsService(session['email'], customer_id=session['stripe_id'])
    obj.analytics()
    if request.args.get('session_id'):
        return render_template('core/checkout.html', plan="analytics")
    else:
        return redirect(url_for('analytics_checkout', session_id=obj.id))
class SettingsViewModel:
	def __init__(self, email, customer_id=None, stripe_id=None, root=True, sub_id=None):
		self.customer_id = customer_id
		self.stripe_id = stripe_id
		self.root = root
		self.sub_id = sub_id
		self.stripe_obj = PaymentsService(email, customer_id=stripe_id)
		self.compile()

	def get_stripe(self):
		self.plans = self.stripe_obj.fetch_plans()
		self.invoices = self.stripe_obj.invoices()

	def get_customer_data(self):
		query = "SELECT * FROM settings_view(?)"
		data, cursor = db.execute(query, True, (self.customer_id,))
		data = cursor.fetchone()
		self.customer = {
			'first_name': data[0],
			'current_plan': False if not data[1] else True,
			'almost_free': False if not data[2] else True,
			'ad_mid': False if not data[3] else True,
			'ad_premium': False if not data[4] else True,
			'funds_remaining': data[5],
			'spend_rate': data[6],
			'analytics': data[7]
		}

	def subscription(self):
		data = self.stripe_obj.get_plan_meta(self.sub_id)
		self.plan_meta = {
			'amount': (data['plan']['amount']/100) if data['plan']['amount'] else 0,
			'start_date': data.get('start_date') if data.get('start_date') else 0,
			'canceled_at': data.get('canceled_at') if data['canceled_at'] else 0,
			'cancel_at': data.get('cancel_at') if data['cancel_at'] else 0
		}

	def compile(self):
		self.get_stripe()
		self.get_customer_data()

		if self.root == False:
			self.subscription()
			upcoming_invoices = self.stripe_obj.upcoming_invoices()
			past_invoices = self.stripe_obj.invoices(sub_num=self.sub_id)

			self.upcoming_invoices = {
				'amount': (upcoming_invoices['data'][0]['amount']/100),
				'start': upcoming_invoices['data'][0]['period']['start'],
				'end': upcoming_invoices['data'][0]['period']['end']
			}
			invoices = {}
			for i in range(len(past_invoices['data'])):
				invoices[i] = {
					'id': past_invoices['data'][i]['id'],
					'amount_due': (past_invoices['data'][i]['amount_due']/100),
					'status': 'paid' if past_invoices['data'][i]['amount_due'] == past_invoices['data'][i]['amount_paid'] else 'open',
					'due': past_invoices['data'][i]['created']
				}
			self.past_invoices = invoices
Esempio n. 4
0
def paid_ads_premium_checkout():
    obj = PaymentsService(session['email'], customer_id=session['stripe_id'])
    obj.paid_ads_premium()
    if request.args.get('session_id'):
        return render_template('core/checkout.html', plan="ads_premium")
    else:
        return redirect(url_for('paid_ads_premium_checkout',
                                session_id=obj.id))
Esempio n. 5
0
def single_campaign():
    obj = PaymentsService(session['email'], customer_id=session['stripe_id'])
    quantity = request.args.get('quantity') if request.args.get(
        'quantity') else 1
    obj.single_campaign(quantity=quantity)

    db.execute("update customer_basic set num_campaigns = ? where id = ?",
               False, (quantity, session['user']),
               commit=True)

    if request.args.get('session_id'):
        return render_template('core/checkout.html', plan="ab")
    else:
        return redirect(
            url_for('single_campaign', session_id=obj.id, quantity=quantity))
Esempio n. 6
0
def success():
    # get plan id
    email = session['email'] if session['logged_in'] else request.args.get(
        'email')
    customer_id = session['stripe_id'] if session[
        'logged_in'] else request.args.get('stripe_id')
    payments = PaymentsService(session['email'],
                               customer_id=session['stripe_id'])
    gchat = GoogleChatService()
    plans = payments.get_plan()
    for plan in plans:
        gchat.new_customer(email=session['email'], customer_type=plan)
        # update db with plan id
        UserService.update_plan(session['user'], plan)

    UserService.init_profile_after_purchase(UserService.now(), session['user'])

    # redirect to home
    return redirect(url_for('home', view='campaigns'))
Esempio n. 7
0
def plan_view(plan_id):
    page = SettingsViewModel(session['email'],
                             customer_id=session['user'],
                             stripe_id=session['stripe_id'],
                             root=False,
                             sub_id=plan_id)

    if request.method == 'POST':
        if request.form['cancel_sub']:
            payments = PaymentsService(session['email'],
                                       customer_id=session['stripe_id'])
            payments.delete_subscriptions(sub_id=plan_id,
                                          customer_id=session['stripe_id'])
            return redirect(url_for('settings'))

        # if request.form['send_invoice']:
        #     payments = PaymentsService(session['email'], customer_id=session['stripe_id'])
        #     payments.send_invoice(invoice_id=request.form['invoice_id'])
        #     return redirect(url_for('plan_view', plan_id=request.form['plan_id']))

    return render_template('core/settings.html',
                           page=page,
                           root=False,
                           plan_id=plan_id)
def begin():
    form = forms.Profile()
    service = IntakeService(session['user'], 'begin',
                            session['onboarding_complete'])

    if ViewFuncs.ValidSubmission(form=form, method=request.method):
        if request.form['submit_button'] != 'skip':
            service.begin(form.data)
            if session['onboarding_complete'] == False:
                payments = PaymentsService(session['email'])
                stripe_id = payments.create_customer()

                session['stripe_id'] = stripe_id
                UserService.UpdateStripeId(session['email'],
                                           session['stripe_id'])

                gchat = GoogleChatService()
                gchat.onboarding_started(email=session['email'])

                stripe_info = PaymentsService(session['email'],
                                              customer_id=session['stripe_id'])
                stripe_info.modify(company_name=form.company_name.data)

        else:
            service.skip(10)

        if session['onboarding_complete'] == True:
            return redirect(url_for('home', view='profile'))
        else:
            return redirect(url_for('competitors'))

    return ViewFuncs.view_page(
        user=session['user'],
        user_name=session['user_name'],
        form=form,
        view_page='profile',
        next_page='competitors',
        coming_home=request.args.get('home'),
        splash=request.args.get('splash'),
        onboarding_complete=session['onboarding_complete'],
        onboarding=True if session['onboarding_complete'] == False else False)
Esempio n. 9
0
def inspect():
    service = PaymentsService(None, customer_id='cus_Fg7dwInveMv4wX')
    customer = service.get_plan_meta(plan_id='sub_FhE3gUPeN4xjE4')
    return json.dumps(customer)