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.
mohemm_srca/Mohem/src/app/hmg-common/services/common/common.service.copy.txt

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]);
}
}