2019-09-10 06:27:33 +02:00
< ? php
/**
* Mortgage widget template .
*
* @ version 1.0 . 0
*/
if ( ! defined ( 'ABSPATH' ) ) {
exit ; // Exit if accessed directly
}
global $property ;
$currency = opalestate_currency_symbol ();
wp_enqueue_script ( 'opalestate-mortgage-calculator' , OPALESTATE_PLUGIN_URL . 'assets/js/mortgage.js' , [ 'jquery' ], OPALESTATE_VERSION , true );
wp_enqueue_style ( 'opalestate-mortgage-calculator' , OPALESTATE_PLUGIN_URL . 'assets/mortgage.css' , [], OPALESTATE_VERSION );
2019-09-11 12:05:01 +02:00
$deposit_color = apply_filters ( 'opalestate_deposit_color' , '#2f73e9' );
2019-09-10 06:27:33 +02:00
wp_localize_script ( 'opalestate-scripts' , 'opalestate_mortgage' ,
[
2020-03-24 05:39:25 +01:00
'ajax_url' => admin_url ( 'admin-ajax.php' ),
2020-07-24 09:53:53 +02:00
'currency' => esc_attr ( $currency ),
2020-03-24 05:39:25 +01:00
'deposit_color' => $deposit_color ,
2019-09-10 06:27:33 +02:00
]
);
2020-05-04 10:53:09 +02:00
$max_price = ( int ) ( $property && $property -> get_price () ) ? $property -> get_price () : opalestate_options ( 'search_max_price' , 10000000 );
$max_price = str_replace ( [ " , " , " . " ], " " , $max_price );
2019-09-10 06:27:33 +02:00
2020-07-24 04:27:03 +02:00
$start_price = apply_filters ( 'opalestate_mortgage_start_price' , $max_price );
2019-09-10 06:27:33 +02:00
2020-05-04 10:53:09 +02:00
$max_price = apply_filters ( 'opalestate_mortgage_max_price' , $max_price + ( $max_price * 20 / 100 ) );
2019-09-10 06:27:33 +02:00
2020-05-04 10:53:09 +02:00
$rate_start = apply_filters ( 'opalestate_mortgage_rate_start' , 10 );
2019-09-10 06:27:33 +02:00
$interest_rate_start = $rate_start / 100 ;
2020-05-04 10:53:09 +02:00
$years_start = apply_filters ( 'opalestate_mortgage_years_start' , 2 );
$deposit_start = apply_filters ( 'opalestate_mortgage_deposit_start' , $max_price / 2 );
2020-07-24 04:27:03 +02:00
$loan_amount = $start_price - $deposit_start ;
2019-09-10 06:27:33 +02:00
$interest_rate_month = $interest_rate_start / 12 ;
$number_of_payments_month = $years_start * 12 ;
2020-07-24 09:52:18 +02:00
$monthly = round ( ( $loan_amount * $interest_rate_month ) / ( 1 - pow ( 1 + $interest_rate_month , - $number_of_payments_month ) ), 2 );
2019-09-10 06:27:33 +02:00
$total = $deposit_start + ( $monthly * $number_of_payments_month );
$price_percent = $loan_amount / $total * 100 ;
$deposit_percent = $deposit_start / $total * 100 ;
$data_sale_price = [
'id' => 'sale_price' ,
'decimals' => opalestate_get_price_decimals (),
'unit' => $currency ,
'ranger_min' => 0 ,
'ranger_max' => $max_price ,
'input_min' => 0 ,
'input_max' => $max_price ,
'mode' => 1 ,
'start' => $start_price ,
];
$data_deposit = [
'id' => 'deposit' ,
'decimals' => opalestate_get_price_decimals (),
'unit' => $currency ,
'ranger_min' => 0 ,
'ranger_max' => $max_price ,
'input_min' => 0 ,
'input_max' => $max_price ,
'mode' => 1 ,
'start' => $deposit_start ,
];
$data_interest_rate = [
'id' => 'interest_rate' ,
2020-03-24 05:39:25 +01:00
'decimals' => 2 ,
2019-09-10 06:27:33 +02:00
'unit' => '%' ,
'ranger_min' => 0 ,
'ranger_max' => 100 ,
'input_min' => 0 ,
'input_max' => 100 ,
'mode' => 1 ,
'start' => $rate_start ,
2020-03-24 05:39:25 +01:00
'step' => 0.05 ,
2019-09-10 06:27:33 +02:00
];
$data_years = [
'id' => 'years' ,
2020-03-24 05:39:25 +01:00
'decimals' => 1 ,
2019-09-10 06:27:33 +02:00
'ranger_min' => 0 ,
'ranger_max' => 30 ,
'input_min' => 0 ,
'input_max' => 30 ,
'mode' => 1 ,
'start' => $years_start ,
2020-03-24 05:39:25 +01:00
'step' => 0.5 ,
2019-09-10 06:27:33 +02:00
];
2020-05-04 10:53:09 +02:00
if ( opalestate_options ( 'currency_position' , 'before' ) === 'before' ) {
2019-09-10 06:27:33 +02:00
$data_sale_price [ 'unit_position' ] = 'prefix' ;
$data_deposit [ 'unit_position' ] = 'prefix' ;
}
?>
< div class = " opalestate-box-content box-mortgage " >
< h4 class = " outbox-title " >< ? php esc_html_e ( 'Mortgage Payment Calculator' , 'opalestate-pro' ); ?> </h4>
< div class = " opalestate-box " >
< div class = " opalestate-mortgage-widget-wrap " >
< form class = " opalestate-mortgage-form " >
< div class = " opalestate-mortgage-chart-container " >
< div class = " opalestate-mortgage-chart " >
< div class = " opalestate-mortgage-chart-svg " >
< svg viewBox = " 0 0 64 64 " class = " pie " >
< circle r = " 25% " cx = " 50% " cy = " 50% " style = " stroke-dasharray: <?php echo esc_attr( $price_percent ); ?> 100 " >
</ circle >
2019-09-11 12:05:01 +02:00
< circle r = " 25% " cx = " 50% " cy = " 50% "
style = " stroke-dasharray: <?php echo esc_attr( $deposit_percent ); ?> 100; stroke: <?php echo esc_attr( $deposit_color ); ?>; stroke-dashoffset:
2019-09-10 06:27:33 +02:00
-< ? php echo esc_attr ( $price_percent ); ?> ; animation-delay: 0.25s">
</ circle >
</ svg >
</ div >
</ div >
< div class = " opalestate-mortgage-chart-desc " >
< div class = " opalestate-mortgage-chart-results " >
< div class = " opalestate-mortgage-output " >
< div class = 'opalestate-mortgage-output-item opalestate-monthly' >
< label > < ? php esc_html_e ( 'Your payment' , 'opalestate-pro' ); ?> </label>
< span class = " opalestate-monthly-value " >
< ? php echo esc_html ( $currency ); ?> <?php echo esc_html( $monthly ); ?>
</ span > /
< small >< ? php esc_html_e ( 'month' , 'opalestate-pro' ); ?> </small>
</ div >
< div class = 'opalestate-mortgage-output-item opalestate-loan-amount' >
< label >< ? php esc_html_e ( 'Loan Amount' , 'opalestate-pro' ); ?> </label>
< span class = " opalestate-loan-amount-value " >
< ? php echo esc_html ( $currency ); ?> <?php echo esc_html( $loan_amount ); ?>
</ span >
</ div >
< div class = " opalestate-mortgage-chart-notice " >
< ul >
< li >< span style = " background-color:#02ce76; " ></ span >< ? php esc_html_e ( 'Your price' , 'opalestate-pro' ); ?> </li>
< li >< span style = " background-color:<?php echo esc_attr( $deposit_color ); ?>; " ></ span >< ? php esc_html_e ( 'Your deposit' , 'opalestate-pro' ); ?> </li>
< li >< span style = " background-color:#f06; " ></ span >< ? php esc_html_e ( 'Your interest' , 'opalestate-pro' ); ?> </li>
</ ul >
</ div >
</ div >
</ div >
</ div >
</ div >
< div class = " opalestate-mortgage-form-inputs " >
< div class = " form-group opalestate-mortgage-item " >
< div class = " opalestate-mortgage-label " >
< ? php opalesate_property_slide_ranger_template ( esc_html__ ( 'Sale Price' , 'opalestate-pro' ), $data_sale_price ); ?>
</ div >
</ div >
< div class = " form-group opalestate-mortgage-item " >
< div class = " opalestate-mortgage-label " >
< ? php opalesate_property_slide_ranger_template ( esc_html__ ( 'Deposit' , 'opalestate-pro' ), $data_deposit ); ?>
</ div >
</ div >
< div class = " form-group opalestate-mortgage-item " >
< div class = " opalestate-mortgage-label " >
< ? php opalesate_property_slide_ranger_template ( esc_html__ ( 'Annual Interest' , 'opalestate-pro' ), $data_interest_rate ); ?>
</ div >
</ div >
< div class = " form-group opalestate-mortgage-item " >
< div class = " opalestate-mortgage-label " >
< ? php opalesate_property_slide_ranger_template ( esc_html__ ( 'Years' , 'opalestate-pro' ), $data_years ); ?>
</ div >
</ div >
< div class = " mortgage-notes " >
< span >< ? php esc_html_e ( 'All calculation are based on tentative and estimated figure and shall not replace any financial advice' , 'opalestate-pro' ); ?> </span>
</ div >
</ div >
</ form >
</ div >
</ div >
</ div >