<?php

$pcode_model = new numbpay\db\PromoCodeModel('eu83c8-promo-codes.json');

if($user && !is_subscribed($user)) {
    $validator_one = new numbpay\validator\PurchaseOneValidator();
    $validator_two = new numbpay\validator\PurchaseTwoValidator();

    //page one submit
    if(list($form_data, $errors) = $validator_one->validate()) {
        if($errors) {
            $t_content = purchase_one($prices, $form_data, $errors);
        }
        else {
            $client_token = Braintree_ClientToken::generate();
            $discount = $pcode_model->check_code($form_data);
            $t_content = purchase_two($prices, $client_token, $form_data, $discount);
        }
    }

    //page two submit
    else if(list($form_data, $errors) = $validator_two->validate()) {
        if($errors) {
            $t_content = 'Payment error. Please try again.';
        }
        else {

            $amount = ($form_data['sub_plan'] == 2)
                ? $prices[1]
                : $prices[0];

            //
            $initial_cost = $amount;

            //
            $discount = $pcode_model->check_code($form_data);

            if(!is_null($discount)) {
                $amount -= $discount;
                $amount = number_format($amount, 2, '.', '');
            }

            //
            if($form_data['iam_texas']) {
                $amount *= TAX_RATE;
                $amount = number_format($amount, 2, '.', '');
            }

            //one-time payment
            $result = Braintree_Transaction::sale(array(
                'amount' => $amount,
                'paymentMethodNonce' => $form_data['payment_method_nonce'],
                'customFields' => array(
                    'vendor_id' => $user['affiliateID']),
                'customer' => array(
                    'firstName' => $user['first_name'],
                    'lastName' => $user['last_name'],
                    'email' => $user['email']),
                'options' => array(
                    'submitForSettlement' => true)
            ));

            if($result->success) {
                $user_model->update($user, $form_data['sub_plan']);

                //
                $purchase_model = numbpay\db\ModelFactory::get('numbpay\db\PurchaseModel');
                $purchase_model->create(array(
                    'braintree_tran_id' => $result->transaction->id,
                    'user_id' => $user['id'],
                    'promo_code' => is_null($discount) ? null : $form_data['pcode'],
                    'initial_cost' => $initial_cost,
                    'discount_amount' => is_null($discount) ? 0 : $discount,
                    'purchase_type' => $form_data['sub_plan'] == 2 ? 'full' : 'limited',
                    'zip' => $result->transaction->billing['postalCode'],
                    'is_tax' => $form_data['iam_texas']));

                //
                $t_content = 'Thank you for subscribing.';
                /*$t_content = 'Thank you for subscribing - ' .
                    '<a onclick="afterPurchaseLinkClick()" href="javascript:void(0);">click here</a> to view reports.';*/
            }
            else {
                $t_content ='Payment error. Please try again.';
            }
        }
    }

    //first time on page
    else {
        $t_content = purchase_one($prices);
    }

    //
    $t_head = c\css(CSS . 'purchase.css') .
        c\js(JS . 'purchase.js');
}
else if($user) {
    $t_content = 'User already subscribed.';
}
else {
    $t_content = 'Unknown user.';
}
