12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007 |
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
- var Bizgaze;
- (function (Bizgaze) {
- let Apps;
- (function (Apps) {
- let Hrms;
- (function (Hrms) {
- let Components;
- (function (Components) {
- class Attendence extends Unibase.Platform.Core.BaseComponent {
- constructor() {
- super(...arguments);
- this.attendencelogid = 0;
- this.timer = null;
- this.timer_arrref = [];
- this.starttimerobj = [];
- }
- init(containerid) {
- let instance = this;
- instance.fileCacheHelper.loadJsFiles(["platform/membership/components/checkindetails.js", "apps/hrms/managers/attendencemanager.js", "apps/communications/ai/components/resumeparsingmanager.js"], function () {
- instance.loadCustomHTML(containerid);
- });
- }
- cssFiles() {
- return [];
- }
- html(id, containerid) {
- var instance = this;
- let html = ``;
- return html;
- }
- load(id, containerid, callback) {
- var instance = this;
- }
- jsFiles() {
- return ["apps/hrms/components/attendence.js", "apps/hrms/managers/attendencemanager.js", "apps/communications/ai/components/resumeparsingmanager.js", "platform/core/helpers/mobile/interfaces/imobilehelper.js"];
- }
- loadCustomHTML(containerid) {
- let instance = this;
- let capture_modal = `
- <div class="modal fade hide" id="caputerModel" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
- <div class="modal-dialog modal-dialog-centered" role="document">
- <div class="modal-content">
- <div class="modal-header border-0 py-2">
- <button type="button" class="close" data-dismiss="modal" id="CancelBtn" aria-label="Close" data-tooltip="true" data-placement="right" title="Cancel">
- <span aria-hidden="true">×</span>
- </button>
- </div>
- <div class="modal-body pt-0 position-relative">
- <div class="pb-40 pt-40 shift_err text-center d-none"><p>No Shift's Available</p></div>
- <div class="pb-20 pt-40 checkIn_err text-center d-none"><p>You are Already Check Out</p></div>
- <div id="caputer_video" class="d-none User_Picture">
- <div class="position-relative">
- <video id="cam" autoplay muted playsinline style="transform: scaleX(-1);">Not available </video>
- <canvas id="canvas" class="d-none" style="transform: scaleX(-1);"></canvas>
- <img id="photo" alt="The screen capture will appear in this box." style="transform: scaleX(-1);" class="d-none">
- <div class="text-center position-absolute suggest_err">
- <span class="loader-pendulums d-none" id="img_check"></span>
- <span class="capture_err d-none text-danger font-16"></span>
- </div>
- <div class="position-absolute switch_cam d-none" style="bottom:0px;width:100%;text-align:center;font-size:20px">
- <div class="cam_view" style="width:100%;max-width:10%;margin:auto">
- <input type="checkbox" id="camera_view" class="d-none"/>
- <label class="cam_front" for="camera_view">
- <img src="tenants/themes/compact/imgs/rotate.png" class="cam_img p-1 bg-white" style="width:100%;"/>
- </label>
- </div>
- </div>
- </div>
- <div class="bg-white" id="location_data"></div>
- </div>
-
- </div>
- </div>
- </div>`;
- $("#_bizgaze_modal").html(capture_modal);
- let html = '';
- if (screen.width > 576) {
- html = ` <div class="check_in_timer" id="Check_in_timer">
- <div class="card border-0 shadow p-3">
- <div class="check_in_body">
- <div class="d-flex align-items-center justify-content-between pb-1">
- <span class="biz-highlight-bg-color font-weight-500 font-16">Attendance</span>
- <span class="" data-tooltip="true" title="Report"><i class="dripicons dripicons-graph-pie view_Details cursor-pointer"></i></span>
- </div>
- <div class="text-center">
- <div class="timer font-weight-600 font-25 d-flex justify-content-center align-items-center">
- <img src="tenants/themes/compact/imgs/start_timer.png" class="timing"/>
- <img src="tenants/themes/compact/imgs/start_timer1.gif" class="d-none start_timing"/>
- <div class="run_time">
- <span class="output">00:00:00</span>
- <span class="output_re d-none"></span>
- </div>
- <div>Hrs</div>
- </div>
- <div class="text-dark h-10p">
- <span class="list-item-main-title font-weight-500 shift_name font-14"></span>
- <span class="shift_timeings font-14"></span>
- </div>
- </div>
- <div class="text-center pt-4 pb-3">
- <div>
- <button type="button" class="btn btn-primary px-0 w-50" id="check_in_btn">
- <span>Check-in</span>
- </button>
- <button type="button" class="btn btn-primary text-white py-1 d-none px-0 w-50" id="check_out_btn">
- <span>Check-out</span>
- </button>
- </div>
- </div>
- <div class="pt-1 check_timings">
- <div class="row align-items-center font-weight-500">
- <div class="col-4 strttime">
- <div class="d-flex align-items-center startime justify-content-md-center">
- <img src="tenants/themes/compact/imgs/Start.png"/>
- <div class="d-flex flex-column flex-shrink-0" id="Check_in_time">
- <span class="start_time mb-0 text-dark font-13">00:00</span>
- <span class="font-13">Check In</span>
- </div>
- </div>
- </div>
- <div class="col-4 text-center border-left border-right endtime">
- <div class="d-flex justify-content-center align-items-center">
- <img src="tenants/themes/compact/imgs/End.png"/>
- <div class="d-flex flex-column flex-shrink-0 text-left" id="Check_out_time">
- <span class="end_time mb-0 text-dark font-13">00:00</span>
- <span class="font-13">Check Out</span>
- </div>
- </div>
- </div>
- <div class="col-4 text-right">
- <div class="d-flex justify-content-center align-items-center duration">
- <img src="tenants/themes/compact/imgs/Duration.png"/>
- <div class="d-flex flex-column flex-shrink-0 text-left" id="Check_duration">
- <span class="mb-0 Duration_time font-13 text-danger"><span class="due_time">00:00</span> Hrs</span>
- <span class="font-13">Duration</span>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>`;
- $('.suggest_err').attr({ 'style': 'top:50%;width:100%;max-width:100%' });
- }
- else {
- html = `<div class="check_in_timer" id="Check_in_timer">
- <div class="card border-0 shadow p-3">
- <div class="check_in_body">
- <div class="d-flex align-items-center justify-content-between">
- <span class="font-weight-600 font-18">Attendance</span>
- <span><i class="dripicons dripicons-graph-pie view_Details cursor-pointer"></i></span>
- </div>
- <div class="py-1">
- <div class="timer d-flex justify-content-between align-items-center">
- <div class="timer font-weight-600 font-25 d-flex flex-grow-1 align-items-center">
-
- <img src="tenants/themes/compact/imgs/start_timer.png" class="timing"/>
- <img src="tenants/themes/compact/imgs/start_timer1.gif" class="d-none start_timing"/>
-
- <div class="run_time">
- <span class="output">00:00:00</span>
- <span class="output_re d-none"></span>
- </div>
- <div class="font-18">Hrs</div>
- </div>
- <div class="">
- <button type="button" class="btn btn-primary" id="check_in_btn">
- <span class="font-14">Check In</span>
- </button>
- <button type="button" class="btn biz-highlight-color text-white d-none" id="check_out_btn">
- <span class="font-14">Check Out</span>
- </button>
- </div>
- </div>
- <div class="d-flex align-items-center font-13">
- <div class="list-item-main-title pr-1 font-weight-500 font-13 shift_name"></div>
- <div class="text-dark">
- <span class="shift_timeings"></span>
- </div>
- </div>
- </div>
- <div class="pt-2 check_timings">
- <div class="row align-items-center font-weight-500">
- <div class="col-4 strttime">
- <div class="d-flex align-items-center">
- <img src="tenants/themes/compact/imgs/Start.png"/>
- <div class="d-flex flex-column flex-shrink-0 " id="Check_in_time">
- <span class="start_time mb-0 text-dark">00:00</span>
- <span class="check">Check In</span>
- </div>
- </div>
- </div>
- <div class="col-4 text-center border-left border-right endtime">
- <div class="d-flex justify-content-center align-items-center">
- <img src="tenants/themes/compact/imgs/End.png"/>
- <div class="d-flex flex-column flex-shrink-0 text-left" id="Check_out_time">
- <span class="end_time mb-0 text-dark">00:00</span>
- <span class="check">Check Out</span>
- </div>
- </div>
- </div>
- <div class="col-4 text-right duration">
- <div class="d-flex justify-content-center align-items-center">
- <img src="tenants/themes/compact/imgs/Duration.png"/>
- <div class="d-flex flex-column flex-shrink-0 text-left" id="Check_duration">
- <span class="mb-0 Duration_time text-danger"><span class="due_time">00:00</span> Hrs</span>
- <span class="check">Duration</span>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>`;
- $('.suggest_err').attr({ 'style': 'top:50%;width:100%;max-width:100%' });
- $("#canvas").removeAttr("width");
- $("#canvas").removeAttr("height");
- }
- $('#' + containerid).html(html);
- let check_profile = Unibase.Platform.Membership.Infos.Identity.currentUser.photoUrl;
- if (check_profile == '' || check_profile == null) {
- let err_html = `<div>
- <p class="font-15 no_profile pt-10 text-center text-danger">Please Upload Your Profile Picture</p>
- </div>`;
- $("#location_data").html(err_html);
- $(".loader-icon").addClass("d-none");
- $("#caputerModel").removeClass("show").attr("style", "display:none;");
- }
- else {
- let no_html = `<div> <p id="user_location" class="font-14 py-2 text-dark text-left"></p>
- <div class="d-flex align-items-center justify-content-end pb-3">
- <button type="button" class="btn btn-primary rounded-pill py-1" id="snapBtn" aria-label="Close">Capture</button>
- <button type="button" class="btn btn-danger rounded-pill d-none py-1" id="retakeBtn">Re-Capture</button>
- <button type="button" class="btn btn-primary rounded-pill d-none py-1" data-dismiss="modal" aria-label="Close" id="modal_closebtn">Ok</button>
- </div>
- </div>`;
- $("#location_data").html(no_html);
- }
- instance.getAttendanceLog();
- instance.attendenceCheckIn();
- instance.getUserApplicableShifts();
- instance.takeImage();
- instance.retakeImage();
- instance.viewattendenceReport();
- instance.afterload();
- instance.attendencecheckout();
- instance.modalcheckout();
- instance.attendenceCancle();
- }
- loadCheckIn(containerid) {
- let instance = this;
- instance.loadCustomHTML(containerid);
- }
- Location() {
- if (navigator.geolocation) {
- $("#snapBtn").attr("disabled", "disabled");
- navigator.geolocation.getCurrentPosition(Bizgaze.Apps.Hrms.Components.Attendence.Instance().geoLocationSuccess, Bizgaze.Apps.Hrms.Components.Attendence.Instance().geoLocationError, { timeout: 10000 });
- }
- else {
- alert("your browser doesn't support geolocation");
- }
- ;
- }
- geoLocationSuccess(pos) {
- const instance = Bizgaze.Apps.Hrms.Components.Attendence.Instance();
- let loadingTimeout;
- instance.mylatitude = pos.coords.latitude;
- instance.mylongtitude = pos.coords.longitude;
- var loading = function () {
- $("#user_location").text("fetching...");
- };
- loadingTimeout = setTimeout(loading, 600);
- const apikey = _mapsettings.key();
- var request = $.get(`https://maps.googleapis.com/maps/api/geocode/json?latlng=${instance.mylatitude},${instance.mylongtitude}&key=${apikey}`).done(function (data) {
- if (loadingTimeout) {
- clearTimeout(loadingTimeout);
- loadingTimeout = null;
- instance.address = data.results[0].formatted_address;
- $("#user_location").html("<span class='font-weight-600'>Location :</span> " + instance.address);
- let ele = $("#user_location").find("span");
- let ele_val = ele[0];
- let Cam_ele = $("#cam").hasClass("d-none");
- if (ele_val != undefined && Cam_ele == false) {
- $("#snapBtn").removeAttr("disabled");
- }
- else {
- $("#snapBtn").attr("disabled", "disabled");
- }
- }
- }).fail(function () {
- $("#snapBtn").addClass("d-none");
- });
- }
- ;
- geoLocationError(error) {
- var errors = {
- 1: "Permission denied",
- 2: "Position unavailable",
- 3: "Request timeout"
- };
- if (errors[error.code]) {
- $("#user_location").html("<span class='font-weight-500 text-danger'>Please enable your Location...</span>");
- $("#snapBtn").attr("disabled", "disabled");
- }
- }
- ;
- addzero(x) {
- if (x < 10) {
- return x = '0' + x;
- }
- else {
- return x;
- }
- }
- twelvehours(x) {
- if (x > 12) {
- return x = x - 12;
- }
- else if (x == 0) {
- return x = 12;
- }
- else {
- return x;
- }
- }
- cemeraCapture() {
- const instance = Bizgaze.Apps.Hrms.Components.Attendence.Instance();
- instance.constraints = {
- audio: false,
- video: {
- width: { ideal: 640 },
- height: { ideal: 480 },
- facingMode: "user"
- },
- };
- instance.getMediaStream();
- }
- getMediaStream() {
- const instance = Bizgaze.Apps.Hrms.Components.Attendence.Instance();
- function getMediaStream(constraints) {
- return __awaiter(this, void 0, void 0, function* () {
- try {
- instance.mediaStream = yield navigator.mediaDevices.getUserMedia(constraints);
- instance.video = document.getElementById('cam');
- instance.video.srcObject = instance.mediaStream;
- instance.video.onloadedmetadata = (event) => {
- let cam_err = event.currentTarget;
- if (cam_err != null) {
- let shift_err = $('.checkIn_err').hasClass("d-none");
- if (shift_err == true) {
- $("#cam").removeClass("d-none");
- instance.video.play();
- $(".cam_err").remove();
- }
- }
- };
- }
- catch (err) {
- console.log(err.message);
- $("#cam").addClass("d-none");
- $(".cam_err").removeClass("d-none");
- let arr_val = $("#user_location").find("span").hasClass("cam_loc_err");
- if (arr_val != true) {
- $("#cam").after("<span class='font-weight-500 text-danger cam_err'>Please enable your Camera...</span>");
- }
- let cam_val = $("#cam").parent().find("span").hasClass("cam_err");
- let loc_val = $("#user_location").find("span").hasClass("text-danger");
- if (cam_val && loc_val) {
- $("#cam").parent().find(".cam_err").remove();
- $("#user_location").html("<span class='font-weight-500 text-danger cam_loc_err'>Please enable your Location and Camera...</span>");
- }
- $("#snapBtn").attr("disabled", "disabled");
- }
- });
- }
- getMediaStream(instance.constraints);
- }
- switchCamera(cameraMode) {
- return __awaiter(this, void 0, void 0, function* () {
- const instance = Bizgaze.Apps.Hrms.Components.Attendence.Instance();
- try {
- if (instance.mediaStream != null && instance.mediaStream.active) {
- var tracks = instance.mediaStream.getVideoTracks();
- tracks.forEach(track => {
- track.stop();
- });
- }
- document.getElementById('cam').srcObject = null;
- instance.constraints.video.facingMode = cameraMode;
- yield instance.getMediaStream();
- }
- catch (err) {
- console.log(err.message);
- }
- });
- }
- takePicture() {
- const instance = Bizgaze.Apps.Hrms.Components.Attendence.Instance();
- instance.canvas = document.getElementById('canvas');
- instance.videos = document.getElementById('cam');
- let photo = document.getElementById('photo');
- let context = instance.canvas.getContext('2d');
- const height = instance.videos.videoHeight;
- const width = instance.videos.videoWidth;
- if (width && height) {
- instance.canvas.width = width;
- instance.canvas.height = height;
- context.drawImage(instance.video, 0, 0, width, height);
- var data = instance.canvas.toDataURL('image/png');
- const webp = context.canvas.toDataURL("image/webp", 0.8);
- photo.setAttribute('style', "transform: scaleX(-1)");
- $("#photo").attr('src', data);
- }
- else {
- Bizgaze.Apps.Hrms.Components.Attendence.Instance().clearPhoto();
- }
- }
- ;
- clearPhoto() {
- let instance = Bizgaze.Apps.Hrms.Components.Attendence.Instance();
- let photo = document.getElementById('photo');
- let context = instance.canvas.getContext('2d');
- context.fillStyle = "#AAA";
- context.fillRect(0, 0, instance.canvas.width, instance.canvas.height);
- var data = instance.canvas.toDataURL('image/png');
- photo.removeAttribute('src');
- }
- ;
- clockTick() {
- const instance = Bizgaze.Apps.Hrms.Components.Attendence.Instance();
- let r_datd = $(".output_re").hasClass("d-none");
- const date = Date.now();
- const timer_run = $('#check_in_btn').hasClass("d-none");
- if (timer_run == true) {
- if (r_datd == false) {
- instance.timer_arrref;
- const timeref = new Date(date - Number(instance.timer_arrref));
- const refhours = timeref.getUTCHours();
- const refmins = timeref.getUTCMinutes();
- const refsecs = timeref.getUTCSeconds();
- const refcount_hrs = refhours > 9 ? refhours : "0" + refhours;
- const refcount_mins = refmins > 9 ? refmins : "0" + refmins;
- const refcount_secs = refsecs > 9 ? refsecs : "0" + refsecs;
- $(".output").html(`${refcount_hrs}:${refcount_mins}:${refcount_secs}`);
- }
- else {
- const timeElaspsed = new Date(date - Number(instance.starttimerobj));
- const hours = timeElaspsed.getUTCHours();
- const mins = timeElaspsed.getUTCMinutes();
- const secs = timeElaspsed.getUTCSeconds();
- const count_hrs = hours > 9 ? hours : "0" + hours;
- const count_mins = mins > 9 ? mins : "0" + mins;
- const count_secs = secs > 9 ? secs : "0" + secs;
- $(".output").html(`${count_hrs}:${count_mins}:${count_secs}`);
- }
- }
- }
- reset() {
- const instance = Bizgaze.Apps.Hrms.Components.Attendence.Instance();
- clearInterval(instance.timer);
- let timerreset = $('.output').text();
- let timerin = timerreset.includes("NaN");
- if (timerin == true) {
- $('.output').empty();
- $('.output').html(`00:00:00`);
- }
- else {
- $('.output').empty();
- $('.output').html(`00:00:00`);
- }
- }
- attenanceSnap() {
- let instance = Bizgaze.Apps.Hrms.Components.Attendence.Instance();
- let checkedIn = $("#check_in_btn").hasClass("d-none");
- let online_cather = window.navigator.onLine;
- if (checkedIn == false) {
- if (online_cather) {
- $("#check_in_btn").attr({ "data-toggle": "modal", "data-backdrop": "false", "data-target": "#caputerModel" });
- let shift_name = $('.shift_name').text();
- let shift_time = $('.shift_timeings').text();
- if (shift_name == '' && shift_time == '') {
- $('.close').removeClass("d-none");
- $('.shift_err').removeClass('d-none');
- }
- else {
- $("#caputer_video").removeClass("d-none");
- $("#user_location").removeClass("d-none");
- $("#CancelBtn").removeClass("d-none");
- $(".capture_err").addClass("d-none");
- $(".loader-icon").addClass("d-none");
- $('.checkIn_err').addClass('d-none');
- $("#modal_closebtn").addClass('d-none');
- $('#Check_in_time').removeClass("d-none");
- $("#cam").removeClass("d-none");
- $("#location_data").removeClass("d-none");
- $("#snapBtn").removeClass("d-none");
- $("#retakeBtn").addClass("d-none");
- $("#close_btn").addClass("d-none");
- }
- }
- else {
- $(this).removeAttr("data-target data-toggle data-backdrop");
- }
- }
- else {
- if (online_cather) {
- $("#check_out_btn").attr({ "data-toggle": "modal", "data-backdrop": "false", "data-target": "#caputerModel" });
- $("#caputer_video").removeClass("d-none");
- $(".capture_err").addClass("d-none");
- $(".loader-icon").addClass("d-none");
- $('#Check_in_time').removeClass("d-none");
- $("#cam").removeClass("d-none");
- $("#location_data").removeClass("d-none");
- $("#CancelBtn").removeClass("d-none");
- $("#snapBtn").removeClass("d-none");
- $("#retakeBtn").addClass("d-none");
- let removeVide = $('#modal_closebtn').hasClass("d-none");
- if (removeVide == false) {
- instance.mediaStream.getTracks().forEach((track) => {
- track.stop();
- });
- }
- }
- else {
- $(this).removeAttr("data-target data-toggle data-backdrop");
- }
- }
- }
- attendenceCheckIn() {
- if (isMobileApp()) {
- Unibase.Platform.Helpers.MobileHelper.Instance().grantPermission(Unibase.Platform.Helpers.Enums.MobilePermissionType.Camera, Bizgaze.Apps.Hrms.Components.Attendence.Instance().cemeraCapture);
- Unibase.Platform.Helpers.MobileHelper.Instance().grantPermission(Unibase.Platform.Helpers.Enums.MobilePermissionType.Location, Bizgaze.Apps.Hrms.Components.Attendence.Instance().Location);
- }
- $("#check_in_btn").click(function () {
- $("#canvas").addClass("d-none");
- Bizgaze.Apps.Hrms.Components.Attendence.Instance().Location();
- Bizgaze.Apps.Hrms.Components.Attendence.Instance().cemeraCapture();
- Bizgaze.Apps.Hrms.Components.Attendence.Instance().attenanceSnap();
- });
- }
- attendencecheckout() {
- if (isMobileApp()) {
- Unibase.Platform.Helpers.MobileHelper.Instance().grantPermission(Unibase.Platform.Helpers.Enums.MobilePermissionType.Camera, Bizgaze.Apps.Hrms.Components.Attendence.Instance().cemeraCapture);
- Unibase.Platform.Helpers.MobileHelper.Instance().grantPermission(Unibase.Platform.Helpers.Enums.MobilePermissionType.Location, Bizgaze.Apps.Hrms.Components.Attendence.Instance().Location);
- }
- $("#check_out_btn").click(function () {
- $("#canvas").addClass("d-none");
- Bizgaze.Apps.Hrms.Components.Attendence.Instance().getAttendanceLogLastRecord();
- Bizgaze.Apps.Hrms.Components.Attendence.Instance().Location();
- Bizgaze.Apps.Hrms.Components.Attendence.Instance().cemeraCapture();
- Bizgaze.Apps.Hrms.Components.Attendence.Instance().attenanceSnap();
- });
- }
- attendenceCancle() {
- const instance = Bizgaze.Apps.Hrms.Components.Attendence.Instance();
- $("#CancelBtn").click(function () {
- $(this).addClass("d-none");
- $("#caputer_video").addClass("d-none");
- $("#photo").attr("src", '');
- $("#retakeBtn").addClass("d-none");
- $("#close_btn").addClass("d-none");
- $("#img_check").addClass("d-none");
- $(".cam_err").remove();
- $(".cam_loc_err").remove();
- instance.mediaStream.getTracks().forEach((track) => {
- track.stop();
- });
- $(".capture_err").addClass("d-none");
- $(".capture_err").parent().removeClass("align-items-end");
- });
- }
- modalcheckout() {
- const instance = Bizgaze.Apps.Hrms.Components.Attendence.Instance();
- $('#modal_closebtn').click(function () {
- instance.mediaStream.getTracks().forEach((track) => {
- track.stop();
- });
- Bizgaze.Apps.Hrms.Components.Attendence.Instance().reset();
- if (instance.startTime != null || instance.timer_arrref != null) {
- instance.startTime = undefined;
- instance.timer_arrref = undefined;
- instance.starttimerobj = undefined;
- }
- $(".output").removeClass("d-none");
- let re_btn = $(".output").hasClass("d-none");
- if (re_btn == false) {
- $(".output_re").empty();
- $('.output').html(`00:00:00`);
- $(".output_re").addClass("d-none");
- }
- $('.output').html(`00:00:00`);
- $("#check_out_btn").addClass("d-none");
- $("#check_in_btn").removeClass("d-none");
- $(".start_timing").addClass('d-none');
- $(".timing").removeClass('d-none');
- $(".output").removeClass("d-none");
- $(".output_re").addClass("d-none");
- Bizgaze.Apps.Hrms.Components.Attendence.Instance().getAttendanceLog();
- });
- }
- takeImage() {
- const instance = Bizgaze.Apps.Hrms.Components.Attendence.Instance();
- let emp_id = Unibase.Platform.Membership.Infos.Identity.currentUser.unibaseId;
- let data = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
- let userid = data.userId;
- $("#snapBtn").click(function (e) {
- return __awaiter(this, void 0, void 0, function* () {
- Bizgaze.Apps.Hrms.Components.Attendence.Instance().takePicture();
- $("#cam").addClass("d-none");
- $(this).addClass("d-none");
- $("#img_check").removeClass("d-none");
- $("#canvas").addClass("d-none");
- $("#canvas").attr("style", "filter:blur(7px);transform:scaleX(-1);max-width:100%");
- instance.img_stored = $("#photo").attr("src");
- debugger;
- if (instance.img_stored !== '') {
- $("#canvas").removeClass("d-none");
- }
- else {
- $("#canvas").addClass("d-none");
- }
- var date = new Date();
- let get_month = date.getMonth();
- let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
- instance.startDate = Unibase.Platform.Helpers.DateTimeHelper.instance.formatServerDateTime(date);
- let userCheckindetails = {
- "Latitude": instance.mylatitude,
- "Longitude": instance.mylongtitude,
- "Address": instance.address,
- "imageurl": instance.img_stored,
- "Userid": userid,
- "StartDate": instance.startDate,
- "user_url": window.location.host
- };
- var Attendenceid = instance.attendenceid;
- var Attendencelogid = instance.attendencelogid;
- let enddate = Unibase.Platform.Helpers.DateTimeHelper.instance.formatServerDateTime(date);
- var Startdate = instance.startdate;
- var userCheckoutdetails = {
- CheckoutLocation: instance.address,
- CheckoutImage: instance.img_stored,
- Attendenceid: Attendenceid,
- Attendencelogid: Attendencelogid,
- Startdate: Startdate,
- EndDate: enddate,
- userid: userid,
- Latitude: instance.mylatitude,
- Longitude: instance.mylongtitude,
- user_url: window.location.host
- };
- var jsfiles = ['apps/hrms/managers/attendencemanager.js'];
- let checkin = $('#check_in_btn').hasClass("d-none");
- if (checkin == false) {
- instance.fileCacheHelper.loadJsFiles(jsfiles, function (response) {
- Bizgaze.Apps.Hrms.Managers.AttendenceManager.Instance().SaveCheckInDetails(userCheckindetails).then(function (response) {
- var CheckIn_data = response.result;
- if (CheckIn_data == null) {
- $('#caputerModel').modal("show");
- $("#canvas").removeClass("d-none");
- $("#retakeBtn").removeClass("d-none");
- $(".loader-icon").addClass("d-none");
- $("#retakeBtn").removeClass("d-none");
- let html = `<span class="font-weight-600">${response.message}</span>`;
- $(".capture_err").html(html);
- $(".capture_err").removeClass("d-none");
- $("#img_check").addClass("d-none");
- }
- else {
- $('#caputerModel').modal("hide");
- $("#check_out_btn").attr({ "data-toggle": "modal", "data-backdrop": "false", "data-target": "#caputerModel" });
- $(".timing").addClass("d-none");
- $(".start_timing").removeClass("d-none");
- $('#snapBtn').addClass("d-none");
- $("#img_check").addClass("d-none");
- $("#caputer_video").addClass("d-none");
- $("#retakeBtn").addClass("d-none");
- $("#caputer_video").addClass("d-none");
- $("#retakeBtn").addClass("d-none");
- $("#check_in_btn").removeAttr("data-toggle data-backdrop data-target");
- $("#location_data").addClass("d-none");
- $("#check_in_btn").addClass("d-none");
- $("#check_out_btn").removeClass("d-none");
- instance.mediaStream.getTracks().forEach((track) => {
- track.stop();
- });
- instance.startTime = Date.now();
- instance.re_timer = Date.now();
- instance.starttimerobj = instance.re_timer;
- instance.timer = setInterval(instance.clockTick, 1000);
- instance.time_Now = new Date();
- let hours = instance.time_Now.getHours();
- let ampm = hours >= 12 ? 'PM' : 'AM';
- let time = instance.addzero(instance.twelvehours(instance.time_Now.getHours())) + ":" + instance.addzero(instance.time_Now.getMinutes());
- instance.Start_time = instance.addzero(instance.twelvehours(instance.time_Now.getHours())) + ":" + instance.addzero(instance.time_Now.getMinutes()) + ' ' + ampm;
- $('.start_time').html(instance.Start_time);
- }
- instance.attendenceid = CheckIn_data.Attendanceid;
- instance.attendencelogid = CheckIn_data._Id;
- instance.startdate = CheckIn_data.Checkin;
- let date_end = `${date.getDate()} ${months[get_month]} ${date.getFullYear()}`;
- let User_endTime = `${date_end} ${instance.Start_time}`;
- let User_name = Unibase.Platform.Membership.Infos.Identity.currentUser.name;
- let User_img = Unibase.Platform.Membership.Infos.Identity.currentUser.photoUrl;
- MessageHelper.Instance().ShowAttendenceSuccess(User_name, User_img, response.message, User_endTime, instance.address);
- $("#bizgaze_body").parent().find('.jq-toast-wrap').find('.d-flex.list-inline .mr-4').addClass("d-none");
- $("#bizgaze_body").parent().find('.jq-toast-wrap').find('.d-flex.list-inline h3.font-14.font-weight-400').addClass("d-none");
- });
- });
- }
- else {
- instance.fileCacheHelper.loadJsFiles(jsfiles, function (response) {
- Bizgaze.Apps.Hrms.Managers.AttendenceManager.Instance().SaveCheckOutDetails(userCheckoutdetails).then(function (response) {
- var Check_data = response.result;
- if (Check_data == null) {
- $('#caputerModel').modal("show");
- $("#canvas").removeClass("d-none");
- $("#retakeBtn").removeClass("d-none");
- $(".loader-icon").addClass("d-none");
- $("#retakeBtn").removeClass("d-none");
- let html = `<span class="font-weight-600">${response.message}</span>`;
- $(".capture_err").html(html);
- $(".capture_err").removeClass("d-none");
- $("#img_check").addClass("d-none");
- }
- else {
- $('#caputerModel').modal("hide");
- instance.mediaStream.getTracks().forEach((track) => {
- track.stop();
- });
- $("#check_out_btn").addClass('d-none');
- $("#check_in_btn").removeClass("d-none");
- $('.starting_time').addClass("d-none");
- $(".start_timing").addClass("d-none");
- $("#canvas").addClass('d-none');
- $(".loader-pendulums").addClass('d-none');
- $("#location_data").addClass("d-none");
- $(".timing").removeClass("d-none");
- $("#Check_duration").removeClass("d-none");
- $("#check_out_btn").removeAttr("data-toggle data-backdrop data-target");
- let Current_Time = new Date();
- let hours = Current_Time.getHours();
- let ampm = hours >= 12 ? 'PM' : 'AM';
- instance.End_time = instance.addzero(instance.twelvehours(Current_Time.getHours())) + ":" + instance.addzero(Current_Time.getMinutes()) + ' ' + ampm;
- $(".end_time").html(instance.End_time);
- let key = "settingValue";
- Bizgaze.Apps.Hrms.Components.Attendence.Instance().reset();
- if (instance.startTime != null || instance.timer_arrref != null) {
- instance.startTime = undefined;
- instance.timer_arrref = undefined;
- instance.starttimerobj = undefined;
- }
- $(".output").removeClass("d-none");
- let re_btn = $(".output").hasClass("d-none");
- if (re_btn == false) {
- $(".output_re").empty();
- $('.output').html(`00:00:00`);
- $(".output_re").addClass("d-none");
- }
- $('.output').html(`00:00:00`);
- let del_setting_val = instance.log_data.settings.filter(function (o) { return o.settingName === "checkin"; })[0];
- delete del_setting_val[key];
- Bizgaze.Apps.Hrms.Components.Attendence.Instance().getAttendanceLog();
- let date_end = `${Current_Time.getDate()} ${months[get_month]} ${Current_Time.getFullYear()}`;
- let User_startTime = `${date_end} ${instance.End_time}`;
- let User_name = Unibase.Platform.Membership.Infos.Identity.currentUser.name;
- let User_img = Unibase.Platform.Membership.Infos.Identity.currentUser.photoUrl;
- MessageHelper.Instance().ShowAttendenceSuccess(User_name, User_img, response.message, User_startTime, instance.address);
- $("#bizgaze_body").parent().find('.jq-toast-wrap').find('.d-flex.list-inline .mr-4').addClass("d-none");
- $("#bizgaze_body").parent().find('.jq-toast-wrap').find('.d-flex.list-inline h3.font-14.font-weight-400').addClass("d-none");
- }
- });
- });
- }
- });
- });
- }
- retakeImage() {
- $("#retakeBtn").click(function () {
- $(this).addClass("d-none");
- Bizgaze.Apps.Hrms.Components.Attendence.Instance().takePicture();
- $("#cam").removeClass("d-none");
- $("#canvas").addClass('d-none');
- $("#snapBtn").removeClass("d-none");
- $("#close_btn").addClass("d-none");
- $("#photo").attr('src', '');
- $(".capture_err").addClass("d-none");
- $(".capture_err").parent().removeClass("align-items-end");
- });
- }
- viewattendenceReport() {
- $(".view_Details").click(function () {
- var uniqueid = 'Bizgaze_Platform_Analytics_Reports_AttendanceLogdashboard';
- var date_now = new Date();
- const fromDate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDate(date_now);
- Unibase.Platform.Analytics.Components.ReportViewer.Instance().getReportByUniqueId(uniqueid, null, null, null, fromDate, fromDate);
- });
- }
- afterload() {
- const instance = Bizgaze.Apps.Hrms.Components.Attendence.Instance();
- instance.log_data = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
- let started_time = instance.log_data.settings.filter(function (o) { return o.settingName === "checkin"; })[0].settingValue;
- instance.employeeid = instance.log_data.userId;
- Bizgaze.Apps.Hrms.Managers.AttendenceManager.Instance().getLoginDetails(instance.employeeid).then(function (response) {
- if (started_time != '') {
- if (response.result != '' && response.result != null) {
- let last_record = response.result[response.result.length - 1];
- let timeno = last_record.CheckIn;
- instance.startdate = last_record.CheckIn;
- instance.attendenceid = last_record.AttendanceId;
- instance.attendencelogid = last_record.AttendancelogId;
- instance.time_ne = moment.utc(last_record.CheckIn).local();
- let Checkin_timee = new Date(instance.time_ne);
- let start_ampm = Checkin_timee.getHours() >= 12 ? 'PM' : 'AM';
- let start_times = Bizgaze.Apps.Hrms.Components.Attendence.Instance().addzero(Bizgaze.Apps.Hrms.Components.Attendence.Instance().twelvehours(Checkin_timee.getHours())) + ":" + Bizgaze.Apps.Hrms.Components.Attendence.Instance().addzero(Checkin_timee.getMinutes()) + ' ' + start_ampm;
- $('.start_time').html(start_times);
- if (timeno == undefined) {
- $("#check_in_btn").removeClass("d-none");
- $("#check_out_btn").addClass("d-none");
- }
- else {
- instance.startTime = instance.time_ne;
- let Checkin_time = new Date(instance.startTime);
- let time = Checkin_time.getTime();
- instance.timer_arrref = instance.startTime;
- instance.timer = setInterval(instance.clockTick, 1000);
- $("#check_in_btn").addClass("d-none");
- $("#check_out_btn").removeClass("d-none");
- $(".timing").addClass("d-none");
- $(".start_timing").removeClass("d-none");
- $(".output_re").removeClass("d-none");
- }
- }
- }
- else {
- if (response.result != '' && response.result != null) {
- let last_record = response.result[response.result.length - 1];
- let timeno = last_record.CheckIn;
- instance.startdate = last_record.CheckIn;
- instance.attendenceid = last_record.AttendanceId;
- instance.attendencelogid = last_record.AttendancelogId;
- instance.time_ne = moment.utc(last_record.CheckIn).local();
- let Checkin_timeer = new Date(instance.time_ne);
- let startt_ampm = Checkin_timeer.getHours() >= 12 ? 'PM' : 'AM';
- let start_timers = Bizgaze.Apps.Hrms.Components.Attendence.Instance().addzero(Bizgaze.Apps.Hrms.Components.Attendence.Instance().twelvehours(Checkin_timeer.getHours())) + ":" + Bizgaze.Apps.Hrms.Components.Attendence.Instance().addzero(Checkin_timeer.getMinutes()) + ' ' + startt_ampm;
- $('.start_time').html(start_timers);
- if (timeno == undefined) {
- $("#check_in_btn").removeClass("d-none");
- $("#check_out_btn").addClass("d-none");
- }
- else {
- instance.startTime = instance.time_ne;
- instance.timer_arrref = instance.startTime;
- instance.timer = setInterval(instance.clockTick, 1000);
- $("#check_in_btn").addClass("d-none");
- $("#check_out_btn").removeClass("d-none");
- $(".timing").addClass("d-none");
- $(".start_timing").removeClass("d-none");
- $(".output_re").removeClass("d-none");
- }
- }
- }
- });
- }
- postUserDetect(payload) {
- return __awaiter(this, void 0, void 0, function* () {
- let instance = this;
- let res = yield Unibase.Apps.Collaboration.ResumeParsingManager.Instance().postUserDetect(payload);
- return res;
- });
- }
- SaveCheckOutDetails(enddate) {
- let img = $("#photo").attr("src");
- let instance = this;
- var Startdate = instance.startdate;
- var Attendenceid = instance.attendenceid;
- var Attendencelogid = instance.attendencelogid;
- var address = instance.address;
- var Latitude = instance.mylatitude;
- var Longitude = instance.mylongtitude;
- let data = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
- let userid = data.userId;
- var postData = {
- CheckoutLocation: address,
- CheckoutImage: img,
- Attendenceid: Attendenceid,
- Attendencelogid: Attendencelogid,
- EndDate: enddate,
- Startdate: Startdate,
- userid: userid,
- Latitude: Latitude,
- Longitude: Longitude
- };
- var jsfiles = ['apps/hrms/managers/attendencemanager.js'];
- instance.fileCacheHelper.loadJsFiles(jsfiles, function (response) {
- Bizgaze.Apps.Hrms.Managers.AttendenceManager.Instance().SaveCheckOutDetails(postData).then(function (response) {
- $('#snapBtn').attr({
- "data-dismiss": "modal",
- "aria-label": "Close"
- });
- instance.mediaStream.getTracks().forEach((track) => {
- track.stop();
- });
- MessageHelper.Instance().showSuccess(response.message, '');
- });
- });
- }
- getUserApplicableShifts() {
- let instance = this;
- let data = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
- let userid = data.userId;
- Bizgaze.Apps.Hrms.Managers.AttendenceManager.Instance().getUserApplicableShifts(userid).then(function (response) {
- var data = response.result;
- if (data != null) {
- var ele_data = data.length;
- if (data != undefined && data != null && ele_data != 0) {
- instance.shiftfromtime = moment.utc(data[0].fromtime).local();
- let Checktime = new Date(instance.shiftfromtime);
- let LI_ampm = Checktime.getHours() >= 12 ? 'PM' : 'AM';
- let spl_val = Bizgaze.Apps.Hrms.Components.Attendence.Instance().addzero(Bizgaze.Apps.Hrms.Components.Attendence.Instance().twelvehours(Checktime.getHours())) + ":" + Bizgaze.Apps.Hrms.Components.Attendence.Instance().addzero(Checktime.getMinutes()) + ' ' + LI_ampm;
- instance.shifttotime = moment.utc(data[0].totime).local();
- let Checktotime = new Date(instance.shifttotime);
- let Lo_ampm = Checktotime.getHours() >= 12 ? 'PM' : 'AM';
- let spls_val = Bizgaze.Apps.Hrms.Components.Attendence.Instance().addzero(Bizgaze.Apps.Hrms.Components.Attendence.Instance().twelvehours(Checktotime.getHours())) + ":" + Bizgaze.Apps.Hrms.Components.Attendence.Instance().addzero(Checktotime.getMinutes()) + ' ' + Lo_ampm;
- $(".shift_name").html(`${data[0].shiftname} :`);
- $(".shift_timeings").html(`${spl_val} - ${spls_val}`);
- }
- }
- });
- }
- getAttendanceLog() {
- let instance = this;
- let data = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
- let userid = data.userId;
- Bizgaze.Apps.Hrms.Managers.AttendenceManager.Instance().getAttendanceLog(userid).then(function (response) {
- if (response.result !== null) {
- instance.last_checkIn = moment.utc(response.result.CheckIn).local();
- let Checkin_time = new Date(instance.last_checkIn);
- let time = Checkin_time.getTime();
- instance.last_checkOut = moment.utc(response.result.CheckOut).local();
- let Checkout_time = new Date(instance.last_checkOut);
- let Ctime = Checkout_time.getTime();
- let LI_ampm = Checkin_time.getHours() >= 12 ? 'PM' : 'AM';
- let last_checkIn = Bizgaze.Apps.Hrms.Components.Attendence.Instance().addzero(Bizgaze.Apps.Hrms.Components.Attendence.Instance().twelvehours(Checkin_time.getHours())) + ":" + Bizgaze.Apps.Hrms.Components.Attendence.Instance().addzero(Checkin_time.getMinutes()) + ' ' + LI_ampm;
- let LO_ampm = Checkout_time.getHours() >= 12 ? 'PM' : 'AM';
- let last_checkOut = Bizgaze.Apps.Hrms.Components.Attendence.Instance().addzero(Bizgaze.Apps.Hrms.Components.Attendence.Instance().twelvehours(Checkout_time.getHours())) + ":" + Bizgaze.Apps.Hrms.Components.Attendence.Instance().addzero(Checkout_time.getMinutes()) + ' ' + LO_ampm;
- if (response.result != null) {
- $('.start_time').html(last_checkIn);
- $('.end_time').html(last_checkOut);
- let difference = Ctime - time;
- difference = difference / 1000;
- let hourDifference = Math.floor(difference / 3600);
- difference -= hourDifference * 3600;
- let minuteDifference = Math.floor(difference / 60);
- difference -= minuteDifference * 60;
- let due_time = `${Bizgaze.Apps.Hrms.Components.Attendence.Instance().addzero(hourDifference)}:${Bizgaze.Apps.Hrms.Components.Attendence.Instance().addzero(minuteDifference)}`;
- if (hourDifference > 9 || hourDifference == 9) {
- $(".Duration_time").addClass("text-success").removeClass("text-danger");
- }
- else {
- $(".Duration_time").addClass("text-danger").removeClass("text-success");
- }
- $(".due_time").html(due_time);
- }
- }
- });
- }
- getAttendanceLogLastRecord() {
- let instance = this;
- let data = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
- let userid = data.userId;
- Bizgaze.Apps.Hrms.Managers.AttendenceManager.Instance().getAttendanceLogLastRecord(userid).then(function (response) {
- instance.last_checktable = response.result.CheckOut;
- if (instance.last_checktable == "0001-01-01T00:00:00") {
- $('.checkIn_err').addClass('d-none');
- }
- else {
- $('.checkIn_err').removeClass('d-none');
- $("#modal_closebtn").removeClass('d-none');
- $("#snapBtn").addClass('d-none');
- $("#cam").addClass('d-none');
- $("#user_location").addClass('d-none');
- $("#CancelBtn").addClass("d-none");
- }
- });
- }
- static Instance() {
- if (this.instance === undefined)
- this.instance = new Attendence();
- return this.instance;
- }
- }
- Components.Attendence = Attendence;
- })(Components = Hrms.Components || (Hrms.Components = {}));
- })(Hrms = Apps.Hrms || (Apps.Hrms = {}));
- })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
- })(Bizgaze || (Bizgaze = {}));
|