You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
381 lines
12 KiB
TypeScript
381 lines
12 KiB
TypeScript
import { EitService } from "./../eit/services/eit.service";
|
|
import { Component, OnInit } from "@angular/core";
|
|
import { TranslatorService } from "src/app/hmg-common/services/translator/translator.service";
|
|
import { MenuController, Events, ActionSheetController } from "@ionic/angular";
|
|
import { AuthenticationService } from "src/app/hmg-common/services/authentication/authentication.service";
|
|
import { AuthenticatedUser } from "src/app/hmg-common/services/authentication/models/authenticated-user";
|
|
import { MenuService } from "src/app/hmg-common/services/menu/menuservice.service";
|
|
import { MenuResponse } from "src/app/hmg-common/services/menu/models/menu-response";
|
|
import { CommonService } from "src/app/hmg-common/services/common/common.service";
|
|
import { Geolocation } from "@ionic-native/geolocation/ngx";
|
|
import { ZBar, ZBarOptions } from "@ionic-native/zbar/ngx";
|
|
import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
|
|
import { Device } from "@ionic-native/device/ngx";
|
|
import { attendanceSwipeScannerRequest } from "./models/attendanceSwipe.Request";
|
|
import { Response } from "src/app/hmg-common/services/models/response";
|
|
import { AttendanceService } from "./services/attendance.services";
|
|
import { LoginRequest } from "../hmg-common/services/authentication/models/login.request";
|
|
import {FileUploaderComponent} from '../hmg-common/ui/file-uploader/file-uploader.component'
|
|
import { Camera, CameraOptions,PictureSourceType} from "@ionic-native/Camera/ngx";
|
|
//import { FileChooser } from "@ionic-native/file-chooser/ngx";
|
|
import { File } from "@ionic-native/file/ngx";
|
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
//import { FilePath } from "@ionic-native/file-path/ngx";
|
|
//import { Base64 } from "@ionic-native/base64/ngx";
|
|
import {FileUploderProfileComponent} from '../hmg-common/ui/file-uploder-profile/file-uploder-profile.component'
|
|
import { SharedDataService } from '../hmg-common/services/shared-data-service/shared-data.service';
|
|
import { DevicePermissionsService } from '../hmg-common/services/device-permissions/device-permissions.service';
|
|
|
|
@Component({
|
|
selector: "app-home",
|
|
templateUrl: "./home.page.html",
|
|
styleUrls: ["./home.page.scss"]
|
|
})
|
|
export class HomePage implements OnInit {
|
|
userData: any = {};
|
|
user_image: any = "../assets/imgs/profile.png";
|
|
menuList: any = [];
|
|
zbarOptions: any;
|
|
scannedResult: any;
|
|
notBadge: any;
|
|
lat: any;
|
|
longt: any;
|
|
deviceID: string;
|
|
public maxFileSize =10 * 1024 * 1024;
|
|
public fileUploder :FileUploaderComponent;
|
|
// public fileUploderProfile:FileUploderProfileComponent
|
|
location: boolean;
|
|
camera: boolean
|
|
constructor(
|
|
public ts: TranslatorService,
|
|
public menu: MenuController,
|
|
public authService: AuthenticationService,
|
|
public menuService: MenuService,
|
|
public common: CommonService,
|
|
public events: Events,
|
|
private device: Device,
|
|
private zbar: ZBar,
|
|
private geolocation: Geolocation,
|
|
private attendance_service: AttendanceService,
|
|
private eitService: EitService,
|
|
private barcodeScanner: BarcodeScanner,
|
|
public actionSheetCtrl: ActionSheetController,
|
|
private cameraController: Camera,
|
|
public sharedData: SharedDataService,
|
|
private sanitizer: DomSanitizer,
|
|
//private transfer: Transfer,
|
|
private file: File,
|
|
//private filePath: FilePath
|
|
private permissions: DevicePermissionsService
|
|
|
|
) {
|
|
this.events.subscribe("img-change", displayImg => {
|
|
|
|
// this.user_image = "data:image/jpeg;base64"+displayImg;
|
|
// alert("home app: ");
|
|
this.user_image = this.sanitizer.bypassSecurityTrustUrl("data:Image/*;base64,"+displayImg);
|
|
console.log("html saved img: "+this.user_image);
|
|
});
|
|
}
|
|
|
|
|
|
ngOnInit() {
|
|
this.getUserDetails();
|
|
this.getMenu();
|
|
this.setServicesPrivilage();
|
|
|
|
this.getCount();
|
|
|
|
|
|
this.events.subscribe("getNotCount", badge => {
|
|
this.notBadge = badge;
|
|
});
|
|
}
|
|
|
|
|
|
getDeviceLocation() {
|
|
let isVirtual = this.device.isVirtual;
|
|
if(isVirtual==true){
|
|
alert("emulater>>>>>>>"+isVirtual);
|
|
alert("You are using virtual device");
|
|
return false;
|
|
}
|
|
|
|
this.permissions.requestLocationAutherization().then(granted => {
|
|
this.location = granted as boolean;
|
|
if (this.location) {
|
|
this.geolocation
|
|
.getCurrentPosition({ maximumAge: 3000, timeout: 10000, enableHighAccuracy: true })
|
|
.then(resp => {
|
|
// console.log(resp.coords.latitude);
|
|
// console.log(resp.coords.longitude);
|
|
this.lat = resp.coords.latitude;
|
|
this.longt = resp.coords.longitude;
|
|
this.attendance();
|
|
})
|
|
.catch(error => {
|
|
console.log("Error getting location", error);
|
|
});
|
|
|
|
} else {
|
|
return false;
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
|
|
setServicesPrivilage() {
|
|
for (let i = 0; i < AuthenticationService.servicePrivilage.length; i++)
|
|
if (AuthenticationService.servicePrivilage[i].Previlege == false) {
|
|
document.getElementById(AuthenticationService.servicePrivilage[i].ServiceName).setAttribute("disabled", "disabled");
|
|
document.getElementById(AuthenticationService.servicePrivilage[i].ServiceName).style.filter = "grayscale(1)"
|
|
}
|
|
}
|
|
getCount() {
|
|
// const req: any = {};
|
|
// this.menuService.getNotificationCount(req).subscribe((result: any) => {
|
|
// if (this.common.validResponse(result)) {
|
|
// this.notBadge =
|
|
// result.GetOpenNotificationsNumList.P_OPEN_NOTIFICATIONS_NUM;
|
|
// if (this.notBadge <= 0) {
|
|
// this.notBadge = null;
|
|
// }
|
|
// this.events.publish("getNotCount", this.notBadge);
|
|
// }
|
|
// });
|
|
}
|
|
// ionViewDidLoad() {
|
|
// this.geolocation
|
|
// .getCurrentPosition()
|
|
// .then(resp => {
|
|
// // resp.coords.latitude
|
|
// // resp.coords.longitude
|
|
// console.log(resp.coords.latitude);
|
|
// console.log(resp.coords.longitude);
|
|
// })
|
|
// .catch(error => {
|
|
// console.log("Error getting location", error);
|
|
// });
|
|
// this.geolocation.getCurrentPosition().then((resp) => {
|
|
// // resp.coords.latitude
|
|
// // resp.coords.longitude
|
|
// console.log(resp.coords.latitude);
|
|
// console.log(resp.coords.longitude);
|
|
// }).catch((error) => {
|
|
// console.log('Error getting location', error);
|
|
// });
|
|
// }
|
|
|
|
ionViewDidLoad() {
|
|
this.getUserDetails();
|
|
console.log("getUserDetails");
|
|
this.geolocation
|
|
.getCurrentPosition()
|
|
.then(resp => {
|
|
// resp.coords.latitude
|
|
// resp.coords.longitude
|
|
//console.log("Loc 1");
|
|
console.log(resp.coords.latitude);
|
|
console.log(resp.coords.longitude);
|
|
this.lat = resp.coords.latitude;
|
|
this.longt = resp.coords.longitude;
|
|
})
|
|
.catch(error => {
|
|
console.log("Error getting location", error);
|
|
});
|
|
}
|
|
private openMenu() {
|
|
this.menu.toggle();
|
|
}
|
|
private getUserDetails() {
|
|
this.authService
|
|
.loadAuthenticatedUser()
|
|
.subscribe((user: AuthenticatedUser) => {
|
|
if (user) {
|
|
this.events.publish("setMenu");
|
|
this.userData = user;
|
|
//set User Info
|
|
this.sharedData.setSharedData(this.userData, AuthenticatedUser.SHARED_DATA);
|
|
this.user_image = user.EMPLOYEE_IMAGE
|
|
? "data:image/png;base64," + user.EMPLOYEE_IMAGE
|
|
: this.user_image;
|
|
console.log(user);
|
|
} else {
|
|
console.log(user);
|
|
}
|
|
});
|
|
}
|
|
public Vacation_Rule() {
|
|
this.common.navigateForward("/vacation-rule/home");
|
|
}
|
|
private getMenu() {
|
|
this.menuService.getMenu().subscribe((result: MenuResponse) => {
|
|
this.handleMenuResult(result);
|
|
});
|
|
}
|
|
private handleMenuResult(result) {
|
|
if (this.common.validResponse(result)) {
|
|
if (this.common.hasData(result.List_Menu)) {
|
|
console.log("list menu");
|
|
this.menuList = result.List_Menu;
|
|
}
|
|
}
|
|
}
|
|
private accrualBalance() {
|
|
this.common.openAccuralPage();
|
|
}
|
|
|
|
private changeImage() {
|
|
this.common.openChangeImagePage();
|
|
}
|
|
|
|
public getMeunDetails(index) {
|
|
let item = this.menuList[index];
|
|
let selMenu: MenuResponse = new MenuResponse();
|
|
selMenu.List_Menu = item;
|
|
selMenu.userid = this.userData.EMPLOYEE_NUMBER;
|
|
console.log("menu: "+selMenu.List_Menu);
|
|
this.common.sharedService.setSharedData(selMenu, MenuResponse.SHARED_DATA);
|
|
if (item.MENU_TYPE == "M") {
|
|
this.common.openMyTeamPage();
|
|
// this.navCtrl.push("MySubordinatePage");
|
|
} else if (item.MENU_TYPE == "S") {
|
|
this.common.sharedService.setSharedData(item, 'mySpecList');
|
|
this.common.openMySpecialistPage();
|
|
//this.navCtrl.push('MySpecialistPage',{"mySpecList":item});
|
|
} else {
|
|
this.getMenuEntries(item);
|
|
}
|
|
}
|
|
|
|
getMenuEntries(item) {
|
|
let request: any = {};
|
|
let selEmpNo: string = null;
|
|
let nationality: string = null;
|
|
request.P_SELECTED_RESP_ID = -999;
|
|
if (item.MENU_TYPE == "S") {
|
|
request.P_SELECTED_RESP_ID = item.RESP_ID;
|
|
} else {
|
|
selEmpNo = this.common.sharedService.getSharedData(
|
|
LoginRequest.SHARED_DATA,
|
|
false
|
|
);
|
|
}
|
|
nationality = this.common.sharedService.getSharedData(
|
|
LoginRequest.NATIONALITY_CODE,
|
|
false
|
|
);
|
|
request.P_SELECTED_EMPLOYEE_NUMBER = selEmpNo;
|
|
request.P_MENU_TYPE = item.MENU_TYPE;
|
|
request.NationalityCode = nationality;
|
|
//set emp and resp id
|
|
console.log("set data");
|
|
this.common.sharedService.setSharedData(
|
|
selEmpNo,
|
|
MenuResponse.SHARED_SEL_EMP
|
|
);
|
|
this.common.sharedService.setSharedData(
|
|
request.P_SELECTED_RESP_ID,
|
|
MenuResponse.SHARED_SEL_RESP_ID
|
|
);
|
|
|
|
this.eitService
|
|
.getMenuEntries(request)
|
|
.subscribe((result: MenuResponse) => {
|
|
this.handleMenuEntiresResult(result);
|
|
});
|
|
}
|
|
|
|
sortMenuEntires(list) {
|
|
let tree = this.common.list_to_tree(list);
|
|
this.common.sharedService.setSharedData(tree, "menuEntries");
|
|
// this.common.navigateForward("/eit/homepage");
|
|
this.common.openEITPage();
|
|
}
|
|
|
|
private handleMenuEntiresResult(result) {
|
|
if (this.common.validResponse(result)) {
|
|
if (this.common.hasData(result.GetMenuEntriesList)) {
|
|
this.sortMenuEntires(result.GetMenuEntriesList);
|
|
}
|
|
}
|
|
}
|
|
|
|
private Change_password() {
|
|
this.common.openChangePassword();
|
|
}
|
|
private openPayslip() {
|
|
this.common.openPayslipPage();
|
|
}
|
|
private attendance() {
|
|
// this.zbarOptions = {
|
|
// flash: "off",
|
|
// drawSight: false
|
|
// };
|
|
//console.log("your currnt location is");
|
|
//console.log("Loc");
|
|
this.permissions.requestCameraAutherization().then(granted => {
|
|
this.camera = granted as boolean;
|
|
if (this.camera) {
|
|
this.scanCode();
|
|
}
|
|
}
|
|
);
|
|
}
|
|
|
|
scanCode() {
|
|
// this.zbar
|
|
// .scan(this.zbarOptions)
|
|
// .then(result => {
|
|
// console.log(result); // Scanned code
|
|
// let strResult = JSON.parse(result);
|
|
// console.log(strResult.QRValue);
|
|
// this.scannedResult = result;
|
|
// this.deviceID = this.device.uuid;
|
|
// this.swipeAttendance();
|
|
// })
|
|
// .catch(error => {
|
|
// alert(error); // Error message
|
|
// });
|
|
|
|
this.barcodeScanner.scan().then(barcodeData => {
|
|
console.log('Barcode data', barcodeData);
|
|
// let strResult = JSON.parse(barcodeData);
|
|
// console.log(strResult.QRValue);
|
|
this.scannedResult = barcodeData;
|
|
this.deviceID = this.device.uuid;
|
|
this.swipeAttendance();
|
|
}).catch(err => {
|
|
console.log('Error', err);
|
|
});
|
|
}
|
|
|
|
swipeAttendance() {
|
|
let request: attendanceSwipeScannerRequest = new attendanceSwipeScannerRequest();
|
|
request.Latitude = this.lat;
|
|
request.Longitude = this.longt;
|
|
request.QRValue = this.scannedResult.text;
|
|
request.UID = this.deviceID;
|
|
request.UserName = this.userData.EMPLOYEE_NUMBER;
|
|
console.log("request");
|
|
console.log(JSON.stringify(request));
|
|
this.attendance_service
|
|
.attendanceSwipeScanner(request, () => {
|
|
console.log("Error inside in swipe attendance");
|
|
})
|
|
.subscribe((result: Response) => {
|
|
if (this.common.validResponse(result)) {
|
|
console.log("response");
|
|
console.log(result);
|
|
this.common.presentAlert(this.ts.trPK("home", "swipeAlertSuccess"));
|
|
} else {
|
|
this.common.presentAlert(this.ts.trPK("home", "swipeAlertFailed"));
|
|
}
|
|
});
|
|
}
|
|
openPersonalInfo() {
|
|
this.common.openProfile();
|
|
}
|
|
}
|