gwm:multipleAddress

This commit is contained in:
sriramv 2023-06-06 15:27:39 +05:30
parent 815efbda6e
commit 84118a3252
10 changed files with 238 additions and 152 deletions

View File

@ -36,6 +36,8 @@ $routes->match(['get'],'/members_list','Member_controller::members_list');
$routes->match(['get'],'/member_edit/(:any)','Member_controller::member_edit/$1');
$routes->match(['post'],'/member_edit','Member_controller::member_edit');
$routes->match(['get','post'],'/member_add','Member_controller::member_add');
$routes->match(['get','post'],'/member_address_form','Member_controller::member_address_form');
$routes->match(['get','post'],'/member_address_edit_or_add','Member_controller::member_address_edit_or_add');
$routes->match(['post'],'/buy_pack','Member_controller::buy_pack');
$routes->match(['post'],'/use_points','Member_controller::use_points');

View File

@ -12,6 +12,7 @@ use App\Models\Credits_usage_tracking_model;
use Config\Services;
use App\Libraries\SquareService;
use App\Models\Cart_token_model;
use App\Models\Member_address_model;
class Member_controller extends BaseController
{
@ -29,6 +30,7 @@ class Member_controller extends BaseController
$this->cartModel = new Cart_model();
$this->CreditsUsageTrackingModel = new Credits_usage_tracking_model();
$this->Cart_token_model = new Cart_token_model();
$this->MemberAddressModel = new Member_address_model();
helper('form');
}
public function index()
@ -116,6 +118,7 @@ class Member_controller extends BaseController
$insert_data = $this->MemberModel->save($MemberData);
if($insert_data)
{
$sendmail_controller = new Sendmail_controller();
$sendmail_controller->index($this->request->getVar('email') , $MemberData['verification_code'] , 1);
return redirect()->to(base_url());
@ -135,6 +138,10 @@ class Member_controller extends BaseController
public function members_list()
{
$id = session()->get('logged_user');
$userdata['userdata']=$this->dModel->getLoggedInUserData($id);
$data['Membersdata'] = $this->MemberModel->select('member.* , country.name as country_name , state.name as state_name ,city.name as city_name')
@ -480,63 +487,31 @@ class Member_controller extends BaseController
public function processPayment()
public function member_address_form()
{
try {
$amount = 100; // Amount in cents
$id = $this->request->getVar('id');
$data['userAddress'] = $this->MemberAddressModel->where('member_id',session()->get('logged_user'))->where('id',$id)->find();
echo view('member_address_form',$data);
$square = new SquareService();
$response = $square->processPayment($amount);
}
public function member_address_edit_or_add()
{
$array = $this->request->getVar();
$id = $this->request->getVar('id');
$update =$this->MemberAddressModel->where('id', $id )->where('member_id',session()->get('logged_user'))->set($array)->update();
if($update)
{
echo true;
}
// Handle the payment response
if ($response->isSuccess()) {
// Payment succeeded
} else {
// Payment failed
}
} catch (\Exception $e) {
// Handle exceptions
echo $e->getMessage();
log_message('error', 'Exception: ' . $e->getMessage());
// ...
} catch (\Error $e) {
// Handle errors
echo $e->getMessage();
log_message('error', 'Error: ' . $e->getMessage());
// ...
}
}
public function processCardPayment()
{
try {
//echo "hai"; die();
// Get the payment nonce and amount from the submitted form
$nonce = 'test';
$amount = 100;
// echo $nonce;die();
$square = new SquareService();
$response = $square->processCardPayment($nonce, $amount);
// Handle the payment response
if ($response && $response->isSuccess()) {
// Payment succeeded
} else {
// Payment failed
}
} catch (\Exception $e) {
// Handle exceptions
echo $e->getMessage();
log_message('error', 'Exception: ' . $e->getMessage());
// ...
} catch (\Error $e) {
// Handle errors
echo $e->getMessage();
log_message('error', 'Error: ' . $e->getMessage());
// ...
}
}
// -----------------------------------------------
}

View File

@ -17,7 +17,7 @@ use App\Models\Cart_model;
use App\Models\Credits_usage_tracking_model;
use App\Models\Rule_model;
use App\Models\Cart_token_model;
use App\Models\Member_address_model;
class PaymentController extends BaseController
{
@ -35,6 +35,7 @@ class PaymentController extends BaseController
$this->TransactionModel = new transaction_model();
$this->RuleModel = new Rule_model();
$this->Cart_token_model = new Cart_token_model();
$this->MemberAddressModel = new Member_address_model();
}
@ -143,11 +144,13 @@ class PaymentController extends BaseController
$data['gst'] = $gst;
$data['pst'] = $pst;
$data['packageArray'] = $packageArray;
// echo '<pre>';
// print_r($data);
// echo '</pre>';
// die();
$data['userdata']=$this->dModel->getLoggedInMemberData(session()->get('logged_user'));
$data['userDefaultAddress'] = $this->MemberModel->getDefaultAddress(session()->get('logged_user'));
$data['userAddress'] = $this->MemberAddressModel->where('member_id',session()->get('logged_user'))->findAll();
// echo '<pre>';
// print_r($data);
// echo '</pre>';
// die();
echo view('checkout',$data);
//echo view('payment_form',$data);
@ -177,6 +180,7 @@ class PaymentController extends BaseController
$idempotencyKey = $data->idempotencyKey;
$amount = $data->amount;
$order_id = $data->order_id;
$address_id = $data->address_id;
$Final_amount = round( ( $amount + (($amount * ($gst + $pst) ) / 100) ) , 2 );
$square_client = new SquareClient([
@ -219,7 +223,10 @@ class PaymentController extends BaseController
$TrancactionId = $result['payment']['id'];
$payment_order_id = $result['payment']['order_id'];
$TrancactionData['member_id'] = session()->get('logged_user');
$TrancactionData['address_id'] = $address_id;
$TrancactionData['transaction_id'] = $TrancactionId;
$TrancactionData['payment_order_id'] = $payment_order_id;
$TrancactionData['order_id'] = $order_id;
$TrancactionData['transaction'] = json_encode($response->getResult());
$insert = $this->TransactionModel->save($TrancactionData);
if( $insert)
@ -260,45 +267,57 @@ class PaymentController extends BaseController
public function payment_success( $transaction_id = null)
public function payment_success( $local_order_id = null)
{
if( $local_order_id != null)
{
$data['TransactionData'] = $this->TransactionModel->where('order_id', $local_order_id )->where('member_id', session()->get('logged_user'))->find();
if($data['TransactionData']){
$memberCredits = $this->creditsModel->where('order_id', $local_order_id )
->where('member_id', session()->get('logged_user'))
->select('package_name')
->selectSum('credit_points', 'credit_points')
->selectSum('cost', 'cost')
->selectCount('package_name', 'pack_count')
->groupBy('package_name')->findAll();
if($data['TransactionData'][0]['is_mail_triggered'] == 0){
$sendmail_controller = new Sendmail_controller();
$mail = $sendmail_controller->index(session()->get('logged_user_email') , null , 5);
if($mail == 'success'){
$this->TransactionModel->where('order_id', $local_order_id )->set(array('is_mail_triggered'=>1))->update();
}
}
$Subtotal = 0;
foreach ($memberCredits as $key => $ele) {
$Subtotal = $Subtotal + $ele['cost'];
}
$data['memberCredits'] =$memberCredits;
$data['order_id'] = $local_order_id;
$timestamp = strtotime($data['TransactionData'][0]['created_at']);
$data['formattedDate'] = date('l, F j, Y', $timestamp);
$data['Subtotal'] = $Subtotal;
$data['gst'] = $this->RuleModel->select('value')->where('rule_key', 3 )->get()->getRow()->value;
$data['pst'] = $this->RuleModel->select('value')->where('rule_key', 4 )->get()->getRow()->value;
$data['card_brand'] = json_decode($data['TransactionData'][0]['transaction'] , true)['payment']['card_details']['card']['card_brand'];
$data['last_4'] = json_decode($data['TransactionData'][0]['transaction'] , true)['payment']['card_details']['card']['last_4'];
// echo '<pre>';
// print_r( $data['memberCredits']);
// echo '</pre>';
if( $transaction_id != null)
$memberCredits = $this->creditsModel->where('transaction_id', $transaction_id )
->where('member_id', session()->get('logged_user'))
->select('package_name','credit_points')
->selectSum('cost', 'cost')
->selectCount('package_name', 'pack_count')
->groupBy('package_name')->findAll();
$sendmail_controller = new Sendmail_controller();
$sendmail_controller->index(session()->get('logged_user_email') , null , 5);
$Subtotal = 0;
foreach ($memberCredits as $key => $ele) {
$Subtotal = $Subtotal + $ele['cost'];
echo view('payment',$data);
}else{
echo 'invalid order_id';
}
}
$data['memberCredits'] =$memberCredits;
$data['TransactionData'] = $this->TransactionModel->where('transaction_id', $transaction_id )->where('member_id', session()->get('logged_user'))->findAll();
$data['transaction_id'] = $transaction_id;
$timestamp = strtotime($data['TransactionData'][0]['created_at']);
$data['formattedDate'] = date('l, F j, Y', $timestamp);
$data['Subtotal'] = $Subtotal;
$data['gst'] = $this->RuleModel->select('value')->where('rule_key', 3 )->get()->getRow()->value;
$data['pst'] = $this->RuleModel->select('value')->where('rule_key', 4 )->get()->getRow()->value;
$data['card_brand'] = json_decode($data['TransactionData'][0]['transaction'] , true)['payment']['card_details']['card']['card_brand'];
$data['last_4'] = json_decode($data['TransactionData'][0]['transaction'] , true)['payment']['card_details']['card']['last_4'];
// echo '<pre>';
// print_r( $data['memberCredits']);
// echo '</pre>';
echo view('payment',$data);
}

View File

@ -181,18 +181,21 @@ class Sendmail_controller extends BaseController
if ($email->send())
{
if ($return == 1)
{
$this->session->setTempdata('mail_success', "Please check your mail to verify",3);
// return redirect()->to(base_url());
}
if ($return == 5)
echo "success";
}
else
{
$error = $email->printDebugger();
echo 'Email sending failed: ' . $error;
//echo 'Email sending failed: ' . $error;
}
} catch (EmailException $e) {
echo 'Email sending failed: ' . $e->getMessage();
// echo 'Email sending failed: ' . $e->getMessage();
}
}

View File

@ -0,0 +1,16 @@
<?php namespace App\Models;
use CodeIgniter\Model;
class Member_address_model extends Model
{
protected $table = 'member_address';
protected $primaryKey = 'id';
protected $allowedFields = ['member_id', 'first_name','last_name','street_address', 'apartment_number', 'country' , 'state' , 'zip_code' , 'address_type' , 'is_active'];
}

View File

@ -42,6 +42,21 @@ class Member_model extends Model
return false;
}
}
public function getDefaultAddress($MemberId)
{
return $this->db->table('member_address')
->where('member_id', $MemberId)
->where('address_type', 'default')
->get()
->getRow();
}
public function getAdditionalAddress($MemberId)
{
return $this->db->table('member_address')
->where('member_id', $MemberId)
->where('address_type', 'additional')
->get()
->getResult();
}
}

View File

@ -7,7 +7,7 @@ class transaction_model extends Model
protected $table = 'transactions';
protected $primaryKey = 'id';
protected $allowedFields = ['member_id','transaction_id','transaction'];
protected $allowedFields = ['member_id','address_id','transaction_id','payment_order_id','order_id','transaction','is_mail_triggered'];
}

View File

@ -59,11 +59,48 @@ $web_payment_sdk_url = $_ENV["ENVIRONMENT"] === Environment::PRODUCTION ? "https
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script src="<?= base_url()."/public"; ?>/assets/member_js/ajax.js"></script>
<input id="url" value="<?= base_url() ?>" type="hidden">
<style typr="text/css">
/* Styles for the loading spinner */
.loading-spinner-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.5);
z-index: 9999;
display: flex;
justify-content: center;
align-items: center;
visibility: hidden;
}
.loading-spinner {
border: 8px solid #f3f3f3;
border-top: 8px solid #3498db;
border-radius: 50%;
width: 60px;
height: 60px;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
</style>
</head>
<body class="checkout">
<?php include 'member_layout/header.php' ?>
<section class="pt-5 pb-3">
<div class="container">
<div class="row">
@ -74,7 +111,7 @@ $web_payment_sdk_url = $_ENV["ENVIRONMENT"] === Environment::PRODUCTION ? "https
<div class="row back-card">
<div class="col-lg-12">
<a href="#"><i class="arrow-left"></i> Back to Cart</a>
<a href="<?=base_url()."view_cart/".md5(session()->get('logged_user')); ?>"><i class="arrow-left"></i> Back to Cart</a>
<h4>Billing Address</h4>
</div>
</div>
@ -85,69 +122,41 @@ $web_payment_sdk_url = $_ENV["ENVIRONMENT"] === Environment::PRODUCTION ? "https
<div class="container">
<div class="row">
<div class="col-lg-8">
<div id="address_list" >
<?php foreach($userAddress as $address) { ?>
<div class="row edit-address">
<div class="col-lg-3">
<input type="radio" class="select-address">
<span><?= $userdata->name; ?></span>
<?php if($address['address_type'] == 'default') { ?>
<input type="radio" id="<?php echo $address['id']."_radio"; ?>" name="member_address" value="<?php echo $address['id']; ?>" class="select-address checked" checked>
<?php } else { ?>
<input type="radio" id="<?php echo $address['id']."_radio"; ?>" name="member_address" value="<?php echo $address['id']; ?>" class="select-address" >
<?php } ?>
<span><?php echo $address['first_name']; ?></span>
</div>
<div class="col-lg-7">
<div class="billing-address"><?= $userdata->address; ?></div>
<div class="billing-address">
<?php echo $address['first_name']." , ".$address['street_address']." , ".$address['country']." , ".$address['state']." , ".$address['zip_code']; ?>
</div>
</div>
<div class="col-lg-2 text-end">
<a href="#" class="billing-edit">Edit</a>
<a class="editAddress" id="<?php echo $address['id']; ?>" class="billing-edit">Edit</a>
</div>
</div>
<?php } ?>
</div>
<div class="address-form">
<form action="">
<div class="row">
<div class="col-lg-12 d-flex align-items-center mb-3">
<input type="radio" class="add_address"><span>Add New Address</span>
</div>
<div class="col-lg-6 mb-3">
<label for="first_name">First Name</label>
<input type="text" name="first_name" id="first_name">
</div>
<div class="col-lg-6 mb-3">
<label for="last_name">Last Name</label>
<input type="text" name="last_name" id="last_name">
</div>
<div class="col-lg-12 mb-3">
<label for="address">Street Address</label>
<input type="text" name="address" id="address">
</div>
<div class="col-lg-4 mb-3">
<label for="apartment_number">Apartment Number</label>
<input type="text" name="apartment_number" id="apartment_number">
</div>
<div class="col-lg-4 mb-3">
<label for="state">State</label>
<select id="state" name="state">
<option value="">Select state</option>
<option value="AN">Andaman and Nicobar Islands</option>
</select>
</div>
<div class="col-lg-4 mb-3">
<label for="zipcode">Zip Code</label>
<input type="text" name="zipcode" id="zipcode">
</div>
</div>
<div class="row form-button">
<div class="col-lg-2 col-4">
<button>Cancel</button>
</div>
<div class="col-lg-3 col-4">
<input type="submit" value="Save">
</div>
<div class="col-lg-7 col-4"></div>
</div>
</form>
<div class="address-form" style="display:none" >
</div>
<!-- Loading spinner HTML markup -->
<div class="loading-spinner-overlay" id="loading-spinner-overlay">
<div class="loading-spinner"></div>
</div>
<h4 class="payment-title">Payment Method</h4>
<form class="payment-form" id="fast-checkout">
<div class="wrapper">
<h4 class="payment-title">Payment Method</h4>
<div class="credit-card">
<div class="row">
@ -155,6 +164,7 @@ $web_payment_sdk_url = $_ENV["ENVIRONMENT"] === Environment::PRODUCTION ? "https
<!-- Add Payment Method Code-->
<input type="hidden" value="<?= $amount; ?>" name="amount" id="amount">
<input type="hidden" value="<?= $order_id; ?>" name="order_id" id="order_id">
<input type="hidden" value="" name="address_id" id="address_id">
<div id="card-container"></div>
<span id="payment-flow-message"></span>
<button id="card-button" type="button">Proceed to Pay</button>

View File

@ -0,0 +1,46 @@
<script src="<?= base_url()."/public"; ?>/assets/member_js/ajax.js"></script>
<form id="member_address" >
<div class="row">
<div class="col-lg-12 d-flex align-items-center mb-3">
</div>
<input type="hidden" value="<?= $userAddress[0]['id']; ?>" name="id" >
<div class="col-lg-6 mb-3">
<label for="first_name">First Name</label>
<input type="text" value="<?= $userAddress[0]['first_name']; ?>" name="first_name" id="first_name">
</div>
<div class="col-lg-6 mb-3">
<label for="last_name">Last Name</label>
<input type="text" value="<?= $userAddress[0]['last_name']; ?>" name="last_name" id="last_name">
</div>
<div class="col-lg-12 mb-3">
<label for="address">Street Address</label>
<input type="text" value="<?= $userAddress[0]['street_address']; ?>" name="street_address" id="address">
</div>
<div class="col-lg-4 mb-3">
<label for="apartment_number">Apartment Number</label>
<input type="text" value="<?= $userAddress[0]['apartment_number']; ?>" name="apartment_number" id="apartment_number">
</div>
<div class="col-lg-4 mb-3">
<label for="state">State</label>
<select id="state" name="state">
<option value="<?= $userAddress[0]['state']; ?>"><?= $userAddress[0]['']; ?></option>
<option value="AN">Andaman and Nicobar Islands</option>
</select>
</div>
<div class="col-lg-4 mb-3">
<label for="zipcode">Zip Code</label>
<input type="text" value="<?= $userAddress[0]['zip_code']; ?>" name="zip_code" id="zipcode">
</div>
</div>
<div class="row form-button">
<div class="col-lg-2 col-4">
<button>Cancel</button>
</div>
<div class="col-lg-3 col-4">
<input type="button" class="submit" value="Save">
</div>
<div class="col-lg-7 col-4"></div>
</div>
</form>

View File

@ -39,8 +39,8 @@
<div class="row aside">
<div class="col-lg-12">
<div class="aside-content">
<div class="trans-id label">Transactions ID</div>
<div class="trans-id"><?= $transaction_id; ?></div>
<div class="trans-id label">Order Id</div>
<div class="trans-id"><?= $order_id; ?></div>
</div>
<div class="aside-content">
<div class="trans-date label">Transactions Date</div>
@ -125,7 +125,7 @@
<div class="row dashboard">
<div class="col-lg-4"></div>
<div class="col-lg-4">
<button>Return to Dashboard</button>
<a href="<?= base_url('member_home'); ?>">Return to Dashboard</a>
</div>
<div class="col-lg-4"></div>
</div>