You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

74 lines
3.2 KiB

odoo.define('advanced_property_management.property_website', function (require) {
'use strict';
var publicWidget = require('web.public.widget');
var rpc = require('web.rpc');
publicWidget.registry.PropertyView = publicWidget.Widget.extend({
selector: 'div[id="property_container"]',
events: {
'click .property_action_buttons': '_changeView',
'click .o_property_item': 'fetchPropertyItem',
'click .auction_submit': '_submitAuction',
},
//hide and show the properties according to the action_id
_changeView: function (ev) {
var action_id = this.$(ev.currentTarget).data('action')
this.$('.property_action_buttons').removeClass('active')
this.$('#property_item_view').hide()
this.$('#property_sales_view').hide()
this.$('#property_rental_view').hide()
this.$('#property_auction_view').hide()
if (action_id == "0") {
this.$('#property_item_view').show()
this.$(ev.currentTarget).addClass('active')
} else if (action_id == "2") {
this.$(ev.currentTarget).addClass('active')
this.$('#property-item').hide()
this.$('#property_sales_view').show()
} else if (action_id == "3") {
$(ev.currentTarget).addClass('active')
this.$('#property-item').hide()
this.$('#property_rental_view').show()
} else if (action_id == "1") {
this.$('#property_auction_view').show()
this.$(ev.currentTarget).addClass('active')
rpc.query({
route: `/property/auction/`,
}).then(function (result) {
this.$('.auction_cards').html(result)
}.bind(this))
}
},
//Fetch all the properties
fetchPropertyItem: function (ev) {
var record_id = $(ev.currentTarget).data('property_id')
window.location = '/property/' + record_id;
},
//Submits the auction for the property
_submitAuction: function (ev) {
var property_id = this.$(ev.currentTarget).data('id');
var bid_amount = parseFloat(this.$(`#property-${property_id}`).val());
var last_bid = parseFloat(this.$(`#last-bid-${property_id}`).text());
var bid_start = parseFloat(this.$(`#bid-start-${property_id}`).text());
if (last_bid == '0') {
last_bid = 1
}
var toast = this.$('.toast')
if (bid_amount && last_bid && bid_start) {
if (bid_amount <= last_bid || bid_amount <= bid_start) {
toast.addClass('show');
} else {
rpc.query({
route: `/property/auction/${property_id}/bid`,
params: {bid_amount: bid_amount}
}).then(function (result) {
$('#auction_button').click()
})
}
} else {
toast.addClass('show');
}
},
});
return publicWidget.registry.PropertyView;
})