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.
 
 
 
 
 

213 lines
10 KiB

odoo.define('odoo_attendance_user_location.my_attendances', function(require) {
/**
* This class is used to get the checkin/out location of employee
*/
"use strict";
var MyAttendances = require("hr_attendance.my_attendances");
var KioskConfirm = require("hr_attendance.kiosk_confirm");
const session = require("web.session");
var Dialog = require("web.Dialog");
var core = require("web.core");
var QWeb = core.qweb;
var latitude;
var longitude;
MyAttendances.include({
update_attendance: function() {
var self = this;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
const ctx = Object.assign(session.user_context, {
latitude: position.coords.latitude,
longitude: position.coords.longitude,
});
latitude = position.coords.latitude;
longitude = position.coords.longitude;
self._rpc({
model: 'hr.employee',
method: 'attendance_manual',
args: [
[self.employee.id], 'hr_attendance.hr_attendance_action_my_attendances'
],
context: ctx,
})
.then(function(result) {
if (result.action) {
self.do_action(result.action);
} else if (result.warning) {
self.displayNotification({
title: result.warning,
type: 'danger'
});
}
});
},
function(error) {
// Handle any errors
if (error) {
var MyDialog = new Dialog(null, {
title: error.__proto__.constructor.name,
size: "medium",
$content: $('<main/>', {
role: 'alert',
text: error['message'] + ". Also check your site connection is secured!",
}),
buttons: [{
text: "OK",
classes: "btn-primary",
click: function() {
MyDialog.close();
}
}]
});
MyDialog.open();
}
});
} else {
this._rpc({
model: 'hr.employee',
method: 'attendance_manual',
args: [
[self.employee.id], 'hr_attendance.hr_attendance_action_my_attendances'
],
context: session.user_context,
})
.then(function(result) {
if (result.action) {
self.do_action(result.action);
} else if (result.warning) {
self.displayNotification({
title: result.warning,
type: 'danger'
});
}
});
}
},
});
KioskConfirm.include({
events: _.extend(KioskConfirm.prototype.events, {
"click .o_hr_attendance_sign_in_out_icon": _.debounce(
function() {
var self = this;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
const ctx = Object.assign(session.user_context, {
latitude: position.coords.latitude,
longitude: position.coords.longitude,
});
latitude = position.coords.latitude;
longitude = position.coords.longitude;
self._rpc({
model: 'hr.employee',
method: 'attendance_manual',
args: [
[self.employee_id], self.next_action
],
context: ctx,
})
.then(function(result) {
if (result.action) {
self.do_action(result.action);
} else if (result.warning) {
self.displayNotification({
title: result.warning,
type: 'danger'
});
}
});
},
function(error) {
// Handle any errors
if (error) {
var MyDialog = new Dialog(null, {
title: error.__proto__.constructor.name,
size: "medium",
$content: $('<main/>', {
role: 'alert',
text: error['message'] + ". Also check your site connection is secured!",
}),
buttons: [{
text: "OK",
classes: "btn-primary",
click: function() {
MyDialog.close();
}
}]
});
MyDialog.open();
}
});
}
},
200,
true
),
"click .o_hr_attendance_pin_pad_button_ok": _.debounce(
function() {
var self = this;
this.pin_pad = true;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
const ctx = Object.assign(session.user_context, {
latitude: position.coords.latitude,
longitude: position.coords.longitude,
});
latitude = position.coords.latitude;
longitude = position.coords.longitude;
self._rpc({
model: 'hr.employee',
method: 'attendance_manual',
args: [
[self.employee_id], self.next_action, self.$('.o_hr_attendance_PINbox')
.val()
],
context: session.user_context,
})
.then(function(result) {
if (result.action) {
self.do_action(result.action);
} else if (result.warning) {
self.displayNotification({
title: result.warning,
type: 'danger'
});
self.$('.o_hr_attendance_PINbox')
.val('');
setTimeout(function() {
self.$('.o_hr_attendance_pin_pad_button_ok')
.removeAttr("disabled");
}, 500);
}
});
},
function(error) {
// Handle any errors
if (error) {
var MyDialog = new Dialog(null, {
title: error.__proto__.constructor.name,
size: "medium",
$content: $('<main/>', {
role: 'alert',
text: error['message'] + ". Also check your site connection is secured!",
}),
buttons: [{
text: "OK",
classes: "btn-primary",
click: function() {
MyDialog.close();
}
}]
});
MyDialog.open();
}
});
}
},
200,
true
),
}),
});
});