\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
{{msgObj.MSG03}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n {{credentialMsg}}\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","import { Component, OnInit } from '@angular/core';\r\nimport { konsole } from 'src/app/utility/konsole';\r\nimport { CommonService } from 'src/app/common/common.service'\r\nimport { FileSaver } from 'src/app/utility/myfilesaver';\r\n\r\n@Component({\r\n selector: 'app-confirmation',\r\n templateUrl: './confirmation.component.html',\r\n styleUrls: ['./confirmation.component.css']\r\n})\r\nexport class ConfirmationComponent implements OnInit {\r\n\r\n aptConfirmationMsg:string;\r\n credentialMsg:string;\r\n meetingId:string;\r\n hospitalId:string;\r\n crdObj:any;\r\n msgObj:any;\r\n heading:string;\r\n schType:number;\r\n\r\n constructor(private commonService:CommonService) { }\r\n\r\n ngOnInit() {\r\n const self = this;\r\n //this.aptConfirmationMsg = \"Your video consultation appointment 377096 with Doctor@1 is confirmed for 13-Apr-2020, 1:05 PM. Click the link to join meeting https://virtualOPD.mcura.com/default.aspx?meetingId=93874836953 Password:abcxyz Your transaction Id for payment is Due to recent security issues , please install zoom app as directed /as pre-requisite\";\r\n //this.credentialMsg = \"To upload/access your medical records from SGRH Patient Portal/mCURA:1MedKey app your credentials are. Username: 8744825823 Password: Prin2435823 Take care, mCURA\";\r\n self.aptConfirmationMsg = self.commonService.getCnfMsg();\r\n self.credentialMsg = self.commonService.getCrdMsg();\r\n self.meetingId = self.commonService.getCnfMeetingId();\r\n self.crdObj = self.commonService.getCrdObj();\r\n self.schType = self.commonService.getSchType();\r\n\r\n if(self.schType == 0) {\r\n self.heading = \"OPD\";\r\n }else {\r\n self.heading = \"Virtual OPD\";\r\n }\r\n\r\n if(self.crdObj) {\r\n self.hospitalId = self.crdObj.hospitalid;\r\n }\r\n self.msgObj = {};\r\n self.msgObj[\"MSG01\"] = \"Hospital Id (for future reference & bookings)\";\r\n self.msgObj[\"MSG02\"] = \"Please save this details - to click on the meeting url during your appointment time \";\r\n self.msgObj[\"MSG03\"] = \"For any future \"+self.heading+\" appointments, please enter the same hospital id & mobile no while booking\";\r\n\r\n self.updateCnfMsg();\r\n }\r\n\r\n updateCnfMsg() {\r\n if(this.aptConfirmationMsg) {\r\n let msg = this.aptConfirmationMsg;\r\n msg = msg.replace(\"%3d\", \"=\");\r\n msg = msg.replace(\"%3D\", \"=\");\r\n let replaceableStr = \"https://virtualopd.mcura.com/default.aspx?meetingid=\"+this.meetingId;\r\n let newLinkStr = `
`+replaceableStr+``;\r\n msg = msg.replace(replaceableStr, newLinkStr);\r\n this.aptConfirmationMsg = msg;\r\n }\r\n }\r\n\r\n handleClick(event) {\r\n const self = this;\r\n const targetId = event.target.id;\r\n\r\n switch (targetId) {\r\n case 'download-btn-id': {\r\n\r\n let text = self.aptConfirmationMsg;\r\n text = text +' Hospital Id:'+self.hospitalId;\r\n var blob = new Blob([text], { type: \"text/plain;charset=utf-8\" });\r\n FileSaver.save(blob);\r\n }\r\n break;\r\n case 'portal-btn-id1':\r\n case 'portal-btn-id2':{\r\n if (self.crdObj) {\r\n let username = self.crdObj.data.username;\r\n let password = self.crdObj.data.password;\r\n window.open('https://consumer.mcura.com?username='+username+'&password='+password); //open patient portal\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { Observable, of } from 'rxjs';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { catchError, map, tap } from 'rxjs/operators';\r\nimport { konsole } from 'src/app/utility/konsole'\r\nimport { CommonService } from 'src/app/common/common.service'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataService {\r\n\r\n private serviceObserver;\r\n\r\n //https://cors-anywhere.herokuapp.com/\r\n static baseUrl = \"https://test-tn.mcura.com/\";\r\n static zoomUrl = \"https://api.zoom.us/v2/\";\r\n //static baseUrl = \"http://mvr.main.mcura.com/\";//Test Server\r\n //static baseUrl = \"http://mvr.host.mcura.com/\";//Public IP\r\n //static baseUrl = \"http://10.1.6.30/\"; //Private IP\r\n\r\n static serviceUrl = {\r\n getSchedulePath: DataService.baseUrl + 'health_dev.svc/Json/getSchedule_Day_v3',\r\n getSearchPatientPath: DataService.baseUrl + 'health_dev.svc/json/SearchPatient_v2',\r\n postContactDetailsPath: DataService.baseUrl + 'health_dev.svc/json/PostContactDetails_v1_1',\r\n postAddressPath: DataService.baseUrl + 'health_dev.svc/json/Post_SGRH_Address',\r\n postRegisterPatientUserPath: DataService.baseUrl + 'health_dev.svc/json/Post_SGRH_PatientUser_v6',//Post_KH_PatientUser_v6',PostPatientUser_v3'\r\n fixAppointmentPath: DataService.baseUrl + 'health_dev.svc/json/InsertAppointments_v5',\r\n getMatchPatientPath: DataService.baseUrl + 'health_dev.svc/json/getPatUHID',//searchPatientByExactMatch\r\n getForgetPatUhidPath: DataService.baseUrl + 'health_dev.svc/json/getPatForgetUHID',\r\n getDepartmentsPath: DataService.baseUrl + 'health_dev.svc/Json/GetDepartmentlist',\r\n getDoctorsPath: DataService.baseUrl + 'health_dev.svc/Json/List_DoctorsBySubTenantId_Sche_FeeNature_v9',\r\n notifyFixAppointmentPath: DataService.baseUrl + 'health_dev.svc/Json/NotifyDocNwithoutRegistrationSGRH', // NotifyAppointmentFix_QRCode\r\n notifyFixAppointmentForRegistraionPath: DataService.baseUrl + 'health_dev.svc/Json/NotifyDocNRegistrationSGRH', // NotifyAppointmentFix_QRCode\r\n postActivityTrackerPath: DataService.baseUrl + 'health_dev.svc/Json/postActivityTracker_v2',\r\n getAppointmentByMobilePath: DataService.baseUrl + 'health_dev.svc/Json/getAppoinmentByMobileNo_v1',\r\n getHashCodePath: DataService.baseUrl + 'health_dev.svc/json/gethashcode',\r\n getZoomAccessTokenPath: DataService.baseUrl + 'health_dev.svc/json/get_zoom_accesstoken',\r\n getZoomUserDetailsPath: DataService.baseUrl + 'health_dev.svc/Json/GetZoomUsersDetails',\r\n postMeetingDetailsPath: DataService.baseUrl + 'health_dev.svc/Json/PostMeetingDetails',\r\n createMeetingPath: DataService.baseUrl + 'health_dev.svc/json/CreateZoomUserMeeting',\r\n notifyFixVirtualAppointmentPath: DataService.baseUrl + 'health_dev.svc/Json/PostVideoConsultationSMS_v7',\r\n createPaymentOrderPath: DataService.baseUrl + 'ConsumerService.svc/json/CreatePaymentOrderNew_SGRH',\r\n postPaymentDocFeePath: DataService.baseUrl + 'health_dev.svc/Json/Post_KH_PaymentDocFeeWithFeeBreakup', //PostPaymentDocFee_v7\r\n sendRequestCredentialPath: DataService.baseUrl + 'health_dev.svc/Json/postPatVerification_v3',\r\n fetchSMSDetailsPath: DataService.baseUrl + 'health_dev.svc/Json/fetchSMSDetails_v2',\r\n getPaymentInfoPath: DataService.baseUrl + 'ConsumerService.svc/json/GetPaymentInfo_SGRH',\r\n postAptSmsToDoctorPath: DataService.baseUrl + 'health_dev.svc/Json/PostAptSmsToDoctor_v1',\r\n pendingPaymentFixOrCancelAppointmentPath: DataService.baseUrl + 'health_dev.svc/Json/PendingPaymentApt_Insert_Cancel_v1',\r\n makePendingPymtAsFixAptPath: DataService.baseUrl + 'health_dev.svc/Json/MakePendingPymtAsFixApt',\r\n sendPaymentLinkPath: DataService.baseUrl + 'health_dev.svc/Json/sendPaymentLink_v1',\r\n getSubtenantLogoUrlPath: DataService.baseUrl + 'health_dev.svc/Json/GetSubTenant_Logo_v1',\r\n patientCheckInWithoutPaymentPath: DataService.baseUrl + 'health_dev.svc/Json/Patient_Check_In_WithOutPayment_v1',\r\n getSGRHPatOccupationsPath: DataService.baseUrl + 'health_dev.svc/Json/getSGRHPatOccupations',\r\n getSGRHPatSalutationsPath: DataService.baseUrl + 'health_dev.svc/Json/getSGRHPatSalutations',\r\n getPatSGRHMaritalStatusPath: DataService.baseUrl + 'health_dev.svc/Json/getPatSGRHMaritalStatus',\r\n getPatSGRHGenderStatusPath: DataService.baseUrl + 'health_dev.svc/Json/getPatSGRHGenderStatus',\r\n getPatSGRHReligionPath: DataService.baseUrl + 'health_dev.svc/Json/getPatSGRHReligion',\r\n getPatSGRHColonyPath: DataService.baseUrl + 'health_dev.svc/Json/getPatSGRHColony',\r\n getPatSGRHCountryPath: DataService.baseUrl + 'health_dev.svc/Json/getPatSGRHCountry',\r\n getPatSGRHCityPath: DataService.baseUrl + 'health_dev.svc/Json/getPatSGRHCity',\r\n getPatSGRHStatePath: DataService.baseUrl + 'health_dev.svc/Json/getPatSGRHState',\r\n getPatSGRHPINPath: DataService.baseUrl + 'health_dev.svc/Json/getPatSGRHPIN',\r\n postPaymentRegFeePath: DataService.baseUrl + 'health_dev.svc/Json/Post_KH_PaymentRegFee_v6',\r\n appBlockingSessionPath: DataService.baseUrl + 'health_dev.svc/Json/GetAppointmentSessionBlocked',\r\n }\r\n\r\n static urlQuery = {\r\n getScheduleQuery: function (userRoleId, date) {\r\n const paramObj = { 'userRoleId': userRoleId, 'CurDate': date };\r\n konsole.log('paramObj ' + JSON.stringify(paramObj));\r\n const httpParam = new HttpParams({ fromObject: paramObj });\r\n return httpParam;\r\n },\r\n getSubtenantLogoQuery: function (userRoleId, subtenantid) {\r\n const paramObj = { 'userRoleId': userRoleId, subtenantid: subtenantid };\r\n konsole.log('paramObj ' + JSON.stringify(paramObj));\r\n const httpParam = new HttpParams({ fromObject: paramObj });\r\n return httpParam;\r\n },\r\n getSearchPatientQuery: function (subtenantId, mobileNo) {\r\n const paramObj = { \"index\": \"1\", \"RowSize\": \"5\", \"UserRoleID\": \"0\", \"SearchType\": \"2\", \"Searchkey\": mobileNo, \"SubtenantId\": subtenantId };\r\n konsole.log('paramObj ' + JSON.stringify(paramObj));\r\n const httpParam = new HttpParams({ fromObject: paramObj });\r\n return httpParam;\r\n },\r\n getMatchPatientQuery: function (subtenantId, uhid, mobile) {\r\n const paramObj = { \"subtenantId\": subtenantId, \"uhid\": uhid, \"mobile\": mobile || \"\" };\r\n konsole.log('paramObj ' + JSON.stringify(paramObj));\r\n const httpParam = new HttpParams({ fromObject: paramObj });\r\n return httpParam;\r\n },\r\n getForgetPatUhidQuery: function (lastName, mobile, dob) {\r\n const paramObj = { \"LastName\": `\\'${lastName}\\'`, \"DOB\": `\\'${dob}\\'`, \"MobileNo\": `\\'${mobile}\\'` || \"\" };\r\n konsole.log('paramObj ' + JSON.stringify(paramObj));\r\n const httpParam = new HttpParams({ fromObject: paramObj });\r\n return httpParam;\r\n },\r\n postContactDetailsQuery: function (userRoleId, mobileNo, emailId) {\r\n var paramObj = {};\r\n var cdJson = {};\r\n\r\n cdJson['Mobile'] = mobileNo;\r\n cdJson['Email'] = emailId;\r\n cdJson['Optemail'] = '';\r\n cdJson['FixLine'] = '';\r\n cdJson['Optmobile'] = '';\r\n cdJson['Skypeid'] = '';\r\n\r\n paramObj['UserRoleID'] = userRoleId;\r\n paramObj['cd'] = cdJson;\r\n\r\n return paramObj;\r\n },\r\n\r\n postAddressQuery: function (userRoleId, contactId, addrLine1, addrLine2, zipCode, colony, CityId, stateId , countryId) {\r\n\r\n const adJson = { Address1: addrLine1 || \"SGRH Hospital\", Address2: addrLine2, Zipcode: zipCode, AreaId: 0, SGRH_colonyId: colony, CityId, stateId, countryId };\r\n const paramObj = { _add: adJson, UserRoleID: userRoleId, ContactId: contactId };\r\n\r\n return paramObj;\r\n },\r\n postRegisterPatientUserQuery: function (userRoleId, subTenantId, name, genderId, dateOfBirth, hospitalNo, addressId, contactId, salutationId, patReligion, patFatherName, patMotherName) {\r\n\r\n var paramObj = {};\r\n var ptJson = {};\r\n\r\n let today = new Date().toISOString().slice(0, 10);\r\n var regDate = today;\r\n\r\n ptJson['GenderId'] = genderId;\r\n ptJson['Patname'] = name;\r\n ptJson['Dob'] = dateOfBirth;\r\n ptJson['AddressId'] = addressId;\r\n ptJson['ContactId'] = contactId;\r\n ptJson[\"MaritalId\"] = \"0\";\r\n ptJson[\"OccupationId\"] = \"0\";\r\n ptJson[\"RegNatureId\"] = \"0\";\r\n ptJson[\"ClassificationId\"] = \"0\";\r\n ptJson[\"ProviderId\"] = \"0\";\r\n ptJson[\"SalutationId\"] = salutationId;\r\n ptJson[\"PatStatusId\"] = \"0\";\r\n ptJson[\"IsVerified\"] = \"0\";\r\n ptJson[\"VerifiedBy\"] = \"0\";\r\n ptJson[\"VerifiedDocLink\"] = [];\r\n ptJson[\"PatStatusDetails\"] = []\r\n ptJson[\"PatReligion\"] = patReligion\r\n ptJson[\"PatFatherName\"] = patFatherName || \"\"\r\n ptJson[\"PatMotherName\"] = patMotherName || \"\"\r\n\r\n paramObj['Pt'] = ptJson;\r\n paramObj['regDate'] = regDate;\r\n paramObj['HospitalNo'] = hospitalNo;\r\n paramObj['UserRoleID'] = userRoleId;\r\n paramObj['EntryTypeId'] = '1';\r\n paramObj['RecNatureId'] = '1';\r\n paramObj['sub_tenant_id'] = subTenantId;\r\n paramObj['ImagePathId'] = '0';\r\n paramObj[\"vipDetails\"] = {};\r\n paramObj[\"expatDetails\"] = {};\r\n paramObj[\"freeReg\"] = {}\r\n\r\n return paramObj;\r\n },\r\n fixAppointmentQuery: function (userRoleId, mrNo, scheduleId, appId, appNatureId, orderId, orderTxnId) {\r\n orderId = (orderId) ? orderId : \"0\";\r\n orderTxnId = (orderTxnId) ? orderTxnId : \"0\";\r\n var appBooking = { \"Others\": \"\", \"Mrno\": mrNo, \"self\": \"0\", \"AppNatureId\": appNatureId, \"CurrentStatusId\": \"1\" };\r\n var appointmentJson = { \"_Appointments\": { \"appbookings\": appBooking, \"orderId\": orderId, \"AvlStatusId\": \"1\", \"serviceTypeId\": \"1\", \"scheduleId\": scheduleId, \"ordTxnId\": orderTxnId, \"AppId\": appId }, \"UserRoleID\": userRoleId };\r\n return appointmentJson;\r\n },\r\n notifyFixAppointmentQuery: function (mrNo, appId) {\r\n const paramObj = { \"mrNo\": mrNo, \"appId\": appId };\r\n return paramObj;\r\n },\r\n postActivityTrackerQuery: function (operatorId, subTenantId, mrNo, docUserRoleId, transactionId, scheduleId, appId, remarks, others, buildVersion, delivered) {\r\n\r\n const paramObj = {};\r\n paramObj[\"actSubTenantId\"] = (subTenantId) ? subTenantId : '';\r\n paramObj[\"actUserRoleId\"] = (operatorId) ? operatorId : '';\r\n paramObj[\"actUserMediumId\"] = 5; //SGRH Web Link\r\n paramObj[\"patMrno\"] = (mrNo) ? mrNo : '';\r\n\r\n paramObj[\"drUserRoleId\"] = (docUserRoleId) ? docUserRoleId : '';\r\n paramObj[\"actTransMasterId\"] = transactionId; //1 for fix appointment\r\n paramObj[\"actRemarks\"] = (remarks) ? remarks : '';\r\n paramObj[\"actOthers\"] = (others) ? others : '';\r\n\r\n paramObj[\"actScheduleId\"] = (scheduleId) ? scheduleId : '';\r\n paramObj[\"actAppId\"] = (appId) ? appId : '';\r\n paramObj[\"actBuildVersion\"] = (buildVersion) ? buildVersion : '';\r\n paramObj[\"delivered\"] = (delivered) ? delivered : '0';\r\n\r\n return paramObj;\r\n\r\n /*\r\n {\r\n \"actSubTenantId\":243,\r\n \"actUserRoleId\":\"1613\",\r\n \"actUserMediumId\":5,\r\n \"patMrno\":97411,\r\n \"drUserRoleId\":2968,\r\n \"actTransMasterId\":1, to book appointment\r\n \"actRemarks\":\"\",\r\n \"actOthers\":\"\",\r\n \"actScheduleId\":86877,\r\n \"actAppId\":4012033,\r\n \"actBuildVersion\":\"1.0.0\"\r\n }\r\n */\r\n },\r\n getDepartmentsQuery: function (userRoleId, subTenantId) {\r\n const paramObj = { 'UserRoleId': userRoleId, 'subTenantId': subTenantId };\r\n const httpParam = new HttpParams({ fromObject: paramObj });\r\n return httpParam;\r\n },\r\n getDoctorsQuery: function (subTenantId, date, deptId, isSearch, searchkey) {\r\n const paramObj = { 'SubTenantId': subTenantId, 'Date': date, 'deptId': deptId, 'isSearch': isSearch, 'searchkey': searchkey };\r\n konsole.log('PARAMS ' + JSON.stringify(paramObj));\r\n const httpParam = new HttpParams({ fromObject: paramObj });\r\n return httpParam;\r\n },\r\n getAppointmentByMobileQuery: function (scheduleId, date, mobile) {\r\n const paramObj = { 'scheduleId': scheduleId, 'Date': date, 'mobile': mobile };\r\n konsole.log('PARAMS ' + JSON.stringify(paramObj));\r\n const httpParam = new HttpParams({ fromObject: paramObj });\r\n return httpParam;\r\n },\r\n getHashCodeQuery: function (key, salt, txnid, amount, pinfo, fname, email, mobile, udf5) {\r\n const paramObj = { 'key': key, 'salt': salt, 'txnid': txnid, 'amount': amount, 'pinfo': pinfo, 'fname': fname, 'email': email, 'mobile': mobile, 'udf5': udf5 };\r\n konsole.log('PARAMS ' + JSON.stringify(paramObj));\r\n return paramObj;\r\n },\r\n getZoomAccessTokenQuery: function (apiKey, appSecret) {\r\n const paramObj = { 'api_key': apiKey, 'app_secret': appSecret };\r\n konsole.log('PARAMS ' + JSON.stringify(paramObj));\r\n return paramObj;\r\n },\r\n getZoomUserDetailsQuery: function (displayName) {\r\n const paramObj = { 'displayName': displayName };\r\n konsole.log('PARAMS ' + JSON.stringify(paramObj));\r\n const httpParam = new HttpParams({ fromObject: paramObj });\r\n return httpParam;\r\n },\r\n postMeetingDetailsQuery: function (mrno, docUserRoleId, appId, status, pymtStatus, meetingId, hostId, password, startUrl, createdAt, joinUrl, joinAtMcuraUrl) {\r\n var paramObj = {};\r\n paramObj['appId'] = appId;\r\n paramObj['meetingId'] = meetingId;\r\n paramObj['mrno'] = mrno;\r\n paramObj['docUserRoleId'] = docUserRoleId;\r\n paramObj['status'] = status;\r\n paramObj['pymtStatus'] = pymtStatus;\r\n paramObj['hostId'] = hostId;\r\n paramObj['password'] = password;\r\n paramObj['startUrl'] = startUrl;\r\n paramObj['createdAt'] = createdAt;\r\n paramObj['joinUrl'] = joinUrl;\r\n paramObj['joinAtMcuraUrl'] = 'https://virtualOPD.mcura.com/default.aspx?meetingId=' + meetingId; //joinAtMcuraUrl;\r\n return paramObj;\r\n },\r\n createMeetingQuery: function (topic, meetingAgenda, startDate, startTime, meetingDuration, meetingPassword, zoomUserId) {\r\n var superParam = {};\r\n var paramObj = {};\r\n var settingsJson = {\r\n \"host_video\": \"true\",\r\n \"participant_video\": \"true\",\r\n \"cn_meeting\": \"false\",\r\n \"in_meeting\": \"true\",\r\n \"join_before_host\": \"true\",\r\n \"mute_upon_entry\": \"false\",\r\n \"watermark\": \"false\",\r\n \"use_pmi\": \"false\",\r\n \"approval_type\": \"0\",\r\n \"registration_type\": \"0\",\r\n \"audio\": \"both\",\r\n \"auto_recording\": \"none\",\r\n \"enforce_login\": \"false\",\r\n \"enforce_login_domains\": \"\",\r\n \"alternative_hosts\": \"\",\r\n \"global_dial_in_countries\": [\r\n ],\r\n \"registrants_email_notification\": \"false\"\r\n };\r\n\r\n paramObj[\"settings\"] = settingsJson;\r\n paramObj[\"topic\"] = topic;\r\n paramObj[\"type\"] = \"2\";\r\n paramObj[\"start_time\"] = startDate + 'T' + startTime; //yyyy-MM-ddTHH:mm:ss\r\n paramObj[\"duration\"] = meetingDuration;\r\n paramObj[\"timezone\"] = \"Asia/Calcutta\";\r\n paramObj[\"password\"] = meetingPassword;\r\n paramObj[\"agenda\"] = meetingAgenda;\r\n\r\n superParam[\"app\"] = paramObj;\r\n superParam[\"userid\"] = zoomUserId;\r\n return superParam;\r\n },\r\n notifyFixVirtualAppointmentQuery: function (mrNo, appointmentId) {\r\n const paramObj = { \"mrno\": mrNo, \"appId\": appointmentId };\r\n return paramObj;\r\n },\r\n createPaymentOrderQuery: function (amount, appId, mrNo, isLive) {\r\n var paramObj = {};\r\n paramObj[\"amount\"] = amount;\r\n paramObj[\"receiptId\"] = appId + \"_\" + mrNo;\r\n paramObj[\"deviceName\"] = \"Web\";\r\n paramObj[\"mrNo\"] = mrNo;\r\n paramObj[\"appId\"] = appId;\r\n paramObj[\"isTest\"] = (isLive) ? \"false\" : \"true\";\r\n return paramObj;\r\n },\r\n postPaymentDocFeeQuery: function (subtenantId, hospitalNo, appNatureId, userRoleId, description, paymentMode,\r\n appId, billAmt, mrNo, hisBillNo, mobileNo, scheduleId, finalBillAmount, paymentOrderId, paymentSignature, status, collectedBy, paymentDetails) {\r\n const self = this;\r\n const serviceType = 1; //for DocFee\r\n\r\n var paramObj = {};\r\n paramObj[\"SubtenantId\"] = subtenantId;\r\n paramObj[\"HospitalNo\"] = hospitalNo;\r\n paramObj[\"AppnatureId\"] = appNatureId;\r\n paramObj[\"UserRoleId\"] = userRoleId;\r\n paramObj[\"Description\"] = description;\r\n paramObj[\"PaymentMode\"] = paymentMode; //1 in case of card\r\n paramObj[\"AppId\"] = appId;\r\n paramObj[\"BillAmount\"] = billAmt;\r\n paramObj[\"CollectedBy\"] = collectedBy;\r\n paramObj[\"ServiceType\"] = serviceType;\r\n paramObj[\"Mrno\"] = mrNo;\r\n paramObj[\"HIS_BillNo\"] = hisBillNo;\r\n paramObj[\"MobileNo\"] = mobileNo;\r\n paramObj[\"ScheduleId\"] = scheduleId;\r\n paramObj[\"finalBillAmount\"] = finalBillAmount;\r\n paramObj[\"billDiscount\"] = [];\r\n paramObj[\"PymtOrderId\"] = paymentOrderId;\r\n paramObj[\"PymtSignature\"] = paymentSignature;\r\n paramObj[\"Hospital_BillNo\"] = hisBillNo;\r\n paramObj[\"rpOrderId\"] = paymentOrderId;\r\n paramObj[\"paymentDetails\"] = paymentDetails;\r\n paramObj[\"Status\"] = status;\r\n paramObj[\"orderId\"] = 0;\r\n paramObj[\"OrdTxnIds\"] = [];\r\n paramObj[\"itemDetails\"] = [];\r\n paramObj[\"exRate\"] = \"1.0\";\r\n paramObj[\"currency\"] = \"1\";\r\n paramObj[\"cardDetails\"] = {};\r\n paramObj[\"chequeDDDetails\"] = {};\r\n paramObj[\"isFree\"] = \"0\";\r\n paramObj[\"freeReason\"] = \"\"\r\n return paramObj;\r\n },\r\n sendRequestCredentialQuery: function (subtenantId, hospitalNo, mobileNo) {\r\n const self = this;\r\n var paramObj = {};\r\n paramObj[\"subTenantId\"] = subtenantId;\r\n paramObj[\"hospitalId\"] = hospitalNo;\r\n paramObj[\"mobileNo\"] = mobileNo;\r\n return paramObj;\r\n },\r\n fetchSMSDetailsQuery: function (transactionId) {\r\n const self = this;\r\n var paramObj = {};\r\n paramObj[\"paymentTransactionId\"] = transactionId;\r\n\r\n konsole.log('PARAMS ' + JSON.stringify(paramObj));\r\n const httpParam = new HttpParams({ fromObject: paramObj });\r\n return httpParam;\r\n },\r\n getPaymentInfoQuery: function (paymentTxnId, isLive) {\r\n const self = this;\r\n var paramObj = {};\r\n paramObj[\"paymentId\"] = paymentTxnId;\r\n paramObj[\"isTest\"] = (isLive) ? \"false\" : \"true\";\r\n return paramObj;\r\n },\r\n postAptSmsToDoctorQuery: function (mrNo, appId, userRoleId) {\r\n const self = this;\r\n var paramObj = {};\r\n paramObj[\"mrNo\"] = mrNo;\r\n paramObj[\"appId\"] = appId;\r\n paramObj[\"userRoleId\"] = userRoleId;\r\n return paramObj;\r\n },\r\n patientCheckInWithoutPaymentQuery: function (mrNo, userRoleId, scheduleId, subTenantId, date, appId) {\r\n var queryJson = {};\r\n queryJson[\"MRNo\"] = mrNo;\r\n queryJson[\"UserRoleId\"] = userRoleId;\r\n queryJson[\"ScheduleId\"] = scheduleId;\r\n queryJson[\"SubTenantId\"] = subTenantId;\r\n queryJson[\"Date\"] = date;\r\n queryJson[\"appId\"] = appId;\r\n return queryJson;\r\n },\r\n appBookingSessionQuery: function (sessionId, appId) {\r\n var queryJson = {};\r\n\r\n queryJson[\"session_id\"] = sessionId;\r\n queryJson[\"app_id\"] = appId;\r\n queryJson['tp_status'] = 6;\r\n return queryJson;\r\n },\r\n pendingPaymentFixOrCancelAppointmentQuery: function (appId, scheduleId, appNatureId, mrNo, userRoleId, insertcancel) {\r\n const self = this;\r\n\r\n var bookingObj = {};\r\n bookingObj[\"AppNatureId\"] = appNatureId;\r\n bookingObj[\"CurrentStatusId\"] = 1;\r\n bookingObj[\"Mrno\"] = mrNo;\r\n bookingObj[\"Others\"] = \"\";\r\n bookingObj[\"self\"] = \"0\";\r\n\r\n var aptObj = {};\r\n aptObj[\"AppId\"] = appId;\r\n aptObj[\"ordTxnId\"] = \"0\";\r\n aptObj[\"orderId\"] = \"0\";\r\n aptObj[\"scheduleId\"] = scheduleId;\r\n aptObj[\"appbookings\"] = bookingObj;\r\n\r\n var paramObj = {};\r\n paramObj[\"_Appointments\"] = aptObj;\r\n paramObj[\"UserRoleID\"] = userRoleId;\r\n paramObj[\"InsertCancel\"] = insertcancel;\r\n return paramObj;\r\n },\r\n\r\n makePendingPymtAsFixAptQuery: function (appId, appNatureId) {\r\n const self = this;\r\n var paramObj = {};\r\n paramObj[\"AppId\"] = appId;\r\n paramObj[\"appNatureId\"] = appNatureId;\r\n return paramObj;\r\n },\r\n\r\n sendPaymentLinkQuery: function (appId, mrNo, deptId, appNatureId) {\r\n const self = this;\r\n var paramObj = {};\r\n paramObj[\"appId\"] = appId;\r\n paramObj[\"appNatureId\"] = appNatureId;\r\n paramObj[\"mrno\"] = mrNo;\r\n paramObj[\"deptId\"] = deptId;\r\n return paramObj;\r\n }\r\n\r\n }\r\n\r\n constructor(private http: HttpClient, private commonService: CommonService) { }\r\n\r\n invokeZoomAPI(url: string, params: any, isPost: boolean, accessToken: string): Observable
{\r\n konsole.log('URL :- ' + url);\r\n\r\n let httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + accessToken\r\n })\r\n };\r\n\r\n if (isPost) {\r\n konsole.log('POST: ' + JSON.stringify(params));\r\n\r\n this.serviceObserver = this.http.post(url, params, httpOptions).pipe(\r\n tap(response => konsole.log('success ' + JSON.stringify(response))),\r\n catchError(this.handleError('invokeAPI', []))\r\n );\r\n } else {\r\n this.serviceObserver = this.http.get(url, { params: params }).pipe(\r\n tap(response => konsole.log('success ' + JSON.stringify(response))),\r\n catchError(this.handleError('invokeAPI', []))\r\n );\r\n }\r\n\r\n return this.serviceObserver;\r\n }\r\n\r\n invokeAPI(url: string, params: any, isPost: boolean): Observable {\r\n\r\n konsole.log('URL :- ' + url);\r\n\r\n if (isPost) {\r\n\r\n let httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Accept-Charset': 'utf-8',\r\n 'Access-Control-Allow-Origin': 'http://localhost:4200',\r\n 'Access-Control-Allow-Credentials': 'true'\r\n })\r\n };\r\n\r\n\r\n konsole.log('POST: ' + JSON.stringify(params));\r\n\r\n this.serviceObserver = this.http.post(url, params).pipe(\r\n tap(response => konsole.log('success ' + JSON.stringify(response))),\r\n catchError(this.handleError('invokeAPI', []))\r\n );\r\n\r\n } else {\r\n this.serviceObserver = this.http.get(url, { params: params }).pipe(\r\n tap(response => konsole.log('success ' + JSON.stringify(response))),\r\n catchError(this.handleError('invokeAPI', []))\r\n );\r\n }\r\n\r\n return this.serviceObserver;\r\n }\r\n\r\n fetchSchedule(userRoleId: string, date: string): Observable {\r\n let url = DataService.serviceUrl.getSchedulePath;\r\n let params: HttpParams = DataService.urlQuery.getScheduleQuery(userRoleId, date);\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n fetchSubtenantLogo(userRoleId: number, subtenantId: string): Observable {\r\n let url = DataService.serviceUrl.getSubtenantLogoUrlPath;\r\n let params: HttpParams = DataService.urlQuery.getSubtenantLogoQuery(userRoleId, subtenantId);\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n searchPatient(subtenantId: string, mobileNo: string): Observable {\r\n let url = DataService.serviceUrl.getSearchPatientPath;\r\n let params: HttpParams = DataService.urlQuery.getSearchPatientQuery(subtenantId, mobileNo);\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n getMatchPatient(subtenantId, uhid, mobile): Observable {\r\n let url = DataService.serviceUrl.getMatchPatientPath;\r\n let params: HttpParams = DataService.urlQuery.getMatchPatientQuery(subtenantId, uhid, mobile);\r\n return this.invokeAPI(url, params, false);\r\n }\r\n getForgetPatUhid(lastName, mobile, dob): Observable {\r\n let url = DataService.serviceUrl.getForgetPatUhidPath;\r\n let params: HttpParams = DataService.urlQuery.getForgetPatUhidQuery(lastName, mobile, dob);\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n postContactDetails(userRoleId: string, mobileNo: string, emailId: string): Observable {\r\n let url = DataService.serviceUrl.postContactDetailsPath;\r\n let params = DataService.urlQuery.postContactDetailsQuery(userRoleId, mobileNo, emailId);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n postAddress(userRoleId, contactId, addrLine1, addrLine2, zipCode, colony, CityId, stateId, countryId): Observable {\r\n let url = DataService.serviceUrl.postAddressPath;\r\n let params = DataService.urlQuery.postAddressQuery(userRoleId, contactId, addrLine1, addrLine2, zipCode, colony, CityId, stateId, countryId);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n postRegisterPatientUser(userRoleId, subTenantId, name, genderId, dateOfBirth, hospitalNo, addressId, contactId, salutationId, PatReligion, PatFatherName, PatMotherName): Observable {\r\n let url = DataService.serviceUrl.postRegisterPatientUserPath;\r\n let params = DataService.urlQuery.postRegisterPatientUserQuery(userRoleId, subTenantId, name, genderId, dateOfBirth, hospitalNo, addressId, contactId, salutationId, PatReligion, PatFatherName, PatMotherName);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n fixAppointment(userRoleId, mrNo, scheduleId, appId, appNatureId, orderId, orderTxnId): Observable {\r\n let url = DataService.serviceUrl.fixAppointmentPath;\r\n let params = DataService.urlQuery.fixAppointmentQuery(userRoleId, mrNo, scheduleId, appId, appNatureId, orderId, orderTxnId);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n getDepartments(userRoleId, subTenantId): Observable {\r\n let url = DataService.serviceUrl.getDepartmentsPath;\r\n let params: HttpParams = DataService.urlQuery.getDepartmentsQuery(userRoleId, subTenantId);\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n getDoctors(subTenantId, date, deptId, isSearch, searchkey): Observable {\r\n let url = DataService.serviceUrl.getDoctorsPath;\r\n let params: HttpParams = DataService.urlQuery.getDoctorsQuery(subTenantId, date, deptId, isSearch, searchkey);\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n getAppointmentByMobile(scheduleId, date, mobile): Observable {\r\n let url = DataService.serviceUrl.getAppointmentByMobilePath;\r\n let params: HttpParams = DataService.urlQuery.getAppointmentByMobileQuery(scheduleId, date, mobile);\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n notifyFixAppointment(mrNo, appId): Observable {\r\n let url = DataService.serviceUrl.notifyFixAppointmentPath;\r\n let params = DataService.urlQuery.notifyFixAppointmentQuery(mrNo, appId);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n notifyFixAppointmentForRegistraion(mrNo, appId): Observable {\r\n let url = DataService.serviceUrl.notifyFixAppointmentForRegistraionPath;\r\n let params = DataService.urlQuery.notifyFixAppointmentQuery(mrNo, appId);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n postActivityTracker(operatorId, subTenantId, mrNo, docUserRoleId, transactionId, scheduleId, appId, remarks, others, buildVersion, delivered): Observable {\r\n let url = DataService.serviceUrl.postActivityTrackerPath;\r\n let params = DataService.urlQuery.postActivityTrackerQuery(operatorId, subTenantId, mrNo, docUserRoleId, transactionId, scheduleId, appId, remarks, others, buildVersion, delivered);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n /*-- this is post service --*/\r\n getHashCode(key, salt, txnid, amount, pinfo, fname, email, mobile, udf5): Observable {\r\n let url = DataService.serviceUrl.getHashCodePath;\r\n let params = DataService.urlQuery.getHashCodeQuery(key, salt, txnid, amount, pinfo, fname, email, mobile, udf5);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n /*-- this is post service --*/\r\n getZoomAccessToken(apiKey, appSecret): Observable {\r\n let url = DataService.serviceUrl.getZoomAccessTokenPath;\r\n let params = DataService.urlQuery.getZoomAccessTokenQuery(apiKey, appSecret);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n getZoomUserDetails(displayName): Observable {\r\n let url = DataService.serviceUrl.getZoomUserDetailsPath;\r\n let params = DataService.urlQuery.getZoomUserDetailsQuery(displayName);\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n getSGRHPatOccupationsService(): Observable {\r\n let url = DataService.serviceUrl.getSGRHPatOccupationsPath;\r\n let params: any = {};\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n getSGRHPatSalutationsService(): Observable {\r\n let url = DataService.serviceUrl.getSGRHPatSalutationsPath;\r\n let params: any = {};\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n getPatSGRHMaritalStatusService(): Observable {\r\n let url = DataService.serviceUrl.getPatSGRHMaritalStatusPath;\r\n let params: any = {};\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n getPatSGRHGenderStatusService(): Observable {\r\n let url = DataService.serviceUrl.getPatSGRHGenderStatusPath;\r\n let params: any = {};\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n getPatSGRHReligionService(): Observable {\r\n let url = DataService.serviceUrl.getPatSGRHReligionPath;\r\n let params: any = {};\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n getPatSGRHColonyService(): Observable {\r\n let url = DataService.serviceUrl.getPatSGRHColonyPath;\r\n let params: any = {};\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n getPatSGRHCountryService(): Observable {\r\n let url = DataService.serviceUrl.getPatSGRHCountryPath;\r\n let params: any = {};\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n getPatSGRHPINService(): Observable {\r\n let url = DataService.serviceUrl.getPatSGRHPINPath;\r\n let params: any = {};\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n getPatSGRHStateService(): Observable {\r\n let url = DataService.serviceUrl.getPatSGRHStatePath;\r\n let params: any = {};\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n getPatSGRHCityService(): Observable {\r\n let url = DataService.serviceUrl.getPatSGRHCityPath;\r\n let params: any = {};\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n\r\n createMeeting(zoomUserId, topic, meetingAgenda, startDate, startTime, meetingDuration): Observable {\r\n let url = DataService.serviceUrl.createMeetingPath;\r\n let zoomToken = this.commonService.getZoomToken();\r\n let meetingPassword = this.commonService.getMeetingPassword();\r\n let params = DataService.urlQuery.createMeetingQuery(topic, meetingAgenda, startDate, startTime, meetingDuration, meetingPassword, zoomUserId);\r\n return this.invokeZoomAPI(url, params, true, zoomToken);\r\n }\r\n\r\n postMeetingDetails(mrno, docUserRoleId, appId, status, pymtStatus, meetingId, hostId, password, startUrl, createdAt, joinUrl, userName): Observable {\r\n let url = DataService.serviceUrl.postMeetingDetailsPath;\r\n let joinAtMcuraUrl = this.commonService.getmCURAMeetingUrl(meetingId, password, userName);\r\n let params = DataService.urlQuery.postMeetingDetailsQuery(mrno, docUserRoleId, appId, status, pymtStatus, meetingId, hostId, password, startUrl, createdAt, joinUrl, joinAtMcuraUrl);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n notifyFixVirtualAppointment(mrNo, appointmentId): Observable {\r\n let url = DataService.serviceUrl.notifyFixVirtualAppointmentPath;\r\n let params = DataService.urlQuery.notifyFixVirtualAppointmentQuery(mrNo, appointmentId);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n createPaymentOrder(amount, appId, mrNo): Observable {\r\n let url = DataService.serviceUrl.createPaymentOrderPath;\r\n let isLive = this.commonService.isLive();\r\n let params = DataService.urlQuery.createPaymentOrderQuery(amount, appId, mrNo, isLive);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n postPaymentDocFee(subtenantId, hospitalNo, appNatureId, userRoleId, description, paymentMode,\r\n appId, billAmt, mrNo, hisBillNo, mobileNo, scheduleId, finalBillAmount, paymentOrderId, paymentSignature, status, paymentDetails): Observable {\r\n let collectedBy = this.commonService.getOperatorUserRoleId();\r\n let url = DataService.serviceUrl.postPaymentDocFeePath;\r\n let params = DataService.urlQuery.postPaymentDocFeeQuery(subtenantId, hospitalNo, appNatureId, userRoleId, description, paymentMode,\r\n appId, billAmt, mrNo, hisBillNo, mobileNo, scheduleId, finalBillAmount, paymentOrderId, paymentSignature, status, collectedBy, paymentDetails);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n postPaymentRegisterFee(subtenantId, hospitalNo, appNatureId, userRoleId, description, paymentMode,\r\n appId, billAmt, mrNo, hisBillNo, mobileNo, scheduleId, finalBillAmount, paymentOrderId, paymentSignature, status, paymentDetails): Observable {\r\n \r\n let collectedBy = this.commonService.getOperatorUserRoleId();\r\n let url = DataService.serviceUrl.postPaymentRegFeePath;\r\n\r\n let params = DataService.urlQuery.postPaymentDocFeeQuery(subtenantId, hospitalNo, appNatureId, userRoleId, description, paymentMode,\r\n appId, billAmt, mrNo, hisBillNo, mobileNo, scheduleId, finalBillAmount, paymentOrderId, paymentSignature, status, collectedBy, paymentDetails);\r\n \r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n sendRequestCredential(subtenantId, hospitalNo, mobileNo): Observable {\r\n let url = DataService.serviceUrl.sendRequestCredentialPath;\r\n let params = DataService.urlQuery.sendRequestCredentialQuery(subtenantId, hospitalNo, mobileNo);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n fetchSMSDetails(transactionId): Observable {\r\n let url = DataService.serviceUrl.fetchSMSDetailsPath;\r\n let params = DataService.urlQuery.fetchSMSDetailsQuery(transactionId);\r\n return this.invokeAPI(url, params, false);\r\n }\r\n\r\n getPaymentInfo(paymentTxnId): Observable {\r\n let url = DataService.serviceUrl.getPaymentInfoPath;\r\n let isLive = this.commonService.isLive();\r\n let params = DataService.urlQuery.getPaymentInfoQuery(paymentTxnId, isLive);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n postAptSmsToDoctor(mrNo, appId, userRoleId): Observable {\r\n const self = this;\r\n let url = DataService.serviceUrl.postAptSmsToDoctorPath;\r\n let params = DataService.urlQuery.postAptSmsToDoctorQuery(mrNo, appId, userRoleId);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n pendingPaymentFixOrCancelAppointment(appId, scheduleId, appNatureId, mrNo, userRoleId, insertcancel): Observable {\r\n const self = this;\r\n let url = DataService.serviceUrl.pendingPaymentFixOrCancelAppointmentPath;\r\n let params = DataService.urlQuery.pendingPaymentFixOrCancelAppointmentQuery(appId, scheduleId, appNatureId, mrNo, userRoleId, insertcancel);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n makePendingPymtAsFixApt(appId, appNatureId): Observable {\r\n const self = this;\r\n let url = DataService.serviceUrl.makePendingPymtAsFixAptPath;\r\n let params = DataService.urlQuery.makePendingPymtAsFixAptQuery(appId, appNatureId);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n sendPaymentLink(appId, mrNo, deptId, appNatureId): Observable {\r\n const self = this;\r\n let url = DataService.serviceUrl.sendPaymentLinkPath;\r\n let params = DataService.urlQuery.sendPaymentLinkQuery(appId, mrNo, deptId, appNatureId);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n patientCheckInWithoutPayment(mrNo, userRoleId, scheduleId, subTenantId, date, appId): Observable {\r\n const self = this;\r\n\r\n let url = DataService.serviceUrl.patientCheckInWithoutPaymentPath;\r\n let params = DataService.urlQuery.patientCheckInWithoutPaymentQuery(mrNo, userRoleId, scheduleId, subTenantId, date, appId);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n getAppointmentSessionBlocked(sessionId, appId): Observable {\r\n const self = this;\r\n\r\n let url = DataService.serviceUrl.appBlockingSessionPath;\r\n let params = DataService.urlQuery.appBookingSessionQuery(sessionId, appId);\r\n return this.invokeAPI(url, params, true);\r\n }\r\n\r\n private handleError(operation = 'operation', result?: T) {\r\n return (error: any): Observable => {\r\n konsole.error(error);\r\n konsole.log(`${operation} failed: ${error.message}`);\r\n return of(result as T);\r\n };\r\n }\r\n\r\n}\r\n","module.exports = \".input-group-text img{\\r\\n\\tmax-width: 24px;\\r\\n}\\r\\n\\r\\nspan.select2-selection__rendered {\\r\\n\\tline-height: 36px;\\r\\n\\tbackground-color: blue;\\r\\n}\\r\\n\"","module.exports = \"\\r\\n\\r\\n\"","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Select2OptionData } from 'ng2-select2';\r\nimport { DataService } from 'src/app/data.service'\r\nimport { konsole } from 'src/app/utility/konsole'\r\nimport { CommonService } from 'src/app/common/common.service'\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-deptsearch',\r\n templateUrl: './deptsearch.component.html',\r\n styleUrls: ['./deptsearch.component.css']\r\n})\r\nexport class DeptsearchComponent implements OnInit {\r\n\r\n @Input() exampleData:Array;\r\n optionsSelect:Select2Options;\r\n departmentList:Array\r\n\r\n constructor(private dataService:DataService,\r\n private commonService:CommonService,\r\n private _router:Router) {\r\n this.optionsSelect = {\r\n placeholder:\"Select Department\",\r\n width:'100%'\r\n }\r\n\r\n this.exampleData = [];\r\n }\r\n\r\n ngOnInit() {\r\n if(this.commonService.getSubtenantId() !== undefined){\r\n this.fetch(this.commonService.getSubtenantId());\r\n }\r\n else{\r\n this.commonService.didSubtenantChange.subscribe(subtenant => {\r\n this.fetch(subtenant);\r\n })\r\n }\r\n\r\n const self = this;\r\n window.setTimeout(function hello(){\r\n self.addInlineStyle();\r\n },500);\r\n }\r\n\r\n fetch(subtenantId){\r\n let objserver = this.dataService.getDepartments('268', subtenantId);\r\n objserver.subscribe(response => {\r\n if(response && typeof(response) == 'object') {\r\n this.departmentList = response;\r\n this.exampleData = response.map((item, index)=> {\r\n return {id:index.toString(),text:item.DepartmentName};\r\n });\r\n }\r\n });\r\n }\r\n\r\n select2ChangeEvent(event, eventId):void {\r\n let dataObj = event.data[0];\r\n var targetObj = {type:'select2', value:dataObj.id, id:eventId};\r\n var eventObj = {target:targetObj};\r\n this.handleChange(eventObj);\r\n }\r\n\r\n handleChange(event):void {\r\n if(event.target.id == 'deptSelectId') {\r\n let index = event.target.value;\r\n let deptObj = this.departmentList[index];\r\n konsole.log('selected department is '+JSON.stringify(deptObj));\r\n this.commonService.deptChange(deptObj);\r\n this._router.navigate(['index']);\r\n }\r\n }\r\n\r\n addInlineStyle() {\r\n var sections = document.getElementsByClassName(\"select2-selection--single\");\r\n var renderSections = document.getElementsByClassName(\"select2-selection__rendered\");\r\n var arrowSections = document.getElementsByClassName(\"select2-selection__arrow\");\r\n\r\n if(sections.length > 0) {\r\n var element = sections[0];\r\n if(!element.classList.contains('inline-custom-css') && element.classList.contains('select2-selection')) {\r\n element.classList.add('inline-custom-css');\r\n element.setAttribute(\"style\", \"border-radius:0px;border:none;height:36px;background-color:#fff0;\");\r\n }\r\n }\r\n\r\n if(renderSections.length > 0) {\r\n var element = renderSections[0];\r\n if(!element.classList.contains('inline-custom-css')) {\r\n element.classList.add('inline-custom-css');\r\n element.setAttribute(\"style\", \"line-height:36px;\");\r\n }\r\n }\r\n\r\n if(arrowSections.length > 0) {\r\n var element = arrowSections[0];\r\n if(!element.classList.contains('inline-custom-css')) {\r\n element.classList.add('inline-custom-css');\r\n element.setAttribute(\"style\", \"top:5px;\");\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \".loader {\\r\\n\\tposition: absolute;\\r\\n\\tz-index: 100;\\r\\n\\ttop: 30%;\\r\\n\\tleft: 45%;\\r\\n}\\r\\n\\r\\n.mainContainerouter {\\r\\n\\twidth: 990px;\\r\\n\\tmargin: auto;\\r\\n\\tclear: both;\\r\\n\\tbackground-color: #fff;\\r\\n\\tbox-shadow: 0px 4px 10px rgba(0, 0, 0, 0.19);\\r\\n}\\r\\n\\r\\n.mainContainer {\\r\\n\\tdisplay: table;\\r\\n\\twidth: 100%;\\r\\n\\tpadding: 10px 12px;\\r\\n}\\r\\n\\r\\n.single_breadcurm {\\r\\n\\twidth: 100%;\\r\\n\\tfloat: left;\\r\\n\\tcolor: #242424;\\r\\n\\tfont-size: 13px;\\r\\n\\tmargin-bottom: 15px;\\r\\n\\tpadding-top: 5px;\\r\\n}\\r\\n\\r\\n.single_breadcurm a {\\r\\n\\tcolor: #a50500;\\r\\n}\\r\\n\\r\\n.innernavheading2 {\\r\\n\\tfont-size: 20px;\\r\\n\\tcolor: #a50500;\\r\\n\\tborder-bottom: 1px solid #a50500;\\r\\n\\tfont-family: ArialNarrowBold;\\r\\n\\tpadding-bottom: 5px;\\r\\n\\tmargin-bottom: 20px;\\r\\n}\\r\\n\\r\\n.innernavheading2 span {\\r\\n\\tborder-bottom: 3px solid #a50500;\\r\\n\\tpadding-bottom: 1px;\\r\\n}\\r\\n\\r\\n.appformtopOuter {\\r\\n\\twidth: 100%;\\r\\n\\tmargin: 0 auto;\\r\\n\\tdisplay: table;\\r\\n\\tpadding: 10px;\\r\\n\\tborder-bottom: 1px #ddd solid;\\r\\n}\\r\\n\\r\\n.datepickerouter {\\r\\n\\twidth: 295px;\\r\\n\\tmargin: 0 auto;\\r\\n}\\r\\n\\r\\nul.apptDoctorListUL {\\r\\n\\tmargin: 0px;\\r\\n\\tpadding: 10px 0px 30px 0px;\\r\\n\\tlist-style: none;\\r\\n}\\r\\n\\r\\nul.apptDoctorListUL li {\\r\\n\\tlist-style: none;\\r\\n\\tmargin: 15px 0px;\\r\\n\\tpadding-left: 15px;\\r\\n\\tpadding-right: 15px;\\r\\n}\\r\\n\\r\\nul.apptDoctorListUL li .apptDoctorListBox {\\r\\n\\tbackground-color: #ffffff;\\r\\n\\tbox-shadow: 0px 3px 10px #0000001a;\\r\\n\\tdisplay: table;\\r\\n\\twidth: 100%;\\r\\n\\tmin-height: 88px;\\r\\n\\theight: auto;\\r\\n\\tpadding: 10px;\\r\\n\\tborder-radius: 4px;\\r\\n\\t-moz-border-radius: 4px;\\r\\n\\t-webkit-border-radius: 4px;\\r\\n}\\r\\n\\r\\nul.apptDoctorListUL li .apptDoctorListBox .apptScheduleDays {\\r\\n\\tfont-size: 14px;\\r\\n\\tcolor: #848484;\\r\\n\\tline-height: 22px;\\r\\n}\\r\\n\\r\\nul.apptDoctorListUL .apptDoctorInfo {\\r\\n\\tposition: relative;\\r\\n\\tpadding-left: 70px;\\r\\n}\\r\\n\\r\\n/*\\r\\nul.apptDoctorListUL .apptDoctorInfo .apptDoctorProfilePic{\\r\\n\\twidth: 60px;\\r\\n\\theight: 60px;\\r\\n\\tposition: absolute;\\r\\n\\tleft: 4px;\\r\\n\\ttop:4px;\\r\\n\\r\\n}\\r\\nul.apptDoctorListUL .apptDoctorInfo .apptDoctorProfilePic img{\\r\\n\\tmax-width: 60px;\\r\\n\\tmax-height: 60px;\\r\\n}\\r\\n*/\\r\\n\\r\\nul.apptDoctorListUL .apptDoctorInfo h3 {\\r\\n\\tfont-size: 18px;\\r\\n\\tfont-weight: 500;\\r\\n\\tcolor: #454545;\\r\\n\\tmargin: 0px;\\r\\n}\\r\\n\\r\\n.apptDoctorInfo .apptBookNowBtn {\\r\\n\\tposition: absolute;\\r\\n\\tright: 0px;\\r\\n\\ttop: 0px;\\r\\n}\\r\\n\\r\\n.btn.btn-theme {\\r\\n\\tbackground: #ffffff;\\r\\n\\tcolor: var(--theme-color);\\r\\n\\tborder: 1px var(--theme-color) dashed;\\r\\n\\ttext-align: center;\\r\\n\\ttransition: background-color 0.5s ease;\\r\\n}\\r\\n\\r\\n.btn.btn-theme:hover,\\r\\n.btn.btn-theme:visited,\\r\\n.btn.btn-theme:focus {\\r\\n\\tbackground-color: var(--theme-color);\\r\\n\\tcolor: #ffffff;\\r\\n}\\r\\n\\r\\n.form-control {\\r\\n\\tborder-radius: 0px !important;\\r\\n\\tbox-shadow: none !important;\\r\\n\\tborder: 1px #ccc solid !important;\\r\\n\\theight: 37px !important;\\r\\n}\\r\\n\\r\\n.appformtopOuter .form-control {\\r\\n\\tborder-radius: 0px;\\r\\n\\tbox-shadow: none;\\r\\n\\tborder: 1px #ccc solid;\\r\\n\\theight: 37px;\\r\\n}\\r\\n\\r\\n.custom-combobox {\\r\\n\\tposition: relative;\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.custom-combobox-toggle {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tbottom: 0;\\r\\n\\tmargin-left: -1px;\\r\\n\\tpadding: 0;\\r\\n}\\r\\n\\r\\n.custom-combobox-input {\\r\\n\\tmargin: 0;\\r\\n\\tpadding: 5px 10px;\\r\\n}\\r\\n\\r\\n.leftPanel {\\r\\n\\twidth: 100%;\\r\\n\\tborder: 1px #ccc solid;\\r\\n\\tmargin-bottom: 20px;\\r\\n\\tmargin-top: 15px;\\r\\n}\\r\\n\\r\\n.leftPanel>.head {\\r\\n\\tbackground-color: #e4e4e4;\\r\\n\\tpadding: 10px 10px;\\r\\n\\tcolor: #454545;\\r\\n\\tfont-size: 18px;\\r\\n\\tfont-weight: 300;\\r\\n\\tfont-family: 'Roboto', sans-serif;\\r\\n}\\r\\n\\r\\n.doctorInofoleftbox {\\r\\n\\tpadding: 5px;\\r\\n\\tline-height: normal;\\r\\n\\tfont-family: 'Roboto', sans-serif;\\r\\n}\\r\\n\\r\\n.doctorInofoleftbox .doctorImage {\\r\\n\\tmargin-bottom: 15px;\\r\\n\\ttext-align: center;\\r\\n\\twidth: 60px;\\r\\n\\theight: 60px;\\r\\n\\tbackground: url('/assets/images/no_doctor.png') no-repeat;\\r\\n\\tbackground-size: cover;\\r\\n\\tborder-radius: 30px;\\r\\n\\tmargin: 5px auto;\\r\\n}\\r\\n\\r\\n.doctorInofoleftbox .doctorImage img {\\r\\n\\tmax-width: 100%;\\r\\n\\tmax-height: 150px;\\r\\n\\tbackground-color: #ffffff;\\r\\n}\\r\\n\\r\\n.doctorInofoleftbox h4 {\\r\\n\\tfont-size: 17px;\\r\\n\\tfont-weight: 400;\\r\\n\\tmargin-bottom: 0px;\\r\\n\\tcolor: #454545;\\r\\n}\\r\\n\\r\\n.doctorInofoleftbox h4 span {\\r\\n\\tfont-size: 13px;\\r\\n\\tcolor: #848484;\\r\\n}\\r\\n\\r\\n.doctorInofoleftbox h5 {\\r\\n\\tmargin-bottom: 0px;\\r\\n\\tfont-size: 14px;\\r\\n\\tcolor: #454545;\\r\\n\\tfont-weight: 400;\\r\\n}\\r\\n\\r\\n.doctorInofoleftbox h5 p {\\r\\n\\tfont-size: 13px;\\r\\n\\tcolor: #848484;\\r\\n\\tfont-weight: 300;\\r\\n}\\r\\n\\r\\n.feedetilas {\\r\\n\\tpadding-top: 15px;\\r\\n}\\r\\n\\r\\n.feedetilas h5 {\\r\\n\\tfont-size: 14px;\\r\\n\\tcolor: #454545;\\r\\n\\tfont-weight: 400;\\r\\n\\tmargin-bottom: 0px;\\r\\n}\\r\\n\\r\\n.feedetilas p {\\r\\n\\tfont-size: 13px;\\r\\n\\tcolor: #848484;\\r\\n\\tmargin-bottom: 0px;\\r\\n\\tline-height: 22px;\\r\\n}\\r\\n\\r\\n.feedetilas p .fa {\\r\\n\\tcolor: var(--theme-color);\\r\\n\\tfont-weight: 300;\\r\\n\\tfont-size: 12px;\\r\\n}\\r\\n\\r\\n.rightPannel {\\r\\n\\twidth: 100%;\\r\\n\\tborder: 1px #ccc solid;\\r\\n\\tmargin-bottom: 20px;\\r\\n\\tmargin-top: 15px;\\r\\n}\\r\\n\\r\\n.rightPannel>.head {\\r\\n\\tbackground-color: #e4e4e4;\\r\\n\\tpadding: 10px 10px;\\r\\n\\tcolor: #454545;\\r\\n\\tfont-size: 18px;\\r\\n\\tfont-weight: 300;\\r\\n\\tfont-family: 'Roboto', sans-serif;\\r\\n\\tdisplay: table;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.rightPannel>.head>.heading {\\r\\n\\twidth: 250px;\\r\\n\\tfloat: left;\\r\\n}\\r\\n\\r\\n.rightPannel>.head>.selected_date {\\r\\n\\twidth: 250px;\\r\\n\\tfloat: right;\\r\\n\\ttext-align: right;\\r\\n}\\r\\n\\r\\n.selected_date img,\\r\\n.pop_selected_date img {\\r\\n\\tpadding-right: 10px;\\r\\n}\\r\\n\\r\\n.freeslotBoxouter {\\r\\n\\tbackground-color: #fff;\\r\\n\\twidth: auto;\\r\\n\\tpadding: 10px;\\r\\n\\tborder: 1px #ddd dashed;\\r\\n\\tmargin: 10px;\\r\\n}\\r\\n\\r\\n.freeslotBoxouter h4 {\\r\\n\\tfont-size: 14px;\\r\\n\\tpadding-bottom: 5px;\\r\\n}\\r\\n\\r\\nul.freeslotUL {\\r\\n\\tlist-style: none;\\r\\n\\tmargin: 0px;\\r\\n\\tpadding: 0px;\\r\\n}\\r\\n\\r\\nul.freeslotUL>li {\\r\\n\\tlist-style: none;\\r\\n\\tdisplay: inline-block;\\r\\n\\tborder: 1px #e4e4e4 dashed;\\r\\n\\tborder-radius: 4px;\\r\\n\\ttext-align: center;\\r\\n\\tmargin: 5px 4px;\\r\\n\\tfont-size: 12px;\\r\\n\\tfont-weight: 400;\\r\\n\\twidth:70px;\\r\\n}\\r\\n\\r\\nul.freeslotUL>li>a {\\r\\n\\tcolor: #263d94;\\r\\n\\ttext-decoration: none;\\r\\n\\tpadding: 4px 5px;\\r\\n\\tdisplay: block;\\r\\n\\tcursor: pointer;\\r\\n\\ttext-decoration: underline;\\r\\n}\\r\\n\\r\\nul.freeslotUL>p {\\r\\n\\tcolor: #848484;\\r\\n\\tline-height: 24px;\\r\\n\\tfont-family: 'Roboto', sans-serif;\\r\\n\\tfont-weight: 300;\\r\\n}\\r\\n\\r\\n.apptSchDesc {\\r\\n\\tfont-size: 14px;\\r\\n\\tpadding: 7px 0 0;\\r\\n\\ttext-align: center;\\r\\n}\\r\\n\\r\\n/*Popup1*/\\r\\n\\r\\n.clickDisable {\\r\\n\\tpointer-events: none;\\r\\n\\tcursor: not-allowed;\\r\\n\\topacity: 0.5;\\r\\n}\\r\\n\\r\\nform .error {\\r\\n\\tcolor: #ff0000;\\r\\n}\\r\\n\\r\\n#paymentgetway {\\r\\n\\tmargin: 30px auto;\\r\\n}\\r\\n\\r\\n#paymentgetway .modal-body img {\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.doctorPermanentInfo{\\r\\n display: block;\\r\\n width: auto;\\r\\n background-color: #f3f3f3;\\r\\n clear: both;\\r\\n\\tborder:1px #ccc dashed;\\r\\n\\tmargin: 10px 10px;\\r\\n}\\r\\n\\r\\n.doctorPermanentInfo p{\\r\\n margin: 0;\\r\\n padding: 3px 10px;\\r\\n color:#454545;\\r\\n line-height: 22px;\\r\\n}\\r\\n\\r\\n.doctorSchInfo{font-size: 13px;\\r\\n\\tcolor: #707070;\\r\\n\\tborder: 1px #ccc dotted;\\r\\n\\tpadding: 3px 10px;\\r\\n\\tborder-radius: 5px;\\r\\n\\tbackground-color: #fbfbfb;\\r\\n}\\r\\n\\r\\nol.noticeUl{\\r\\n\\tmargin: 0px;\\r\\n}\\r\\n\\r\\nol.noticeUl>li{\\r\\n\\tpadding: 5px 10px 5px 0px;\\r\\n\\ttext-indent: 0px;\\r\\n}\\r\\n\\r\\n.btn.btn-agree {\\r\\n\\tbackground-color: #fff;\\r\\n\\toutline: none;\\r\\n\\tfont-weight: bold;\\r\\n\\tmargin: 10px 0px;\\r\\n}\\r\\n\\r\\n.btn.btn-agree:focus{\\r\\n\\toutline: none;\\r\\n\\tbox-shadow: none;\\r\\n}\\r\\n\\r\\n@media (max-width:767px) {\\r\\n\\t.mainContainerouter {\\r\\n\\t\\twidth: 100%;\\r\\n\\t}\\r\\n\\t.freeslotBoxouter p.float-right{\\r\\n\\t\\tfloat:none !important;\\r\\n\\t}\\r\\n}\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Doctor
\\r\\n
\\r\\n
\\r\\n

\\r\\n
\\r\\n
\\r\\n
{{doctor.UserName}}
{{doctor.deptName}}
\\r\\n
\\r\\n {{doctor.weeklySchedule.description}}\\r\\n
\\r\\n
\\r\\n
Fee Details:
\\r\\n
{{feeObj.nature}} {{feeObj.fee}}/-
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Info:{{permanentInfo(doctor.departments, doctor.deptId)}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Available Slots
\\r\\n
\\r\\n\\r\\n
\\r\\n
{{schedule.schedule_name}} - {{scheduleTimeSlot(schedule)}}
{{virtualFee(i)}}
\\r\\n
Info:{{scheduleInfo(doctor.weeklySchedule.list, schedule.schedule_id)}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n - Download the Arogya Setu App by the government and do a self test.
\\r\\n - Please avoid bringing any attendant with you, but if you have to, that attendant too should be wearing a mask.
\\r\\n - If any history of fever cough breathlessness self or family in past 10 days, are in containment zone, then COVID testing is suggestive
\\r\\n - Please reach Sir Ganga Ram Hospital 30 minutes prior to your appointment for screening and to fill out the Declaration form
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\"","import { Component, OnInit, TemplateRef } from '@angular/core';\r\nimport { konsole } from 'src/app/utility/konsole'\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { CommonService } from 'src/app/common/common.service'\r\nimport { DataService } from 'src/app/data.service'\r\nimport { Commonlib } from 'src/app/common/commonlib'\r\nimport { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport * as moment from 'moment';\r\nimport { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-detail',\r\n templateUrl: './detail.component.html',\r\n styleUrls: ['./detail.component.css']\r\n})\r\nexport class DetailComponent implements OnInit {\r\n\r\n doctor: any;\r\n dateObj: any;\r\n scheduleList: Array;\r\n baseUrl: string;\r\n alertModalRef: BsModalRef;\r\n alertModalTemplate: TemplateRef;\r\n iAgreeChecked: Boolean;\r\n faCheckClass: string;\r\n cSection: number;\r\n cIndex: number;\r\n\r\n constructor(private _Activatedroute: ActivatedRoute,\r\n private _router: Router,\r\n private commonService: CommonService,\r\n private dataService: DataService,\r\n private toastr: ToastrService,\r\n private spinnerService: Ng4LoadingSpinnerService,\r\n private modalService: BsModalService) {\r\n this.scheduleList = [];\r\n this.baseUrl = DataService.baseUrl;\r\n this.iAgreeChecked = false;\r\n this.faCheckClass = \"fa-square-o\";\r\n this.cSection = 0;\r\n this.cIndex = 0;\r\n konsole.log('DetailComponent base URL is ' + this.baseUrl);\r\n }\r\n\r\n ngOnInit() {\r\n this.doctor = this.commonService.getDoctor();\r\n this.dateObj = this.commonService.getDate();\r\n this.fetchSchedule();\r\n\r\n this.commonService.didChangeDate.subscribe(dateObj => {\r\n this.dateObj = dateObj;\r\n this.fetchSchedule();\r\n });\r\n\r\n this.commonService.didChangeDoctor.subscribe(docObj => {\r\n this.doctor = docObj;\r\n this.fetchSchedule();\r\n });\r\n }\r\n\r\n fetchSchedule() {\r\n const self = this;\r\n const userRoleId = (this.doctor) ? this.doctor.UserRoleId : '';\r\n const dateStr = (this.dateObj) ? this.dateObj.postDate : '';\r\n if (userRoleId == '' || dateStr == '') return;\r\n\r\n self.spinnerService.show();\r\n let objserver = this.dataService.fetchSchedule(userRoleId, dateStr);\r\n objserver.subscribe(response => {\r\n self.spinnerService.hide();\r\n konsole.log(\"schedule response vlaue \" + JSON.stringify(response));\r\n this.scheduleList = response;\r\n });\r\n }\r\n\r\n virtualFee(i) {\r\n let feeObj: any;\r\n if (i < this.scheduleList.length) {\r\n let schObj = this.scheduleList[i];\r\n let schType = 0;\r\n\r\n if (schObj) {\r\n const schDateObj = Commonlib.dateForJson(schObj.date);\r\n var schDateStr = Commonlib.postDateStr(schDateObj);\r\n //this.schDate = (schDateStr)?schDateStr:'';\r\n var schName = schObj.schedule_name;\r\n\r\n var schRes = schName.trim().split(\"-\");\r\n if (schRes.length > 0) {\r\n var typeStr = schRes[0];\r\n if (typeStr.toLowerCase() == 'video consult') {\r\n schType = 1;\r\n }\r\n }\r\n }\r\n\r\n if (this.doctor) {\r\n\r\n konsole.log('feeByNature: ' + JSON.stringify(this.doctor.feeByNature));\r\n\r\n if (this.doctor.feeByNature.length > 0) {\r\n\r\n if (schType == 1) { //In case of Virtual Appointment, set feeObj to 53\r\n var feeObjList = this.doctor.feeByNature.filter(function (obj) {\r\n return obj.natureId == 53;\r\n });\r\n if (feeObjList.length > 0) {\r\n feeObj = feeObjList[0];\r\n }\r\n konsole.log('Virtual OPD Fee Obj: ' + JSON.stringify(feeObj));\r\n }//end-if virtualOPD\r\n\r\n if (schType == 0) {\r\n var feeObjList = this.doctor.feeByNature.filter(function (obj) {\r\n return obj.natureId == 1;\r\n });\r\n if (feeObjList.length > 0) {\r\n feeObj = feeObjList[0];\r\n }\r\n konsole.log('Direct OPD Fee Obj: ' + JSON.stringify(feeObj));\r\n }//end-if directOPD\r\n\r\n }//end-if feeByNature\r\n }//end-if doctor\r\n }\r\n\r\n let fee = (feeObj) ? feeObj.fee + feeObj.partnerFee + feeObj.txnFee : '0';\r\n return (fee > 0) ? \"₹\" + fee + \"/-\" : \"\";\r\n }\r\n\r\n handleClick(event, template: TemplateRef) {\r\n\r\n const self = this;\r\n\r\n const section = $(event.target).data(\"section\");\r\n const index = $(event.target).data(\"index\");\r\n\r\n self.cSection = section;\r\n self.cIndex = index;\r\n\r\n const scheduleObj = self.scheduleList[section];\r\n let schType = self.schTypeForSchedule(scheduleObj);\r\n\r\n // if(schType == 0) {\r\n // self.alertModalTemplate = template;\r\n // self.showAlert();\r\n // }else {\r\n self.proceedToFix();\r\n // }\r\n\r\n /*\r\n return;\r\n\r\n const section = $(event.target).data(\"section\");\r\n const index = $(event.target).data(\"index\");\r\n\r\n const scheduleObj = this.scheduleList[section];\r\n const freeAppointments = this.freeAppointments(scheduleObj.appointments);\r\n const appotObj = freeAppointments[index];\r\n\r\n this.commonService.schChange(scheduleObj);\r\n this.commonService.appotChange(appotObj);\r\n\r\n konsole.log('section:'+section+' index: '+index);\r\n konsole.log('schedule '+JSON.stringify(scheduleObj));\r\n konsole.log('appointment '+JSON.stringify(appotObj));\r\n\r\n this._router.navigate(['fix']);\r\n */\r\n }\r\n\r\n\r\n handleAppBlocking = async (appId) => {\r\n return new Promise(async (resolve, reject) => {\r\n const self = this;\r\n const sessionId = localStorage.getItem(\"session\");\r\n\r\n let appBlocking = this.dataService.getAppointmentSessionBlocked(sessionId, appId);\r\n self.spinnerService.show();\r\n appBlocking.subscribe(response => {\r\n self.spinnerService.hide();\r\n\r\n if (response.data.length > 0) {\r\n const slotstatus = response.data[0].SlotStatus\r\n if (slotstatus == 1) {\r\n resolve(true);\r\n } else {\r\n resolve(false);\r\n }\r\n } else {\r\n resolve(false);\r\n }\r\n })\r\n })\r\n\r\n }\r\n\r\n async proceedToFix() {\r\n const self = this;\r\n const section = self.cSection;\r\n const index = self.cIndex;\r\n\r\n const scheduleObj = this.scheduleList[section];\r\n const freeAppointments = this.freeAppointments(scheduleObj.appointments);\r\n const appotObj = freeAppointments[index];\r\n\r\n\r\n const isAppBlocked = await this.handleAppBlocking(appotObj.AppId)\r\n if (isAppBlocked == true) {\r\n this.commonService.schChange(scheduleObj);\r\n this.commonService.appotChange(appotObj);\r\n\r\n konsole.log('section:' + section + ' index: ' + index);\r\n konsole.log('schedule ' + JSON.stringify(scheduleObj));\r\n konsole.log('appointment ' + JSON.stringify(appotObj));\r\n\r\n this._router.navigate(['fix']);\r\n\r\n self.cSection = 0;\r\n self.cIndex = 0;\r\n } else {\r\n self.toastr.warning(\"Slot is not available for booking. Please choose another slot.\", \"Error\");\r\n }\r\n }\r\n\r\n schTypeForSchedule(schObj) {\r\n let schType = 0;\r\n if (schObj) {\r\n var schName = schObj.schedule_name;\r\n\r\n var schRes = schName.trim().split(\"-\");\r\n if (schRes.length > 0) {\r\n var typeStr = schRes[0];\r\n if (typeStr.toLowerCase() == 'video consult') {\r\n schType = 1;\r\n }\r\n }\r\n konsole.log('schTypeForSchedule : ' + schType);\r\n }\r\n return schType;\r\n }\r\n\r\n showAlert() {\r\n this.alertModalRef = this.modalService.show(this.alertModalTemplate, { class: 'modal-lg',/*backdrop:'static'*/ });\r\n }\r\n\r\n hideAlert() {\r\n if (this.alertModalRef) {\r\n this.alertModalRef.hide();\r\n }\r\n }\r\n\r\n modalButtonClick(event) {\r\n const self = this;\r\n const targetId = event.target.id;\r\n\r\n switch (targetId) {\r\n case 'alertAgreeCheckId': {\r\n self.iAgreeChecked = !self.iAgreeChecked;\r\n\r\n if (!self.iAgreeChecked) {\r\n self.faCheckClass = \"fa-square-o\";\r\n } else {\r\n self.faCheckClass = \"fa-check-square-o\";\r\n }\r\n }\r\n break;\r\n case 'alertBtnProceedId': {\r\n self.hideAlert();\r\n self.proceedToFix();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n twelveHrTime(tfHrTime) {\r\n return Commonlib.twelveHrTime(tfHrTime);\r\n }\r\n\r\n freeAppointments(allAppointments) {\r\n var freeAppointments = allAppointments.filter(function (item) {\r\n return (item.AvlStatusId == 1);\r\n });\r\n return freeAppointments;\r\n }\r\n\r\n shouldDisable(section, index) {\r\n const scheduleObj = this.scheduleList[section];\r\n const freeAppointments = this.freeAppointments(scheduleObj.appointments);\r\n const appotObj = freeAppointments[index];\r\n const date = Commonlib.dateForJson(scheduleObj.date);\r\n const timeDate = Commonlib.dateByMergingDateAndTime(date, appotObj.FromTime);\r\n return Commonlib.dateLessThanCurrent(timeDate);\r\n }\r\n\r\n scheduleTimeSlot(schObj) {\r\n const timeSlot = Commonlib.twelveHrTime(schObj.from_time) + ' - ' + Commonlib.twelveHrTime(schObj.to_time);\r\n return timeSlot;\r\n }\r\n\r\n permanentInfo(list, deptId) {\r\n if (list.length > 0) {\r\n const deptObj = list[0];\r\n for (var i = 0; i < list.length; i++) {\r\n const deptObj = list[i];\r\n if (deptObj.deptId == deptId) {\r\n return deptObj.permInfo;\r\n }\r\n }\r\n return \"\";\r\n }\r\n }\r\n\r\n getScheduleList(list) {\r\n var keyList = Object.keys(list);\r\n var scheduleList = [];\r\n\r\n if (keyList.length > 0) {\r\n var key = keyList[0];\r\n var scheduleObj = list[key];\r\n scheduleList = scheduleObj.schedules;\r\n }\r\n return scheduleList;\r\n }\r\n\r\n scheduleInfo(list, scheduleId) {\r\n var scheduleList = this.getScheduleList(list);\r\n var tempSchInfo = '';\r\n for (var i = 0; i < scheduleList.length; i++) {\r\n const schObj = scheduleList[i];\r\n if (schObj.scheduleId == scheduleId) {\r\n tempSchInfo = schObj.tempInfo;\r\n break;\r\n }\r\n }\r\n return tempSchInfo;\r\n }\r\n\r\n smallScreen() {\r\n return Commonlib.isWindowWidthForSmallDevice()\r\n }\r\n}\r\n","module.exports = \".input-group-text img{\\r\\n\\tmax-width: 24px;\\r\\n}\\r\\n.searchDocListOuter{\\r\\n position: relative;\\r\\n width: 100%;\\r\\n display: table;\\r\\n}\\r\\n.searchDocListOuter>.searchDocProfilePic{\\r\\n position: absolute;\\r\\n left: 0;\\r\\n top: 3px;\\r\\n width: 30px;\\r\\n height: 30px;\\r\\n background: #ffffff url('/assets/images/no_doctor.png') no-repeat;\\r\\n background-size:cover;\\r\\n border-radius: 15px;\\r\\n}\\r\\n.searchDocListOuter>.searchDocProfilePic>img{\\r\\n max-width: 100%;\\r\\n max-height: 100%;\\r\\n background-color: #ffffff;\\r\\n}\\r\\n.searchDocListOuter .searchDocProfileInfo{\\r\\n padding-left: 35px;\\r\\n width: 100%;\\r\\n text-align: left;\\r\\n}\\r\\n.searchDocProfileInfo>.searchDoctorName{\\r\\n font-size: 15px;\\r\\n color: #454545;\\r\\n line-height: 18px;\\r\\n}\\r\\n.searchDocProfileInfo>.searchDoctorName>small{\\r\\n color: #848484;\\r\\n font-size: 70%;\\r\\n}\\r\\n#docSearchContentId>.searchResult {\\r\\n\\twidth:85%;\\r\\n}\\r\\n.form-control.borderRadius-right{\\r\\n\\tborder-radius: 0px 0.25rem 0.25rem 0px;\\r\\n}\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ result.result.UserName }}
\\r\\n {{ result.result.deptName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","import { Component, OnInit } from '@angular/core';\r\nimport { konsole } from 'src/app/utility/konsole'\r\nimport { CommonService } from 'src/app/common/common.service'\r\nimport { Router } from '@angular/router';\r\nimport { DataService } from 'src/app/data.service'\r\n\r\n@Component({\r\n selector: 'app-docsearch',\r\n templateUrl: './docsearch.component.html',\r\n styleUrls: ['./docsearch.component.css']\r\n})\r\nexport class DocsearchComponent implements OnInit {\r\n\r\n baseUrl:string;\r\n apiType:string = \"http\";\r\n dateObj:any;\r\n searchResult:any;\r\n url = \"\";\r\n params = {\r\n \"SubTenantId\":\"\",\r\n \"Date\":\"\",\r\n \"deptId\":0,\r\n \"isSearch\":true,\r\n \"searchkey\":'',\r\n };\r\n\r\n constructor(private commonService:CommonService,\r\n private _router:Router,\r\n private dataService:DataService) {\r\n this.baseUrl = DataService.baseUrl;\r\n this.url = this.baseUrl + 'health_dev.svc/Json/List_DoctorsBySubTenantId_Sche_FeeNature_v9';\r\n konsole.log('url is == '+this.url);\r\n konsole.log('DocsearchComponent base URL '+this.baseUrl);\r\n }\r\n\r\n ngOnInit() {\r\n this.dateObj = this.commonService.getDate();\r\n this.params.Date = this.dateObj.postDate;\r\n this.params.SubTenantId = this.commonService.getSubtenantId();\r\n\r\n this.commonService.didChangeDate.subscribe(dateObj => {\r\n this.dateObj = dateObj;\r\n this.params.Date = this.dateObj.postDate;\r\n konsole.log('param object update '+JSON.stringify(this.params));\r\n });\r\n\r\n konsole.log('param object initiate '+JSON.stringify(this.params));\r\n }\r\n\r\n handleResultSelected(result) {\r\n this.searchResult = result;\r\n this.params.searchkey = result.UserName;\r\n this.commonService.docChange(this.searchResult);\r\n this._router.navigate(['detail']);\r\n }\r\n\r\n changeEvent(event) {\r\n konsole.log('change event called ');\r\n this.addInlineStyle();\r\n }\r\n\r\n handleClick(event) {\r\n konsole.log('click event called ');\r\n const self = this;\r\n $('#docSearchContentId').bind('contentchanged', function() {\r\n konsole.log('element mutated');\r\n setTimeout(function hello(){\r\n self.addInlineStyle();\r\n },0);\r\n });\r\n $('#docSearchContentId').trigger('contentchanged');\r\n }\r\n\r\n addInlineStyle() {\r\n var sections = document.getElementsByTagName(\"section\");\r\n if(sections.length > 0) {\r\n var element = sections[0];\r\n if(!element.classList.contains('inline-custom-css') && element.classList.contains('ta-results')) {\r\n element.classList.add('inline-custom-css');\r\n element.setAttribute(\"style\", \"margin-top:37px; margin-left:48px; width:86%\");\r\n }\r\n }\r\n }\r\n}\r\n","module.exports = \".apptDoctorProfilePopup{\\r\\n\\tborder: 1px #ccc solid;\\r\\n\\tpadding-bottom: 0;\\r\\n\\tpadding-top: 10px;\\r\\n}\\r\\n\\r\\n.apptConsultationFee{\\r\\n\\ttext-align: right;\\r\\n\\tfont-size: 14px;\\r\\n}\\r\\n\\r\\n.apptConsultationFee .fa.fa-inr{\\r\\n\\tcolor: var(--theme-color);\\r\\n}\\r\\n\\r\\n.apptFormOuter{\\r\\n\\tpadding: 15px;\\r\\n\\tbackground-color: #f2f2f2;\\r\\n}\\r\\n\\r\\n.modal .btn.btn-theme{\\r\\n\\tborder-style: solid;\\r\\n}\\r\\n\\r\\n.apptDividerOr{\\r\\n\\tposition: relative;\\r\\n\\tbackground-color: #000;\\r\\n\\theight: 1px;\\r\\n\\twidth: 100%;\\r\\n\\ttext-align: center;\\r\\n\\tdisplay: block;\\r\\n}\\r\\n\\r\\n.apptDividerOr .apptOr{\\r\\n\\tbackground-color: #ffffff;\\r\\n\\tmargin: -10px auto 0px auto;\\r\\n\\twidth: 30px;\\r\\n\\theight: 30px;\\r\\n}\\r\\n\\r\\nbutton.close{\\r\\n\\topacity: 1 !important;\\r\\n}\\r\\n\\r\\nbutton.close:active, button.close:visited, button.close:focus{\\r\\n\\toutline: none;\\r\\n}\\r\\n\\r\\n.modal-content{\\r\\n border-radius: 0px !important;\\r\\n}\\r\\n\\r\\n.pop_doctorinfo{\\r\\n\\tdisplay: block;\\r\\n\\tfont-family: 'Roboto', sans-serif;\\r\\n}\\r\\n\\r\\n.pop_doctorinfo>.pop_doctorPic{\\r\\n\\twidth: 70px;\\r\\n\\theight: 70px;\\r\\n\\tfloat: left;\\r\\n\\toverflow: hidden;\\r\\n\\tbackground: url('/assets/images/no_doctor.png') no-repeat;\\r\\n\\tbackground-size:cover;\\r\\n\\tborder-radius: 35px;\\r\\n}\\r\\n\\r\\n.pop_doctorinfo>.pop_doctorPic img{\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n\\tbackground-color:#ffffff;\\r\\n}\\r\\n\\r\\n.pop_doctorinfo>.pop_doctorInfo{\\r\\n\\tfloat: left;\\r\\n\\tpadding:0px 10px;\\r\\n}\\r\\n\\r\\n.pop_doctorinfo>.pop_doctorInfo>h4{\\r\\n\\tmargin: 0px;\\r\\n\\tfont-weight: 400;\\r\\n\\tcolor: #454545;\\r\\n}\\r\\n\\r\\n.pop_doctorinfo>.pop_doctorInfo>h4>span{\\r\\n\\tfont-size: 13px;\\r\\n\\tcolor: #848484;\\r\\n}\\r\\n\\r\\n.pop_head{\\r\\n\\tbackground-color: #e4e4e4;\\r\\n\\tpadding: 10px;\\r\\n\\tdisplay: table;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.pop_head>.pop_selected_slot{\\r\\n\\tbackground-color: #fff;\\r\\n\\tpadding: 5px ;\\r\\n\\tfont-size: 16px;\\r\\n\\tline-height: 22px;\\r\\n\\tcolor: var(--theme-color);\\r\\n\\twidth: 200px;\\r\\n\\tfloat: left;\\r\\n\\ttext-align: center;\\r\\n}\\r\\n\\r\\n.pop_head>.pop_selected_date{\\r\\n\\tfloat: right;\\r\\n\\ttext-align: right;\\r\\n\\tfont-size: 14px;\\r\\n\\tline-height: 30px;\\r\\n}\\r\\n\\r\\n.btn.btn_theme_cancel{\\r\\n\\tbackground-color: #e4e4e4;\\r\\n\\tcolor: #454545;\\r\\n\\tborder:0px;\\r\\n\\tborder-radius: 0px;\\r\\n}\\r\\n\\r\\n.btn.btn_theme_cancel:focus, .btn.btn_theme_cancel:visited, .btn.btn_theme_cancel:hover, .btn.btn_theme_cancel:active{\\r\\n\\tbackground-color: #bfbfbf;\\r\\n\\toutline: none;\\r\\n}\\r\\n\\r\\n.btn.btn_theme_submit{\\r\\n\\tbackground-color: var(--theme-color);\\r\\n\\tcolor: #fff;\\r\\n\\tborder:0px;\\r\\n\\tborder-radius: 0px;\\r\\n}\\r\\n\\r\\n.btn.btn_theme_submit:focus, .btn.btn_theme_submit:visited, .btn.btn_theme_submit:hover, .btn.btn_theme_submit:active {\\r\\n\\tbackground-color: #f13915;\\r\\n\\toutline: none;\\r\\n}\\r\\n\\r\\n.hospitalid{\\r\\n\\tpadding-top: 30px;\\r\\n}\\r\\n\\r\\n.apptSearchPatientOuter\\t{\\r\\n\\tbackground-color: #dadada;\\r\\n\\tpadding: 20px 15px 25px;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n/*Registration Form*/\\r\\n\\r\\n.newPatientRegistrationform{\\r\\n\\tpadding-top: 20px;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.newPatientRegistrationform>.form-group{\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.radio-inline>.required_star{\\r\\n\\ttop: -4px;\\r\\n\\tright: -8px;\\r\\n\\tcolor: red;\\r\\n position: absolute;\\r\\n}\\r\\n\\r\\n.required_star {\\r\\n color: red;\\r\\n}\\r\\n\\r\\n.pop_SchNameAndSlot{\\r\\n\\twidth: 100%;\\r\\n\\tmargin: 10px 0 0;\\r\\n padding: 10px 15px;\\r\\n\\tbackground-color: #f3f3f3;\\r\\n\\tline-height: 25px;\\r\\n}\\r\\n\\r\\n.pop_schName {\\r\\n\\tposition: relative;\\r\\n\\tcolor: #454545;\\r\\n\\tfont-size: 16px;\\r\\n\\tfont-weight: 500;\\r\\n\\twidth: auto;\\r\\n\\tdisplay: inline-block;\\r\\n\\tpadding-right: 10px;\\r\\n}\\r\\n\\r\\n.pop_selectedSlot {\\r\\n\\tfont-size: 14px;\\r\\n\\tcolor: #ffffff;\\r\\n\\twidth: auto;\\r\\n\\tborder-left: 1px #ddd solid;\\r\\n\\tdisplay: inline-block;\\r\\n\\tpadding-left: 10px;\\r\\n\\tfloat: right;\\r\\n\\tbackground-color: #615d5d;\\r\\n\\tpadding: 2px 10px;\\r\\n\\tborder-radius: 3px;\\r\\n}\\r\\n\\r\\n.orDevider {\\r\\n position: relative;\\r\\n background-color: #ffffff;\\r\\n height: 2px;\\r\\n}\\r\\n\\r\\n.orDeviderText {\\r\\n\\twidth: 43px;\\r\\n\\tposition: absolute;\\r\\n\\tleft: 0;\\r\\n\\tright: 0;\\r\\n\\tmargin: auto;\\r\\n\\tz-index: 5;\\r\\n\\ttop: -22px;\\r\\n\\tbackground-color: #ffffff;\\r\\n\\tpadding: 9px;\\r\\n\\tcolor: var(--theme-color);\\r\\n\\tborder-radius: 50%;\\r\\n\\tfont-weight: bold;\\r\\n\\tborder: 1px var(--theme-color) solid;\\r\\n}\\r\\n\\r\\n/*\\r\\n.was-validated .form-control:valid ~ .invalid-feedback,\\r\\n.was-validated .form-control:valid ~ .invalid-tooltip,\\r\\n.form-control.is-valid ~ .invalid-feedback,\\r\\n.form-control.is-valid ~ .invalid-tooltip,\\r\\n.was-validated .custom-select:valid ~ .invalid-feedback,\\r\\n.was-validated .custom-select:valid ~ .invalid-tooltip,\\r\\n.custom-select.is-valid ~ .invalid-feedback,\\r\\n.custom-select.is-valid ~ .invalid-tooltip {\\r\\n display: none;\\r\\n}\\r\\n\\r\\n.was-validated .form-control:valid ~ .valid-feedback,\\r\\n.was-validated .form-control:valid ~ .valid-tooltip,\\r\\n.form-control.is-valid ~ .valid-feedback,\\r\\n.form-control.is-valid ~ .valid-tooltip,\\r\\n.was-validated .custom-select:valid ~ .valid-feedback,\\r\\n.was-validated .custom-select:valid ~ .valid-tooltip,\\r\\n.custom-select.is-valid ~ .valid-feedback,\\r\\n.custom-select.is-valid ~ .valid-tooltip {\\r\\n display: block;\\r\\n}\\r\\n*/\\r\\n\\r\\n.alertsContainer>.alertsRow. {\\r\\n border: 1px solid #ffc549;\\r\\n}\\r\\n\\r\\n.alertsContainer .alertsRow. .iconpanel {\\r\\n background:#ffc549;\\r\\n color: #fff;\\r\\n}\\r\\n\\r\\n.alertsContainer .alertsRow. .messagepanel {\\r\\n color: #000;\\r\\n background: #fff;\\r\\n}\\r\\n\\r\\n.alertsContainer .alertsRow. .closeicon {\\r\\n color: #000;\\r\\n}\\r\\n\\r\\n.alertsContainer .alertsRow. .closeicon a {\\r\\n color: #000;\\r\\n text-decoration: none;\\r\\n font-size: 12px;\\r\\n}\\r\\n\\r\\n.toggle_international{\\r\\n\\tmargin-bottom: 10px;\\r\\n}\\r\\n\\r\\n.toggle_international .btn-theme{\\r\\n\\tbackground-color: #fff !important;\\r\\n\\tcolor: var(--theme-color) !important;\\r\\n\\tborder:1px var(--theme-color) solid;\\r\\n\\tbackground-image: none !important;\\r\\n}\\r\\n\\r\\n.toggle_international .btn-theme.active{\\r\\n\\tcolor:#ffffff !important;\\r\\n\\tbackground-color: var(--theme-color) !important;\\r\\n}\\r\\n\\r\\n.modalLoderDiv{\\r\\n\\tmargin-top: 50%;\\r\\n position: absolute;\\r\\n z-index: 9999;\\r\\n display: table;\\r\\n background-color: #ffffff;\\r\\n}\\r\\n\\r\\n.modal-body.successModal {\\r\\n\\tbackground-color: #54A255;\\r\\n\\tborder-radius: 5px;\\r\\n\\tcolor: #ffffff;\\r\\n\\tbox-shadow: 0px 5px 8px #666;\\r\\n\\tdisplay: table;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.modal-body.successModal img {\\r\\n\\tmax-width:24px;\\r\\n}\\r\\n\\r\\n.modal-content {\\r\\n\\tborder-color: #ffffff !important;\\r\\n}\\r\\n\\r\\n.clickDisable {\\r\\n color: #b5b5b5;\\r\\n cursor: not-allowed;\\r\\n border-color: #ddd;\\r\\n pointer-events: none;\\r\\n}\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n
\\r\\n
\\r\\n
{{doctor.UserName}}
{{doctor.deptName}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Fee: {{feeObj.fee}}/-\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{schObj.schedule_name}}\\r\\n
\\r\\n
\\r\\n Appointment Time {{appointmentTime()}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Forget UHID?\\r\\n Click\\r\\n here\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
Do you want to pay online?
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
{{alertModalMsg.title}}
\\r\\n
{{alertModalMsg.description}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n
\\r\\n
{{alertCheckInModalMsg.title}}
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Patient
\\r\\n
{{inputModal.firstName + \\\" \\\" + inputModal.lastName}}
\\r\\n
\\r\\n
\\r\\n
Doctor
\\r\\n
{{doctor.UserName}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Token No:
\\r\\n
\\r\\n
{{alertCheckInModalMsg.tokeNo}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{alertCheckInModalMsg.description}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","import { Component, OnInit, TemplateRef, NgZone, Input, ViewChild } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { konsole } from 'src/app/utility/konsole';\r\nimport { CommonService } from 'src/app/common/common.service'\r\nimport { DataService } from 'src/app/data.service'\r\nimport { Commonlib } from 'src/app/common/commonlib'\r\nimport { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { MyBolt } from 'src/app/utility/mybolt';\r\nimport { MyRazor } from 'src/app/utility/razor';\r\nimport { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';\r\nimport { Select2OptionData } from 'ng2-select2';\r\n\r\ndeclare var jquery: any;\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: 'app-fix-appointment',\r\n templateUrl: './fix-appointment.component.html',\r\n styleUrls: ['./fix-appointment.component.css']\r\n})\r\nexport class FixAppointmentComponent implements OnInit {\r\n\r\n\r\n RegistrationFee: number = 200; // \r\n\r\n //master data variable here\r\n @Input() filteredStateList: any;\r\n @Input() filteredCityList: any;\r\n @Input() filteredPinCodeList: any;\r\n\r\n optionsSelect: Select2Options;\r\n\r\n initialDropDownValues = {}\r\n\r\n\r\n salutationsList: any;\r\n genderStatusList: any;\r\n religionList: any;\r\n countryList: any;\r\n stateList: any;\r\n cityList: any;\r\n pinCodeList: any;\r\n\r\n\r\n\r\n message: string;\r\n modalRef: BsModalRef;\r\n progressModalRef: BsModalRef;\r\n successModalRef: BsModalRef;\r\n alertModalRef: BsModalRef;\r\n alertCheckinModalRef: BsModalRef;\r\n forgetUhidRef: BsModalRef;\r\n baseUrl: string;\r\n operatorId: string;\r\n subtenantId: string;\r\n dateObj: any;\r\n doctor: any;\r\n schObj: any;\r\n appotObj: any;\r\n feeObj: any;\r\n\r\n searchInputModal: any;\r\n searchFeedbackModal: any;\r\n inputModal: any;\r\n forgetModal: any;\r\n dob: any;\r\n feedbackModal: any;\r\n modalMsg: any;\r\n countryCheck: any;\r\n mobileMaxLength: string;\r\n HIDPrefix: string;\r\n schDate: string;\r\n schType: number;\r\n zoomUser: string;\r\n zoomUserId: string;\r\n appDuration: string;\r\n zoomAccessToken: string;\r\n meetingId: string;\r\n joinUrl: string;\r\n hostId: string;\r\n startUrl: string;\r\n meetingCreatedOn: string;\r\n meetingPassword: string;\r\n paymentOrderId: string;\r\n paymentTxnId: string;\r\n paymentStatus: string;\r\n paymentSignature: string;\r\n msgBox: any;\r\n modalTemplate: TemplateRef;\r\n alertModalTemplate: TemplateRef;\r\n alertCheckinTemplate: TemplateRef;\r\n\r\n @ViewChild('forgetUhidTemplate') forgetHospitalTemplate: TemplateRef;\r\n alertModalMsg: any;\r\n alertCheckInModalMsg: any;\r\n\r\n constructor(private _router: Router,\r\n private dataService: DataService,\r\n private commonService: CommonService,\r\n private spinnerService: Ng4LoadingSpinnerService,\r\n private toastr: ToastrService,\r\n private modalService: BsModalService,\r\n private ngZone: NgZone) {\r\n\r\n this.baseUrl = DataService.baseUrl;\r\n konsole.log('FixAppointmentComponent base URL ' + this.baseUrl);\r\n\r\n this.optionsSelect = {\r\n placeholder: \"Select\",\r\n width: '100%',\r\n }\r\n\r\n this.schDate = \"\";\r\n this.schType = 0;\r\n this.zoomUser = \"\";\r\n this.zoomUserId = \"\";\r\n this.zoomAccessToken = \"\";\r\n this.appDuration = \"\";\r\n this.meetingId = \"\";\r\n this.hostId = \"\";\r\n this.joinUrl = \"\";\r\n this.startUrl = \"\";\r\n this.meetingCreatedOn = \"\";\r\n this.meetingPassword = \"abcxyz\";\r\n //this.paymentOrderId = \"0\"; //do not initialize it as it has check for order on paybuttonclick\r\n this.paymentStatus = \"0\";\r\n this.paymentTxnId = \"0\";\r\n this.paymentSignature = \"0\";\r\n\r\n this.countryCheck = 1;\r\n this.mobileMaxLength = '10';\r\n this.HIDPrefix = \"WBL\";\r\n\r\n this.forgetModal = {\r\n mobile: \"\",\r\n lastName: \"\",\r\n dob: \"\"\r\n }\r\n\r\n this.initialDropDownValues = {\r\n country: 62,\r\n title: \"\",\r\n gender: \"\",\r\n religion: \"\",\r\n colony: \"\",\r\n pinCode: \"\",\r\n city: \"\",\r\n state: \"\",\r\n }\r\n\r\n\r\n\r\n this.inputModal = {};\r\n this.inputModal[\"username\"] = '';\r\n this.inputModal[\"age\"] = '';\r\n this.inputModal[\"email\"] = '';\r\n this.inputModal[\"mobile\"] = '';\r\n this.inputModal[\"hid\"] = 'SGRH';\r\n this.inputModal[\"genderId\"] = 1;\r\n this.inputModal[\"mrNo\"] = '';\r\n this.inputModal[\"dob\"] = '';\r\n this.inputModal = {\r\n ...this.inputModal,\r\n title: \"\",\r\n uhId: \"SGRH\", // Default value\r\n firstName: \"\",\r\n lastName: \"\",\r\n dob: \"\", // Date of Birth\r\n gender: \"\",\r\n religion: \"\", // Default religion (0 might mean \"not specified\")\r\n fatherName: \"\",\r\n motherName: \"\", // Phone number\r\n address: \"\",\r\n colony: \"\",\r\n pinCode: \"\",\r\n city: \"\",\r\n state: \"\",\r\n country: \"63\", // Default country\r\n regPaid: false // Registration payment status\r\n };\r\n\r\n this.filteredStateList = [];\r\n this.filteredCityList = [];\r\n this.filteredPinCodeList = [];\r\n\r\n this.salutationsList = [];\r\n this.genderStatusList = [];\r\n this.religionList = [];\r\n this.countryList = [];\r\n this.stateList = [];\r\n this.cityList = [];\r\n this.pinCodeList = [];\r\n\r\n this.alertModalMsg = {};\r\n this.alertModalMsg[\"title\"] = \"Title\";\r\n this.alertModalMsg[\"description\"] = \"Alert Description\";\r\n this.alertModalMsg[\"btnTitle\"] = \"Ok\";\r\n this.alertModalMsg[\"btnIndex\"] = \"1\";\r\n this.alertModalMsg[\"showBtn\"] = true;\r\n\r\n this.alertCheckInModalMsg = {};\r\n this.alertCheckInModalMsg[\"title\"] = \"\";\r\n this.alertCheckInModalMsg[\"imgUrl\"] = \"\";\r\n this.alertCheckInModalMsg[\"description\"] = \"\";\r\n this.alertCheckInModalMsg[\"isSuccess\"] = false;\r\n this.alertCheckInModalMsg[\"tokenNo\"] = 0;\r\n\r\n this.searchInputModal = {};\r\n this.searchInputModal[\"hid\"] = '';\r\n this.searchInputModal[\"mobile\"] = '';\r\n\r\n this.searchFeedbackModal = {};\r\n this.searchFeedbackModal[\"hid\"] = 'Hospital number is required';\r\n this.searchFeedbackModal[\"mobile\"] = 'Mobile number is required';\r\n\r\n this.feedbackModal = {};\r\n this.feedbackModal[\"username\"] = 'Name is required';\r\n this.feedbackModal[\"age\"] = 'Age is required';\r\n this.feedbackModal[\"email\"] = 'Please fill valid email address';\r\n this.feedbackModal[\"mobile\"] = 'Mobile number is required';\r\n\r\n this.feedbackModal = {\r\n ...this.inputModal,\r\n title: \"Title is required\",\r\n firstName: \"First Name is required\",\r\n lastName: \"Last Name is required\",\r\n dob: \"Date of Birth is required\", // Date of Birth\r\n gender: \"Gender is required\",\r\n religion: \"Religion is required\", // Default religion (0 might mean \"not specified\")\r\n fatherName: \"Father Name is required\",\r\n motherName: \"Mother Name is requreid\", // Phone number\r\n address: \"Address is required\",\r\n pinCode: \"Pin Code is required\",\r\n city: \"City is required\",\r\n state: \"State is required\",\r\n country: \"Country is required\", // Default country\r\n regPaid: false // Registration payment status\r\n }\r\n\r\n this.modalMsg = {};\r\n this.modalMsg[\"pymtMsg\"] = 'Dear Customer, your payment successfully processed, now we are booking your appointment';\r\n\r\n this.msgBox = {};\r\n this.msgBox[\"MSG01\"] = 'invalid patient';\r\n this.msgBox[\"MSG02\"] = 'No record found';\r\n this.msgBox[\"MSG03\"] = 'Invalid mobile number';\r\n this.msgBox[\"MSG04\"] = 'Your Appointment has been fixed ';\r\n this.msgBox[\"MSG05\"] = 'Something went wrong, please try again ';\r\n this.msgBox[\"MSG06\"] = 'Appointment with this mobile number already exits';\r\n this.msgBox[\"MSG07\"] = 'User not found, please try again';\r\n this.msgBox[\"MSG08\"] = 'Could not retrive access token, please try again';\r\n this.msgBox[\"MSG09\"] = 'Unable to appoint meeting for you, please try again';\r\n this.msgBox[\"MSG10\"] = 'Error posting meeting info, please try again';\r\n this.msgBox[\"MSG11\"] = 'Unable to generate your order, please try again';\r\n this.msgBox[\"MSG12\"] = 'Your payment has been done but unable to proceed further due to weak network, please contact support team';\r\n this.msgBox[\"MSG13\"] = 'Unable to process your payment, please try again';\r\n\r\n this.msgBox[\"MSG14\"] = 'We received your transaction id from Razor Pay , now we are updating your payment confirmation';\r\n this.msgBox[\"MSG15\"] = 'Your payment transaction been updated , we are proceeding with your appointment booking';\r\n this.msgBox[\"MSG16\"] = 'Your appointment been successfully booked , we are proceeding to deliver your meeting key to join video consult at booked time';\r\n this.msgBox[\"MSG17\"] = 'Due to huge network issue unable to book appointment , refer your payment transaction id and call our support team - contact nos given below ';\r\n this.msgBox[\"MSG18\"] = \"At present your payment didn't go thru, whatever amt deducted will be credited back to your account. In case you get successful transaction id later then please contact our support team with transaction id. They'll rebook the appointment without further payment . Thank you.\";\r\n this.msgBox[\"MSG19\"] = \"Bank hasn't authorised your payment yet, still we will process your appointment in case bank rejects we may have to cancel your appointment\";\r\n }\r\n\r\n\r\n\r\n ngAfterViewInit() {\r\n this.setupDatepicker(true);\r\n }\r\n\r\n ngOnInit() {\r\n this.operatorId = this.commonService.getOperatorUserRoleId();\r\n this.subtenantId = this.commonService.getSubtenantId();\r\n this.dateObj = this.commonService.getDate();\r\n this.doctor = this.commonService.getDoctor();\r\n this.schObj = this.commonService.getSchedule();\r\n this.appotObj = this.commonService.getAppointment();\r\n this.appDuration = (this.schObj) ? this.schObj.app_duration : \"\";\r\n this.schDate = (this.dateObj) ? this.dateObj.postDate : '';\r\n\r\n konsole.log('doctor object : ' + JSON.stringify(this.doctor));\r\n\r\n this.setupDatepicker(false); //modal is not used here\r\n\r\n if (this.schObj) {\r\n const schDateObj = Commonlib.dateForJson(this.schObj.date);\r\n var schDateStr = Commonlib.postDateStr(schDateObj);\r\n this.schDate = (schDateStr) ? schDateStr : '';\r\n\r\n var schName = this.schObj.schedule_name;\r\n\r\n var schRes = schName.trim().split(\"-\");\r\n if (schRes.length > 0) {\r\n var typeStr = schRes[0];\r\n if (typeStr.toLowerCase() == 'video consult') {\r\n this.schType = 1;\r\n }\r\n this.zoomUser = schRes[1];\r\n }\r\n\r\n konsole.log('schObj : ' + JSON.stringify(this.schObj));\r\n\r\n }\r\n\r\n if (this.doctor) {\r\n //setting default fee Obj HARDCODE as per Mam's Instruction\r\n if (this.schType == 1) { //Incase of Virtual Appointment\r\n this.feeObj = {\r\n \"turnAroundTime\": 0,\r\n \"nature\": \"Virtual Consultation\",\r\n \"natureId\": 53,\r\n \"fee\": 0,\r\n \"userRoleId\": (this.doctor) ? this.doctor.UserRoleId : ''\r\n }\r\n } else {\r\n this.feeObj = {\r\n \"turnAroundTime\": 0,\r\n \"nature\": \"Direct Consultation\",\r\n \"natureId\": 1,\r\n \"fee\": 0,\r\n \"userRoleId\": (this.doctor) ? this.doctor.UserRoleId : ''\r\n }\r\n }\r\n\r\n if (this.doctor.feeByNature.length > 0) {\r\n\r\n if (this.schType == 0) { // In case of Physical Appointment, default feeObj is 1\r\n var feeObjList = this.doctor.feeByNature.filter(function (obj) {\r\n return obj.natureId == 1;\r\n });\r\n if (feeObjList.length > 0) {\r\n this.feeObj = feeObjList[0];\r\n }\r\n\r\n konsole.log('Physical OPD Fee Obj: ' + JSON.stringify(this.feeObj));\r\n konsole.log('Fee List: ' + JSON.stringify(this.doctor.feeByNature));\r\n }\r\n\r\n if (this.schType == 1) { //In case of Virtual Appointment, set feeObj to 53\r\n var feeObjList = this.doctor.feeByNature.filter(function (obj) {\r\n return obj.natureId == 53;\r\n });\r\n if (feeObjList.length > 0) {\r\n this.feeObj = feeObjList[0];\r\n }\r\n\r\n konsole.log('Virtual OPD Fee Obj: ' + JSON.stringify(this.feeObj));\r\n konsole.log('Fee List: ' + JSON.stringify(this.doctor.feeByNature));\r\n }//end-if virtualOPD\r\n }//end-if feeByNature\r\n\r\n konsole.log('--OPD Fee Obj: ' + JSON.stringify(this.feeObj));\r\n }//end-if doctor\r\n\r\n this.fetchSGRHData(() => this.dataService.getSGRHPatSalutationsService(), \"salutationsList\");\r\n this.fetchSGRHData(() => this.dataService.getPatSGRHGenderStatusService(), \"genderStatusList\");\r\n this.fetchSGRHData(() => this.dataService.getPatSGRHReligionService(), \"religionList\");\r\n this.fetchSGRHData(() => this.dataService.getPatSGRHCountryService(), \"countryList\");\r\n this.fetchSGRHData(() => this.dataService.getPatSGRHStateService(), \"stateList\");\r\n this.fetchSGRHData(() => this.dataService.getPatSGRHCityService(), \"cityList\");\r\n this.fetchSGRHData(() => this.dataService.getPatSGRHPINService(), \"pinCodeList\");\r\n const self = this;\r\n\r\n self.createFilterAddress(62, 'country');\r\n\r\n window.setTimeout(function hello() {\r\n self.addInlineStyle();\r\n }, 500);\r\n\r\n }\r\n\r\n\r\n setupDatepicker(isModal = false) {\r\n let self = this;\r\n\r\n const today = new Date();\r\n\r\n if (isModal == false) {\r\n $(\"#DOBDatePicker\").datepicker({\r\n dateFormat: 'dd-mm-yy',\r\n maxDate: today,\r\n changeMonth: true,\r\n changeYear: true,\r\n yearRange: '-100:+0',\r\n value: \"\",\r\n onSelect: function (dateText, inst) {\r\n var dateObj = Commonlib.dateObjForStr(dateText);\r\n\r\n this.dob = new Date(dateObj.postDate);\r\n // this.inputModal[\"dob\"] = new Date(dateObj.postDate);\r\n }\r\n });\r\n }\r\n else {\r\n $(\"#forgetDOBDatePicker\").datepicker({\r\n dateFormat: 'dd-mm-yy',\r\n maxDate: today,\r\n changeMonth: true,\r\n changeYear: true,\r\n yearRange: '-100:+0',\r\n value: \"\",\r\n onSelect: function (dateText, inst) {\r\n var dateObj = Commonlib.dateObjForStr(dateText);\r\n self.forgetModal.dob = dateObj.postDate\r\n // this.inputModal[\"dob\"] = new Date(dateObj.postDate);\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n fetchSGRHData(serviceMethod: () => any, listName: string): void {\r\n const self = this;\r\n\r\n // Check if required dependencies are available\r\n if (!serviceMethod) return;\r\n\r\n\r\n const data = JSON.parse(localStorage.getItem(listName));\r\n\r\n if (data !== null && data !== \"null\" && data.length > 0) return this[listName] = data;\r\n\r\n // Show the spinner before making the request\r\n self.spinnerService.show();\r\n // Invoke the service method\r\n let objserver = serviceMethod();\r\n objserver.subscribe(\r\n (response) => {\r\n // Hide the spinner after the response\r\n self.spinnerService.hide();\r\n\r\n // Assign the response to the specified list\r\n\r\n if (listName == \"salutationsList\" ||\r\n listName == \"genderStatusList\" ||\r\n listName == \"religionList\" ||\r\n listName == \"countryList\") {\r\n this[listName] = Commonlib.mapAddressForSelect2(response.data, \"\");\r\n } else {\r\n this[listName] = response.data;\r\n }\r\n\r\n if (listName !== \"pinCodeList\") {\r\n localStorage.setItem(listName, JSON.stringify(this[listName]));\r\n }\r\n\r\n },\r\n (error) => {\r\n // Hide spinner and log errors\r\n self.spinnerService.hide();\r\n console.error(`Error fetching ${listName}:`, error);\r\n }\r\n );\r\n }\r\n\r\n handleClick(event, template: TemplateRef, alertTemplate: TemplateRef, alertCheckinTemplate: TemplateRef, forgetUhidTemplate: TemplateRef) {\r\n const targetId = event.target.id;\r\n const self = this;\r\n\r\n switch (targetId) {\r\n case 'fixAppotBackBtnId': {\r\n this._router.navigate(['detail']);\r\n }\r\n break;\r\n case 'fixAppotSubmitBtnId': {\r\n\r\n self.modalTemplate = template;\r\n self.alertModalTemplate = alertTemplate;\r\n self.alertCheckinTemplate = alertCheckinTemplate;\r\n\r\n const forms = document.getElementsByClassName('needs-validation');\r\n const form = (forms.length > 0) ? forms[0] as HTMLFormElement : null;\r\n\r\n if (form) {\r\n form.classList.add('was-validated');\r\n const isFormValidate = self.validationForm(self);\r\n const vaid = form.checkValidity()\r\n\r\n if (form.checkValidity() === true) {\r\n if (self.inputModal.mrNo != '') {\r\n if (self.paymentOrderId) { // In case if cross the payment tab then again click on payment button\r\n konsole.log('payment order Id:' + self.paymentOrderId);\r\n self.confirmPayment();\r\n } else {\r\n self.preAppointmentCheck();\r\n }\r\n } else {\r\n self.registerPatient();\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n case 'fixAppotSearchPatBtnId': {\r\n const searchForm = document.getElementById('searchFormId') as HTMLFormElement;\r\n searchForm.classList.add('was-validated');\r\n if (searchForm.checkValidity() === true) {\r\n this.searchPatient();\r\n }\r\n }\r\n break;\r\n\r\n case 'forgetHospitalId': {\r\n\r\n this.forgetHospitalTemplate = forgetUhidTemplate;\r\n self.forgetUhidRef = this.modalService.show(this.forgetHospitalTemplate, {\r\n class: 'modal-md modal-dialog-centered'\r\n });\r\n\r\n setTimeout(() => {\r\n self.setupDatepicker(true);\r\n }, 0);\r\n }\r\n case 'countryCodeRadioIndia': {\r\n this.countryCheck = 1;\r\n this.mobileMaxLength = '10';\r\n this.inputModal.mobile = '';\r\n }\r\n break;\r\n case 'countryCodeRadioInter': {\r\n this.countryCheck = 2;\r\n this.mobileMaxLength = '20';\r\n this.inputModal.mobile = '';\r\n }\r\n break;\r\n case 'forgetUhidButtonId': {\r\n\r\n const searchForm = document.getElementById('forgetHospitalFormId') as HTMLFormElement;\r\n searchForm.classList.add('was-validated');\r\n if (searchForm.checkValidity() === true) {\r\n this.getForgetPatUhid();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n\r\n\r\n validationForm(self) {\r\n const { title, gender, religion, colony, pinCode, city, state, country } = self.inputModal;\r\n const validationArray = [];\r\n if (title == \"\") self.handleError(\"titleId\", title);\r\n if (gender == \"\") self.handleError(\"genderId\", gender);\r\n if (religion == \"\") self.handleError(\"religionId\", religion);\r\n if (colony == \"\") self.handleError(\"colonyId\", religion);\r\n if (pinCode == \"\") self.handleError(\"pinCodeId\", religion);\r\n if (city == \"\") self.handleError(\"cityId\", religion);\r\n if (state == \"\") self.handleError(\"stateId\", religion);\r\n if (country == \"\") self.handleError(\"countryId\", religion);\r\n }\r\n\r\n\r\n handleError(id, selectValue) {\r\n if (selectValue !== \"\") {\r\n $(`#${id}`).removeClass('is-invalid').addClass('is-valid');\r\n } else {\r\n $(`#${id}`).addClass('is-invalid');\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n handleCloseModal() {\r\n this.forgetUhidRef.hide();\r\n }\r\n\r\n alertButtonClicked(event) {\r\n const targetId = event.target.id;\r\n const self = this;\r\n self.hideAlert();\r\n\r\n switch (targetId) {\r\n case '1': {\r\n\r\n if (this.inputModal.regPaid == false) {\r\n self.postPaymentRegFee();\r\n } else {\r\n self.postPaymentDocFee();\r\n }\r\n\r\n }\r\n break;\r\n case '2': {\r\n self.spinnerService.show();\r\n self.decline();\r\n //self.proceedForAppointment(); //Stop Zoom APIs\r\n }\r\n break;\r\n case '3': {\r\n\r\n let scheduleId = (self.schObj) ? self.schObj.schedule_id : '';\r\n let mrNo = self.inputModal.mrNo;\r\n let docUserRoleId = (self.doctor) ? self.doctor.UserRoleId : '';\r\n let appId = (self.appotObj) ? self.appotObj.AppId : '';\r\n\r\n self.spinnerService.show();\r\n const isInternalScreen: any = this.commonService.getIsInternal();\r\n const subtenantId: any = self.subtenantId;\r\n\r\n if (isInternalScreen == true) {\r\n self.autoCheckinQueue(mrNo, appId, scheduleId, docUserRoleId);\r\n }\r\n\r\n if (this.inputModal.regPaid == false) {\r\n self.notifyFixVirtualAppointment(mrNo, appId, scheduleId, docUserRoleId);\r\n } else {\r\n self.notifyFixAppointment(mrNo, appId, scheduleId, docUserRoleId);\r\n }\r\n\r\n // if (self.schType == 0) {\r\n // } else {\r\n // self.notifyFixVirtualAppointment(mrNo, appId, scheduleId, docUserRoleId);\r\n // }\r\n\r\n //self.postMeetingInfo(); //Stop Zoom APIs\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n select2ChangeEvent(event, eventId): void {\r\n let dataObj = event.data[0];\r\n // var targetObj = { type: 'select2', value: dataObj.id, id: eventId };\r\n // var eventObj = { target: targetObj };\r\n this.handleChangeSelect(dataObj, eventId);\r\n }\r\n\r\n\r\n handleChangeSelect(event, eventId) {\r\n const id = eventId.replace(\"Id\", \"\");\r\n\r\n this.filterAddressData(event, id);\r\n this.addInlineStyle();\r\n\r\n }\r\n\r\n\r\n createFilterAddress(value, id) {\r\n if (value == null) return;\r\n\r\n return this.filterAddressData({ value }, id);\r\n }\r\n\r\n\r\n filterAddressData(event, id) {\r\n if (id == \"country\") {\r\n this.filteredStateList = Commonlib.mapAddressForSelect2(this.stateList.filter((f: any) => f.Country.toLowerCase() === this.countryList[event.value].name.toLowerCase()), 'state');\r\n this.inputModal.state = \"\";\r\n }\r\n else if (id == \"state\") {\r\n \r\n this.filteredCityList = Commonlib.mapAddressForSelect2(this.cityList.filter(f => f.State_Desc.toLowerCase() === this.filteredStateList[event.value].Desc.toLowerCase()), 'city');\r\n this.inputModal.city = \"\";\r\n this.inputModal.pinCode = \"\";\r\n this.inputModal.colony = \"\";\r\n }\r\n else if (id == \"city\") {\r\n \r\n const cityDesc = (this.filteredCityList !== undefined && this.filteredCityList[event.value] !== undefined && this.filteredCityList[event.value].CITY_Desc !== undefined) ? this.filteredCityList[event.value].CITY_Desc : \"\";\r\n this.filteredPinCodeList = Commonlib.mapAddressForSelect2(this.pinCodeList.filter(f => f.city.toLowerCase() === cityDesc.toLowerCase()), 'pinCode');\r\n }\r\n else if (id == \"pinCode\") {\r\n this.inputModal[\"colony\"] = (this.filteredPinCodeList !== undefined && this.filteredPinCodeList[event.value] !== undefined && this.filteredPinCodeList[event.value].cityarea !== undefined) ? this.filteredPinCodeList[event.value].cityarea : \"\";\r\n }\r\n\r\n this.inputModal[id] = event.value;\r\n this.handleError(`${id}Id`, event.value);\r\n\r\n }\r\n\r\n\r\n handleChange(event) {\r\n const targetId = event.target.id;\r\n const self = this;\r\n\r\n konsole.log('target id is ' + targetId);\r\n\r\n switch (targetId) {\r\n case 'feeNatureSelectId': {\r\n /*\r\n const index = event.target.value;\r\n konsole.log('selected index is '+index);\r\n this.feeObj = this.doctor.feeByNature[index];\r\n */\r\n }\r\n break;\r\n case 'userNameId': {\r\n const mobileNo = self.inputModal.mobile;\r\n const userName = event.target.value;\r\n // var hospitalId = self.HIDPrefix + userName.substr(0, 4) + mobileNo.substr(0, 4);\r\n // self.inputModal.hid = hospitalId;\r\n self.inputModal.mrNo = ''; //if any field changed, then user is going to be registered again\r\n konsole.log('userName: ' + userName);\r\n }\r\n break;\r\n case 'mobileNoId': {\r\n const mobileNo = event.target.value;\r\n const userName = self.inputModal.username;\r\n var hospitalId = self.HIDPrefix + userName.substr(0, 4) + mobileNo.substr(0, 4);\r\n konsole.log('mobileNo: ' + mobileNo);\r\n // self.inputModal.hid = hospitalId;\r\n // self.inputModal.mrNo = ''; //if any field changed, then user is going to be registered again\r\n }\r\n break;\r\n case 'ageId':\r\n case 'emailId':\r\n case 'genderId': {\r\n konsole.log('change called for ...');\r\n // self.inputModal.mrNo = ''; //if any field changed, then user is going to be registered again\r\n }\r\n break;\r\n }\r\n }\r\n\r\n\r\n\r\n autoCheckinQueue(mrNo, appId, scheduleId, docUserRoleId) {\r\n const self = this;\r\n const date = Commonlib.currentDateObj().postDate;\r\n\r\n self.spinnerService.show();\r\n let objserver = this.dataService.patientCheckInWithoutPayment(mrNo, docUserRoleId, scheduleId, self.subtenantId, date, appId);\r\n objserver.subscribe(response => {\r\n self.spinnerService.hide();\r\n\r\n if (response && typeof (response) == 'object') {\r\n if (response.ID !== \"\") {\r\n const tokenNo = response.TokenNo;\r\n konsole.log('patient checkin response is ' + JSON.stringify(response));\r\n self.showAlertCheckin(true, tokenNo);\r\n } else {\r\n self.showAlertCheckin(false, 0);\r\n // self.toastr.warning(self.msgBox[\"MSG02\"], 'Error');\r\n }\r\n } else {\r\n self.showCommonAlert();\r\n }\r\n\r\n konsole.log(\"patient response vlaue \" + JSON.stringify(response));\r\n });\r\n\r\n }\r\n\r\n searchPatient() {\r\n const self = this;\r\n const uhid = this.searchInputModal.hid;\r\n // const mobileNo = this.searchInputModal.mobile;\r\n if (uhid.trim().length == 0\r\n // || mobileNo.trim().length == 0\r\n ) return;\r\n\r\n self.spinnerService.show();\r\n let objserver = this.dataService.getMatchPatient(this.subtenantId, uhid, \"\");\r\n objserver.subscribe(response => {\r\n self.spinnerService.hide();\r\n\r\n if (response && typeof (response) == 'object') {\r\n if (response.data.length == 1 && typeof response.data[0] !== 'string') {\r\n const patObj = response.data[0];\r\n konsole.log('patient response is ' + JSON.stringify(patObj));\r\n\r\n const { countryIndex, stateIndex, cityIndex, pincodeIndex, colony } = Commonlib.getAddressFromAddressObj(this.countryList, this.stateList, this.cityList, this.pinCodeList, patObj);\r\n \r\n this.mobileMaxLength = patObj.Mobile.length;\r\n\r\n const searchPatientDetails = {\r\n title: Commonlib.findIndexByValue(this.salutationsList, 'selfId', patObj.Title),\r\n firstName: patObj.FirstName,\r\n lastName: patObj.LastName,\r\n uhId: patObj.Hospital_no,\r\n fatherName: patObj.FatherName,\r\n religion: Commonlib.findIndexByValue(this.religionList, 'selfId', patObj.Religion),\r\n motherName: patObj.MotherName != undefined ? patObj.MotherName : \"\",\r\n email: patObj.Email,\r\n mobile: patObj.Mobile,\r\n address: patObj.Address,\r\n gender: Commonlib.findIndexByValue(this.genderStatusList, 'selfId', patObj.Sex), // Removing extra space from Sex field (M )\r\n country: countryIndex,\r\n state: stateIndex,\r\n city: cityIndex,\r\n pinCode: pincodeIndex,\r\n colony: colony,\r\n dob: Commonlib.dateObjForStr(patObj.DOB).postDate,\r\n regPaid: true,\r\n mrNo: (patObj.Mrno !== 'NULL') ? patObj.Mrno : \"\"\r\n }\r\n\r\n self.createFilterAddress(countryIndex, 'country');\r\n \r\n if (stateIndex !== null && cityIndex !== null) {\r\n self.createFilterAddress(stateIndex, 'state');\r\n }\r\n\r\n if (cityIndex !== null) {\r\n self.createFilterAddress(cityIndex, 'city');\r\n }\r\n\r\n if (pincodeIndex !== null) {\r\n self.createFilterAddress(pincodeIndex, 'pinCode');\r\n }\r\n\r\n self.initialDropDownValues = {\r\n title: searchPatientDetails.title,\r\n gender: searchPatientDetails.gender,\r\n religion: searchPatientDetails.religion,\r\n country: countryIndex !== null ? countryIndex : \"\",\r\n state: stateIndex !== null ? stateIndex : \"\",\r\n city: cityIndex !== null ? cityIndex : \"\",\r\n pinCode: pincodeIndex !== null ? pincodeIndex : \"\",\r\n }\r\n\r\n self.dob = new Date(Commonlib.dateObjForStr(patObj.DOB).postDate)\r\n self.inputModal = searchPatientDetails;\r\n\r\n var $datepicker = $('#DOBDatePicker');\r\n $datepicker.datepicker();\r\n $datepicker.datepicker('setDate', self.dob);\r\n\r\n // self.inputModal[\"username\"] = patObj.patName;\r\n // this.inputModal[\"age\"] = Commonlib.ageForDate(dateOfBirth);\r\n // self.inputModal[\"email\"] = patObj.emailId;\r\n // self.inputModal[\"mobile\"] = (typeof (patObj.mobileNo) == 'string') ? patObj.mobileNo.trim() : '';\r\n // self.inputModal[\"hid\"] = patObj.hospitalNo;\r\n // self.inputModal[\"genderId\"] = patObj.genderId;\r\n // self.inputModal[\"mrNo\"] = patObj.mrNo;\r\n // self.inputModal[\"dob\"] = Commonlib.postDateStr(dateOfBirth);\r\n\r\n } else if (response.data.length > 1) {\r\n self.toastr.error(self.msgBox[\"MSG01\"], 'Error');\r\n this.inputModal = Commonlib.formFields(this.inputModal);\r\n this.initialDropDownValues = Commonlib.initialFormFields();\r\n var $datepicker = $('#DOBDatePicker');\r\n $datepicker.datepicker();\r\n } else {\r\n self.toastr.warning(self.msgBox[\"MSG02\"], 'Error');\r\n self.dob = '';\r\n this.inputModal = Commonlib.formFields(this.inputModal);\r\n this.initialDropDownValues = Commonlib.initialFormFields();\r\n var $datepicker = $('#DOBDatePicker');\r\n $datepicker.datepicker();\r\n $datepicker.datepicker('setDate', '');\r\n }\r\n } else {\r\n self.showCommonAlert();\r\n }\r\n\r\n konsole.log(\"patient response vlaue \" + JSON.stringify(response));\r\n });\r\n }\r\n\r\n\r\n\r\n getForgetPatUhid() {\r\n const self = this;\r\n\r\n const { lastName, mobile, dob } = this.forgetModal;\r\n\r\n self.spinnerService.show();\r\n let objserver = this.dataService.getForgetPatUhid(lastName, mobile, dob);\r\n objserver.subscribe(response => {\r\n self.spinnerService.hide();\r\n\r\n if (response && typeof (response) == 'object') {\r\n if (response.data.length == 1 && typeof response.data[0] !== 'string') {\r\n const { RegistrationNo } = response.data[0];\r\n\r\n konsole.log('patient response is ' + JSON.stringify(RegistrationNo));\r\n this.searchInputModal.hid = RegistrationNo;\r\n this.searchPatient();\r\n this.forgetUhidRef.hide();\r\n } else if (response.data.length > 1) {\r\n self.toastr.error(self.msgBox[\"MSG01\"], 'Error');\r\n this.inputModal = Commonlib.formFields(this.inputModal);\r\n this.initialDropDownValues = Commonlib.initialFormFields();\r\n this.forgetUhidRef.hide();\r\n } else {\r\n self.toastr.warning(self.msgBox[\"MSG02\"], 'Error');\r\n this.inputModal = Commonlib.formFields(this.inputModal);\r\n this.initialDropDownValues = Commonlib.initialFormFields();\r\n this.forgetUhidRef.hide();\r\n }\r\n } else {\r\n self.showCommonAlert();\r\n }\r\n\r\n konsole.log(\"patient response vlaue \" + JSON.stringify(response));\r\n });\r\n }\r\n\r\n registerPatient() {\r\n const self = this;\r\n\r\n if (self.countryCheck == 1 && self.inputModal.mobile.length < 10) {\r\n self.toastr.error(self.msgBox[\"MSG03\"], 'Error');\r\n return;\r\n }\r\n\r\n const { uhId, title, firstName, lastName, gender, religion, fatherName, motherName, address, colony, pinCode, city, state, country } = this.inputModal;\r\n\r\n\r\n let addLine1 = (address !== '') ? address : \"Sir Ganga Ram Hospital\";\r\n let zipCodeId = this.filteredPinCodeList[pinCode].selfId || 110060;\r\n let CityId = this.filteredCityList[city].selfId || 483;\r\n let stateId = this.filteredStateList[state].selfId || 9;\r\n let countryId = this.countryList[country].selfId || 63;\r\n let colonyyName = colony != \"\" ? colony : \"RAJENDER NAGAR\";\r\n\r\n\r\n const name = firstName + \" \" + lastName;\r\n\r\n const dob = Commonlib.postDateStr(this.dob);\r\n\r\n\r\n if (country !== 62) {\r\n addLine1 = \"Sir Ganga Ram Hospital\"\r\n zipCodeId = 110060;\r\n CityId = 483;\r\n stateId = 9;\r\n countryId = 63;\r\n colonyyName = \"RAJENDER NAGAR\";\r\n }\r\n\r\n\r\n\r\n const subtenantId = this.subtenantId;\r\n const userRoleId = (this.doctor) ? this.doctor.UserRoleId : '';\r\n const mobileNo = this.inputModal.mobile;\r\n const emailId = this.inputModal.email;\r\n const dateStr = (this.dateObj) ? this.dateObj.postDate : '';\r\n const genderId = this.genderStatusList[this.inputModal.gender].selfId || \"\";\r\n const hospitalNo = this.inputModal.uhId;\r\n\r\n const salutationId = this.salutationsList[title].selfId || \"\";\r\n const PatReligion = this.religionList[religion].selfId || \"\";\r\n\r\n // const dob = (this.inputModal.dob.trim().length == 0) ? Commonlib.dobForAge(this.inputModal.age) : this.inputModal.dob;\r\n self.inputModal.dob = dob;\r\n\r\n self.spinnerService.show();\r\n let contactObserver = this.dataService.postContactDetails(userRoleId, mobileNo, emailId);\r\n contactObserver.subscribe(ctResponse => {\r\n if (ctResponse && typeof (ctResponse) == 'string') {\r\n const contactId = ctResponse;\r\n konsole.log('contact Id response ' + ctResponse);\r\n\r\n let addressObserver = this.dataService.postAddress(userRoleId, contactId, addLine1, \"\", zipCodeId, colonyyName, CityId, stateId, countryId);\r\n addressObserver.subscribe(adResponse => {\r\n if (adResponse && typeof (adResponse) == 'string') {\r\n const addressId = adResponse;\r\n konsole.log('address Id response ' + addressId);\r\n\r\n let regObserver = this.dataService.postRegisterPatientUser(userRoleId, subtenantId, name, genderId, dob, hospitalNo, addressId, contactId, salutationId, PatReligion, fatherName, motherName)\r\n regObserver.subscribe(regResponse => {\r\n if (regResponse && typeof (regResponse) == 'object') {\r\n const mrList = regResponse.mrList;\r\n const mrNo = mrList.find((mrObj: any) => (mrObj.subtenantId == subtenantId)).mrNo;\r\n konsole.log('register user response ' + regResponse);\r\n self.spinnerService.hide();\r\n\r\n // const mrNo = regResponse;\r\n self.inputModal.mrNo = mrNo;\r\n konsole.log('patDemographics ' + JSON.stringify(self.inputModal));\r\n\r\n if (typeof (self.inputModal.mrNo) == 'string' && self.inputModal.mrNo.length > 0) {\r\n self.preAppointmentCheck();\r\n }\r\n\r\n } else {\r\n self.showCommonAlert();\r\n }\r\n });\r\n } else {\r\n self.showCommonAlert();\r\n }\r\n });\r\n } else {\r\n self.showCommonAlert();\r\n }\r\n });\r\n }\r\n\r\n showAlert(title, message, buttonTitle, buttonIndex, showButton) {\r\n this.alertModalMsg.title = title;\r\n this.alertModalMsg.description = message;\r\n this.alertModalMsg.btnTitle = (buttonTitle) ? buttonTitle : \"Proceed\";\r\n this.alertModalMsg.btnIndex = buttonIndex;\r\n this.alertModalMsg.showBtn = showButton;\r\n this.alertModalRef = this.modalService.show(this.alertModalTemplate, { class: 'modal-sm', backdrop: 'static' });\r\n }\r\n\r\n\r\n\r\n showAlertCheckin(isSuccess: boolean, tokeNo: number) {\r\n\r\n this.alertCheckInModalMsg.imageUrl = (isSuccess === true) ? \"./assets/icons/check.svg\" : \"./assets/icons/cross.png\";\r\n this.alertCheckInModalMsg.title = (isSuccess === true) ? \"Check-In Successfull.\" : \"Check-In unsuccessfull\";\r\n this.alertCheckInModalMsg.description = (isSuccess === true) ? \"You will receive a confirmation message on whatsapp shortly.\" : \"OPD is not start yet. Please go to the counter.\"\r\n this.alertCheckInModalMsg.isSuccess = isSuccess;\r\n this.alertCheckInModalMsg.tokeNo = tokeNo;\r\n\r\n this.alertCheckinModalRef = this.modalService.show(this.alertCheckinTemplate, { class: 'modal-md modal-dialog-centered' });\r\n\r\n setTimeout(() => {\r\n this.alertCheckinModalRef.hide();\r\n const encryptLogo = btoa(JSON.stringify({ sid: this.subtenantId }))\r\n this._router.navigate(['guide'], { queryParams: { enc: encryptLogo } });\r\n }, 10000);\r\n }\r\n\r\n hideAlert() {\r\n if (this.alertModalRef) {\r\n this.alertModalRef.hide();\r\n }\r\n }\r\n\r\n openModal(template: TemplateRef) {\r\n this.modalRef = this.modalService.show(template, { class: 'modal-sm' });\r\n }\r\n\r\n hideModal() {\r\n if (this.modalRef) {\r\n this.modalRef.hide();\r\n }\r\n }\r\n\r\n fixAppointment() {\r\n const self = this;\r\n if (self.subtenantId == \"669\") {\r\n self.decline();\r\n }\r\n else {\r\n self.createPaymentOrder(); //In both case call payment\r\n }\r\n\r\n\r\n }\r\n\r\n setFreeOnError() {\r\n const self = this;\r\n self.blockUnblockSlot(false, function (success, errMsg) {\r\n konsole.log('SetFree -> ' + success);\r\n });\r\n }\r\n\r\n blockUnblockSlot(insertcancel, callback) {\r\n const self = this;\r\n const appId = (self.appotObj) ? self.appotObj.AppId : '';\r\n const scheduleId = (self.schObj) ? self.schObj.schedule_id : '';\r\n const mrNo = self.inputModal.mrNo;\r\n const docUserRoleId = (self.doctor) ? self.doctor.UserRoleId : '';\r\n const appNatureId = (self.feeObj) ? self.feeObj.natureId : '';\r\n\r\n let blockUnblockObserver = this.dataService.pendingPaymentFixOrCancelAppointment(appId, scheduleId, appNatureId, mrNo, docUserRoleId, insertcancel);\r\n blockUnblockObserver.subscribe(response => {\r\n if (response && typeof (response) == 'object' && response[\"status\"] == 1) {\r\n if (callback) {\r\n callback(true, response.msg);\r\n }\r\n } else { //No user Id fetch\r\n if (callback) {\r\n callback(false, response.msg);\r\n }\r\n }\r\n });\r\n }\r\n\r\n fixBlocked(callback) {\r\n const self = this;\r\n const appId = (self.appotObj) ? self.appotObj.AppId : '';\r\n const appNatureId = (self.feeObj) ? self.feeObj.natureId : '';\r\n\r\n let fixBlockedObserver = this.dataService.makePendingPymtAsFixApt(appId, appNatureId);\r\n fixBlockedObserver.subscribe(response => {\r\n if (response && typeof (response) == 'object' && response[\"status\"] == 1) {\r\n if (callback) {\r\n callback(true, \"\");\r\n }\r\n } else { //No user Id fetch\r\n if (callback) {\r\n callback(false, response.msg);\r\n }\r\n }\r\n });\r\n }\r\n\r\n calculateTotalFee() {\r\n const self = this;\r\n let fee = (self.feeObj) ? self.feeObj.fee + self.feeObj.partnerFee + self.feeObj.txnFee : 0;\r\n if (self.inputModal.regPaid == false) {\r\n fee = Number(fee) + Number(self.RegistrationFee);\r\n }\r\n\r\n const amount = fee;\r\n // Commonlib.calculateGatewayCharges(fee);\r\n\r\n return Math.ceil(amount * 100) / 100;\r\n\r\n }\r\n\r\n createPaymentOrder() {\r\n\r\n const self = this;\r\n //after order proceed for confirm payment\r\n var feeAmount: any = self.calculateTotalFee();\r\n\r\n if (feeAmount == '0') {\r\n self.spinnerService.show(); //as fee is zero spinner is not loading\r\n //self.proceedForAppointment(); //Do Not Proceed for appointment as meeting flow has stopped\r\n self.decline();\r\n return;\r\n }\r\n\r\n feeAmount = parseFloat(feeAmount) * 100; //converted to paisa\r\n const amountInPaisa = Math.round(feeAmount * 100) / 100\r\n const appId = (self.appotObj) ? self.appotObj.AppId : '';\r\n const mrNo = self.inputModal.mrNo;\r\n\r\n self.spinnerService.show(); //show spinner\r\n let pymtOrderObserver = this.dataService.createPaymentOrder(amountInPaisa, appId, mrNo);\r\n pymtOrderObserver.subscribe(pymtOrderResponse => {\r\n if (pymtOrderResponse && typeof (pymtOrderResponse) == 'object') {\r\n if (pymtOrderResponse[\"status\"] == 1) {\r\n self.paymentOrderId = pymtOrderResponse.data.Attributes.id;\r\n konsole.log('payment order Id:' + self.paymentOrderId);\r\n //call for confirm payment\r\n //self.spinnerService.hide();\r\n self.confirmPayment();\r\n } else {\r\n self.spinnerService.hide();\r\n self.toastr.warning(self.msgBox[\"MSG11\"], 'Error');\r\n self.setFreeOnError();\r\n }\r\n } else { //No user Id fetch\r\n self.spinnerService.hide();\r\n self.toastr.warning(self.msgBox[\"MSG11\"], 'Error');\r\n self.setFreeOnError();\r\n }\r\n });\r\n }\r\n\r\n\r\n postPaymentRegFee() {\r\n const self = this;\r\n\r\n const subtenantId = self.subtenantId;\r\n const hospitalNo = this.inputModal.uhId;\r\n const appNatureId = '0';\r\n const userRoleId = (self.doctor) ? self.doctor.UserRoleId : '';\r\n const description = \"Registration Fee\";\r\n const paymentMode = \"4\"; //For Doctor Fee in case of razor pay payment\r\n const appId = '0';\r\n const billAmt = this.RegistrationFee;\r\n const mrNo = self.inputModal.mrNo;\r\n const hisBillNo = self.paymentTxnId;\r\n const mobileNo = this.inputModal.mobile;\r\n const scheduleId = '0';\r\n const finalBillAmount = this.RegistrationFee;\r\n const paymentOrderId = self.paymentOrderId;\r\n const paymentSignature = self.paymentSignature;\r\n const status = self.paymentStatus;\r\n const paymentDetails = {};\r\n\r\n let postPaymentObserver = this.dataService.postPaymentRegisterFee(subtenantId, hospitalNo, appNatureId, userRoleId, description, paymentMode,\r\n appId, billAmt, mrNo, hisBillNo, mobileNo, scheduleId, finalBillAmount, paymentOrderId, paymentSignature, status, paymentDetails);\r\n\r\n postPaymentObserver.subscribe(postPymtResponse => {\r\n if (postPymtResponse && typeof (postPymtResponse) == 'object' && postPymtResponse.statusId == 1) {\r\n konsole.log('postPayment response:' + JSON.stringify(postPymtResponse));\r\n self.postPaymentDocFee();\r\n //self.proceedForAppointment();\r\n } else { //No user Id fetch\r\n self.spinnerService.hide();\r\n self.toastr.warning(self.msgBox[\"MSG12\"], 'Error');\r\n self.setFreeOnError();\r\n }\r\n });\r\n }\r\n\r\n postPaymentDocFee() {\r\n const self = this;\r\n\r\n const subtenantId = self.subtenantId;\r\n const hospitalNo = this.inputModal.hid;\r\n const appNatureId = (self.feeObj) ? self.feeObj.natureId : '';\r\n const userRoleId = (self.doctor) ? self.doctor.UserRoleId : '';\r\n const description = (self.schType == 1) ? \"Virtual Consultation Fee\" : \"Consultation Fee\";\r\n const paymentMode = \"4\"; //For Doctor Fee in case of razor pay payment\r\n const appId = (self.appotObj) ? self.appotObj.AppId : '';\r\n const billAmt = (self.feeObj) ? self.feeObj.fee + self.feeObj.partnerFee + self.feeObj.txnFee : '0';\r\n const mrNo = self.inputModal.mrNo;\r\n const hisBillNo = self.paymentTxnId;\r\n const mobileNo = this.inputModal.mobile;\r\n const scheduleId = (self.schObj) ? self.schObj.schedule_id : '';\r\n const finalBillAmount = (self.feeObj) ? self.feeObj.fee + self.feeObj.partnerFee + self.feeObj.txnFee : '0';\r\n const paymentOrderId = self.paymentOrderId;\r\n const paymentSignature = self.paymentSignature;\r\n const status = self.paymentStatus;\r\n\r\n\r\n const paymentDetails = {\r\n \"DocFee\": (self.feeObj) ? self.feeObj.fee : \"0\",\r\n \"PartnerFee\": (self.feeObj) ? self.feeObj.partnerFee : \"0\",\r\n \"TxnFee\": (self.feeObj) ? self.feeObj.txnFee : \"0\",\r\n }\r\n\r\n let postPaymentObserver = this.dataService.postPaymentDocFee(subtenantId, hospitalNo, appNatureId, userRoleId, description, paymentMode,\r\n appId, billAmt, mrNo, hisBillNo, mobileNo, scheduleId, finalBillAmount, paymentOrderId, paymentSignature, status, paymentDetails);\r\n\r\n postPaymentObserver.subscribe(postPymtResponse => {\r\n if (postPymtResponse && typeof (postPymtResponse) == 'object' && postPymtResponse.statusId == 1) {\r\n konsole.log('postPayment response:' + JSON.stringify(postPymtResponse));\r\n self.showAlert('Payment Success', self.msgBox[\"MSG15\"], \"Click Proceed to Next\", 2, 1);\r\n //self.proceedForAppointment();\r\n } else { //No user Id fetch\r\n self.spinnerService.hide();\r\n self.toastr.warning(self.msgBox[\"MSG12\"], 'Error');\r\n self.setFreeOnError();\r\n }\r\n });\r\n }\r\n\r\n proceedForAppointment() {\r\n const self = this;\r\n\r\n if (self.schType == 0) {\r\n self.decline();\r\n } else {\r\n\r\n //get zoomUser Id\r\n //get accesstoken\r\n //create meeting\r\n //fix appointment\r\n //post appointment meeting info\r\n //notify video consult msg\r\n\r\n konsole.log('sch type ' + self.schType);\r\n konsole.log('zoom user ' + self.zoomUser);\r\n konsole.log('app duration ' + self.appDuration);\r\n\r\n let zoomIdObserver = this.dataService.getZoomUserDetails(self.zoomUser);\r\n zoomIdObserver.subscribe(zoomDetailResponse => {\r\n if (zoomDetailResponse && typeof (zoomDetailResponse) == 'object' && zoomDetailResponse.status == '1') {\r\n self.zoomUserId = zoomDetailResponse.data.UserId;\r\n konsole.log('zoom user Id:' + self.zoomUserId);\r\n //call for accesstoken\r\n self.getAccessToken();\r\n } else { //No user Id fetch\r\n self.spinnerService.hide();\r\n //self.toastr.warning(self.msgBox[\"MSG07\"], 'Error');\r\n //self.toastr.warning(self.msgBox[\"MSG12\"], 'Error');\r\n self.showAlert('UserDetail Error', self.msgBox[\"MSG17\"], \"Ok\", 0, 1);\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n getAccessToken() {\r\n var self = this;\r\n let apiKey = self.commonService.getZoomApiKey();\r\n let appSecret = self.commonService.getZoomAppSecret();\r\n let accessTokenObserver = self.dataService.getZoomAccessToken(apiKey, appSecret);\r\n accessTokenObserver.subscribe(tokenResponse => {\r\n if (typeof (tokenResponse) == 'object' && tokenResponse[\"access_token\"]) {\r\n self.zoomAccessToken = tokenResponse[\"access_token\"];\r\n konsole.log('access token:--- ' + self.zoomAccessToken);\r\n this.commonService.zoomTokenChange(self.zoomAccessToken);\r\n //call for create meeting\r\n self.createMeeting();\r\n } else {\r\n self.spinnerService.hide();\r\n //self.toastr.warning(self.msgBox[\"MSG08\"], 'Error');\r\n //self.toastr.warning(self.msgBox[\"MSG12\"], 'Error');\r\n self.showAlert('Token Error', self.msgBox[\"MSG17\"], \"Ok\", 0, 1);\r\n }\r\n });\r\n }\r\n\r\n createMeeting() {\r\n var self = this;\r\n let zoomUserId = self.zoomUserId;\r\n let topic = \"Patient Appointment\";\r\n let meetingAgenda = \"Doctor Consult\";\r\n let startDate = self.schDate;\r\n let startTime = self.appotObj.FromTime;\r\n let meetingDuration = self.appDuration;\r\n\r\n let createMeetingObserver = self.dataService.createMeeting(zoomUserId, topic, meetingAgenda, startDate, startTime, meetingDuration);\r\n createMeetingObserver.subscribe(meetingResponse => {\r\n self.spinnerService.hide(); //because decline has own spinner\r\n\r\n if (typeof (meetingResponse) == 'object' && meetingResponse[\"id\"]) {\r\n //Call Fix Appointment\r\n self.meetingId = meetingResponse[\"id\"];\r\n self.hostId = meetingResponse[\"host_id\"];\r\n self.joinUrl = meetingResponse[\"join_url\"];\r\n self.startUrl = meetingResponse[\"start_url\"];\r\n self.meetingCreatedOn = meetingResponse[\"created_at\"];\r\n self.meetingPassword = meetingResponse[\"password\"];\r\n //In case of No Payment\r\n self.decline();\r\n } else {\r\n //self.toastr.warning(self.msgBox[\"MSG09\"], 'Error');\r\n //self.toastr.warning(self.msgBox[\"MSG12\"], 'Error');\r\n self.showAlert('Meeting Error', self.msgBox[\"MSG17\"], \"Ok\", 0, 1);\r\n }\r\n });\r\n }\r\n\r\n postMeetingInfo() {\r\n const self = this;\r\n let scheduleId = (self.schObj) ? self.schObj.schedule_id : '';\r\n let meetingId = self.meetingId;\r\n let hostId = self.hostId;\r\n let joinUrl = self.joinUrl;\r\n let startUrl = self.startUrl;\r\n let createdAt = self.meetingCreatedOn;\r\n let password = self.meetingPassword;\r\n\r\n let mrNo = self.inputModal.mrNo;\r\n let docUserRoleId = (self.doctor) ? self.doctor.UserRoleId : '';\r\n let appId = (self.appotObj) ? self.appotObj.AppId : '';\r\n let status = \"1\";\r\n let pymtStatus = self.paymentStatus;\r\n let userName = self.inputModal.username;\r\n\r\n let postMeetingObserver = this.dataService.postMeetingDetails(mrNo, docUserRoleId, appId, status, pymtStatus, meetingId, hostId, password, startUrl, createdAt, joinUrl, userName);\r\n postMeetingObserver.subscribe(postMeetingResponse => {\r\n if (postMeetingResponse && typeof (postMeetingResponse) == 'object' && postMeetingResponse[\"status\"] == 1) {\r\n //call for notify virtual appointment\r\n self.notifyFixVirtualAppointment(mrNo, appId, scheduleId, docUserRoleId);\r\n } else {\r\n self.spinnerService.hide();\r\n //self.toastr.warning(self.msgBox[\"MSG10\"], 'Error');\r\n //self.toastr.warning(self.msgBox[\"MSG12\"], 'Error');\r\n self.showAlert('Post Meeting Error', self.msgBox[\"MSG17\"], \"Ok\", 0, 1);\r\n }\r\n });\r\n }\r\n\r\n notifyFixAppointment(mrNo, appId, scheduleId, userRoleId) {\r\n const self = this;\r\n let notifyObserver = this.dataService.notifyFixAppointment(mrNo, appId);\r\n\r\n self.spinnerService.show();\r\n notifyObserver.subscribe(notifResponse => {\r\n self.spinnerService.hide();\r\n var delivered = '0';\r\n if (notifResponse && typeof (notifResponse) == 'object' && notifResponse.status == '1') {\r\n delivered = '1';\r\n }\r\n\r\n self.commonService.cnfMsgChange(notifResponse[\"data\"][\"aptsms\"]);\r\n\r\n //self.notifyCredentials(userRoleId, mrNo, appId, scheduleId, delivered);\r\n //self.postActivity(userRoleId, mrNo, appId, scheduleId, delivered);\r\n\r\n self.commonService.crdMsgChange(notifResponse[\"data\"][\"credsms\"]);\r\n self.commonService.crdObjChange({ ...notifResponse, hospitalid: self.inputModal.hid });\r\n self.commonService.schTypeChange(self.schType);\r\n self.notifyFixVirtualToDoctor(mrNo, appId, scheduleId, userRoleId);\r\n\r\n });\r\n }\r\n\r\n notifyFixVirtualAppointment(mrNo, appId, scheduleId, userRoleId) {\r\n let self = this;\r\n let notifObserver = this.dataService.notifyFixAppointmentForRegistraion(mrNo, appId);\r\n notifObserver.subscribe(notifResponse => {\r\n var delivered = '0';\r\n if (notifResponse && typeof (notifResponse) == 'object' && notifResponse.status == '1') {\r\n delivered = '1';\r\n }\r\n\r\n self.commonService.cnfMsgChange(notifResponse[\"data\"][\"aptsms\"]);\r\n self.commonService.cnfMeetingIdChange(self.meetingId);\r\n //self.notifyCredentials(userRoleId, mrNo, appId, scheduleId, delivered);\r\n\r\n self.commonService.crdMsgChange(notifResponse[\"data\"][\"credsms\"]);\r\n self.commonService.crdObjChange({ ...notifResponse, hospitalid: self.inputModal.hid });\r\n self.commonService.schTypeChange(self.schType);\r\n\r\n self.notifyFixVirtualToDoctor(mrNo, appId, scheduleId, userRoleId);\r\n });\r\n }\r\n\r\n /*\r\n notifyCredentials(userRoleId, mrNo, appId, scheduleId, delivered) {\r\n let self = this;\r\n let subtenantId = self.subtenantId;\r\n let hospitalNo = self.inputModal.hid;\r\n let mobileNo = self.inputModal.mobile;\r\n mobileNo = mobileNo.trim();\r\n\r\n let credentialObserver = this.dataService.sendRequestCredential(subtenantId, hospitalNo, mobileNo);\r\n credentialObserver.subscribe(credentialResponse => {\r\n konsole.log('credential response: '+JSON.stringify(credentialResponse));\r\n self.commonService.crdMsgChange(credentialResponse[\"sms\"]);\r\n self.commonService.crdObjChange(credentialResponse);\r\n self.commonService.schTypeChange(self.schType);\r\n self.notifyFixVirtualToDoctor(mrNo, appId, scheduleId, userRoleId);\r\n });\r\n }\r\n */\r\n\r\n notifyFixVirtualToDoctor(mrNo, appId, scheduleId, userRoleId) {\r\n let self = this;\r\n let notifObserver = this.dataService.postAptSmsToDoctor(mrNo, appId, userRoleId);\r\n self.spinnerService.show();\r\n notifObserver.subscribe(notifResponse => {\r\n self.spinnerService.hide();\r\n var delivered = '0';\r\n if (notifResponse && typeof (notifResponse) == 'object' && notifResponse.statusId == '1') {\r\n delivered = '1';\r\n }\r\n\r\n self.postActivity(userRoleId, mrNo, appId, scheduleId, delivered);\r\n });\r\n }\r\n\r\n preAppointmentCheck() {\r\n const self = this;\r\n const scheduleId = (self.schObj) ? self.schObj.schedule_id : '';\r\n const dateStr = (this.dateObj) ? this.dateObj.postDate : '';\r\n const mobileNo = this.inputModal.mobile;\r\n\r\n let aptObserver = this.dataService.getAppointmentByMobile(scheduleId, dateStr, mobileNo);\r\n aptObserver.subscribe(aptResponse => {\r\n if (aptResponse && typeof (aptResponse) == 'object' && aptResponse.status == '1') {\r\n self.spinnerService.hide();\r\n self.toastr.warning(self.msgBox[\"MSG06\"], 'Error');\r\n\r\n } else {\r\n\r\n self.blockUnblockSlot(true, function (success, errMsg) {\r\n if (success) {\r\n self.postPendingPaymentActivity(function () {\r\n self.fixAppointment();\r\n });\r\n } else {\r\n self.spinnerService.hide();\r\n self.toastr.warning(self.msgBox[\"MSG05\"], 'Error');\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n postPendingPaymentActivity(callback) {\r\n\r\n const self = this;\r\n const remarks = 'Online Appointment';\r\n const others = '';\r\n const buildVersion = self.commonService.getBuildVersion();\r\n const transactionId = '25';\r\n const subTenantId = self.subtenantId;\r\n const operatorId = self.operatorId;\r\n\r\n const userRoleId = (self.doctor) ? self.doctor.UserRoleId : '';\r\n const mrNo = self.inputModal.mrNo;\r\n const appId = (self.appotObj) ? self.appotObj.AppId : '';\r\n const scheduleId = (self.schObj) ? self.schObj.schedule_id : '';\r\n const delivered = '0';\r\n\r\n let activityObserver = this.dataService.postActivityTracker(operatorId, subTenantId, mrNo, userRoleId, transactionId, scheduleId, appId, remarks, others, buildVersion, delivered);\r\n activityObserver.subscribe(actResponse => {\r\n if (callback) {\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n postActivity(userRoleId, mrNo, appId, scheduleId, delivered) {\r\n const self = this;\r\n\r\n const remarks = 'Online Appointment';\r\n const others = '';\r\n const buildVersion = self.commonService.getBuildVersion();\r\n const transactionId = '1';\r\n const subTenantId = self.subtenantId;\r\n const operatorId = self.operatorId;\r\n self.spinnerService.show();\r\n let activityObserver = this.dataService.postActivityTracker(operatorId, subTenantId, mrNo, userRoleId, transactionId, scheduleId, appId, remarks, others, buildVersion, delivered);\r\n activityObserver.subscribe(actResponse => {\r\n self.spinnerService.hide();\r\n self.toastr.success(self.msgBox[\"MSG04\"], 'Success');\r\n\r\n const isInternalScreen: any = this.commonService.getIsInternal();\r\n if (isInternalScreen == false) {\r\n setTimeout(function () {\r\n self._router.navigate(['confirm']);\r\n }, 1000);\r\n }\r\n });\r\n }\r\n\r\n showCommonAlert() {\r\n const self = this;\r\n self.spinnerService.hide();\r\n self.toastr.error(self.msgBox[\"MSG05\"], 'Error');\r\n }\r\n\r\n // redirectToRoot() {\r\n // this._router.navigate(['index']);\r\n // }\r\n\r\n numberOnly(event): boolean {\r\n if (this.countryCheck == 2) {\r\n return true;\r\n }\r\n\r\n const charCode = (event.which) ? event.which : event.keyCode;\r\n if (charCode > 31 && (charCode < 48 || charCode > 57)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n appointmentTime() {\r\n const fromTimeTlv = Commonlib.twelveHrTime(this.appotObj.FromTime);\r\n const toTimeTlv = Commonlib.twelveHrTime(this.appotObj.ToTime);\r\n const slotTiming = fromTimeTlv;\r\n return slotTiming;\r\n }\r\n\r\n confirm(): void {\r\n this.createPaymentOrder();\r\n this.hideModal();\r\n }\r\n\r\n decline(): void {\r\n /*-- declined for payment so appointment is fixing without payment --*/\r\n const self = this;\r\n var appNatureId = (self.feeObj) ? self.feeObj.natureId : '';\r\n const appId = (self.appotObj) ? self.appotObj.AppId : '';\r\n const scheduleId = (self.schObj) ? self.schObj.schedule_id : '';\r\n const mrNo = self.inputModal.mrNo;\r\n const userRoleId = (self.doctor) ? self.doctor.UserRoleId : '';\r\n const orderId = '0';//(self.paymentOrderId)?self.paymentOrderId:'0'; It does not take actual order id\r\n const orderTxnId = '0';//(self.paymentTxnId)?self.paymentTxnId:'0';\r\n\r\n if (self.schType == 1) {\r\n appNatureId = 53;\r\n }\r\n\r\n self.spinnerService.show();\r\n self.fixBlocked(function (success, errMsg) {\r\n if (success) {\r\n let msg = \"\";\r\n if (self.schType == 0) {\r\n msg = self.msgBox[\"MSG04\"];\r\n } else {\r\n msg = self.msgBox[\"MSG16\"];\r\n }\r\n\r\n self.spinnerService.hide();\r\n self.showAlert('Appointment Success', msg, \"Click Proceed to Next\", 3, 1);\r\n } else {\r\n self.spinnerService.hide();\r\n if (self.schType == 1) {\r\n self.showAlert('Appointment Error', self.msgBox[\"MSG17\"], \"Ok\", 0, 1);\r\n } else {\r\n self.toastr.error(errMsg, 'Error');\r\n }\r\n self.setFreeOnError();\r\n }\r\n });\r\n\r\n /*\r\n self.spinnerService.show();\r\n let aptObserver = this.dataService.fixAppointment(userRoleId, mrNo, scheduleId, appId, appNatureId, orderId, orderTxnId);\r\n aptObserver.subscribe(aptResponse => {\r\n konsole.log('appointment response '+JSON.stringify(aptResponse));\r\n if(aptResponse && typeof(aptResponse) == 'object') {\r\n if(aptResponse.status == 1) {\r\n\r\n let msg = \"\";\r\n if (self.schType == 0) {\r\n msg = self.msgBox[\"MSG04\"];\r\n }else {\r\n msg = self.msgBox[\"MSG16\"];\r\n }\r\n\r\n self.spinnerService.hide();\r\n self.showAlert('Appointment Success', msg, \"Proceed\", 3, 1);\r\n\r\n }else {\r\n self.spinnerService.hide();\r\n if(self.schType == 1) {\r\n self.showAlert('Appointment Error', self.msgBox[\"MSG17\"], \"Ok\", 0, 1);\r\n }else {\r\n self.toastr.error(aptResponse.msg, 'Error');\r\n }\r\n }\r\n }else {\r\n if(self.schType == 1) {\r\n self.showAlert('Appointment Error', self.msgBox[\"MSG17\"], \"Ok\", 0, 1);\r\n }else {\r\n self.showCommonAlert();\r\n }\r\n }\r\n });\r\n */\r\n\r\n self.hideModal();\r\n }\r\n\r\n confirmPayment() {\r\n const self = this;\r\n const isLive = self.commonService.isLive();\r\n\r\n let visitNature = (self.feeObj) ? self.feeObj.nature : 'Consultation';\r\n if (self.schType == 1) {\r\n visitNature = \"Video Consultation\";\r\n }\r\n let feeAmount = (self.feeObj) ? self.feeObj.fee + self.feeObj.partnerFee + self.feeObj.txnFee : '0';\r\n feeAmount = parseFloat(feeAmount) * 100; //converted to paisa\r\n\r\n konsole.log('fee amount is: ' + feeAmount);\r\n\r\n const orderId = self.paymentOrderId;\r\n const patMobileNo = self.inputModal.mobile;\r\n const patEmailId = self.inputModal.email;\r\n const patName = self.inputModal.username;\r\n\r\n konsole.log('fee Obj ' + JSON.stringify(self.feeObj));\r\n\r\n var options = {\r\n \"key\": (isLive) ?\r\n \"rzp_live_rlill5v30H0ZF0\"\r\n // \"rzp_live_rYtiuEhrthIWvs\"\r\n // \"rzp_live_5FCVrPxqD2LSvf\" \r\n :\r\n // \"rzp_test_pyMfp9TOUzuH2y\"\r\n 'rzp_test_QPc3hGsFRIwMsG', // SGRH TEST KEY\r\n \"amount\": feeAmount, // Amount is in currency subunits. Default currency is INR. Hence, 200 refers to 200 paise\r\n \"currency\": \"INR\",\r\n // \"name\": \"mCURA Mobile Health\",\r\n // \"description\":visitNature,\r\n // \"image\": \"https://www.mcura.com/images/logo.png\",\r\n \"description\": visitNature,\r\n \"name\": \"Sir Ganga Ram Hospital\", // Title\r\n \"image\": \"https://main-test.mcura.com/assets/img/SGRH-logo_with-tagline.svg\",\r\n \"order_id\": orderId, //This is a sample Order ID. Pass the `id` obtained in the response of Step 1\r\n \"handler\": (response) => {\r\n konsole.log(\"razorpay response show\" + JSON.stringify(response));\r\n\r\n if (response.razorpay_payment_id) {\r\n self.paymentTxnId = response.razorpay_payment_id;\r\n self.paymentStatus = \"1\";\r\n self.paymentSignature = response.razorpay_signature;\r\n konsole.log(response.razorpay_payment_id);\r\n konsole.log(response.razorpay_order_id);\r\n konsole.log(response.razorpay_signature);\r\n\r\n //ngZone used to run angular zone\r\n this.ngZone.run(() => {\r\n self.getPaymentStatus(response.razorpay_payment_id, function (pymtStatus, pymtMsg) {\r\n\r\n switch (pymtStatus) {\r\n case 1: { //captured\r\n self.showAlert('Transaction Success', self.msgBox[\"MSG14\"], \"Click Proceed to Next\", 1, 1);\r\n }\r\n break;\r\n case 2: { //Authorized\r\n //self.sendPaymentLink();\r\n self.showAlert('Transaction Authorized', self.msgBox[\"MSG19\"], \"Click Proceed to Next\", 1, 1);\r\n }\r\n break;\r\n case 3://refund (doesn't seems to occur here)\r\n break;\r\n case 4: { //Failed\r\n self.showAlert('Transaction Failure', self.msgBox[\"MSG18\"], \"Ok\", 0, 1);\r\n self.setFreeOnError();\r\n }\r\n break;\r\n case 5: { //Created\r\n //self.sendPaymentLink();\r\n self.showAlert('Transaction Created', self.msgBox[\"MSG18\"], \"Ok\", 0, 1);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n });\r\n } else {\r\n //self.toastr.warning(self.msgBox[\"MSG13\"], 'Error');\r\n self.showAlert('Transaction Failure', self.msgBox[\"MSG18\"], \"Ok\", 0, 1);\r\n self.setFreeOnError();\r\n }\r\n },\r\n \"prefill\": {\r\n \"name\": patName,\r\n \"email\": patEmailId,\r\n \"contact\": patMobileNo\r\n },\r\n \"notes\": {\r\n \"address\": \"Razorpay Corporate Office\"\r\n },\r\n \"theme\": {\r\n \"color\": \"var(--theme-color)\"\r\n }\r\n };\r\n\r\n self.spinnerService.hide();\r\n MyRazor.launch(options);\r\n }\r\n\r\n getPaymentStatus(paymentTxnId, callback) {\r\n const self = this;\r\n let pymtStatusObserver = this.dataService.getPaymentInfo(paymentTxnId);\r\n pymtStatusObserver.subscribe(pymtResponse => {\r\n if (callback) {\r\n if (pymtResponse && typeof (pymtResponse) == 'object') {\r\n callback(pymtResponse.status, \"Coudn't get payment status\");\r\n } else {\r\n callback(0, \"Coudn't get payment status\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n sendPaymentLink() {\r\n const self = this;\r\n var appNatureId = (self.feeObj) ? self.feeObj.natureId : '';\r\n const appId = (self.appotObj) ? self.appotObj.AppId : '';\r\n const mrNo = self.inputModal.mrNo;\r\n const deptId = self.doctor.deptId;\r\n\r\n let pymtLinkObserver = this.dataService.sendPaymentLink(appId, mrNo, deptId, appNatureId);\r\n pymtLinkObserver.subscribe(linkResponse => {\r\n konsole.log('SendPaymentLink Response ' + JSON.stringify(linkResponse));\r\n });\r\n }\r\n\r\n addInlineStyle() {\r\n var sections: any = document.getElementsByClassName(\"select2-selection--single\");\r\n var renderSections: any = document.getElementsByClassName(\"select2-selection__rendered\");\r\n var arrowSections: any = document.getElementsByClassName(\"select2-selection__arrow\");\r\n\r\n if (sections.length > 0) {\r\n for (let element of sections) {\r\n if (!element.classList.contains('inline-custom-css') && element.classList.contains('select2-selection')) {\r\n element.classList.add('inline-custom-css');\r\n element.setAttribute(\"style\", \"border-radius:0px;border:none;height:36px;background-color:#fff0;\");\r\n }\r\n };\r\n }\r\n\r\n if (renderSections.length > 0) {\r\n for (let element of renderSections) {\r\n if (!element.classList.contains('inline-custom-css')) {\r\n element.classList.add('inline-custom-css');\r\n element.setAttribute(\"style\", \"line-height:36px;\");\r\n }\r\n };\r\n }\r\n\r\n if (arrowSections.length > 0) {\r\n for (let element of arrowSections) {\r\n if (!element.classList.contains('inline-custom-css')) {\r\n element.classList.add('inline-custom-css');\r\n element.setAttribute(\"style\", \"top:5px;\");\r\n }\r\n }\r\n }\r\n }\r\n\r\n smallScreen() {\r\n return Commonlib.isWindowWidthForSmallDevice()\r\n }\r\n\r\n\r\n}\r\n","module.exports = \"footer{\\r\\n position: fixed;\\r\\n bottom: 0;\\r\\n width: 100%;\\r\\n background-color: #f2f2f2;\\r\\n padding: 10px 0px;\\r\\n border-top: 1px #ddd solid;\\r\\n z-index: 1;\\r\\n}\\r\\n\\r\\n.poweredby{\\r\\n text-align: center;\\r\\n font-size: 13px;\\r\\n}\\r\\n\\r\\n.poweredby img{\\r\\n max-width: 170px;\\r\\n}\\r\\n\\r\\n.footer-link {\\r\\n font-size: 17px;\\r\\n color: #454545;\\r\\n padding: 15px 0px;\\r\\n}\\r\\n\\r\\n.footer-link a {\\r\\n text-decoration: none;\\r\\n color: #454545;\\r\\n}\\r\\n\\r\\n@media (max-width:767px){\\r\\n footer {\\r\\n position: relative !important;\\r\\n }\\r\\n .footer-link {\\r\\n text-align: center;\\r\\n }\\r\\n}\\r\\n\"","module.exports = \"\"","import { Component, OnInit } from '@angular/core';\r\nimport { CommonService } from '../common/common.service';\r\n\r\n@Component({\r\n selector: 'app-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.css']\r\n})\r\nexport class FooterComponent implements OnInit {\r\n subtenantId: any;\r\n constructor(\r\n private commonService: CommonService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.commonService.didSubtenantChange.subscribe((subtenantId: any) => {\r\n this.subtenantId = this.commonService.getSubtenantId();\r\n })\r\n }\r\n \r\n}\r\n","module.exports = \"\"","module.exports = \"\\n \\n Welcome
To
\\n
\\n \\n \\n \\n
\\n

\\n
\\n \\n
\\n

\\n
\\n \\n\\n\"","import { Component, OnInit } from '@angular/core';\nimport { konsole } from '../utility/konsole';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { DataService } from '../data.service';\nimport { CommonService } from '../common/common.service';\nimport { Commonlib } from '../common/commonlib';\n\n@Component({\n selector: 'app-guide',\n templateUrl: './guide.component.html',\n styleUrls: ['./guide.component.css']\n})\nexport class GuideComponent implements OnInit {\n\n subtenantId = null;\n imageUrl = \"\";\n constructor(\n private commonService: CommonService,\n private _router: Router,\n private dataService: DataService,\n private _activeRoute: ActivatedRoute) { }\n\n ngOnInit() {\n \n const paramObj = this._activeRoute.snapshot.queryParams\n sessionStorage.clear();\n\n if (Object.keys(paramObj).length == 0) return;\n\n const params = JSON.parse(atob(paramObj.enc));\n const _subtenantId = this.commonService.getSubtenantId();\n \n if (_subtenantId === undefined && params.hasOwnProperty('sid')) {\n this.commonService.setSubtenant(params[\"sid\"])\n }\n else if (_subtenantId !== undefined && params.hasOwnProperty(\"sid\") && (_subtenantId !== params[\"sid\"])) {\n this.commonService.setSubtenant(params[\"sid\"])\n } else if (_subtenantId !== undefined && _subtenantId !== null) {\n this.commonService.setSubtenant(_subtenantId);\n }\n this.commonService.setIsInternal(true);\n this.subtenantId = this.commonService.getSubtenantId();\n this.fetchLogo();\n Commonlib.setBgColorDynamically(this.subtenantId);\n }\n\n\n\n fetchLogo() {\n let objserver = this.dataService.fetchSubtenantLogo(0, this.subtenantId);\n objserver.subscribe(response => {\n this.imageUrl = response.webLogo;\n });\n\n }\n\n handleClick(event: any) {\n const self = this;\n\n switch (event.target.id) {\n case \"fixedAppointmentId\": {\n self._router.navigate(['index'], { queryParams: { sid: this.subtenantId } });\n }\n break;\n case \"nonFixedAppointmentId\": {\n const encryptLogo = btoa(JSON.stringify({ sid: this.subtenantId, logo: this.imageUrl }))\n self._router.navigate(['checkin'], { queryParams: { enc: encryptLogo } });\n }\n break;\n default:\n konsole.log(\"no event id match\");\n }\n\n }\n\n}\n","module.exports = \".appformtopOuter {\\r\\n\\tpadding-top:20px;\\r\\n}\\r\\n.appformtopOuter .nav-tabs .nav-link.active{\\r\\n\\tbackground-color: var(--theme-color);\\r\\n\\tcolor:#ffffff;\\r\\n}\\r\\n.appformtopOuter .nav-tabs{\\r\\n\\tpadding-bottom: 15px;\\r\\n}\\r\\n.appformtopOuter .nav-tabs .nav-link{\\r\\n\\tbackground-color: #ffffff;\\r\\n}\\r\\n.appformtopOuter .nav-tabs .nav-link {\\r\\n border: 1px solid var(--theme-color);\\r\\n\\t\\tcolor:var(--theme-color);\\r\\n}\\r\\n.appformtopOuter .nav-tabs .nav-link.nav-department{\\r\\n\\tborder-radius: 3px 0px 0px 3px;\\r\\n}\\r\\n.appformtopOuter .nav-tabs .nav-link.nav-doctor{\\r\\n\\tborder-radius: 0px 3px 3px 0px;\\r\\n}\\r\\n.appformtopOuter .nav-link.nav-department, .appformtopOuter .nav-link.nav-doctor{\\r\\n\\twidth: 150px;\\r\\n\\ttext-align: center;\\r\\n}\\r\\n.appformtopOuter .nav-tabs .nav-link a:last-child{\\r\\n\\tborder: 1px solid transparent;\\r\\n\\tborder-radius: 0px 20px 20px 0px;\\r\\n}\\r\\n.appformtopOuter .tab-content{\\r\\n\\tpadding-top: 20px;\\r\\n}\\r\\n.appformtopOuter .custom-select a{\\r\\n\\tpadding: 0px;\\r\\n\\tdisplay: block;\\r\\n\\tpadding-right: 0px;\\r\\n}\\r\\n.appformtopOuter ul.nav-tabs{\\r\\n\\tmargin-top:0px;\\r\\n}\\r\\n.appSearchByHeading{\\r\\n\\tpadding:0px 0px 10px;\\r\\n\\ttext-align: center;\\r\\n}\\r\\n.input-group-text img{\\r\\n\\tmax-width: 24px;\\r\\n}\\r\\n\"","module.exports = \"\\r\\n\"","import { Component, OnInit } from '@angular/core';\r\nimport { Commonlib } from 'src/app/common/commonlib'\r\nimport { konsole } from 'src/app/utility/konsole'\r\nimport { Router } from '@angular/router';\r\n\r\ndeclare var jquery: any;\r\ndeclare var $: any;\r\n\r\nimport { CommonService } from 'src/app/common/common.service'\r\nimport { DocsearchComponent } from 'src/app/docsearch/docsearch.component';\r\nimport { DeptsearchComponent } from 'src/app/deptsearch/deptsearch.component';\r\nimport { DataService } from '../data.service';\r\n\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.css']\r\n})\r\nexport class HeaderComponent implements OnInit {\r\n isDepartment: Boolean;\r\n dateObj: any;\r\n imageUrl: string;\r\n subtenantId: any;\r\n\r\n constructor(private commonService: CommonService,\r\n private dataService: DataService,\r\n private _router: Router) {\r\n this.isDepartment = true;\r\n this.dateObj = Commonlib.currentDateObj();\r\n this.commonService.dateSelected(this.dateObj);\r\n }\r\n\r\n ngOnInit() {\r\n this.commonService.didSubtenantChange.subscribe((subtenantId: any) => {\r\n this.subtenantId = this.commonService.getSubtenantId();\r\n Commonlib.setBgColorDynamically(this.subtenantId);\r\n this.setupDatepicker();\r\n this.fetchLogo();\r\n })\r\n }\r\n\r\n fetchLogo() {\r\n\r\n let objserver = this.dataService.fetchSubtenantLogo(0, this.subtenantId);\r\n objserver.subscribe(response => {\r\n this.imageUrl = response.webLogo;\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n setupDatepicker() {\r\n let self = this;\r\n const today = new Date();\r\n $(\"#datepicker\").datepicker({\r\n dateFormat: 'dd-mm-yy',\r\n minDate: today,\r\n value: today,\r\n onSelect: function (dateText, inst) {\r\n var dateObj = Commonlib.dateObjForStr(dateText);\r\n self.commonService.dateSelected(dateObj);\r\n }\r\n });\r\n }\r\n\r\n handleChange(event) {\r\n let targetId = event.target.id;\r\n\r\n if (targetId == 'deptTabId') {\r\n this.isDepartment = true;\r\n }\r\n\r\n if (targetId == 'docTabId') {\r\n this.isDepartment = false;\r\n }\r\n\r\n this.commonService.toggle(this.isDepartment);\r\n }\r\n\r\n\r\n redirectToGuide() {\r\n const self = this;\r\n const encryptLogo = btoa(JSON.stringify({ sid: self.subtenantId }))\r\n const isInternalScreen: any = this.commonService.getIsInternal();\r\n \r\n if (isInternalScreen == false) return self._router.navigate(['index']);\r\n self._router.navigate(['guide'], { queryParams: { enc: encryptLogo } });\r\n }\r\n\r\n handleClick(event) {\r\n const targetId = event.target.id;\r\n const self = this;\r\n\r\n switch (targetId) {\r\n case 'getsmsdetailsbtnId': {\r\n self._router.navigate(['sms']);\r\n }\r\n break;\r\n case 'uploadrecordbtnId': {\r\n window.open('https://consumer.mcura.com/'); //open patient portal\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n.loader {\\r\\n position: absolute;\\r\\n z-index: 100;\\r\\n top: 30%;\\r\\n left: 45%;\\r\\n}\\r\\n\\r\\n.mainContainer{\\r\\n\\tdisplay: table;\\r\\n\\twidth: 100%;\\r\\n\\tpadding: 10px 12px;\\r\\n}\\r\\n\\r\\n.single_breadcurm {\\r\\n width: 100%;\\r\\n float: left;\\r\\n color: #242424;\\r\\n font-size: 13px;\\r\\n margin-bottom: 15px;\\r\\n padding-top: 5px;\\r\\n}\\r\\n\\r\\n.single_breadcurm a {\\r\\n color: #a50500;\\r\\n}\\r\\n\\r\\n.innernavheading2 {\\r\\n font-size: 20px;\\r\\n color: #a50500;\\r\\n border-bottom: 1px solid #a50500;\\r\\n font-family: ArialNarrowBold;\\r\\n padding-bottom: 5px;\\r\\n margin-bottom: 20px;\\r\\n}\\r\\n\\r\\n.innernavheading2 span {\\r\\n border-bottom: 3px solid #a50500;\\r\\n padding-bottom: 1px;\\r\\n}\\r\\n\\r\\n.appformtopOuter{\\r\\n\\twidth: 100%;\\r\\n\\tmargin: 0 auto;\\r\\n\\tdisplay: table;\\r\\n\\tpadding: 10px;\\r\\n\\tborder-bottom: 1px #ddd solid;\\r\\n}\\r\\n\\r\\n.datepickerouter{\\r\\n\\twidth: 295px;\\r\\n\\tmargin: 0 auto;\\r\\n}\\r\\n\\r\\nul.apptDoctorListUL{\\r\\n\\tmargin: 0px;\\r\\n\\tpadding: 10px 0px 0px 0px;\\r\\n\\tlist-style: none;\\r\\n}\\r\\n\\r\\nul.apptDoctorListUL>li{\\r\\n\\tlist-style: none;\\r\\n\\tmargin: 15px 0px;\\r\\n position: relative;\\r\\n background-color: #ffffff;\\r\\n\\tbox-shadow: 0px 3px 10px #0000001a;\\r\\n\\tdisplay: table;\\r\\n\\twidth: 100%;\\r\\n\\tmin-height: 88px;\\r\\n\\theight: auto;\\r\\n\\tborder-radius: 4px;\\r\\n\\t-moz-border-radius: 4px;\\r\\n\\t-webkit-border-radius: 4px;\\r\\n}\\r\\n\\r\\nul.apptDoctorListUL li .apptDoctorListBox{\\r\\n position: relative;\\r\\n\\tpadding: 10px;\\r\\n}\\r\\n\\r\\nul.apptDoctorListUL li .apptDoctorListBox .apptSchDesc{\\r\\n font-size: 14px;\\r\\n\\tcolor: #848484;\\r\\n\\tline-height: 22px;\\r\\n}\\r\\n\\r\\nul.apptDoctorListUL .apptDoctorInfo{\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\nul.apptDoctorListUL .apptDoctorInfo .apptDoctorProfilePic{\\r\\n\\twidth:60px;\\r\\n\\theight:60px;\\r\\n background: url('/assets/images/no_doctor.png') no-repeat;\\r\\n background-size:cover;\\r\\n border-radius: 30px;\\r\\n float: left;\\r\\n display: inline-block;\\r\\n margin-bottom: 5px;\\r\\n}\\r\\n\\r\\nul.apptDoctorListUL .apptDoctorInfo .apptDoctorProfilePic img{\\r\\n\\tmax-width:60px;\\r\\n\\tmax-height:60px;\\r\\n background-color: #ffffff;\\r\\n}\\r\\n\\r\\nul.apptDoctorListUL .apptDoctorInfo h3{\\r\\n\\tfont-size: 18px;\\r\\n\\tfont-weight: 500;\\r\\n\\tcolor: #454545;\\r\\n\\tmargin: 0px;\\r\\n}\\r\\n\\r\\n.btn.btn-theme{\\r\\n\\tbackground: #ffffff;\\r\\n\\tcolor: var(--theme-color);\\r\\n\\tborder:1px var(--theme-color) dashed;\\r\\n\\ttext-align: center;\\r\\n\\ttransition: background-color 0.5s ease;\\r\\n}\\r\\n\\r\\n.btn.btn-theme:hover, .btn.btn-theme:visited, .btn.btn-theme:focus{\\r\\n\\tbackground-color: var(--theme-color);\\r\\n\\tcolor: #ffffff;\\r\\n}\\r\\n\\r\\n.form-control{\\r\\n\\tborder-radius: 0px !important;\\r\\n\\tbox-shadow: none !important;\\r\\n\\tborder: 1px #ccc solid !important;\\r\\n\\theight:37px !important;}\\r\\n\\r\\n.appformtopOuter .form-control{\\r\\n\\tborder-radius: 0px;\\r\\n\\tbox-shadow: none;\\r\\n\\tborder: 1px #ccc solid;\\r\\n\\theight:37px;}\\r\\n\\r\\nul.apptOpdNameUL{\\r\\n margin: 0;\\r\\n padding: 0;\\r\\n list-style: none;\\r\\n}\\r\\n\\r\\nul.apptOpdNameUL>li{\\r\\n list-style: none;\\r\\n display: inline-block;\\r\\n padding: 3px 7px;\\r\\n border: 1px #dadada dashed;\\r\\n margin: 2px 3px;\\r\\n font-weight: bold;\\r\\n width:auto;\\r\\n}\\r\\n\\r\\n.clickDisable {\\r\\n\\tpointer-events: none;\\r\\n\\tcursor: not-allowed;\\r\\n\\topacity: 0.5;\\r\\n}\\r\\n\\r\\n.apptOpdNameUL .apptSchSlot{\\r\\n font-size: 14px;\\r\\n line-height: 22px;\\r\\n font-weight: normal;\\r\\n}\\r\\n\\r\\n.apptConsultationFee h5{\\r\\n font-size: 14px;\\r\\n}\\r\\n\\r\\np{\\r\\n font-size: 13px;\\r\\n color: #848484;\\r\\n margin-bottom: 0;\\r\\n}\\r\\n\\r\\n.apptConsultationFee .fa.fa-inr{\\r\\n color: var(--theme-color);\\r\\n}\\r\\n\\r\\n.apptConsultationFee{\\r\\n position: relative;\\r\\n border-left: 1px #ddd solid;\\r\\n padding-left: 10px;\\r\\n}\\r\\n\\r\\n.apptConsultationFee .apptBookNowBtn{\\r\\n\\tposition: absolute;\\r\\n\\tright: 0px;\\r\\n\\ttop: 0px;\\r\\n}\\r\\n\\r\\n.doctorPermanentInfo{\\r\\n display: block;\\r\\n width: 100%;\\r\\n background-color: #f3f3f3;\\r\\n clear: both;\\r\\n}\\r\\n\\r\\n.doctorPermanentInfo p{\\r\\n margin: 0;\\r\\n padding: 3px 10px;\\r\\n color:#454545;\\r\\n line-height: 22px;\\r\\n}\\r\\n\\r\\n.doctorBasicInfo{\\r\\n position: relative;\\r\\n width: auto;\\r\\n padding-left: 70px;\\r\\n}\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n - \\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n
\\r\\n
\\r\\n
{{doctor.UserName}}
\\r\\n
{{doctor.weeklySchedule.description}}
\\r\\n
\\r\\n - {{schObj.scheduleName}}\\r\\n
{{schObj.slot}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
Fee Details:
\\r\\n
{{feeObj.nature}} {{feeObj.fee}}/-
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
Info:{{permanentInfo(doctor.departments, doctor.deptId)}}
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","import { Component, OnInit } from '@angular/core';\r\nimport { DataService } from 'src/app/data.service'\r\nimport { konsole } from 'src/app/utility/konsole'\r\nimport { Commonlib } from 'src/app/common/commonlib'\r\nimport { CommonService } from 'src/app/common/common.service'\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\n\r\n@Component({\r\n selector: 'app-index',\r\n templateUrl: './index.component.html',\r\n styleUrls: ['./index.component.css']\r\n})\r\nexport class IndexComponent implements OnInit {\r\n\r\n doctorList: Array;\r\n dateObj: any;\r\n deptObj: any;\r\n subtenantId: string;\r\n baseUrl: string;\r\n\r\n constructor(private dataService: DataService,\r\n private commonService: CommonService,\r\n private _router: Router,\r\n private _activeRoute: ActivatedRoute,\r\n private spinnerService: Ng4LoadingSpinnerService) {\r\n this.baseUrl = DataService.baseUrl;\r\n konsole.log('IndexComponent base URL is ' + this.baseUrl);\r\n }\r\n\r\n ngOnInit() {\r\n const params = this._activeRoute.snapshot.queryParams\r\n const subtenantId = this.commonService.getSubtenantId();\r\n if (subtenantId === undefined && params.hasOwnProperty('sid')) {\r\n this.commonService.setSubtenant(params[\"sid\"]);\r\n }\r\n else if (subtenantId !== undefined && params.hasOwnProperty(\"sid\") && (subtenantId !== params[\"sid\"])) {\r\n this.commonService.setSubtenant(params[\"sid\"]);\r\n } else if (subtenantId !== undefined && subtenantId !== null) {\r\n this.commonService.setSubtenant(subtenantId);\r\n }\r\n\r\n\r\n const session = Commonlib.generateUUID();\r\n\r\n localStorage.setItem(\"session\", session);\r\n\r\n\r\n konsole.log(\"params\" + \" \" + params + \" \" + subtenantId + \" \");\r\n this.subtenantId = this.commonService.getSubtenantId();\r\n this.dateObj = this.commonService.getDate();\r\n this.deptObj = this.commonService.getDepartment();\r\n this.fetchDoctorList();\r\n\r\n this.commonService.didChangeDate.subscribe(dateObj => {\r\n this.dateObj = dateObj;\r\n this.fetchDoctorList();\r\n });\r\n\r\n this.commonService.didChangeDepartment.subscribe(deptObj => {\r\n this.deptObj = deptObj;\r\n this.fetchDoctorList();\r\n });\r\n }\r\n\r\n fetchDoctorList() {\r\n const self = this;\r\n const deptId = (this.deptObj) ? this.deptObj.DepartmentId : '';\r\n const postDate = (this.dateObj) ? this.dateObj.postDate : '';\r\n if (deptId == '' || postDate == '') return;\r\n\r\n self.spinnerService.show();\r\n let objserver = this.dataService.getDoctors(this.subtenantId, postDate, deptId, false, '');\r\n objserver.subscribe(response => {\r\n\r\n self.spinnerService.hide();\r\n konsole.log(\"doctor response vlaue \" + JSON.stringify(response));\r\n\r\n var sortedList = self.sortDocListByPriorityIdForDept(response, deptId);\r\n this.doctorList = sortedList;\r\n });\r\n }\r\n\r\n sortDocListByPriorityIdForDept(arr, departmentId) {\r\n\r\n function deptObjForId(userObj, dId) {\r\n var deptObj;\r\n for (var i = 0; i < userObj.departments.length; i++) {\r\n deptObj = userObj.departments[i];\r\n if (deptObj.deptId == dId) {\r\n break;\r\n }\r\n }\r\n return deptObj;\r\n }\r\n\r\n return arr.sort(function (a, b) {\r\n const aDeptObj = deptObjForId(a, departmentId);\r\n const bDeptObj = deptObjForId(b, departmentId);\r\n\r\n if (aDeptObj.priorityId < bDeptObj.priorityId) return -1;\r\n if (aDeptObj.priorityId > bDeptObj.priorityId) return 1;\r\n return 0;\r\n });\r\n }\r\n\r\n scheduleList(list) {\r\n var keyList = Object.keys(list);\r\n var scheduleList = [];\r\n\r\n if (keyList.length > 0) {\r\n var key = keyList[0];\r\n var scheduleObj = list[key];\r\n scheduleList = scheduleObj.schedules;\r\n }\r\n return scheduleList;\r\n }\r\n\r\n permanentInfo(list, deptId) {\r\n if (list.length > 0) {\r\n const deptObj = list[0];\r\n for (var i = 0; i < list.length; i++) {\r\n const deptObj = list[i];\r\n if (deptObj.deptId == deptId) {\r\n return deptObj.permInfo;\r\n }\r\n }\r\n return \"\";\r\n }\r\n }\r\n\r\n\r\n smallScreen(){\r\n return Commonlib.isWindowWidthForSmallDevice()\r\n }\r\n\r\n scheduleExists(list) {\r\n var scheduleList = this.scheduleList(list);\r\n return (scheduleList.length > 0);\r\n }\r\n\r\n handleClick(event): void {\r\n if (event.target.id == 'bookNowBtnId') {\r\n const index = $(event.target).data(\"index\");\r\n konsole.log('index is ' + index);\r\n let doctorObj = this.doctorList[index];\r\n\r\n if (doctorObj) {\r\n this.commonService.docChange(doctorObj);\r\n }\r\n\r\n this._router.navigate(['detail']);\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"\"","module.exports = \"\\r\\n payment works!\\r\\n
\\r\\n\"","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-payment',\r\n templateUrl: './payment.component.html',\r\n styleUrls: ['./payment.component.css']\r\n})\r\nexport class PaymentComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","module.exports = \"\"","module.exports = \"\\r\\n
\\r\\n \\r\\n\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n selector: 'app-qrscanner',\n templateUrl: './qrscanner.component.html',\n styleUrls: ['./qrscanner.component.css']\n})\nexport class QrscannerComponent implements OnInit {\n\n subtenantId = null;\n imageUrl = \"\";\n\n constructor(\n private _activeRoute: ActivatedRoute,\n private _router: Router, \n ) { }\n\n ngOnInit() {\n const params = this._activeRoute.snapshot.queryParams;\n if(Object.keys(params).length == 0) return this._router.navigate([\"index\"]);\n const { sid, logo }: any = JSON.parse(atob(params.enc)); \n \n this.subtenantId = sid;\n this.imageUrl = logo;\n }\n\n\n}\n","module.exports = \"\\r\\n.crdMsg {\\r\\n margin-top: 15px;\\r\\n padding-top: 15px;\\r\\n border-top: 1px #ccc dashed;\\r\\n}\\r\\n\\r\\n.cnfMsg h5 {\\r\\n font-size: 17px;\\r\\n color: #474747;\\r\\n font-weight:600;\\r\\n}\\r\\n\\r\\n.crdMsg h5 {\\r\\n font-size: 17px;\\r\\n color: #474747;\\r\\n font-weight:600;\\r\\n}\\r\\n\\r\\n.modalLoderDiv{\\r\\n\\tmargin-top: 50%;\\r\\n position: absolute;\\r\\n z-index: 9999;\\r\\n display: table;\\r\\n background-color: #ffffff;\\r\\n}\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
{{msgBox.MSG04}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
Your Virtual OPD Appointment Detail
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Your Credentials to Access Records
\\r\\n {{crdMsg}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n

\\r\\n
{{cMsg}}
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","import { Component, OnInit, TemplateRef} from '@angular/core';\r\nimport { DataService } from 'src/app/data.service'\r\nimport { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport { konsole } from 'src/app/utility/konsole';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';\r\n\r\n@Component({\r\n selector: 'app-smsdetails',\r\n templateUrl: './smsdetails.component.html',\r\n styleUrls: ['./smsdetails.component.css']\r\n})\r\nexport class SmsdetailsComponent implements OnInit {\r\n\r\n cnfMsg:string;\r\n crdMsg:string;\r\n meetingId:string;\r\n transactionId:string;\r\n hospitalId:string;\r\n msgBox:any;\r\n cMsg:string;\r\n modalRef: BsModalRef;\r\n displayModalLoader:Boolean;\r\n displayModalButton:Boolean;\r\n modalTemplate: TemplateRef;\r\n\r\n constructor(private dataService:DataService,\r\n private spinnerService:Ng4LoadingSpinnerService,\r\n private toastr: ToastrService,\r\n private modalService: BsModalService) { }\r\n\r\n ngOnInit() {\r\n this.displayModalLoader = false;\r\n this.displayModalButton = false;\r\n this.cnfMsg = \"\"\r\n this.crdMsg = \"\";\r\n this.meetingId = \"\";\r\n this.transactionId = '';\r\n this.hospitalId = 'WBL';\r\n this.msgBox = {};\r\n this.msgBox[\"MSG01\"] = \"Your transaction id is not valid, kindly check and re-enter. In case you have payment confirmation sms /email please send a screen shot to support@mcura.com\";\r\n this.msgBox[\"MSG02\"] = \"There was an issue when booking your appointment, We can reschedule your appointment for the same payment done already, please contact our support team.\";\r\n this.msgBox[\"MSG03\"] = \"Confirming your payment of Rs.XXXX on paymentdate. checking your corresponding appointment details , pls wait...\";\r\n this.msgBox[\"MSG04\"] = \"For any future Virtual OPD appointments in SGRH please enter the same hospital id & mobile no while booking\";\r\n this.cMsg = \"\";\r\n }\r\n\r\n updateCnfMsg() {\r\n let msg = this.cnfMsg;\r\n msg = msg.replace(\"%3d\", \"=\");\r\n msg = msg.replace(\"%3D\", \"=\");\r\n let replaceableStr = \"https://virtualopd.mcura.com/default.aspx?meetingid=\"+this.meetingId;\r\n let newLinkStr = ``+replaceableStr+``;\r\n msg = msg.replace(replaceableStr, newLinkStr);\r\n this.cnfMsg = msg;\r\n }\r\n\r\n fetchPaymentDetails() {\r\n const self = this;\r\n let value = self.transactionId;\r\n value = value.trim();\r\n\r\n let pymtObserver = this.dataService.getPaymentInfo(value);\r\n self.spinnerService.show();\r\n pymtObserver.subscribe(pymtResponse => {\r\n self.spinnerService.hide();\r\n\r\n //{\"data\":{\"Attributes\":{\"id\":\"pay_EeJOFyOgvnH1jf\",\"entity\":\"payment\",\"amount\":200000,\"currency\":\"INR\",\"status\":\"captured\",\"order_id\":\"order_EeJNr4PNDmIQfW\",\"invoice_id\":null,\"international\":false,\"method\":\"upi\",\"amount_refunded\":0,\"refund_status\":null,\"captured\":true,\"description\":\"Video Consultation\",\"card_id\":null,\"bank\":null,\"wallet\":null,\"vpa\":\"9811137088@upi\",\"email\":\"pawarvijay1234@rediffmail.com\",\"contact\":\"+919811137088\",\"notes\":{\"address\":\"Razorpay Corporate Office\"},\"fee\":4130,\"tax\":630,\"error_code\":null,\"error_description\":null,\"created_at\":1586855504}},\"status\":1,\"msg\":\"success\"}\r\n\r\n konsole.log('payment details: '+JSON.stringify(pymtResponse));\r\n if(pymtResponse && typeof(pymtResponse)== 'object' && pymtResponse[\"status\"] == 1) {\r\n\r\n let amt = pymtResponse.data.Attributes.amount;\r\n let ts = pymtResponse.data.Attributes.created_at;\r\n\r\n amt = amt / 100;\r\n let amtStr = amt + '/-'\r\n\r\n var date = new Date(ts * 1000);\r\n let dateStr = date.getDate() + '-' + (date.getMonth()+1) + '-' + date.getFullYear();\r\n\r\n let msg = self.msgBox[\"MSG03\"];\r\n msg = msg.replace('XXXX', amtStr);\r\n msg = msg.replace('paymentdate', dateStr);\r\n\r\n konsole.log('msg is :'+msg);\r\n\r\n self.openModal(msg, true, false);\r\n setTimeout(function(){\r\n self.fetchSMSDetails();\r\n }, 3000);\r\n\r\n }else { //No user Id fetch\r\n self.openModal(self.msgBox[\"MSG01\"], false, true);\r\n }\r\n });\r\n }\r\n\r\n fetchSMSDetails() {\r\n const self = this;\r\n\r\n let value = self.transactionId;\r\n value = value.trim();\r\n\r\n let smsObserver = this.dataService.fetchSMSDetails(value);\r\n\r\n smsObserver.subscribe(smsResponse => {\r\n self.closeModal();\r\n if(smsResponse && typeof(smsResponse)== 'object') {\r\n konsole.log('cnfSMS:'+smsResponse.data.cnfSms);\r\n konsole.log('crdSMS:'+smsResponse.data.crdSms);\r\n konsole.log('meetingId:'+smsResponse.data.meetingId);\r\n\r\n self.cnfMsg = smsResponse.data.cnfSms;\r\n self.crdMsg = smsResponse.data.crdSms;\r\n self.meetingId = smsResponse.data.meetingId;\r\n self.hospitalId = smsResponse.data.hospitalId;\r\n self.updateCnfMsg();\r\n }else { //No user Id fetch\r\n self.closeModal();\r\n self.openModal(self.msgBox[\"MSG02\"], false, true);\r\n }\r\n });\r\n }\r\n\r\n handleClick(event, template:TemplateRef) {\r\n const targetId = event.target.id;\r\n const self = this;\r\n self.modalTemplate = template;\r\n self.cnfMsg = \"\"\r\n self.crdMsg = \"\";\r\n self.meetingId = \"\";\r\n self.hospitalId = \"\";\r\n self.fetchPaymentDetails();\r\n }\r\n\r\n okAction(event) {\r\n this.closeModal();\r\n }\r\n\r\n openModal(message, isLoader, isBtn) {\r\n this.displayModalLoader = isLoader;\r\n this.displayModalButton = isBtn;\r\n this.cMsg = message;\r\n this.modalRef = this.modalService.show(this.modalTemplate, {class: 'modal-sm'});\r\n }\r\n\r\n closeModal() {\r\n this.displayModalLoader = false;\r\n this.displayModalButton = false;\r\n if(this.modalRef) {\r\n this.modalRef.hide();\r\n }\r\n }\r\n\r\n}\r\n","!function(){\"use strict\";!function(){var l=window,c=l.document,t=l.Array,s=l.Object,r=l.String,m=l.Number,u=l.Date,d=l.Math,a=l.setTimeout,n=l.setInterval,i=l.clearTimeout,f=l.parseInt,h=l.encodeURIComponent,v=l.btoa,p=l.unescape,_=l.TypeError,y=l.navigator,b=l.location,e=l.XMLHttpRequest,o=l.FormData;function g(i){return function(e,n){return arguments.length<2?function(n){return i.call(null,n,e)}:i.call(null,e,n)}}function D(t){return function(e,i,n){return arguments.length<3?function(n){return t.call(null,n,e,i)}:t.call(null,e,i,n)}}function R(){for(var n=arguments.length,e=new t(n),i=0;i _El.on(e, cb)\"):function(i){var n=t;return P(a)?n=function(n){for(var e=n.target;!Xn(e,a)&&e!==i;){e=An(e)}e!==i&&(n.delegateTarget=e,t(n))}:o=a,o=!!o,i.addEventListener(e,n,o),function(){return i.removeEventListener(e,n,o)}}}function V(n){return P(n)?me(n):n}var q,J,Q,X,nn,en,tn,an,on,rn,mn,un,cn=x(t),ln=cn.slice,sn=g(function(n,e){return n&&cn.forEach.call(n,e),n}),dn=Z(\"map\"),fn=Z(\"indexOf\"),hn=g(function(n,e){return 0<=fn(n,e)}),vn=g(function(n,e){return ln.call(n,e)}),pn=D(function(n,e,i){return cn.reduce.call(n,e,i)}),_n=function(n){return n},yn=(x(Function),J=function(n,e){return n.bind(e)},q=function(n){if(B(n))return J.apply(null,arguments);throw new _(\"not a function\")},g(function(n,e){var i=arguments;return P(n)&&((i=vn(i,0))[0]=e[n]),q.apply(null,i)})),bn=x(r).slice,gn=D(function(n,e,i){return bn.call(n,e,i)}),Dn=g(function(n,e){return bn.call(n,e)}),Rn=g(function(n,e){return e in n}),Sn=g(function(n,e){return n&&n.hasOwnProperty(e)}),kn=D(function(n,e,i){return n[e]=i,n}),wn=D(function(n,e,i){return i&&(n[e]=i),n}),Mn=g(function(n,e){return delete n[e],n}),Pn=g(function(e,i){return sn(Y(e),function(n){return i(e[n],n,e)}),e}),Bn=JSON.stringify,Kn=function(n){try{return JSON.parse(n)}catch(n){}},Ln=g(function(i,n){return Pn(n,function(n,e){return i[e]=n}),i}),Nn=l.Element,Cn=function(n){return c.createElement(n||\"div\")},An=function(n){return n.parentNode},Tn=R(S),xn=R(S,S),In=R(S,P),En=R(S,P,function(){return!0}),Gn=R(S,N),$n=(Q=xn(function(n,e){return e.appendChild(n)}),g(Q)),zn=(X=xn(function(n,e){var i;return i=e,$n(n)(i),n}),g(X)),Fn=Tn(function(n){var e=An(n);return e&&e.removeChild(n),n}),On=(Tn(A(\"selectionStart\")),Tn(A(\"selectionEnd\")),en=function(n,e){return n.selectionStart=n.selectionEnd=e,n},nn=R(S,M)(en),g(nn),Tn(function(n){return n.submit(),n})),Hn=D(En(function(n,e,i){return n.setAttribute(e,i),n})),Un=D(En(function(n,e,i){return n.style[e]=i,n})),Zn=(tn=Gn(function(t,n){var e;return e=n,Pn(function(n,e){var i;return i=t,Hn(e,n)(i)})(e),t}),g(tn)),Yn=(an=Gn(function(t,n){var e;return e=n,Pn(function(n,e){var i;return i=t,Un(e,n)(i)})(e),t}),g(an)),jn=(on=In(function(n,e){return n.innerHTML=e,n}),g(on)),Wn=(rn=In(function(n,e){var i;return i=n,Un(\"display\",e)(i)}),g(rn)),Vn=(Wn(\"none\"),Wn(\"block\"),Wn(\"inline-block\"),A(\"offsetWidth\")),qn=A(\"offsetHeight\"),Jn=x(Nn),Qn=Jn.matches||Jn.matchesSelector||Jn.webkitMatchesSelector||Jn.mozMatchesSelector||Jn.msMatchesSelector||Jn.oMatchesSelector,Xn=(mn=In(function(n,e){return Qn.call(n,e)}),g(mn)),ne=c.documentElement,ee=c.body,ie=l.innerHeight,te=l.pageYOffset,ae=l.scrollBy,oe=l.scrollTo,re=l.requestAnimationFrame,me=yn(\"querySelector\",c),ue=yn(\"querySelectorAll\",c);yn(\"getElementById\",c),yn(\"getComputedStyle\",l);function ce(n,e,i,t){if(i&&\"get\"===i.toLowerCase())n=U(n,e),t?l.open(n,t):l.location=n;else{var a,o,r,m,u,c={action:n,method:i};t&&(c.target=t),u=Cn(\"form\"),m=Zn(c)(u),r=jn(le(e))(m),o=$n(ne)(r),a=On(o),Fn(a)}}function le(n,i){if(N(n)){var t=\"\";return Pn(n,function(n,e){i&&(e=i+\"[\"+e+\"]\"),t+=le(n,e)}),t}var e=Cn(\"input\");return e.type=\"hidden\",e.value=n,e.name=i,e.outerHTML}function se(n){!function(m){if(!l.requestAnimationFrame)return ae(0,m);un&&i(un);un=a(function(){var t=te,a=d.min(t+m,qn(ee)-ie);m=a-t;var o=0,r=l.performance.now();re(function n(e){if(1<=(o+=(e-r)/300))return oe(0,a);var i=d.sin(de*o/2);oe(0,t+d.round(m*i)),r=e,re(n)})},100)}(n-te)}var de=d.PI;var fe,he,ve,pe,_e=e,ye=z(\"Network error\"),be=0;function ge(n){if(!I(this,ge))return new ge(n);this.options=function(n){P(n)&&(n={url:n});var e=n.method,i=n.headers,t=n.callback,a=n.data;i||(n.headers={});e||(n.method=\"get\");t||(n.callback=_n);N(a)&&!I(a,o)&&(a=H(a));return n.data=a,n}(n),this.defer()}((ve={setReq:function(n,e){return this.abort(),this.type=n,this.req=e,this},till:function(e){var i=this;return this.setReq(\"timeout\",a(function(){i.call(function(n){e(n)?i.till(e):i.options.callback(n)})},3e3))},abort:function(){var n=this.req,e=this.type;n&&(\"ajax\"===e?this.req.abort():\"jsonp\"===e?l.Razorpay[this.req]=_n:i(this.req),this.req=null)},defer:function(){var n=this;this.req=a(function(){return n.call()})},call:function(e){var n,i,t;void 0===e&&(e=this.options.callback);var a=this.options,o=a.url,r=a.method,m=a.data,u=a.headers,c=new _e;this.setReq(\"ajax\",c),c.open(r,o,!0),c.onreadystatechange=function(){if(4===c.readyState&&c.status){var n=Kn(c.responseText);n||((n=z(\"Parsing error\")).xhr={status:c.status,text:c.responseText}),e(n)}},c.onerror=function(){var n=ye;n.xhr={status:0},e(n)},t=u,i=wn(\"X-Razorpay-SessionId\",fe)(t),n=wn(\"X-Razorpay-TrackId\",he)(i),Pn(function(n,e){return c.setRequestHeader(e,n)})(n),c.send(m)}}).constructor=ge).prototype=ve,ge.post=function(n){return n.method=\"post\",n.headers||(n.headers={}),n.headers[\"Content-type\"]||(n.headers[\"Content-type\"]=\"application/x-www-form-urlencoded\"),ge(n)},ge.setSessionId=function(n){fe=n},ge.setTrackId=function(n){he=n},ge.jsonp=function(r){r.data||(r.data={});var m=\"jsonp\"+be++;r.data.callback=\"Razorpay.\"+m;var n=new ge(r);return r=n.options,n.call=function(e){var n,i;void 0===e&&(e=r.callback);function t(){a||this.readyState&&\"loaded\"!==this.readyState&&\"complete\"!==this.readyState||(a=!0,this.onload=this.onreadystatechange=null,Fn(this))}var a=!1,o=l.Razorpay[m]=function(n){Mn(n,\"http_status_code\"),e(n),Mn(l.Razorpay,m)};this.setReq(\"jsonp\",o),i=Cn(\"script\"),n=Ln({src:U(r.url,r.data),async:!0,onerror:function(){return r.callback(ye)},onload:t,onreadystatechange:t})(i),$n(ne)(n)},n};var De=function(n){return console.warn(\"Promise error:\",n)},Re=function(n){return I(n,Se)};function Se(n){if(!Re(this))throw\"new Promise\";this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],Ke(n,this)}function ke(i,t){for(;3===i._state;)i=i._value;0!==i._state?(i._handled=!0,a(function(){var n=1===i._state?t.onFulfilled:t.onRejected;if(null!==n){var e;try{e=n(i._value)}catch(n){return void Me(t.promise,n)}we(t.promise,e)}else(1===i._state?we:Me)(t.promise,i._value)})):i._deferreds.push(t)}function we(e,n){try{if(n===e)throw new _(\"promise resolved by itself\");if(N(n)||B(n)){var i=n.then;if(Re(n))return e._state=3,e._value=n,void Pe(e);if(B(i))return void Ke(yn(i,n),e)}e._state=1,e._value=n,Pe(e)}catch(n){Me(e,n)}}function Me(n,e){n._state=2,n._value=e,Pe(n)}function Pe(e){var n;2===e._state&&0===e._deferreds.length&&a(function(){e._handled||De(e._value)}),n=e._deferreds,sn(function(n){return ke(e,n)})(n),e._deferreds=null}function Be(n,e,i){this.onFulfilled=B(n)?n:null,this.onRejected=B(e)?e:null,this.promise=i}function Ke(n,e){var i=!1;try{n(function(n){i||(i=!0,we(e,n))},function(n){i||(i=!0,Me(e,n))})}catch(n){if(i)return;i=!0,Me(e,n)}}pe=Se.prototype,Ln({catch:function(n){return this.then(null,n)},then:function(n,e){var i=new Se(_n);return ke(this,new Be(n,e,i)),i},finally:function(e){return this.then(function(n){return Se.resolve(e()).then(function(){return n})},function(n){return Se.resolve(e()).then(function(){return Se.reject(n)})})}})(pe),Se.all=function(r){return new Se(function(t,a){var n;if(!r||void 0===r.length)throw new _(\"Promise.all accepts an array\");if(0===r.length)return t([]);var o=r.length;n=r,sn(function e(n,i){try{if((N(n)||B(n))&&B(n.then))return n.then(function(n){return e(n,i)},a);r[i]=n,0==--o&&t(r)}catch(n){a(n)}})(n)})},Se.resolve=function(e){return Re(e)?e:new Se(function(n){return n(e)})},Se.reject=function(i){return new Se(function(n,e){return e(i)})},Se.race=function(t){return new Se(function(e,i){var n;return n=t,sn(function(n){return n.then(e,i)})(n)})};var Le=l.Promise,Ne=Le&&B(x(Le).then)&&Le||Se;B(Ne.prototype.finally)||(Ne.prototype.finally=Se.prototype.finally);var Ce={_storage:{},setItem:function(n,e){this._storage[n]=e},getItem:function(n){return this._storage[n]||null},removeItem:function(n){delete this._storage[n]}};var Ae,Te=function(){var n=E();try{l.localStorage.setItem(\"_storage\",n);var e=l.localStorage.getItem(\"_storage\");return l.localStorage.removeItem(\"_storage\"),n!==f(e)?Ce:l.localStorage}catch(n){return Ce}}(),xe=\"rzp_checkout_exp\";var Ie=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\",Ee=(Ae=Ie,pn(function(n,e,i){return kn(n,e,i)},{})(Ae));function Ge(n){for(var e=\"\";n;)e=Ie[n%62]+e,n=$(n/62);return e}function $e(){var n,i,t=Ge(r(E()-13885344e5)+Dn(\"000000\"+$(1e6*G()),-6))+Ge($(238328*G()))+\"0\",a=0;return n=t,sn(function(n,e){i=Ee[t[t.length-1-e]],(t.length-e)%2&&(i*=2),62<=i&&(i=i%62+1),a+=i})(n),i=(i=a%62)&&Ie[62-i],gn(t,0,13)+i}var ze=$e(),Fe={library:\"checkoutjs\",platform:\"browser\",referer:b.href};function Oe(n){var e,i={checkout_id:n?n.id:ze};return e=[\"device\",\"env\",\"integration\",\"library\",\"os_version\",\"os\",\"platform_version\",\"platform\",\"referer\"],sn(function(n){var e;return e=i,wn(n,Fe[n])(e)})(e),i}var He,Ue=[],Ze=[],Ye=function(n){return Ue.push(n)},je=function(n){He=n},We=function(){var n,e,i,t;if(Ue.length){var a=Rn(y,\"sendBeacon\"),o={context:He,addons:[{name:\"ua_parser\",input_key:\"user_agent\",output_key:\"user_agent_parsed\"}],events:Ue.splice(0,Ue.length)},r={url:\"https://lumberjack.razorpay.com/v1/track\",data:{key:\"ZmY5N2M0YzVkN2JiYzkyMWM1ZmVmYWJk\",data:(t=Bn(o),i=h(t),e=p(i),n=v(e),h(n))}};try{a?y.sendBeacon(r.url,Bn(r.data)):ge.post(r)}catch(n){}}};n(function(){We()},1e3);function Ve(m,u,c,l){m?m.isLiveMode()&&a(function(){var n;c instanceof Error&&(c={message:c.message,stack:c.stack});var e=Oe(m);e.user_agent=null,e.mode=\"live\";var i=m.get(\"order_id\");i&&(e.order_id=i);var a={},t={options:a};c&&(t.data=c);var o=[\"amount\",\"checkout_config_id\",\"contact_id\",\"currency\",\"description\",\"display_amount\",\"display_currency\",\"ecod\",\"hidden\",\"image\",\"key\",\"method\",\"name\",\"prefill\",\"readonly\",\"recurring\",\"redirect\",\"theme\"];Pn(m.get(),function(n,e){var i=e.split(\".\"),t=i[0];-1!==o.indexOf(t)&&(1120+n&&se(n)}else this.isFocused||se(0)}};function Xi(){return Qi.metas||(Qi.metas=ue('head meta[name=viewport],head meta[name=\"theme-color\"]')),Qi.metas}function nt(n){try{et.backdrop.style.background=n}catch(n){}}function et(n){if(Zi=c.body,Yi=c.head,ji=Zi.style,n)return this.getEl(n),this.openRzp(n);this.getEl(),this.time=E()}et.prototype={getEl:function(n){if(!this.el){var e,i={style:\"opacity: 1; height: 100%; position: relative; background: none; display: block; border: 0 none transparent; margin: 0px; padding: 0px; z-index: 2;\",allowtransparency:!0,frameborder:0,width:\"100%\",height:\"100%\",allowpaymentrequest:!0,src:function(n){var e=bi.frame,i=G()<.05;if(!e){e=Gi(\"checkout\");var t=Hi(n);t?e=U(e,t):(e+=\"/public\",i&&(e+=\"/canary\"))}return i&&(e=U(e,{canary:1})),e}(n),class:\"razorpay-checkout-frame\"};this.el=(e=Cn(\"iframe\"),Zn(i)(e))}return this.el},openRzp:function(n){var e,i,t,a,o=(e=this.el,Yn({width:\"100%\",height:\"100%\"})(e)),r=n.get(\"parent\"),m=(r=r&&V(r))||et.container;if(!function(n,e){if(!Wi)try{var i;(Wi=c.createElement(\"div\")).className=\"razorpay-loader\";var t=\"margin:-25px 0 0 -25px;height:50px;width:50px;animation:rzp-rot 1s infinite linear;-webkit-animation:rzp-rot 1s infinite linear;border: 1px solid rgba(255, 255, 255, 0.2);border-top-color: rgba(255, 255, 255, 0.7);border-radius: 50%;\";t+=e?\"margin: 100px auto -150px;border: 1px solid rgba(0, 0, 0, 0.2);border-top-color: rgba(0, 0, 0, 0.7);\":\"position:absolute;left:50%;top:50%;\",Wi.setAttribute(\"style\",t),i=Wi,$n(n)(i)}catch(n){}}(m,r),n!==this.rzp){var u;if(An(o)!==m)u=m,zn(o)(u);this.rzp=n}r?(i=o,Un(\"minHeight\",\"530px\")(i),this.embedded=!0):(a=m,t=Un(\"display\",\"block\")(a),Vn(t),nt(n.get(\"theme.backdrop_color\")),/^rzp_t/.test(n.get(\"key\"))&&et.ribbon&&(et.ribbon.style.opacity=1),this.setMetaAndOverflow());this.bind(),this.onload()},makeMessage:function(){var n=this.rzp,i=n.get(),e={integration:Ve.props.integration,referer:b.href,options:i,id:n.id};return n.metadata&&(e.metadata=n.metadata),Pn(n.modal.options,function(n,e){i[\"modal.\"+e]=n}),this.embedded&&(delete i.parent,e.embedded=!0),function(n){var e=n.image;if(e&&P(e)){if(O(e))return;if(e.indexOf(\"http\")){var i=b.protocol+\"//\"+b.hostname+(b.port?\":\"+b.port:\"\"),t=\"\";\"/\"!==e[0]&&\"/\"!==(t+=b.pathname.replace(/[^/]*$/g,\"\"))[0]&&(t=\"/\"+t),n.image=i+t+e}}}(i),e},close:function(){nt(\"\"),et.ribbon&&(et.ribbon.style.opacity=0),function(n){n&&sn(n,Fn);var e=Xi();e&&sn(e,$n(Yi))}(this.$metas),ji.overflow=Qi.overflow,this.unbind(),Ji&&qi(0,Qi.oldY),Ve.flush()},bind:function(){var t=this;if(!this.listeners){this.listeners=[];var n={};Ji&&(n.orientationchange=Qi.orientationchange,this.rzp.get(\"parent\")||(n.resize=Qi.resize)),Pn(n,function(n,e){var i;t.listeners.push((i=window,W(e,yn(n,t))(i)))})}},unbind:function(){var n;n=this.listeners,sn(n,function(n){return n()}),this.listeners=null},setMetaAndOverflow:function(){var n,e;Yi&&(sn(Xi(),function(n){return Fn(n)}),this.$metas=[(n=Cn(\"meta\"),Zn({name:\"viewport\",content:\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"})(n)),(e=Cn(\"meta\"),Zn({name:\"theme-color\",content:this.rzp.get(\"theme.color\")})(e))],sn(this.$metas,$n(Yi)),Qi.overflow=ji.overflow,ji.overflow=\"hidden\",Ji&&(Qi.oldY=l.pageYOffset,l.scrollTo(0,0),Qi.orientationchange.call(this)))},postMessage:function(n){n.id=this.rzp.id,n=Bn(n),this.el.contentWindow.postMessage(n,\"*\")},onmessage:function(n){var e=Kn(n.data);if(e){var i=e.event,t=this.rzp;n.origin&&\"frame\"===e.source&&n.source===this.el.contentWindow&&(e=e.data,this[\"on\"+i](e),\"dismiss\"!==i&&\"fault\"!==i||Xe.track(i,{data:e,r:t,immediately:!0}))}},onload:function(){this.rzp&&this.postMessage(this.makeMessage())},onfocus:function(){this.isFocused=!0},onblur:function(){this.isFocused=!1,Qi.orientationchange.call(this)},onrender:function(){Wi&&(Fn(Wi),Wi=null);this.rzp.emit(\"render\")},onevent:function(n){this.rzp.emit(n.event,n.data)},onredirect:function(n){Ve.flush(),function(n){if(!n.target&&l!==l.parent)return l.Razorpay.sendMessage({event:\"redirect\",data:n});ce(n.url,n.content,n.method,n.target)}(n)},onsubmit:function(e){Ve.flush();var i=this.rzp;\"wallet\"===e.method&&sn(i.get(\"external.wallets\"),function(n){if(n===e.wallet)try{i.get(\"external.handler\").call(i,e)}catch(n){}}),i.emit(\"payment.submit\",{method:e.method})},ondismiss:function(n){this.close();var e=this.rzp.get(\"modal.ondismiss\");B(e)&&a(function(){return e(n)})},onhidden:function(){Ve.flush(),this.afterClose();var n=this.rzp.get(\"modal.onhidden\");B(n)&&n()},oncomplete:function(n){this.close();var e=this.rzp,i=e.get(\"handler\");Xe.track(\"checkout_success\",{r:e,data:n,immediately:!0}),B(i)&&a(function(){i.call(e,n)},200)},onpaymenterror:function(n){Ve.flush();try{this.rzp.emit(\"payment.error\",n),this.rzp.emit(\"payment.failed\",n)}catch(n){}},onfailure:function(n){this.ondismiss(),l.alert(\"Payment Failed.\\n\"+n.error.description),this.onhidden()},onfault:function(n){var e=\"Something went wrong.\";P(n)?e=n:K(n)&&(n.message||n.description)&&(e=n.message||n.description),Ve.flush(),this.rzp.close();var i=this.rzp.get(\"callback_url\");(this.rzp.get(\"redirect\")||ri)&&i?ce(i,{error:n},\"post\"):l.alert(\"Oops! Something went wrong.\\n\"+e),this.afterClose()},afterClose:function(){et.container.style.display=\"none\"},onflush:function(){Ve.flush()}};var it,tt=x(zi);function at(e){return function n(){return it?e.call(this):(a(yn(n,this),99),this)}}!function n(){(it=c.body||c.getElementsByTagName(\"body\")[0])||a(n,99)}();var ot,rt=c.currentScript||(ot=ue(\"script\"))[ot.length-1];function mt(n){var e,i,t,a;t=An(rt),i=zn((a=Cn(),jn(le(n))(a)))(t),e=kn(\"onsubmit\",_n)(i),On(e)}function ut(m){var n,e,i;e=An(rt),n=zn((i=Cn(\"input\"),Ln({type:\"submit\",value:m.get(\"buttontext\"),className:\"razorpay-payment-button\"})(i)))(e),kn(\"onsubmit\",function(n){n.preventDefault();var e=this.action,i=this.method,t=this.target,a=m.get();if(P(e)&&e&&!a.callback_url){var o={url:e,content:pn(this.querySelectorAll(\"[name]\"),function(n,e){return n[e.name]=e.value,n},{}),method:P(i)?i:\"get\",target:P(t)&&t};try{var r=v(Bn({request:o,options:Bn(a),back:b.href}));a.callback_url=Gi(\"checkout/onyx\")+\"?data=\"+r}catch(n){}}return m.open(),!1})(n)}var ct,lt;function st(){if(!ct){var n,e,i,t;t=Cn(),i=kn(\"className\",\"razorpay-container\")(t),e=kn(\"innerHTML\",\"\")(i),n=Yn({zIndex:1e9,position:\"fixed\",top:0,display:\"none\",left:0,height:\"100%\",width:\"100%\",\"-webkit-overflow-scrolling\":\"touch\",\"-webkit-backface-visibility\":\"hidden\",\"overflow-y\":\"visible\"})(e),ct=$n(it)(n);var a=(d=et.container=ct,v=Cn(),h=kn(\"className\",\"razorpay-backdrop\")(v),f=Yn({\"min-height\":\"100%\",transition:\"0.3s ease-out\",position:\"fixed\",top:0,left:0,width:\"100%\",height:\"100%\"})(h),$n(d)(f)),o=(r=et.backdrop=a,l=\"rotate(45deg)\",s=\"opacity 0.3s ease-in\",c=Cn(\"span\"),u=kn(\"innerHTML\",\"Test Mode\")(c),m=Yn({\"text-decoration\":\"none\",background:\"#D64444\",border:\"1px dashed white\",padding:\"3px\",opacity:\"0\",\"-webkit-transform\":l,\"-moz-transform\":l,\"-ms-transform\":l,\"-o-transform\":l,transform:l,\"-webkit-transition\":s,\"-moz-transition\":s,transition:s,\"font-family\":\"lato,ubuntu,helvetica,sans-serif\",color:\"white\",position:\"absolute\",width:\"200px\",\"text-align\":\"center\",right:\"-50px\",top:\"50px\"})(u),$n(r)(m));et.ribbon=o}var r,m,u,c,l,s,d,f,h,v;return ct}function dt(n){var e,i;lt?lt.openRzp(n):(lt=new et(n),e=l,W(\"message\",yn(\"onmessage\",lt))(e),i=ct,zn(lt.el)(i));return lt}zi.open=function(n){return zi(n).open()},tt.postInit=function(){this.modal={options:{}},this.get(\"parent\")&&this.open()};var ft=tt.onNew;tt.onNew=function(n,e){\"payment.error\"===n&&Ve(this,\"event_paymenterror\",b.href),B(ft)&&ft.call(this,n,e)},tt.open=at(function(){this.metadata||(this.metadata={}),this.metadata.openedAt=u.now();var n=this.checkoutFrame=dt(this);return Ve(this,\"open\"),n.el.contentWindow||(n.close(),n.afterClose(),l.alert(\"This browser is not supported.\\nPlease try payment in another browser.\")),\"-new.js\"===rt.src.slice(-7)&&Ve(this,\"oldscript\",b.href),this}),tt.resume=function(n){var e=this.checkoutFrame;e&&e.postMessage({event:\"resume\",data:n})},tt.close=function(){var n=this.checkoutFrame;n&&n.postMessage({event:\"close\"})};var ht=at(function(){st(),lt=dt();try{!function(){var a={};Pn(rt.attributes,function(n){var e=n.name.toLowerCase();if(/^data-/.test(e)){var i=a;e=e.replace(/^data-/,\"\");var t=n.value;\"true\"===t?t=!0:\"false\"===t&&(t=!1),/^notes\\./.test(e)&&(a.notes||(a.notes={}),i=a.notes,e=e.replace(/^notes\\./,\"\")),i[e]=t}});var n=a.key;if(n&&0= 200 && xhr.status <= 299\r\n}\r\n\r\n// `a.click()` doesn't work for all browsers (#465)\r\nfunction click (node) {\r\n try {\r\n node.dispatchEvent(new MouseEvent('click'))\r\n } catch (e) {\r\n var evt = document.createEvent('MouseEvents')\r\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\r\n 20, false, false, false, false, 0, null)\r\n node.dispatchEvent(evt)\r\n }\r\n}\r\n\r\n// Detect WebKit inside a native macOS app\r\nvar isWebKit = /AppleWebKit/.test(navigator.userAgent)\r\n\r\nvar saveAs = _global.saveAs || (\r\n // probably in some web worker\r\n (typeof window !== 'object' || window !== _global)\r\n ? function saveAs () { /* noop */ }\r\n\r\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a native macOS app\r\n : ('download' in HTMLAnchorElement.prototype && !isWebKit)\r\n ? function saveAs (blob, name, opts) {\r\n var URL = _global.URL || _global.webkitURL\r\n var a = document.createElement('a')\r\n name = name || blob.name || 'download'\r\n\r\n a.download = name\r\n a.rel = 'noopener' // tabnabbing\r\n\r\n // TODO: detect chrome extensions & packaged apps\r\n // a.target = '_blank'\r\n\r\n if (typeof blob === 'string') {\r\n // Support regular links\r\n a.href = blob\r\n if (a.origin !== location.origin) {\r\n corsEnabled(a.href)\r\n ? download(blob, name, opts)\r\n : click(a, a.target = '_blank')\r\n } else {\r\n click(a)\r\n }\r\n } else {\r\n // Support blobs\r\n a.href = URL.createObjectURL(blob)\r\n setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s\r\n setTimeout(function () { click(a) }, 0)\r\n }\r\n }\r\n\r\n // Use msSaveOrOpenBlob as a second approach\r\n : 'msSaveOrOpenBlob' in navigator\r\n ? function saveAs (blob, name, opts) {\r\n name = name || blob.name || 'download'\r\n\r\n if (typeof blob === 'string') {\r\n if (corsEnabled(blob)) {\r\n download(blob, name, opts)\r\n } else {\r\n var a = document.createElement('a')\r\n a.href = blob\r\n a.target = '_blank'\r\n setTimeout(function () { click(a) })\r\n }\r\n } else {\r\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\r\n }\r\n }\r\n\r\n // Fallback to using FileReader and a popup\r\n : function saveAs (blob, name, opts, popup) {\r\n // Open a popup immediately do go around popup blocker\r\n // Mostly only available on user interaction and the fileReader is async so...\r\n popup = popup || open('', '_blank')\r\n if (popup) {\r\n popup.document.title =\r\n popup.document.body.innerText = 'downloading...'\r\n }\r\n\r\n if (typeof blob === 'string') return download(blob, name, opts)\r\n\r\n var force = blob.type === 'application/octet-stream'\r\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\r\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\r\n\r\n if ((isChromeIOS || (force && isSafari) || isWebKit) && typeof FileReader !== 'undefined') {\r\n // Safari doesn't allow downloading of blob URLs\r\n var reader = new FileReader()\r\n reader.onloadend = function () {\r\n var url = reader.result\r\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\r\n if (popup) popup.location.href = url\r\n else location = url\r\n popup = null // reverse-tabnabbing #460\r\n }\r\n reader.readAsDataURL(blob)\r\n } else {\r\n var URL = _global.URL || _global.webkitURL\r\n var url = URL.createObjectURL(blob)\r\n if (popup) popup.location = url\r\n else location.href = url\r\n popup = null // reverse-tabnabbing #460\r\n setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s\r\n }\r\n }\r\n)\r\n\r\n_global.saveAs = saveAs.saveAs = saveAs\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = saveAs;\r\n}\r\n","export class konsole {\r\n static displayConsole = false;\r\n\r\n static log(args):void {\r\n if(Boolean(konsole.displayConsole)){\r\n console.log(args);\r\n }\r\n }\r\n\r\n static error(error):void {\r\n if(Boolean(konsole.displayConsole)){\r\n console.error(error);\r\n }\r\n }\r\n }\r\n","declare var saveAs: any;\r\n\r\nimport 'src/app/utility/filesaver.js';\r\n\r\nexport class FileSaver {\r\n static save(blob):void {\r\n saveAs(blob, \"confirmation.txt\");\r\n }\r\n}\r\n","declare var Razorpay: any;\r\n\r\nimport 'src/app/utility/checkout.js';\r\n\r\nexport class MyRazor {\r\n static launch(options):void {\r\n let razorpay = new Razorpay(options); // as before\r\n razorpay.open();\r\n }\r\n}\r\n","module.exports = \"\"","module.exports = \"\\n\\n\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-with-header-route',\n templateUrl: './with-header-route.component.html',\n styleUrls: ['./with-header-route.component.css']\n})\nexport class WithHeaderRouteComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * In development mode, for easier debugging, you can ignore zone related error\r\n * stack frames such as `zone.run`/`zoneDelegate.invokeTask` by importing the\r\n * below file. Don't forget to comment it out in production mode\r\n * because it will have a performance impact when errors are thrown\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.log(err));\r\n"],"sourceRoot":""}