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.
639 lines
18 KiB
Plaintext
639 lines
18 KiB
Plaintext
import { Injectable } from '@angular/core';
|
|
import { NavController, ToastController, LoadingController, AlertController, Platform } from '@ionic/angular';
|
|
import { Router } from '@angular/router';
|
|
import { TranslatorService } from '../translator/translator.service';
|
|
import { AlertControllerService } from '../../ui/alert/alert-controller.service';
|
|
import { Response } from '../models/response';
|
|
import { Location } from '@angular/common';
|
|
import { ThemeableBrowser } from '@ionic-native/themeable-browser/ngx';
|
|
import { BrowserConfig } from './models/browser-config';
|
|
import { LaunchNavigator, LaunchNavigatorOptions } from '@ionic-native/launch-navigator/ngx';
|
|
import { Device } from '@ionic-native/device/ngx';
|
|
|
|
|
|
@Injectable({
|
|
providedIn: 'root'
|
|
})
|
|
export class CommonService {
|
|
private progressLoaders: any[] = [];
|
|
private loadingProgress: any;
|
|
constructor(
|
|
public nav: NavController,
|
|
public router: Router,
|
|
public location: Location,
|
|
public ts: TranslatorService,
|
|
public loadingController: LoadingController,
|
|
public toastController: ToastController,
|
|
public alertController: AlertControllerService,
|
|
public alertControllerIonic: AlertController,
|
|
public themeableBrowser: ThemeableBrowser,
|
|
public launchNavigation: LaunchNavigator,
|
|
public platform: Platform,
|
|
public device: Device
|
|
|
|
) { }
|
|
|
|
public back() {
|
|
// this.location.back();
|
|
this.nav.goBack();
|
|
}
|
|
|
|
public round(value: number, decimal: number): string {
|
|
const valueStr = value.toString();
|
|
const dotIndex = valueStr.indexOf('.');
|
|
|
|
if (dotIndex >= 0) {
|
|
return valueStr.toString().substr(0, dotIndex + decimal);
|
|
} else {
|
|
return value.toString();
|
|
}
|
|
|
|
}
|
|
|
|
public toastPK(page: string, key: string) {
|
|
this.toast(this.ts.trPK(page, key));
|
|
}
|
|
async toast(message: string) {
|
|
const toast = await this.toastController.create({
|
|
message: message,
|
|
showCloseButton: true,
|
|
position: 'middle',
|
|
duration: 2000,
|
|
closeButtonText: this.ts.trPK('general', 'done')
|
|
});
|
|
toast.present();
|
|
}
|
|
|
|
async startLoading() {
|
|
this.stopLoading();
|
|
const loader = await this.loadingController.create({
|
|
spinner: 'bubbles',
|
|
duration: 30000,
|
|
message: this.ts.trPK('error', 'wait'),
|
|
translucent: true
|
|
});
|
|
|
|
this.progressLoaders.push(loader);
|
|
return await loader.present();
|
|
}
|
|
|
|
|
|
public mobileNumber(number: string) {
|
|
return number.substr(1, number.length - 1);
|
|
}
|
|
public testFunction() {
|
|
|
|
}
|
|
|
|
public stopLoading() {
|
|
|
|
/*
|
|
loading progress must be implemented
|
|
as synchronous
|
|
*/
|
|
setTimeout(() => {
|
|
for (const loader of this.progressLoaders) {
|
|
loader.dismiss();
|
|
}
|
|
this.progressLoaders = [];
|
|
|
|
}, 1000);
|
|
}
|
|
|
|
public presentAlert(message: string) {
|
|
this.alertDialog(null, this.ts.trPK('general', 'ok'), this.ts.trPK('general', 'alert'), message);
|
|
|
|
}
|
|
|
|
|
|
public presentConfirmDialog(message: string, onAccept: any, onCancel: any) {
|
|
|
|
this.confirmAlertDialog(onAccept, this.ts.trPK('general', 'ok'),
|
|
null, this.ts.trPK('general', 'cancel'),
|
|
this.ts.trPK('general', 'confirm'), message);
|
|
}
|
|
|
|
async presentConfirmDialogOld(message: string, onAccept: any, onCancel: any) {
|
|
|
|
this.alertController.presentConfirm(
|
|
this.ts.trPK('general', 'confirm'),
|
|
message,
|
|
this.ts.trPK('general', 'ok'),
|
|
() => {
|
|
this.alertController.dismiss();
|
|
onAccept();
|
|
},
|
|
() => {
|
|
this.alertController.dismiss();
|
|
onCancel();
|
|
}
|
|
);
|
|
}
|
|
|
|
|
|
public presentAcceptDialog(message: string, onAccept: any) {
|
|
|
|
this.alertDialog(onAccept, this.ts.trPK('general', 'ok'), this.ts.trPK('general', 'confirm'), message);
|
|
|
|
}
|
|
|
|
async presentAcceptDialogOld(message: string, onAccept: any) {
|
|
this.alertController.presentConfirm(
|
|
this.ts.trPK('general', 'confirm'),
|
|
message,
|
|
this.ts.trPK('general', 'ok'),
|
|
() => {
|
|
this.alertController.dismiss();
|
|
onAccept();
|
|
}
|
|
);
|
|
}
|
|
|
|
public confirmBackDialogOld(message: string) {
|
|
this.alertController.presentConfirm(
|
|
this.ts.trPK('general', 'info'),
|
|
message,
|
|
this.ts.trPK('general', 'ok'),
|
|
() => {
|
|
this.back();
|
|
this.alertController.dismiss();
|
|
}
|
|
);
|
|
}
|
|
|
|
public confirmBackDialog(message: string) {
|
|
|
|
this.alertDialog(
|
|
() => {
|
|
this.back();
|
|
},
|
|
this.ts.trPK('general', 'ok'), this.ts.trPK('general', 'info'), message);
|
|
|
|
}
|
|
|
|
|
|
public showErrorMessageDialogOld(onClick: any, okLabel: string, message: string) {
|
|
this.alertController.presentConfirm(
|
|
this.ts.trPK('general', 'alert'),
|
|
message, okLabel, () => {
|
|
if (onClick) {
|
|
onClick();
|
|
}
|
|
this.alertController.dismiss();
|
|
}
|
|
);
|
|
|
|
|
|
|
|
}
|
|
|
|
public showErrorMessageDialog(onClick: any, okLabel: string, message: string) {
|
|
this.alertDialog(onClick, okLabel, this.ts.trPK('general', 'alert'), message);
|
|
|
|
}
|
|
|
|
|
|
public showConnectionErrorDialogOld(onClick: any, okLabel: string) {
|
|
|
|
this.alertController.presentConfirm(
|
|
this.ts.trPK('general', 'alert'),
|
|
this.ts.trPK('error', 'conn'),
|
|
okLabel, () => {
|
|
if (onClick) {
|
|
onClick();
|
|
}
|
|
this.alertController.dismiss();
|
|
|
|
}
|
|
);
|
|
|
|
}
|
|
|
|
|
|
public showConnectionErrorDialog(onClick: any, okLabel: string) {
|
|
this.alertDialog(onClick, okLabel, this.ts.trPK('general', 'alert'), this.ts.trPK('error', 'conn'));
|
|
|
|
}
|
|
|
|
async confirmAlertDialog(onAccept: any, acceptLabel: string, onCancel: any, cancelLabel: string, title: string, message: string) {
|
|
this.clearAllAlerts();
|
|
const alert = await this.alertControllerIonic.create({
|
|
header: this.ts.trPK('general', 'confirm'),
|
|
message: message,
|
|
buttons: [
|
|
{
|
|
text: cancelLabel,
|
|
role: 'cancel',
|
|
handler: () => {
|
|
if (onCancel) {
|
|
onCancel();
|
|
}
|
|
this.alertControllerIonic.dismiss();
|
|
}
|
|
}, {
|
|
text: acceptLabel,
|
|
handler: () => {
|
|
if (onAccept) {
|
|
onAccept();
|
|
}
|
|
this.alertControllerIonic.dismiss();
|
|
}
|
|
}
|
|
]
|
|
});
|
|
// this.alerts.push(alert);
|
|
await alert.present();
|
|
}
|
|
|
|
async alertDialog(onAccept: any, acceptLabel: string, title: string, message: string) {
|
|
this.clearAllAlerts();
|
|
const alert = await this.alertControllerIonic.create({
|
|
header: title,
|
|
message: message,
|
|
buttons: [
|
|
{
|
|
text: acceptLabel,
|
|
handler: () => {
|
|
if (onAccept) {
|
|
onAccept();
|
|
}
|
|
this.alertControllerIonic.dismiss();
|
|
}
|
|
}
|
|
]
|
|
});
|
|
// this.alerts.push(alert);
|
|
await alert.present();
|
|
}
|
|
|
|
private alerts: any[] = [];
|
|
public clearAllAlerts() {
|
|
/*
|
|
for (const alert of this.alerts) {
|
|
this.alertControllerIonic.dismiss(alert);
|
|
}
|
|
|
|
*/
|
|
this.alerts = [];
|
|
}
|
|
|
|
|
|
|
|
public getDeviceInfo(): string {
|
|
|
|
if (this.platform.is('mobile')) {
|
|
const os = this.platform.is('ios') ? 'Iphone' : 'android';
|
|
return os + ' - ' + this.device.platform + ' - ' + this.device.version + ' , ' + this.device.manufacturer;
|
|
} else {
|
|
return navigator.userAgent;
|
|
}
|
|
|
|
}
|
|
|
|
public getDeviceType(): string {
|
|
if (this.platform.is('mobile')) {
|
|
return 'Mobile ' + (this.platform.is('ios') ? 'Iphone' : 'android');
|
|
} else {
|
|
return 'Desktop';
|
|
}
|
|
|
|
}
|
|
public validResponse(result: Response): boolean {
|
|
if (result.MessageStatus === 1) {
|
|
return true;
|
|
} else if (result.MessageStatus === 2) {
|
|
return this.hasData(result['SameClinicApptList']);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public openBrowser(url: string) {
|
|
// const browser: ThemeableBrowserObject =
|
|
this.themeableBrowser.create(url, '_blank', BrowserConfig.OPTIONS);
|
|
|
|
}
|
|
public imageFromBase64(base64: string) {
|
|
return 'data:image/jpeg;base64,' + base64;
|
|
}
|
|
|
|
public openLocation(lat: number, lng: number) {
|
|
this.launchNavigation.navigate([lat, lng]).then(
|
|
() => { },
|
|
() => { this.failedToOpenMap(); }
|
|
);
|
|
}
|
|
private failedToOpenMap() {
|
|
this.alertController.presentConfirm(
|
|
this.ts.trPK('general', 'alert'),
|
|
this.ts.trPK('error', 'map'),
|
|
this.ts.trPK('general', 'ok'),
|
|
() => {
|
|
this.alertController.dismiss();
|
|
}
|
|
);
|
|
}
|
|
|
|
public evaluteDate(dateStr: string): string {
|
|
if (dateStr) {
|
|
const utc = parseInt(dateStr.substring(6, dateStr.length - 2), 10);
|
|
if (utc) {
|
|
const appoDate = new Date(utc);
|
|
if ((appoDate instanceof Date) && !isNaN(appoDate.getTime())) {
|
|
return appoDate.toLocaleDateString();
|
|
}
|
|
}
|
|
}
|
|
return dateStr;
|
|
}
|
|
|
|
public evaluteDateAsObject(dateStr: string): Date {
|
|
if (dateStr) {
|
|
const utc = parseInt(dateStr.substring(6, dateStr.length - 2), 10);
|
|
return new Date(utc);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public getDateISO(date: Date): string {
|
|
return date.getFullYear().toString() + '-' +
|
|
this.trailerZero(date.getMonth() + 1) + '-' +
|
|
this.trailerZero(date.getDate());
|
|
}
|
|
|
|
public getTodayISO(): string {
|
|
return this.getDateISO(new Date());
|
|
}
|
|
|
|
|
|
public getTimeISO(date: Date): string {
|
|
return this.trailerZero(date.getHours()) + ':' +
|
|
this.trailerZero(date.getMinutes()) + ':00';
|
|
}
|
|
|
|
public getDateTimeISO(date: Date): string {
|
|
return this.getDateISO(date) + ' ' + this.getTimeISO(date);
|
|
}
|
|
|
|
public getDateTimeISOFromString(dateStr: string): string {
|
|
const date = this.evaluteDateAsObject(dateStr);
|
|
return this.getDateTimeISO(date) + ' ' + this.getTimeISO(date);
|
|
}
|
|
|
|
public getCurrentTimeISO(): string {
|
|
return this.getTimeISO(new Date());
|
|
}
|
|
|
|
private trailerZero(value: number): string {
|
|
const str = value.toString();
|
|
return (str.length > 1) ? str : ('0' + str);
|
|
}
|
|
|
|
|
|
public hasData(array: any[]): boolean {
|
|
return array != null && array.length > 0;
|
|
}
|
|
|
|
public extractNumber(message: string): string {
|
|
if (message != null && message.length > 0) {
|
|
let startIndex = null;
|
|
let endIndex = message.length - 1;
|
|
for (let i = 0; i < message.length; i++) {
|
|
const code = message.charCodeAt(i);
|
|
if (this.inNumberRange(code)) {
|
|
if (!startIndex) {
|
|
startIndex = i;
|
|
}
|
|
} else {
|
|
if (startIndex) {
|
|
endIndex = i;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return startIndex ? message.substring(startIndex, endIndex) : '';
|
|
}
|
|
return null;
|
|
}
|
|
public inNumberRange(targetCode: number): boolean {
|
|
const minDigit = '0'.charCodeAt(0);
|
|
const maxDigit = '9'.charCodeAt(0);
|
|
return (targetCode >= minDigit && targetCode <= maxDigit);
|
|
}
|
|
|
|
public enterPage() {
|
|
}
|
|
|
|
/*
|
|
open calls
|
|
*/
|
|
|
|
|
|
public openAppointments() {
|
|
this.nav.navigateForward(['/eservices/appointments/home']);
|
|
// this.router.navigateByUrl('/eservices/appointments/home');
|
|
|
|
}
|
|
|
|
public openHome() {
|
|
this.nav.navigateRoot(['/home']);
|
|
// this.nav.navigateByUrl('/home');
|
|
|
|
}
|
|
|
|
|
|
public reload(url: string, from: string) {
|
|
console.log('force reload called from:' + from);
|
|
// window.location.reload();
|
|
location.href = url;
|
|
}
|
|
|
|
public navigateRoot(url: string) {
|
|
this.nav.navigateRoot([url]);
|
|
}
|
|
|
|
|
|
public navigateForward(url: string) {
|
|
this.nav.navigateForward([url]);
|
|
}
|
|
public navigateBack(url: string) {
|
|
this.nav.navigateBack([url]);
|
|
}
|
|
public openEservices() {
|
|
this.nav.navigateForward(['/eservices/home']);
|
|
// this.router.navigateByUrl('/eservices/home');
|
|
|
|
}
|
|
public openBookings() {
|
|
this.nav.navigateForward(['/eservices/booking/home']);
|
|
// this.router.navigateByUrl('/eservices/bookings');
|
|
}
|
|
public openAppointmentDetails() {
|
|
this.nav.navigateForward(['/eservices/appointments/detials']);
|
|
// this.router.navigateByUrl('/eservices/appointments/detials');
|
|
}
|
|
|
|
public openApprovals() {
|
|
this.nav.navigateForward(['/eservices/approvals']);
|
|
// this.router.navigateByUrl('/eservices/approvals');
|
|
|
|
}
|
|
public openPrescriptions() {
|
|
this.nav.navigateForward(['/eservices/prescriptions']);
|
|
// this.router.navigateByUrl('/eservices/prescriptions');
|
|
|
|
}
|
|
public openPrescriptionReports() {
|
|
this.nav.navigateForward(['/eservices/prescriptions/reports']);
|
|
// this.router.navigateByUrl('/eservices/prescriptions/reports');
|
|
|
|
}
|
|
public openPrescriptionPharmaciesList() {
|
|
this.nav.navigateForward(['/eservices/prescriptions/reports/pharmacies']);
|
|
// this.router.navigateByUrl('/eservices/prescriptions/reports/pharmacies');
|
|
|
|
}
|
|
public openDoctorSchedule() {
|
|
this.nav.navigateForward(['/eservices/doctors/schedule']);
|
|
// this.router.navigateByUrl('/eservices/appointments/doctor-schedule');
|
|
|
|
}
|
|
|
|
public openRadiology() {
|
|
this.nav.navigateForward(['/eservices/radiology']);
|
|
// this.router.navigateByUrl('/eservices/radiology');
|
|
}
|
|
public openRadiologyReport() {
|
|
this.nav.navigateForward(['/eservices/radiology/report']);
|
|
// this.router.navigateByUrl('/eservices/radiology/report');
|
|
}
|
|
public openMyDoctors() {
|
|
this.nav.navigateForward(['/eservices/doctors']);
|
|
}
|
|
public openDoctorProfile() {
|
|
this.nav.navigateForward(['/eservices/doctors/profile']);
|
|
}
|
|
|
|
public openBookingCalendar() {
|
|
this.nav.navigateForward(['/eservices/doctors/calendar']);
|
|
}
|
|
|
|
public openLabOrders() {
|
|
this.nav.navigateForward(['/eservices/lab']);
|
|
// this.router.navigateByUrl('/eservices/lab');
|
|
}
|
|
public openLabResult() {
|
|
this.nav.navigateForward(['/eservices/lab/result']);
|
|
// this.router.navigateByUrl('/eservices/lab/result');
|
|
}
|
|
|
|
public openEyePrescriptions() {
|
|
this.nav.navigateForward(['/eservices/eye']);
|
|
}
|
|
|
|
public openEyeMeasurments() {
|
|
this.nav.navigateForward(['/eservices/eye/measurments']);
|
|
}
|
|
|
|
public openBloodSugarGraph() {
|
|
this.nav.navigateForward(['/eservices/tracker/blood-sugar/graph']);
|
|
}
|
|
|
|
public openBloodSugarAdd() {
|
|
this.nav.navigateForward(['/eservices/tracker/blood-sugar/add']);
|
|
}
|
|
|
|
public openBloodPressureAdd() {
|
|
this.nav.navigateForward(['/eservices/tracker/blood-pressure/add']);
|
|
}
|
|
|
|
public openBloodSugarRHMD() {
|
|
this.nav.navigateForward(['/eservices/tracker/blood-sugar/rhmd']);
|
|
}
|
|
public openBloodSugarRHMDBL() {
|
|
this.nav.navigateForward(['/eservices/tracker/blood-sugar/rhmd-bl']);
|
|
}
|
|
|
|
public openBloodSugarRHMDBLE() {
|
|
this.nav.navigateForward(['/eservices/tracker/blood-sugar/rhmd-ble']);
|
|
}
|
|
public openBloodPressureGraph() {
|
|
this.nav.navigateForward(['/eservices/tracker/blood-pressure/graph']);
|
|
}
|
|
|
|
public openWeightAdd() {
|
|
this.nav.navigateForward(['/eservices/tracker/weight/add']);
|
|
}
|
|
|
|
public openWeightGraph() {
|
|
this.nav.navigateForward(['/eservices/tracker/weight/graph']);
|
|
}
|
|
|
|
public openBookingDoctorsList() {
|
|
this.nav.navigateForward(['/eservices/booking/doctors-list']);
|
|
}
|
|
public openBookingDentalComplains() {
|
|
this.nav.navigateForward(['/eservices/booking/dental-complains']);
|
|
}
|
|
|
|
public openDocResponseDetail() {
|
|
this.nav.navigateForward(['/eservices/doc-response/response-detail']);
|
|
}
|
|
public openInsurCardDetail() {
|
|
this.nav.navigateForward(['/eservices/insur-cards/card-detail']);
|
|
}
|
|
public openUserAgreement() {
|
|
this.nav.navigateForward(['/eservices/month-report/user-agreement']);
|
|
}
|
|
|
|
public openChildVaccineHome() {
|
|
this.nav.navigateForward(['/eservices/child-vaccine/home']);
|
|
}
|
|
|
|
public openChildVaccineVaccineList() {
|
|
this.nav.navigateForward(['/eservices/child-vaccine/vaccine-list']);
|
|
}
|
|
|
|
public openChildVaccineAddChild() {
|
|
this.nav.navigateForward(['/eservices/child-vaccine/add-child']);
|
|
}
|
|
|
|
public openChildVaccineChildList() {
|
|
this.nav.navigateForward(['/eservices/child-vaccine/child-list']);
|
|
}
|
|
|
|
public openAskDocRequest() {
|
|
this.nav.navigateForward(['/eservices/ask-doc/ask-doc-request']);
|
|
}
|
|
|
|
public openNewMedReport() {
|
|
this.nav.navigateForward(['/eservices/med-report/new-med-report']);
|
|
}
|
|
|
|
public openUserLogin() {
|
|
console.log('now open login');
|
|
this.nav.navigateForward(['/authentication/login']);
|
|
}
|
|
public openAgreement() {
|
|
this.nav.navigateForward(['/authentication/agreement']);
|
|
}
|
|
public openUserRegister() {
|
|
this.nav.navigateForward(['/authentication/register']);
|
|
}
|
|
public openUserForgot() {
|
|
this.nav.navigateForward(['/authentication/forgot']);
|
|
}
|
|
|
|
public openFeedback() {
|
|
this.nav.navigateForward(['/feedback/home']);
|
|
}
|
|
public openFeedbackStatusDetails() {
|
|
this.nav.navigateForward(['/feedback/status-details']);
|
|
}
|
|
|
|
public navigateTo(url: string) {
|
|
this.nav.navigateForward([url]);
|
|
}
|
|
|
|
|
|
}
|