\n\n ","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { take } from 'rxjs/operators';\nimport { LoginService } from 'src/app/services/login.service';\nimport Swal from 'sweetalert2';\n\n@Component({\n selector: 'app-contactus',\n templateUrl: './contactus.component.html',\n styleUrls: ['./contactus.component.css']\n})\nexport class ContactusComponent implements OnInit {\n VALID = \"VALID\"\n loginForm: FormGroup;\n public isSubmitClicked: boolean = false;\n constructor(private fb: FormBuilder, private service: LoginService) { }\n\n ngOnInit(): void {\n this.initForm();\n }\n public get loginFormControl() { return this.loginForm.controls; }\n isValidInput(fieldName): boolean {\n return (\n this.loginForm.controls[fieldName].invalid &&\n (this.loginForm.controls[fieldName].dirty ||\n this.loginForm.controls[fieldName].touched)\n );\n }\n public submitForm(loginForm: {first; last; email; mobile; subject; message}): void {\n this.isSubmitClicked = true;\n const xyz = this.loginForm.status\n console.log(xyz)\n if(this.VALID == xyz){\n const data = {\n \"fromMtac\": true,\n \"firstName\": loginForm[\"first\"],\n \"lastName\": loginForm[\"last\"],\n \"email\": loginForm[\"email\"],\n \"mobile\": loginForm[\"mobile\"],\n \"subject\": loginForm[\"subject\"],\n \"message\": loginForm[\"message\"]\n }\n console.log(data)\n if(data){\n this.service.saveContactUs(data).pipe(take(10)).subscribe((res:any)=> {\n if(res.statusCode===1){\n console.log('success')\n \n Swal.fire( {\n position: 'center',\n icon: 'success',\n title: 'Successfully Submitted',\n showConfirmButton: false,\n timer: 2500\n })\n window.setTimeout(function(){ \n location.reload();\n } ,2500);\n }\n })\n }\n }\n\n }\n initForm(): void {\n this.loginForm = this.fb.group({\n email: ['',[Validators.required,Validators.pattern('^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$'),],],\n first: ['',[Validators.required],],\n message: ['', Validators.required],\n last:[''],\n mobile:[''],\n subject:['']\n });\n }\n\n\n}\n","
\n\n
\n\n\n
\n
\n
\n
\n\n \n\n
\n
\n \n \n\n
\n
\n
\n \n \n\n
\n
\n
\n \n \n\n
\n
\n
\n \n \n\n
\n
\n
\n \n \n\n
\n \n\n
\n
\n\n\n\n
\n
\n
\n
\n
Your compact solution that\n glides you ahead of the curve.
\n
What MTacPro is all about.
\n \n
Making the switch to a clever and smooth\n MTacPro is really effortless.\n Go beyond conventional measurement and take the steps that will generate real business value. MTacPro is\n designed to be scalable and sustainable for all business needs alike.
\n
\n
\n
\n \n \n\n
\n\n
\n
\n\n
\n\n\n\n\n\n\n
\n
\n\n
\n\n\n \n
\n
\n
\n
\n
\n
Need assitance with MTacPro? We'll get you the help you need. Get in touch with\n us now !
\n
\n
\n
\n\n
\n
\n
\n
\n \n \n
\n
\n\n
\n \n
\n\n
\n
\n
\n
Take actions that make an impact. Providing services\n for all to grow and prosper.
\n
\n
\n
Contact us
\n
connect@manteio.in
\n
+91 9391385170
\n
The Platina, B-605,\n Gachibowli, Telangana 500032
\n
\n
\n
Powered by
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
© Copyright 2020. All rights\n reserved.
\n
\n\n\n\n\n
\n
\n
\n\n\n
\n
\n
\n\n\n\n\n
\n
\n
\n
\n
\n\n\n\n
\n
\n
\n\n\n
\n
\n
\n\n\n
\n
\n
\n\n\n
\n
\n
\n\n\n
\n
\n
\n\n\n\n\n
\n
\n
\n\n","import { Component, OnInit } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport {GetappointmentsService} from '../../../getappointments.service'\nimport { NgxSpinnerService } from \"ngx-spinner\";\n@Component({\n selector: 'app-customer-requests',\n templateUrl: './customer-requests.component.html',\n styleUrls: ['./customer-requests.component.css']\n})\nexport class CustomerRequestsComponent implements OnInit {\n\n public dtOptions: any = {};\npublic showTable: boolean = false;\n getReqests:[];\n startDate:string;\n endDate:string;\n requestFilter1: string;\n requestFilter2: string;\n userName: string;\n clientId: any;\n constructor(private user:GetappointmentsService,private SpinnerService: NgxSpinnerService) {\n \n }\n\n getcustRequest()\n {\n this.showTable = false;\n this.user\n .getReqests()\n .pipe(take(1))\n .subscribe((data: any) => {\n\n this.getReqests = data;\n this.requestFilter1=\"show\";\n this.requestFilter2=\"hide\";\n this.showTable = true;\n this.SpinnerService.hide();\n console.log(data);\n });\n }\n getStartDate(startDate :string,)\n {\n this.startDate=startDate;\n \n }\n \n getEndDate(endDate :string,)\n {\n this.endDate=endDate;\n \n \n }\n \n getFilterdData( )\n {\n this.SpinnerService.show();\n this.requestFilter1=\"hide\";\n this.requestFilter2=\"show\";\n this.showTable=false;\n this.user\n .getFilterdCustomerRequsts(this.startDate,this.endDate)\n .pipe(take(1))\n .subscribe((data: any) => {\n this.showTable=true;\n this.getReqests = data;\n this.SpinnerService.hide();\n console.log(data);\n });\n }\n\n //get back to review from filters \n requestClearFilter()\n {\n this.requestFilter1=\"show\";\n this.requestFilter2=\"hide\";\n (
$(\"#demo-7\")).modal('hide');\n this.getcustRequest();\n }\n ngOnInit(): void {\n this.userName = localStorage.getItem(\"usernamek\");\n this.user.getClientId();\n this.clientId = localStorage.getItem(\"ClientId\");\n this.getcustRequest();\n this.SpinnerService.show();\n\n this.dtOptions = {\n pagingType: 'full_numbers',\n pageLength: 5,\n lengthMenu : [ 5, 10, 25, 50, 100],\n processing: true,\n dom:\n \"<'row'<'col-sm-6'i><'col-sm-6'f>>\" +\n \"<'row'<'col-sm-12'tr>>\" +\n \"<'row'<'col-sm-4'l><'col-sm-8'p>>\" +\n \"<'row'<'col-sm-6'B>>\",\n buttons: [\n 'excel', 'print',\n {\n extend:'pdfHtml5',\n text:'Pdf',\n orientation:'landscape',\n \n }],\n };\n\n }\n\n }\n"," \n\n
\n
\n
\n
Enquiry From {{userName}} Website \n
\n\n
\n
Filter \n
\n Clear Filter \n
\n
\n
\n\n \n \n Id \n First Name \n Last Name \n Phone Number \n Email \n Message \n Enquired on \n \n \n \n \n\n {{list.id}} \n {{list.firstName}} \n {{list.lastName}} \n {{list.mobile.substr(0, 3) + '-' + list.mobile.substr(3, 3) + '-' + list.mobile.substr(6, 4)}} \n {{list.email}} \n {{list.message}} \n {{list.createdOn | date:'MM-dd-yyyy'}} \n \n \n
\n
\n
\n
\n
\n
\n\n \n Please Wait.
\n \n \n","import { Component, OnInit } from '@angular/core';\nimport {CustomersService} from '../../../app/customers.service';\nimport {CustomerData} from './customerss'\nimport { take } from 'rxjs/operators';\nimport { NgxSpinnerService } from \"ngx-spinner\";\n@Component({\n selector: 'app-customers',\n templateUrl: './customers.component.html',\n styleUrls: ['./customers.component.css']\n})\nexport class CustomersComponent implements OnInit {\n public dtOptions: any = {};\n public showTable: boolean = false;\n customerData: Array=[]\n customerHistory:[];\n startDate:string;\n endDate:string;\n customerFilter1: string;\n customerFilter2: string;\n constructor(private user:CustomersService,private SpinnerService: NgxSpinnerService) {\n\n \n }\ngetCustomers()\n{\n this.showTable = false;\n this.user.getdata().pipe(take(1)).subscribe((data:any) =>{\n console.warn(data)\n this.customerData=data;\n \n this.showTable = true;\n this.customerFilter1=\"hide\";\n this.customerFilter2=\"show\";\n this.SpinnerService.hide();\n /*\n let xyz = document.getElementById(\"xyz\").innerHTML;\n document.getElementById(\"xyz\").innerHTML =\n xyz.replace(\"-\", \"\").replace(\"-\", \"\");\n console.log(xyz)\n */\n // this.user.getdata().pipe(take(1)).subscribe((data:Array) =>{\n // console.warn(data)\n // this.customerData=data;\n // this.showTable = true;\n\n});\n}\n\n GetAppointmentsByCustomerId(customerId :number):void {\n this.user.getCustomerAppointmentHistory(customerId).pipe(take(1)).subscribe((data:any) =>{\n this.customerHistory=data;\n this.showTable = true;\n console.log(data);\n })\n}\n public ngOnInit(): void {\n this.customerFilter1=\"hide\";\n this.customerFilter2=\"show\";\n this.getCustomers();\n this.SpinnerService.show();\n\n this.dtOptions = {\n pagingType: 'full_numbers',\n pageLength: 5,\n lengthMenu : [ 5, 10, 25, 50, 100],\n processing: true,\n dom:\n \"<'row'<'col-sm-6'i><'col-sm-6'f>>\" +\n \"<'row'<'col-sm-12'tr>>\" +\n \"<'row'<'col-sm-4'l><'col-sm-8'p>>\" +\n \"<'row'<'col-sm-6'B>>\",\n buttons: [\n 'excel', 'print',\n{\n extend:'pdfHtml5',\n text:'Pdf',\n orientation:'landscape',\n \n}],\n };\n }\n\n getStartDate(startDate :string,)\n {\n this.startDate=startDate;\n\n \n }\n\n getEndDate(endDate :string,)\n {\n this.endDate=endDate;\n\n \n }\n //get back to customers from filters \n customerfromFilter()\n {\n this.customerFilter1=\"hide\";\n this.customerFilter2=\"show\";\n ($(\"#demo-7\")).modal('hide');\n this.getCustomers();\n }\n getFilterdData( )\n {\n this.SpinnerService.show();\n this.showTable=false;\n this.user\n .getFilterdDataCustomers(this.startDate,this.endDate)\n .pipe(take(1))\n .subscribe((data: any) => {\n this.showTable=true;\n this.customerFilter1=\"show\";\n this.customerFilter2=\"hide\";\n this.customerData=data;\n this.SpinnerService.hide();\n console.log(data);\n });\n }\n}\n","\n \n \n\n\n\n
\n
\n \n
\n
Customer Details \n
\n Filter \n \n\n
\n Clear Filter \n
\n
\n\n
\n
\n
\n \n \n \n First Name \n Last Name \n Mobile \n Email \n Year \n Make \n Model \n History \n \n \n \n \n {{customerdatas.firstName}} \n {{customerdatas.lastName}} \n {{customerdatas.phoneNo}} \n {{customerdatas.email}} \n {{customerdatas.vechileManufacturingYear}} \n {{customerdatas.vechileBrand}} \n {{customerdatas.vechileModel}} \n View \n \n \n
\n
\n
\n\n\n
\n
\n\n\n\n\n\n
\n
\n
\n
\n \n
\n
Customer Services History \n \n\n
\n
\n \n \n Ticket Id \n First Name \n Last Name \n Mobile \n Email \n Year \n Make \n Model \n Last Serviceon \n Services Done \n \n \n \n \n {{data.appointmentId}} \n {{data.firstName}} \n {{data.lastName}} \n {{data.phoneNo}} \n {{data.email}} \n {{data.vechileManufacturingYear}} \n {{data.vechileBrand}} \n {{data.vechileModel}} \n {{data.dropOffDate | date:'yyyy-MM-dd'}} \n {{data.serviceRequested}},{{data.additionalServices}} \n \n \n
\n
\n
\n
\n
\n
\n\n Please Wait.
\n \n\n \n \n","import { Component, OnInit } from '@angular/core';\nimport { GetappointmentsService } from '../../../getappointments.service';\nimport { take } from 'rxjs/operators';\nimport { DashboardData } from '../dashboardhome/dashboard.model';\nimport {Chart} from 'chart.js';\nimport { ChartDataSets, ChartType, ChartOptions } from 'chart.js';\nimport { Label } from 'ng2-charts';\nimport { NgxSpinnerService } from \"ngx-spinner\";\nimport {FormBuilder,FormGroup,Validators,FormControl,} from '@angular/forms';\nimport{ServicesTechnicionsArray} from '../appointments/ServicesTechnicionsArray'\nimport{BindservicesTechsArray} from'../appointments/BindservicesTechsArray'\nimport swal from 'sweetalert2';\nimport { DatePipe } from '@angular/common';\n@Component({\n selector: 'app-dashboardhome',\n templateUrl: './dashboardhome.component.html',\n styleUrls: ['./dashboardhome.component.scss'],\n})\nexport class DashboardhomeComponent implements OnInit {\n\n private monthNames: Array = [];\n private totalAppiontmentcount = [];\n private monthwiseReviewRemaindercount:Array = [];\n private monthwiseServiceRemaindercount:Array = [];\n private totalReviewCount:Array = [];\n\n\n [x: string]: any;\n walkinUpdateForm: FormGroup;\n \n selectedItemsForService:[]\n selectedItemsforTech: ServicesTechnicionsArray []=[];\n bindSelected: BindservicesTechsArray []=[];\n sData :[]\n data=[];\n gettodayandinprogressappointmentsData :[];\n datacompleted = [];\n makesdata: [];\n modelsdata:[];\n Servicesdata: [];\n techsdata:[];\n // graphRequest : number;\n graphRequest1 : number;\n graphRequest2 : number;\n graphRequest3 : number;\n graphRequest4 : number;\n\n \n \n \n public visitSaleChartOptions1: ChartOptions;\n \n\n\n \n public visitSaleChartOptions2: ChartOptions;\n \n\n \n public visitSaleChartOptions3: ChartOptions;\n public visitSaleChartOptions4: ChartOptions;\n \n\n\n carInspectionList:[];\n public dtOptions: any = {};\n public dtOptionsone: any = {};\n pipe = new DatePipe('en-US');\n now = Date.now();\n\n public appointment: any = {\n appointmentId: 0,\n firstName: '',\n lastName: '',\n phoneNo: '',\n email:'',\n vechileBrand:'',\n vechileModel: '',\n vechileManufacturingYear:'',\n preferredContact:'',\n dropOffDate:'',\n dropOffTime:'',\n serviceRequestedMessage:'',\n vehicleIdentificationNumber:'',\n status:'',\n mileage:0,\n customerId:0,\n clientId:0,\n reviewStatus:'',\n createdOn:'',\n reviewRemindCount:0,\n serviceRemindCount:0,\n services:'',\n comments:[''],\n appointmentServices:[],\n appointmentFrom:''\n };\n\n \n barChartOptions: ChartOptions = {\n responsive: true,\n scales: { xAxes: [{}], yAxes: [{ ticks: {\n min: 0,\n max: 300,\n }}] },\n };\n barChartLabels: Label[] = [];\n barChartType: ChartType = 'bar';\n barChartLegend = true;\n barChartPlugins = [];\n barChartData: ChartDataSets[] = [\n { data: [10, 20, 30, 50, 700, 80, 100], label: 'Company A' },\n ];\n\n public dashboardData: DashboardData = {\n totalcustomersCount: 0,\n totalReviewCount: 0,\n serviceReminderCount: 0,\n reviewReminderCount: 0,\n monthWiseReviewsAndAppointment:[],\n };\n \n\n barchart: any;\n month: any;\n constructor(private user: GetappointmentsService,private SpinnerService: NgxSpinnerService,private fb: FormBuilder) {\n this.walkinUpdateForm = this.fb.group({\n appointmentId: [''],\n firstName: ['',Validators.compose([Validators.required, Validators.minLength(3),Validators.maxLength(50)])],\n lastName: [''],\n phoneNo: ['',[Validators.required, Validators.pattern(\"^((\\\\+91-?)|0)?[0-9]{10}$\")]],\n email:['',Validators.compose([Validators.required,Validators.email,Validators.pattern(\"^[a-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,4}$\")])],\n vechileBrand: ['',Validators.required],\n vechileModel: ['',Validators.required],\n vechileManufacturingYear: ['',Validators.required],\n preferredContact: ['',Validators.required],\n dropOffDate :['',Validators.required],\n dropOffTime: ['',Validators.required],\n status: [''],\n customerId:[''],\n createdOn:[''],\n clientId: [''],\n reviewRemindCount:[''],\n // serviceRemindCount:[''],\n reviewStatus: [''],\n appointmentFrom:'',\n mileage:[0, [Validators.required, Validators.pattern(\"^[0-9]*$\")]],\n comments:[''],\n VehicleIdentificationNumber:['',Validators.compose([Validators.required, Validators.minLength(17)])],\n services:[this.selectedItemsForService]\n });\n\n\n \n \n }\n\n \n getAllServices()\n {\n this.user\n .getServices()\n .pipe(take(1))\n .subscribe((data: any) => {\n \n this.Servicesdata = data;\n \n });\n }\ngetAllTechnicions()\n{\n this.user\n .getTechnicions( )\n .pipe(take(1))\n .subscribe((data: any) => {\n\n this.techsdata = data;\n \n });\n}\n getAllMakes()\n {\n this.user\n .getmake()\n .pipe(take(1))\n .subscribe((data: any) => {\n\n this.makesdata = data;\n \n });\n }\n getModels( id :number)\n {\n this.SpinnerService.show()\n this.user\n .getModelsById(id)\n .pipe(take(1))\n .subscribe((data: any) => {\n \n this.modelsdata = data;\n this.SpinnerService.hide()\n \n });\n }\n AppointmentStatus(status :string,)\n{\n if(status===\"6\")\n {\nthis.WalkinUpdate();\n }\n\n else{\n \n }\n}\n public VechileStatus(id: string): string{\n switch(id) {\n case \"1\": {\n return 'Confirmed'\n break;\n\n }\n case \"2\": {\n\n return 'Technician Assigned'\n break;\n\n }\n case \"3\": {\n\n return 'IN-Progress'\n break;\n\n }\n case \"4\": {\n\n return 'Work Done-Technician'\n break;\n\n }\n case \"5\": {\n\n return 'Confirmed by Supervisor'\n break;\n \n }\n case \"6\": {\n\n return 'Pickup Scheduled'\n break;\n \n }\n case \"7\": {\n\n return 'Cancelled'\n break;\n \n }\n case \"8\": {\n\n return 'Re-scheduled'\n break;\n \n }\n case \"9\": {\n\n return 'Accepted'\n break;\n \n }\n }\n\n }\n closepopup() {\n\n window.location.reload();\n }\n // appointment chat\n\ngetchartnumber1(id: number){\n this.graphRequest1 = id;\n this.populateChart1(this.dashboardData);\n}\nprivate populateChart1(chartData1: any) {\n\n const AppointmnetsData = [];\n this.totalAppiontmentcount = this.appointmentsData;\n this.visitSaleChartLabels1 = [];\nif(this.graphRequest1==null)\n{\nthis.graphRequest1=3\n}\n\nif(this.graphRequest1==3)\n{\nchartData1.threeMonths.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels1;\n AppointmnetsData.push(_.totalAppiontmentcount);\n this.visitSaleChartLabels1.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest1==6)\n{\nchartData1.sixMonths.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels1;\n AppointmnetsData.push(_.totalAppiontmentcount);\n this.visitSaleChartLabels1.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest1==11)\n{\nchartData1.yeartoDate.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels1;\n AppointmnetsData.push(_.totalAppiontmentcount);\n this.visitSaleChartLabels1.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest1==12)\n{\nchartData1.oneYear.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels1;\n AppointmnetsData.push(_.totalAppiontmentcount);\n this.visitSaleChartLabels1.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest1==36)\n{\nchartData1.threeYears.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels1;\n AppointmnetsData.push(_.totalAppiontmentcount);\n this.visitSaleChartLabels1.push(_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\n\nelse if(this.graphRequest1==40)\n{\nchartData1.maxYears.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels1;\n AppointmnetsData.push(_.totalAppiontmentcount);\n this.visitSaleChartLabels1.push(_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\n\n\nvar option = {\n showLines: true,\n legend: {\n display: false\n }\n};\n this.visitSaleChartData1 = [\n {\n label: \"Appiontments\",\n data: AppointmnetsData,\n maxBarThickness:8,\n categoryPercentage: 0.2\n },\n \n \n ];\n this.visitSaleChartOptions1 = {\n responsive: true,\n legend: {\n display: false\n },\n scales: {\n yAxes: [\n {\n gridLines: {\n drawBorder: true,\n color: \"#c4cade\", \n zeroLineColor: \"#606c91\",\n },\n ticks: {\n padding: 10,\n fontColor: \"black\",\n fontSize:14,\n beginAtZero : true,\n /*\n min:0,\n stepSize:0.2,\n lineHeight: 1,\n maxTicksLimit:11,\n suggestedMax:100,\n */\n min:0,\n stepSize:0.2,\n lineHeight:1,\n maxTicksLimit:6,\n suggestedMax:100,\n },\n },\n \n ],\n xAxes: [\n {\n gridLines: {\n display: false,\n drawBorder: true,\n color: \"#606c91\",\n zeroLineColor: \"rgba(235,237,242,1)\",\n },\n ticks: {\n padding: 10,\n fontColor: \"black\",\n fontSize:14\n\n\n },\n },\n ],\n },\n };\n\n this.visitSaleChartColors1 = [\n { backgroundColor:[ \"#3cb371\",\n \"#0000FF\",\n \"#9966FF\",\n \"#4C4CFF\",\n \"#00FFFF\",\n \"#f990a7\",\n \"#aad2ed\",\n \"#FF00FF\",\n \"Blue\",\n \"Red\",\n \"Blue\"],borderColor:\"#CFD9DF\" },\n { backgroundColor: [ \"#3cb371\",\n \"#0000FF\",\n \"#9966FF\",\n \"#4C4CFF\",\n \"#00FFFF\",\n \"#f990a7\",\n \"#aad2ed\",\n \"#FF00FF\",\n \"Blue\",\n \"Red\",\n \"Blue\"],borderColor: \"rgba(54, 162, 235, 1)\" },\n ];\n\n}\n\n\n// reminder chat\n\n\n\ngetchartnumber2(id: number){\n this.graphRequest2 = id;\n this.populateChart2(this.dashboardData);\n}\nprivate populateChart2(chartData1: any) {\n \n const serviceRemindersData = [];\n this.monthwiseServiceRemaindercount = this.remindersData;\n this.visitSaleChartLabels2 = [];\nif(this.graphRequest2==null)\n{\nthis.graphRequest2=3\n}\n\nif(this.graphRequest2==3)\n{\nchartData1.threeMonths.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels2;\n serviceRemindersData.push(_.monthwiseServiceRemaindercount);\n this.visitSaleChartLabels2.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest2==6)\n{\nchartData1.sixMonths.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels2;\n serviceRemindersData.push(_.monthwiseServiceRemaindercount);\n this.visitSaleChartLabels2.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest2==11)\n{\nchartData1.yeartoDate.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels2;\n serviceRemindersData.push(_.monthwiseServiceRemaindercount);\n this.visitSaleChartLabels2.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest2==12)\n{\nchartData1.oneYear.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels2;\n serviceRemindersData.push(_.monthwiseServiceRemaindercount);\n this.visitSaleChartLabels2.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest2==36)\n{\nchartData1.threeYears.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels2;\n serviceRemindersData.push(_.monthwiseServiceRemaindercount);\n this.visitSaleChartLabels2.push(_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\n\nelse if(this.graphRequest2==40)\n{\nchartData1.maxYears.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels2;\n serviceRemindersData.push(_.monthwiseServiceRemaindercount);\n this.visitSaleChartLabels2.push(_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\n\n\n\n this.visitSaleChartData2 = [\n {\n label: \"Service Reminders\",\n data: serviceRemindersData,\n maxBarThickness:8,\n categoryPercentage: 0.2\n },\n ];\n this.visitSaleChartOptions2 = {\n responsive: true,\n legend: {\n display: false\n },\n scales: {\n yAxes: [\n {\n gridLines: {\n drawBorder: true,\n color: \"#c4cade\",\n zeroLineColor: \"#606c91\",\n },\n \n ticks: {\n padding: 10,\n fontColor: \"black\",\n fontSize:14,\n beginAtZero : true,\n min:0,\n stepSize:0.2,\n lineHeight:1,\n maxTicksLimit:6,\n suggestedMax:100,\n\n },\n },\n ],\n xAxes: [\n {\n gridLines: {\n display: false,\n drawBorder: true,\n color: \"#606c91\",\n zeroLineColor: \"rgba(235,237,242,1)\",\n },\n ticks: {\n padding: 10,\n fontColor: \"black\",\n fontSize:14\n\n\n },\n },\n ],\n },\n };\n\n this.visitSaleChartColors2 = [\n { backgroundColor:[ \n \"#4C4CFF\",\n \"#f990a7\",\n \"#aad2ed\",\n \"#FF00FF\",\n \"#3cb371\",\n \"#0000FF\",\n \"#9966FF\",\n \n \"#00FFFF\",\n \"Blue\",\n \"Red\",\n \"Blue\"],borderColor:\"#CFD9DF\" },\n { backgroundColor: [ \"#f990a7\",\n \"#aad2ed\",\n \"#FF00FF\",\n \"#3cb371\",\n \"#0000FF\",\n \"#9966FF\",\n \"#4C4CFF\",\n \"#00FFFF\",\n \"Blue\",\n \"Red\",\n \"Blue\"],borderColor: \"rgba(54, 162, 235, 1)\" },\n ];\n\n}\n\n\n\ngetchartnumber3(id: number){\n this.graphRequest3 = id;\n this.populateChart3(this.dashboardData);\n}\nprivate populateChart3(chartData1: any) {\n const reviewsData = [];\n this.totalReviewCount = this.reviewData;\n this.visitSaleChartLabels3 = [];\nif(this.graphRequest3==null)\n{\nthis.graphRequest3=3\n}\n\nif(this.graphRequest3==3)\n{\nchartData1.threeMonths.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels3;\n reviewsData.push(_.reviewsCounts.totalCount);\n this.visitSaleChartLabels3.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest3==6)\n{\nchartData1.sixMonths.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels3;\n reviewsData.push(_.reviewsCounts.totalCount);\n this.visitSaleChartLabels3.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest3==11)\n{\nchartData1.yeartoDate.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels3;\n reviewsData.push(_.reviewsCounts.totalCount);\n this.visitSaleChartLabels3.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest3==12)\n{\nchartData1.oneYear.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels3;\n reviewsData.push(_.reviewsCounts.totalCount);\n this.visitSaleChartLabels3.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest3==36)\n{\nchartData1.threeYears.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels3;\n reviewsData.push(_.totalReviewCount.totalCount);\n this.visitSaleChartLabels3.push(_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\n\nelse if(this.graphRequest3==40)\n{\nchartData1.maxYears.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels3;\n reviewsData.push(_.totalReviewCount.totalCount);\n this.visitSaleChartLabels3.push(_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\n\n\n\n this.visitSaleChartData3 = [\n {\n label: \"Reviews\",\n data: reviewsData,\n maxBarThickness:8,\n categoryPercentage: 0.2\n },\n ];\n this.visitSaleChartOptions3 = {\n responsive: true,\n legend: {\n display: false\n },\n scales: {\n yAxes: [\n {\n gridLines: {\n drawBorder: true,\n color: \"#c4cade\", \n zeroLineColor: \"#606c91\",\n },\n ticks: {\n padding: 10,\n fontColor: \"black\",\n fontSize:14,\n beginAtZero : true,\n min:0,\n stepSize:0.2,\n lineHeight: 1,\n maxTicksLimit:6,\n suggestedMax:100,\n\n },\n },\n ],\n xAxes: [\n {\n gridLines: {\n display: false,\n drawBorder: true,\n color: \"#606c91\",\n zeroLineColor: \"rgba(235,237,242,1)\",\n },\n ticks: {\n padding: 10,\n fontColor: \"black\",\n fontSize:14\n\n\n },\n },\n ],\n },\n };\n\n this.visitSaleChartColors3 = [\n { backgroundColor:[ \"#f990a7\", \"Red\",\"#3cb371\",\n \"#0000FF\",\n \"#9966FF\",\n \"#4C4CFF\",\n \"#00FFFF\",\n \n \"#aad2ed\",\n \"#FF00FF\",\n \"Blue\",\n \"Blue\"],borderColor:\"#CFD9DF\" },\n { backgroundColor: [ \"Red\",\"#3cb371\",\n \"#0000FF\",\n \"#9966FF\",\n \"#4C4CFF\",\n \"#00FFFF\",\n \"#f990a7\",\n \"#aad2ed\",\n \"#FF00FF\",\n \"Blue\",\n \"Blue\"],borderColor: \"rgba(54, 162, 235, 1)\" },\n ];\n\n}\n\ngetchartnumber4(id: number){\n this.graphRequest4 = id;\n this.populateChart4(this.dashboardData);\n}\nprivate populateChart4(chartData1: any) {\n const reviewsRemindersData = [];\n this.monthwiseReviewRemaindercount = this.reviewReminderData;\n this.visitSaleChartLabels4 = [];\nif(this.graphRequest4==null)\n{\nthis.graphRequest4=3\n}\n\nif(this.graphRequest4==3)\n{\nchartData1.threeMonths.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels4;\n reviewsRemindersData.push(_.monthwiseReviewRemaindercount);\n this.visitSaleChartLabels4.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest4==6)\n{\nchartData1.sixMonths.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels4;\n reviewsRemindersData.push(_.monthwiseReviewRemaindercount);\n this.visitSaleChartLabels4.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest4==11)\n{\nchartData1.yeartoDate.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels4;\n reviewsRemindersData.push(_.monthwiseReviewRemaindercount);\n this.visitSaleChartLabels4.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest4==12)\n{\nchartData1.oneYear.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels4;\n reviewsRemindersData.push(_.monthwiseReviewRemaindercount);\n this.visitSaleChartLabels4.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest4==36)\n{\nchartData1.threeYears.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels4;\n reviewsRemindersData.push(_.monthwiseReviewRemaindercount);\n this.visitSaleChartLabels4.push(_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\n\nelse if(this.graphRequest4==40)\n{\nchartData1.maxYears.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels4;\n reviewsRemindersData.push(_.monthwiseReviewRemaindercount);\n this.visitSaleChartLabels4.push(_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\n\n\n\n this.visitSaleChartData4 = [\n {\n label: \"Reviews Reminders\",\n data: reviewsRemindersData,\n maxBarThickness:8,\n categoryPercentage: 0.2\n },\n ];\n this.visitSaleChartOptions4 = {\n responsive: true,\n legend: {\n display: false\n },\n scales: {\n yAxes: [\n {\n gridLines: {\n drawBorder: true,\n color: \"#c4cade\", \n zeroLineColor: \"#606c91\",\n },\n ticks: {\n padding: 10,\n fontColor: \"black\",\n fontSize:14,\n beginAtZero : true,\n min:0,\n stepSize:0.2,\n lineHeight:1,\n maxTicksLimit:6,\n suggestedMax:100,\n\n },\n },\n ],\n xAxes: [\n {\n gridLines: {\n display: false,\n drawBorder: true,\n color: \"#606c91\",\n zeroLineColor: \"rgba(235,237,242,1)\",\n },\n ticks: {\n padding: 10,\n fontColor: \"black\",\n fontSize:14\n\n\n },\n },\n ],\n },\n };\n\n this.visitSaleChartColors4 = [\n { backgroundColor:[ \" #22ffff\", \"#3cb371\",\n \"#0000FF\",\n \"#9966FF\",\n \"#4C4CFF\",\n \"#00FFFF\",\n \"#f990a7\",\n \"#aad2ed\",\n \"#FF00FF\",\n \"Blue\",\n \"Red\",\n \"Blue\"],borderColor:\"#CFD9DF\" },\n { backgroundColor: [ \"#3cb371\",\n \"#0000FF\",\n \"#9966FF\",\n \"#4C4CFF\",\n \"#00FFFF\",\n \"#f990a7\",\n \"#aad2ed\",\n \"#FF00FF\",\n \"Blue\",\n \"Red\",\n \"Blue\"],borderColor: \"rgba(54, 162, 235, 1)\" },\n ];\n\n}\n\n\n\n\n\n\n\n // view appoinments\n GetAppointmentviewById( appointmentId :number)\n {\n this.SpinnerService.show();\n this.user\n .getAppointmentById(appointmentId)\n .pipe(take(1))\n .subscribe((data: any) => {\n // this.selectedItemsForService=this.appointment.appointmentServices.appointmentId;\n//console.log(this.selectedItemsForService);\n \n this.appointment = data;\n this.SpinnerService.hide();\n \n });\n }\n//get Appointment by Id\nGetAppointmentById( appointmentId :number)\n{\n this.appointment = null;\n this.SpinnerService.show();\n this.user\n .getAppointmentById(appointmentId)\n .pipe(take(1))\n .subscribe((data: any) => {\n \n this.appointment = data;\n let dateFormat = this.pipe.transform(this.appointment.dropOffDate, 'yyyy-MM-dd');\n this.walkinUpdateForm.controls['firstName'].setValue(this.appointment.firstName);\n this.walkinUpdateForm.controls['lastName'].setValue(this.appointment.lastName);\n this.walkinUpdateForm.controls['phoneNo'].setValue(this.appointment.phoneNo);\n this.walkinUpdateForm.controls['email'].setValue(this.appointment.email);\n this.walkinUpdateForm.controls['vechileBrand'].setValue(this.appointment.vechileBrand);\n this.walkinUpdateForm.controls['vechileModel'].setValue(this.appointment.vechileModel);\n this.walkinUpdateForm.controls['vechileManufacturingYear'].setValue(this.appointment.vechileManufacturingYear);\n this.walkinUpdateForm.controls['preferredContact'].setValue(this.appointment.preferredContact);\n this.walkinUpdateForm.controls['dropOffDate'].setValue(dateFormat);\n this.walkinUpdateForm.controls['dropOffTime'].setValue(this.appointment.dropOffTime);\n this.walkinUpdateForm.controls['status'].setValue(this.appointment.status);\n this.walkinUpdateForm.controls['appointmentId'].setValue(this.appointment.appointmentId);\n this.walkinUpdateForm.controls['customerId'].setValue(this.appointment.customerId);\n this.walkinUpdateForm.controls['clientId'].setValue(this.appointment.clientId);\n this.walkinUpdateForm.controls['reviewRemindCount'].setValue(this.appointment.reviewRemindCount);\n // this.walkinUpdateForm.controls['serviceRemindCount'].setValue(this.appointment.serviceRemindCount);\n this.walkinUpdateForm.controls['reviewStatus'].setValue(this.appointment.reviewStatus);\n this.walkinUpdateForm.controls['createdOn'].setValue(this.appointment.createdOn);\n this.walkinUpdateForm.controls['mileage'].setValue(this.appointment.mileage);\n this.walkinUpdateForm.controls['VehicleIdentificationNumber'].setValue(this.appointment.vehicleIdentificationNumber);\n this.walkinUpdateForm.controls['appointmentFrom'].setValue(this.appointment.appointmentFrom);\n this.walkinUpdateForm.controls['comments'].setValue(this.appointment.comments);\n\n // this.bindSelected= [];\nthis.bindSelected.length = 0;\n\n if(this.appointment.appointmentServices!==null)\n {\n this.appointment.appointmentServices.forEach(element => {\n let selectedService: any = this.Servicesdata.find((_: any) => _.serviceId === element.serviceId);\n let techName: any = this.techsdata.find((_: any) => _.userId ===element.technicianId);\n selectedService.isCheched = true;\n this.bindSelected.push({ServiceId:selectedService.serviceId,TechnicianId:techName.userId,TechnicianName:techName.userName,ServiceName:selectedService.serviceName,RemoveId:''});\n \n });\n \n }\n this.SpinnerService.hide();\n \n });\n}\n getserviceId(e:any, id:number,servicename:string){\n\n if(e.target.checked){\n \n \n \n this.selectedItemsforTech.push({ServiceId: id, TechnicianId:0,TechnicianName:'',ServiceName:servicename,RemoveId:id.toString()}); //to add when checked\n this.bindSelected.push({ServiceId: id,TechnicianId:0,TechnicianName:'', ServiceName: servicename,RemoveId:id.toString()}); //to add item when checked and adding serviceid as string in RemoveId\n\n\n }else{\n \n \n\n // this.selectedItemsForService = this.selectedItemsForService.filter(item => item.ServiceId !== id);//to remove when uncheked\n this.selectedItemsforTech = this.selectedItemsforTech.filter(item => item.ServiceId !== id); // to remove unchked item when technicion changed\n this.bindSelected = this.bindSelected.filter(item => item.ServiceId !== id);//to remove service when uncheked\n \n }\n\n /// console.log(this.selectedItemsForService);\n \n\n }\n getTechId(technitionId :string,serviceId:number,serviceName:string)\n {\n \n \n if (this.selectedItemsforTech.find((x: ServicesTechnicionsArray) => x.ServiceId === serviceId)) {\n \n this.selectedItemsforTech = this.selectedItemsforTech.filter(item => item.RemoveId !== serviceId.toString());//if service id already exist then to update technicion id remove this item\n this.selectedItemsforTech = this.selectedItemsforTech.filter(item => item.ServiceId !== serviceId);//if service id already exist then to update technicion id remove this item\n \n }\n\n let techName: any = this.techsdata.find((_: any) => _.userId.toString() ===technitionId);\n \n \n \n this.selectedItemsforTech.push({ServiceId:serviceId , TechnicianId : parseInt (technitionId), TechnicianName:techName.userName,ServiceName:serviceName,RemoveId:''});//add same item deleted above with new techncion id\n \n }\n\n getTechId2(technitionId :string,serviceId:number,serviceName:string,TechnicianName:string)\n {\n if (this.bindSelected.find((x: BindservicesTechsArray) => x.ServiceId === serviceId)) {\n \n this.bindSelected = this.bindSelected.filter(item => item.ServiceId !== serviceId);//if service id already exist then to update technicion id remove this item\n \n }\n this.bindSelected = this.bindSelected.filter(item => item.RemoveId !== serviceId.toString());//to remove same service having serviceId string //double services so deleting 1 having string\n let techName: any = this.techsdata.find((_: any) => _.userId.toString() ===technitionId);\n this.bindSelected.push({ServiceId:serviceId , TechnicianId :parseInt(technitionId) ,TechnicianName:techName.userName,ServiceName:serviceName,RemoveId:''});//\n \n \n \n \n \n }\n public get walkinUpdateFormControl() { return this.walkinUpdateForm.controls; }\n\n WalkinUpdate() : void{\n this.SpinnerService.show();\n const data = {\n appointmentId: this.walkinUpdateFormControl[\"appointmentId\"].value,\n firstName: this.walkinUpdateFormControl[\"firstName\"].value,\n lastName: this.walkinUpdateFormControl[\"lastName\"].value,\n phoneNo: this.walkinUpdateFormControl[\"phoneNo\"].value,\n email: this.walkinUpdateFormControl[\"email\"].value,\n vechileBrand: this.walkinUpdateFormControl[\"vechileBrand\"].value,\n vechileModel: this.walkinUpdateFormControl[\"vechileModel\"].value,\n vechileManufacturingYear: this.walkinUpdateFormControl[\"vechileManufacturingYear\"].value,\n preferredContact: this.walkinUpdateFormControl[\"preferredContact\"].value,\n dropOffDate :this.walkinUpdateFormControl[\"dropOffDate\"].value,\n dropOffTime :this.walkinUpdateFormControl[\"dropOffTime\"].value,\n AssignTechnicians: this.bindSelected,\n status: this.walkinUpdateFormControl[\"status\"].value,\n mileage: this.walkinUpdateFormControl[\"mileage\"].value,\n VehicleIdentificationNumber: this.walkinUpdateFormControl[\"VehicleIdentificationNumber\"].value,\n customerId: this.walkinUpdateFormControl[\"customerId\"].value,\n clientId: this.walkinUpdateFormControl[\"clientId\"].value,\n reviewRemindCount: this.walkinUpdateFormControl[\"reviewRemindCount\"].value,\n // serviceRemindCount :this.walkinUpdateFormControl[\"serviceRemindCount\"].value,\n reviewStatus :this.walkinUpdateFormControl[\"reviewStatus\"].value,\n AppointmentFrom :this.walkinUpdateFormControl[\"appointmentFrom\"].value,\n Comments :this.walkinUpdateFormControl[\"comments\"].value,\n createdOn:this.walkinUpdateFormControl[\"createdOn\"].value,\n }\n console.log(data,\"dashboard update\");\n if (data) {\n this.user\n .WalkinAppointmentAddandUpdate(data)\n .pipe(take(1))\n .subscribe((res: any) => {\n if (res.statusCode=== 1){\n this.SpinnerService.hide();\n // this.user.getallactiveappointments().subscribe((data: any) => {\n // console.warn(data)\n // this.getallactiveappointmentsdata =data;\n // this.showTable=true;\n // })\n \n \n swal.fire(\n 'Success',\n 'Appointment Updated Succesfully.',\n 'success'\n );\n \n // ($(\"#demo_update\")).modal('hide');\n \n this.walkinUpdateForm.reset();\n window.location.reload();\n \n }\n else{\n if (res.statusCode!==1){\n swal.fire(\n 'Cancelled!',\n 'Please enter valid details',\n 'error'\n );\n // window.alert('Please enter valied details');\n }\n }\n });\n }\n }\n public ngOnInit(): void {\n this.SpinnerService.show();\n this.user.getClientId();\n this.getAllMakes();\n this.getAllServices();\n this.getAllTechnicions();\n this.user\n .dashboarddata()\n .pipe(take(1))\n .subscribe((data: DashboardData) => {\n this.dashboardData = data;\n console.log( this.dashboardData);\n \n this.populateChart1(this.dashboardData);\n this.populateChart2(this.dashboardData);\n this.populateChart3(this.dashboardData);\n this.populateChart4(this.dashboardData);\n this.getchartnumber2(3);\n });\n \n // APPOINMENT TABLE GET CALL\n this.user.gettodayandinprogressappointments().subscribe((data: any) => {\n \n this.gettodayandinprogressappointmentsData=data;\n this.SpinnerService.hide();\n })\n \n \n \n jQuery(document).ready(function() {\n // click on next button\n jQuery('.form-wizard-next-btn').click(function() {\n var parentFieldset = jQuery(this).parents('.wizard-fieldset');\n var currentActiveStep = jQuery(this).parents('.form-wizard').find('.form-wizard-steps .active');\n var next = jQuery(this);\n var nextWizardStep = true;\n parentFieldset.find('.wizard-required').each(function(){\n var thisValue = jQuery(this).val();\n \n if( thisValue == \"\") {\n jQuery(this).siblings(\".wizard-form-error\").slideDown();\n nextWizardStep = false;\n }\n else {\n jQuery(this).siblings(\".wizard-form-error\").slideUp();\n }\n });\n if( nextWizardStep) {\n next.parents('.wizard-fieldset').removeClass(\"show\");\n currentActiveStep.removeClass('active').addClass('activated').next().addClass('active');\n next.parents('.wizard-fieldset').next('.wizard-fieldset').addClass(\"show\");\n jQuery(document).find('.wizard-fieldset').each(function(){\n if(jQuery(this).hasClass('show')){\n var formAtrr = jQuery(this).attr('data-tab-content');\n jQuery(document).find('.form-wizard-steps .form-wizard-step-item').each(function(){\n if(jQuery(this).attr('data-attr') == formAtrr){\n jQuery(this).addClass('active');\n var innerWidth = jQuery(this).innerWidth();\n var position = jQuery(this).position();\n jQuery(document).find('.form-wizard-step-move').css({\"left\": position.left, \"width\": innerWidth});\n }else{\n jQuery(this).removeClass('active');\n }\n });\n }\n });\n }\n });\n //click on previous button\n jQuery('.form-wizard-previous-btn').click(function() {\n var counter = parseInt(jQuery(\".wizard-counter\").text());;\n var prev =jQuery(this);\n var currentActiveStep = jQuery(this).parents('.form-wizard').find('.form-wizard-steps .active');\n prev.parents('.wizard-fieldset').removeClass(\"show\");\n prev.parents('.wizard-fieldset').prev('.wizard-fieldset').addClass(\"show\");\n currentActiveStep.removeClass('active').prev().removeClass('activated').addClass('active');\n jQuery(document).find('.wizard-fieldset').each(function(){\n if(jQuery(this).hasClass('show')){\n var formAtrr = jQuery(this).attr('data-tab-content');\n jQuery(document).find('.form-wizard-steps .form-wizard-step-item').each(function(){\n if(jQuery(this).attr('data-attr') == formAtrr){\n jQuery(this).addClass('active');\n var innerWidth = jQuery(this).innerWidth();\n var position = jQuery(this).position();\n jQuery(document).find('.form-wizard-step-move').css({\"left\": position.left, \"width\": innerWidth});\n }else{\n jQuery(this).removeClass('active');\n }\n });\n }\n });\n });\n //click on form submit button\n jQuery(document).on(\"click\",\".form-wizard .form-wizard-submit\" , function(){\n var parentFieldset = jQuery(this).parents('.wizard-fieldset');\n var currentActiveStep = jQuery(this).parents('.form-wizard').find('.form-wizard-steps .active');\n parentFieldset.find('.wizard-required').each(function() {\n var thisValue = jQuery(this).val();\n if( thisValue == \"\" ) {\n jQuery(this).siblings(\".wizard-form-error\").slideDown();\n }\n else {\n jQuery(this).siblings(\".wizard-form-error\").slideUp();\n }\n });\n });\n // focus on input field check empty or not\n jQuery(\".form-control\").on('focus', function(){\n var tmpThis = jQuery(this).val();\n if(tmpThis == '' ) {\n jQuery(this).parent().addClass(\"focus-input\");\n }\n else if(tmpThis !='' ){\n jQuery(this).parent().addClass(\"focus-input\");\n }\n }).on('blur', function(){\n var tmpThis = jQuery(this).val();\n if(tmpThis == '' ) {\n jQuery(this).parent().removeClass(\"focus-input\");\n jQuery(this).siblings('.wizard-form-error').slideDown(\"3000\");\n }\n else if(tmpThis !='' ){\n jQuery(this).parent().addClass(\"focus-input\");\n jQuery(this).siblings('.wizard-form-error').slideUp(\"3000\");\n }\n });\n });\n \n // this.today=new Date();\n // this.getalldata();\n // this.today=new Date();\n \n ($(document)).ready(function() {\n function filterColumn ( i: string ) {\n $('#examplepopup').DataTable().column( i ).search(\n ($('#col'+i+'_filter')).val(),\n ($('#col'+i+'_smart')).val(),\n ).draw();\n }\n $('#examplepopup').DataTable();\n $('input.column_filter').on( 'keyup click', function () {\n filterColumn( $(this).parents('tr').attr('data-column') );\n } );\n } );\n $(\"#col0_filter\").keyup(function(){\n if($(this).val()) {\n $(\"#showDiv\").show();\n } else {\n $(\"#showDiv\").hide();\n }\n });\n $(\"#col1_filter\").keyup(function(){\n if($(this).val()) {\n $(\"#showDiv\").show();\n } else {\n $(\"#showDiv\").hide();\n }\n });\n $(\"#col2_filter\").keyup(function(){\n if($(this).val()) {\n $(\"#showDiv\").show();\n } else {\n $(\"#showDiv\").hide();\n }\n });\n \n $(document).ready(function(){\n if( $('#examplepopup tr').length >= 5 ) {\n $('#examplepopup').addClass('add-scroll');\n }\n });\n \n $(document).ready(function(){\n ($(\"#smartwizard\"))\n .smartWizard({\n selected: 0,\n theme: 'dots',\n autoAdjustHeight:false,\n transitionEffect:'fade',\n showStepURLhash: false,\n \n });\n });\n \n $('.modal #demo-4').on('hidden.bs.modal', function(){\n $(this).find('form')[0].reset();\n });\n \n $('.modal').on('hidden.bs.modal', function(){\n $(this).find('form')[0].reset();\n });\n \n $('.modal demo_update').on('hidden.bs.modal', function(){\n $(this).find('form')[0].reset();\n });\n \n $('.modal #demo-2').on('hidden.bs.modal', function(){\n $(this).find('form')[0].reset();\n });\n \n // this.SpinnerService.show();\n this.dtOptions = {\n pagingType: 'full_numbers',\n pageLength: 5,\n lengthMenu : [ 5, 10, 25, 50, 100],\n order: [[ 0, 'desc' ], [ 1, 'desc' ]],\n processing: true,\n dom:\n \"<'row'<'col-sm-6'i><'col-sm-6'f>>\" +\n \"<'row'<'col-sm-12'tr>>\" +\n \"<'row'<'col-sm-4'l><'col-sm-8'p>>\" +\n \"<'row'<'col-sm-6'B>>\",\n \n //\"sDom\": 'Rfrt',\n // dom:'frtlipB',\n buttons: [\n 'excel', 'pdf', 'print'\n \n ]\n };\n \n \n //this.selectedItemsForService = new Array();\n \n this.selectedItemsforTech = new Array();\n this.bindSelected = new Array();\n \n }\n \n smartWizard(arg0: { selected: 0; theme: 'dots'; autoAdjustHeight: false; transitionEffect: 'fade'; showStepURLhash: false; }) {\n throw new Error('Method not implemented.');\n }\n }\n \n \n\n"," \r\n\r\n
\r\n
\r\n
\r\n
\r\n
Dashboard \r\n \r\n
\r\n
\r\n
Appointment Details \r\n
\r\n
\r\n \r\n \r\n Ticket ID \r\n First Name \r\n Last Name \r\n Contact Details \r\n Service Date \r\n Services Requested \r\n Additional Services \r\n Make \r\n Model \r\n \r\n Status \r\n Details \r\n\r\n \r\n \r\n \r\n \r\n {{data.appointmentId}} \r\n {{data.firstName}} \r\n {{data.lastName}} \r\n {{data.phoneNo.substr(0, 3) + '-' + data.phoneNo.substr(3, 3) + '-' + data.phoneNo.substr(6, 4)}} \r\n \r\n {{data.dropOffDate | date:'MM-dd-yyyy'}} \r\n \r\n {{data.serviceRequested}} \r\n {{data.additionalServices}} \r\n {{data.vechileBrand}} \r\n {{data.vechileModel}} \r\n \r\n {{VechileStatus(data.status)}} \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
Customers \r\n
{{dashboardData.totalcustomersCount}} \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Total Reviews \r\n
{{dashboardData.totalReviewCount}} \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Reminders \r\n
{{dashboardData.totalRemindersCount}} \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
Appointments \r\n
\r\n \r\n 3M \r\n \r\n \r\n 6M \r\n \r\n \r\n YTD \r\n \r\n \r\n 1Y \r\n \r\n \r\n 3Y \r\n \r\n \r\n MAX \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Reviews \r\n
\r\n \r\n 3M \r\n \r\n \r\n 6M \r\n \r\n \r\n YTD \r\n \r\n \r\n 1Y \r\n \r\n \r\n 3Y \r\n \r\n \r\n MAX \r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
Service Reminders \r\n\r\n
\r\n \r\n 3M \r\n \r\n \r\n 6M \r\n \r\n \r\n YTD \r\n \r\n \r\n 1Y \r\n \r\n \r\n 3Y \r\n \r\n \r\n MAX \r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Review Reminders \r\n
\r\n \r\n 3M \r\n \r\n \r\n 6M \r\n \r\n \r\n YTD \r\n \r\n \r\n 1Y \r\n \r\n \r\n 3Y \r\n \r\n \r\n MAX \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 Please Wait.
\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n
Update\r\n Appointment \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
Appointment Details \r\n
× \r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n Customer ID \r\n : {{appointment.customerId}} \r\n\r\n
\r\n\r\n
\r\n Appointment ID \r\n : {{appointment.appointmentId}} \r\n\r\n
\r\n
\r\n Appointment Type \r\n\r\n : {{appointment.appointmentFrom}} \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Name \r\n : {{appointment.firstName}} {{appointment.lastName}} \r\n\r\n
\r\n\r\n
\r\n Mobile Number \r\n : {{appointment.phoneNo}} \r\n
\r\n
\r\n Email \r\n : {{appointment.email}} \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 Year \r\n : {{appointment.vechileManufacturingYear}} \r\n
\r\n
\r\n\r\n \r\n Make \r\n : {{appointment.vechileBrand}} \r\n
\r\n
\r\n Model \r\n : {{appointment.vechileModel}} \r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n Mileage \r\n : {{appointment.mileage}} miles \r\n
\r\n
\r\n VIN \r\n : {{appointment.vehicleIdentificationNumber}} \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Services Requested: \r\n\r\n {{appointment.serviceRequested}} \r\n
\r\n
\r\n Additional Services: \r\n\r\n {{appointment.additionalServices}} \r\n
\r\n
\r\n Removed Services: \r\n\r\n {{appointment.removedServices}} \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n Drop Off Date: \r\n\r\n {{appointment.dropOffDate | date:'MM-dd-yyyy'}} \r\n
\r\n
\r\n Drop Off Time: \r\n\r\n {{appointment.dropOffTime}} \r\n
\r\n\r\n
\r\n Comments: \r\n\r\n {{appointment.comments}} \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Appointment status \r\n\r\n : {{VechileStatus(appointment.status)}} \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.css']\n})\nexport class FooterComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n
\n
\n
Take actions that make an impact. Providing services\n for all to grow and prosper.
\n
\n
\n
Contact us
\n
connect@manteio.in
\n
+91 9391385170
\n
The Platina, B-605,\n Gachibowli, Telangana 500032
\n
\n
\n
Powered by
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
© Copyright 2020. All rights reserved.
\n
","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-industries',\n templateUrl: './industries.component.html',\n styleUrls: ['./industries.component.scss']\n})\nexport class IndustriesComponent implements OnInit {\n slideConfig = { \"slidesToScroll\": 0.2, \"mobileFirst\":true, \"autoplay\":true , \"focusOnChange\": true, \"slidesPerRow\": 5, \"rows\": 2, \n \"infinite\":true, \"autoplaySpeed\": 300000, \"responsive\": []};\n constructor() { }\n\n ngOnInit(): void {\n \n }\n\n}\n","\n \n \n
\n \n\n \n \n\n \n\n\n\n \n
\n
\n
\n\n\n \n
\n \n \n
\n
\n
\n \n \n
\n \n
\n \n \n
\n \n
\n
MTacPro is tailored to suit the needs of diverse industries. MTacPro is the perfect fit for your business. Exploring and supporting all businesses from salons to mechanics and restaurants to retail.
\n
\n \n \n \n \n \n \n\n
\n \n
\n \n
\n
\n
\n
\n
Real Estate \n
Boost your credibility with published reviews and ratings. \n Manage appointments and your schedule effortlessly.
\n \n
\n
\n
\n
\n
\n
\n
\n
Professional Services \n
Eliminate scheduling back-and-forth, manage client data, boost employee productivity, \n accept online payments and automate marketing.
\n \n
\n
\n
\n
\n
\n
\n
\n
Event Planning \n
Increase engagement between customers, prospects, employees and exhibitors. \n Make valuable connections on the go
\n \n
\n
\n
\n
\n
\n
\n
\n
Financial Services \n
Manage appointments and tasks. Stay connected to the customer and increase client loyalty with MTacPro
\n \n
\n
\n
\n \n \n
\n\n \n
\n \n \n
\n
\n
\n
\n
Construction \n
MTacPro gives you eyes on the site when and where you need. \n Coordinating and managing project has never been easier
\n \n
\n
\n
\n
\n
\n
\n
\n
Automation \n
An excellent \n automatically emailing customers with invite to create an account, \n to auto-tagging orders and customers you can do it all
\n \n
\n
\n
\n
\n
\n
\n
\n
Retail \n
Add reviews and score more with your potential clients. \n Helping you manage everything you need at just your fingertips
\n \n
\n
\n
\n
\n
\n
\n
\n
Wellness \n
Offer more than just appointments. Go beyond the usual and reduce the no shows. \n Customize everything to match your brand experience
\n \n
\n
\n
\n \n
\n
\n\n \n\n
\n \n ","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-mtac',\n templateUrl: './mtac.component.html',\n styleUrls: ['./mtac.component.scss']\n})\nexport class MtacComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n\n\n }\n\n}\n","
\n
\n\n
\n\n
\n
\n
\n
Manage your Office \n from your Pocket!
\n
\n
\n
Simple, Easy and Hassle free for a Streamlined, Productive Workflow. Get ahead of the Competition.
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n\n \n
\n
\n
\n
Explore More!
\n
Go beyond measurement and take the steps that will generate real business value.\n Designed to be scalable and sustainable,\n We help you drive the action.
\n
Now manage all of your bookings through one platform . Seamless automation enables your business to run like clockwork. Enable your customers to book from anywhere. With this interactive platform you can now worry a little less and perform a lot more.
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n \n \n \n
\n
\n
Appointments
\n
\n
\n
MTacPro simplifies your notifications for every new or tallied appointment. A Smooth and glitch free experience is assured to glide your appointments effortlessly.
\n
\n With online booking system, you can easily and seamlessly take customer bookings and save time. \n Make scheduling easy for you, and your customers. Customers can book. You can accept or decline from anywhere. \n Automate your reminders and follow ups that saves time, so you can do more. \n \n
\n \n \n
\n
\n
\n \n
\n
\n
\n
\n
Reviews
\n
\n
\n
Get meaningful insights from your reviews! Give your potential clients that boost of confidence to choose you.
\n
\n Listen to every customer. Capture real-time feedback in the moments that matter. with MTacPro, you'll get a complete view of what customers are thinking and feeling. \n It is one-stop, Solution to gain valuable strategic feedback. Get the best feedback in any situation, start with the easiest to use, fastest to implement, most flexible solution. \n \n
\n
\n
\n \n \n\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n \n \n \n
\n
\n
Reminders
\n
\n
\n
Send confirmation and reminder emails and texts to improve no-show rates. Reminders to staff and clients whenever appointments are booked, Cancelled, or rescheduled.
\n
\n With push notifications on your mobile for new booking information. Never forget anything, ever again. \n Never lose track of scheduled maintenance or upcoming service dates again – our reminder systems mean that internal or service tasks never need to be forgotten. \n Build trust and keep your customers informed with MTacPro’s automated reminder mechanism. \n \n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
Reports
\n
\n
\n
Transparent analytics to see trends and check efficiency. Dig deeper into your data with filters and reports. Measure responses against industry benchmarks.
\n
\n Automatic detection surfacing, and prioritization of issues allows you to focus on other business objectives while Gaining understanding around the insights gathered from customers. \n Analyse all your reports and data briefly with interactive and comprehensive platform to boost productivity and create better strategies. \n Identify and facilitate goals with all your reports. Track the growth at your fingertips. \n \n
\n
\n
\n \n \n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
Start planning today - Do more and grow. Get ahead of the competition
\n
\n Join us \n
\n \n \n
\n
\n
\n \n
\n \n\n
\n
\n
","import { Component, OnInit } from '@angular/core';\nimport {AuthenticationService} from '../../../app/services/authentication.service';\nimport * as $ from 'jquery';\n@Component({\n selector: 'app-navbar',\n templateUrl: './navbar.component.html',\n styleUrls: ['./navbar.component.css']\n})\nexport class NavbarComponent implements OnInit {\n [x: string]: any;\n LoginData = [];\n public hitechlogo :boolean=false\n public hitechName : boolean =false\n user = this.AuthenticationService;\n constructor(private AuthenticationService: AuthenticationService) {\n this.AuthenticationService.currentUserEmail;\n this.AuthenticationService.currentUserName;\n }\n\n ngOnInit(): void {\n this.UserName =localStorage.getItem(\"usernamek\");\n if(this.UserName.toLowerCase()==\"hi-tech\")\n {\n this.hitechlogo=true;\n this.hitechName=false;\n }\n else{\n this.hitechlogo=false;\n this.hitechName=true;\n }\n $(function () {\n (
$(window)).bind(\"beforeunload\", function () {\n this.logout();\n\n })\n });\n }\n\n logout() {\n this.AuthenticationService.logout();\n}\n}\n","\n \n \n\n
\n \n \n
\n
\n\n \n\n \n","import { Component, OnInit } from '@angular/core';\nimport { RemindersService } from 'src/app/services/reminders.service';\nimport { take } from 'rxjs/operators';\nimport { NgxSpinnerService } from \"ngx-spinner\";\n\nimport swal from 'sweetalert2';\n@Component({\n selector: 'app-reminders',\n templateUrl: './reminders.component.html',\n styleUrls: ['./reminders.component.css']\n})\nexport class RemindersComponent implements OnInit {\n data=[]\n private clickedReview: any = {};\n private clickedService: any = {};\n public statusChangeAction: string;\n ReviewRemindersData: [];\n ServiceRemindersData:[];\n public showTable: boolean = false;\n public showTable1: boolean = false;\n public dtOptions: any = {};\n ClientId: any;\n\n constructor(private reminder:RemindersService,private SpinnerService: NgxSpinnerService) { }\n\n\n ngOnInit(): void {\n this.SpinnerService.show();\n // this.reminder.getClientId();\n this.dtOptions = {\n pagingType: 'full_numbers',\n pageLength: 5,\n lengthMenu : [ 5, 10, 25, 50, 100],\n processing: true,\n dom:\n \"<'row'<'col-sm-6'i><'col-sm-6'f>>\" +\n \"<'row'<'col-sm-12'tr>>\" +\n \"<'row'<'col-sm-4'l><'col-sm-8'p>>\" +\n \"<'row'<'col-sm-6'B>>\",\n buttons: [\n 'excel', 'print',\n {\n extend:'pdfHtml5',\n text:'Pdf',\n orientation:'landscape',\n \n}],\n };\n this.GetReviewReminderData();\n this.GetServiceReminderData();\n\n }\n\n \n private GetReviewReminderData():void {\n this.showTable1 = false;\n this.reminder.GetReviewReminderData().pipe(take(1)).subscribe((data:any) =>{\n console.warn(data);\n this.showTable1 = true;\n this.ReviewRemindersData=data;\n \n console.log(data);\n })\n}\nprivate GetServiceReminderData(): void{\n this.showTable = false;\n this.reminder.GetServicesReminderData().pipe(take(1)).subscribe((data:any) =>{\n console.warn(data);\n this.showTable = true;\n this.ServiceRemindersData=data;\n \n this.SpinnerService.hide();\n console.log(data);\n })\n}\n\npublic statusClick( reviewRemiander: any): void {\n this.clickedReview = reviewRemiander;\n this.statusChangeAction = reviewRemiander.status ? 'Stop' : 'Send';\n // this.modalService.open(modalContent, { backdrop: 'static', keyboard: false });\n}\n\npublic changeStatus(): void {\n \n\n this.reminder.changeReviewReminderStatus(this.clickedReview.appointmentId).pipe(take(1)).subscribe((res: any) => {\n if (res.statusCode === 1) {\n this.clickedReview.status = !this.clickedReview.status;\n swal.fire(\n 'Success',\n 'Review Reminders will '+ this.statusChangeAction+' to this Customer.',\n 'success'\n );\n }\n else{\n if (res.statusCode===2){\n swal.fire(\n 'Cancelled!',\n 'Review Reminder Not Found',\n 'warning'\n );\n }\n }\n \n });\n}\npublic statusClick1( serviceRemiander: any): void {\n this.clickedService = serviceRemiander;\n this.statusChangeAction = serviceRemiander.status ? 'Stop' : 'Send';\n // this.modalService.open(modalContent, { backdrop: 'static', keyboard: false });\n}\n\npublic changeStatus1(): void {\n \n\n this.reminder.changeServiceReminderStatus(this.clickedService.appointmentId).pipe(take(1)).subscribe((res: any) => {\n if (res.statusCode === 1) {\n this.clickedService.status = !this.clickedService.status;\n swal.fire(\n 'Success',\n 'Service Reminders will '+ this.statusChangeAction+' to this Customer.',\n 'success'\n );\n }\n else{\n if (res.statusCode===2){\n swal.fire(\n 'Cancelled!',\n 'Service Reminder Not Found',\n 'warning'\n );\n }\n // window.alert('This Email already Registred');\n }\n \n });\n}\n}\n"," \n\n
\n
\n
\n \n
\n
Reminder Details \n \n \n
\n\n \n
\n
\n
Review Reminders \n
\n
\n \n \n Name \n Phone Number \n Email \n Service Names \n Servcie Date \n Send or Stop Reminders \n \n \n \n \n\n {{list.name}} \n {{list.mobile}} \n {{list.email}} \n {{list.serviceNames}} \n {{list.lastServicedOn | date:'MM-dd-yyyy'}} \n \n \n \n \n
\n
\n
\n\n\n
\n
Service Reminders \n
\n
\n \n \n Name \n Phone Number \n Email \n Service Name \n Last Service Date \n Next Service Date \n Send or Stop Reminders \n \n \n \n \n\n {{list.name}} \n {{list.mobile}} \n {{list.email}} \n {{list.serviceName}} \n {{list.lastServicedOn | date:'MM-dd-yyyy'}} \n {{list.dueDate | date:'MM-dd-yyyy'}} \n \n \n \n \n
\n
\n
\n
\n
\n
\n
\n\n Please Wait.
\n \n\n\n \n
\n
\n \n
\n
Are you sure want to {{statusChangeAction}} Review Reminders?
\n
\n \n
\n
\n
\n\n\n \n
\n
\n \n
\n
Are you sure want to {{statusChangeAction}} Service Reminders?
\n
\n \n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { GetappointmentsService } from '../../../getappointments.service';\nimport { max, min, take } from 'rxjs/operators';\nimport { DashboardData } from '../dashboardhome/dashboard.model';\nimport {Chart} from 'chart.js';\nimport { ChartDataSets, ChartType, ChartOptions } from 'chart.js';\nimport { Label } from 'ng2-charts';\nimport {ReviewsService} from '../../../reviews.service';\nimport { RemindersService } from 'src/app/services/reminders.service';\nimport{ ReviewsData} from '../reviews/ReviewData';\nimport { NgxSpinnerService } from \"ngx-spinner\";\nimport { THIS_EXPR } from '@angular/compiler/src/output/output_ast';\n@Component({\n selector: 'app-reports',\n templateUrl: './reports.component.html',\n styleUrls: ['./reports.component.css']\n})\nexport class ReportsComponent implements OnInit {\n public showTable: boolean = false;\n public showTableReviews :boolean=false;\n public reset:string;\n public go :string;\n public SourceId:string;\n ReviewsBySource :any=[];\n public dtOptions: any = {};\n public appointment :any=[]\n rating=0;\n getReviewRemindersData: [];\n getServiceRemindersData:[];\n public ReviewData: ReviewsData = {\n reviewTotalCount: 0,\n reviewFiveCount: 0,\n reviewFourCount: 0,\n reviewThreeCount: 0,\n revieTwoCount: 0,\n reviewOneCount: 0,\n recommedationCount: 0,\n ratingAverage:0,\n allReviews:[],\n fbReviews:[],\n googleReviews:[],\n mTacReviews:[],\n otherReviews:[],\n twitterReviews:[],\n yahooReviews:[],\n yelpReviews:[]\n };\n public visitSaleChartOptions1: ChartOptions;\n public visitSaleChartOptions2: ChartOptions;\n public showTableAppointment:boolean=false;\n [x: string]: any;\n public res :any=[];\n private monthNames: Array = [];\n private totalAppiontmentcount = [];\n // private monthwiseReviewRemaindercount = [];\n private totalReviewCount:Array = [];\n private monthwiseReviewRemaindercount:Array = [];\n private monthwiseServiceRemaindercount:Array = [];\n barChartOptions: ChartOptions = {\n responsive: true,\n scales: { xAxes: [{ }], yAxes: [{ ticks: {\n min: 0,\n max: 300,\n }}] },\n };\n barChartLabels: Label[] = [];\n barChartType: ChartType = 'bar';\n barChartLegend = true;\n barChartPlugins = [];\n barChartData: ChartDataSets[] = [\n { data: [10, 20, 30, 50, 700, 80, 100], label: 'Company A' },\n ];\n public dashboardData: DashboardData = {\n totalcustomersCount: 0,\n totalReviewCount: 0,\n serviceReminderCount: 0,\n reviewReminderCount: 0,\n monthWiseReviewsAndAppointment:[],\n };\n data : any=[]\n barchart: any;\n month: any;\n constructor(private user: GetappointmentsService,private Reviews:ReviewsService,\n private SpinnerService: NgxSpinnerService,private reminder:RemindersService) {\n }\n public ngOnInit(): void {\n this.go=\"show\";\n this.reset=\"hide\";\n // this.clientId = localStorage.getItem(\"ClientId\");\n this.user.getClientId();\n window.onload=function(){\n \n document.getElementById(\"3months\").classList.add(\"gf-button\");\n \n \n };\n this.SpinnerService.show();\n this.user\n .Reportsdata()\n .pipe(take(1))\n .subscribe((data: DashboardData) => {\n console.log(data),\"Graphs Datyas\";\n this.dashboardData = data;\n this.SpinnerService.hide();\n this.populateChart1(this.dashboardData);\n this.populateChart2(this.dashboardData);\n this.populateChart3(this.dashboardData);\n this.populateChart4(this.dashboardData);\n this.GetAppoitmentsByStatus();\n this.GetReviewsBySourceId(this.SourceId);\n this.getReviews();\n this.GetReviewReminderData();\n this.GetServiceReminderData();\n });\n }\n public GetAppoitmentsByStatus():void\n {\n this.showTableAppointment=false;\n if(this.appointmentStatus===undefined|| this.appointmentStatus===\"\")\n {\n this.appointmentStatus=\"0\";\n }\n this.user.getAppointmentsByStaus(this.appointmentStatus).subscribe(res =>{\n console.log(res ,\"Appointments By status\");\n this.showTableAppointment = true; \n this.data=res;\n console.log(res)\n })\n \n }\n public ReviewStatus(sourceId):void\n {\n this.SourceId=sourceId;\n this.GetReviewsBySourceId(this.SourceId);\n }\n public GetReviewsBySourceId(sourceId):void\n {\n this.showTableReviews=false;\n \n if(this.SourceId===undefined|| this.SourceId===\"\")\n {\n this.SourceId=\"0\";\n }\n // this.data=[];\n this.user.getReviewsBySourceId(this.SourceId).subscribe(res =>{\n console.log(res ,\"reviews By sourceId\");\n this.showTableReviews = true; \n this.ReviewsBySource=res;\n this.data.reverse(); \n })\n \n }\n // view appoinments\n GetAppointmentviewById( appointmentId :number)\n {\n \n this.SpinnerService.show();\n this.user\n .getAppointmentById(appointmentId)\n .pipe(take(1))\n .subscribe((data: any) => {\n // this.selectedItemsForService=this.appointment.appointmentServices.appointmentId;\n//console.log(this.selectedItemsForService);\n\n this.appointment = data;\n console.log(this.appointment)\n });\n this.SpinnerService.hide();\n }\n\n public AppointmentStatus(Status):void\n {\n this.appointmentStatus=Status;\n this.GetAppoitmentsByStatus();\n }\n private getReviews(): void{\n this.showTableReviews=false;\n this.Reviews.getReviews().pipe(take(1)).subscribe((data:any) =>{\n this.showTableReviews = true;\n this.ReviewData=data; \n })\n }\n private GetReviewReminderData():void {\n this.showTable=false;\n this.reminder.GetReviewReminderData().pipe(take(1)).subscribe((data:any) =>{\n this.showTable = true;\n this.getReviewRemindersData=data;\n })\n}\nprivate GetServiceReminderData(): void{\n this.showTable=false;\n this.reminder.GetServicesReminderData().pipe(take(1)).subscribe((data:any) =>{\n this.showTable = true;\n this.ServiceRemindersData=data;\n this.SpinnerService.hide();\n \n })\n}\ngetStartDate(startDate :string,)\n {\n this.startDate=startDate;\n\n }\n\n getEndDate(endDate :string,)\n {\n this.endDate=endDate;\n \n }\n\n getFilterdData( ):void\n {\n this.showTableAppointment=false;\n \n this.appointmentStatus=\"0\";\n \n this.data=[];\n this.user.getAppointmentsByFilter(this.appointmentStatus,this.startDate,this.endDate).subscribe(res =>{\n console.log(res ,\"Appointments By status\");\n this.data=[];\n this.data=res;\n console.log(\"this is resuilt\",this.data);\n this.showTableAppointment = true; \n // this.go=\"hide\";\n // this.reset=\"show\";\n // this.data.reverse();\n \n })\n\n\n // this.showTableAppointment=false;\n // this.SpinnerService.show();\n // // this.user\n // // .getFilterdDataAppointments(this.startDate,this.endDate)\n // // .pipe(take(1))\n // // .subscribe((data: any) => {\n // // this.data=data;\n // // console.log(data);\n // // }); \n \n // this.res = this.data.filter(m => m.dropOffDate > this.startDate && m.dropOffDate < this.endDate);\n // this.data=[];\n // this.showTableAppointment = true; \n // this.data=this.res;\n // this.SpinnerService.hide();\n }\n //get back to appointmnets from filters \n AppoitnmentsfromFilter()\n {\n this.go=\"show\";\n this.reset=\"hide\";\nthis.startDate='';\nthis.endDate='';\n this.GetAppoitmentsByStatus();\n }\n public VechileStatus(id: string): string{\n switch(id) {\n case \"1\": {\n return 'Confirmed'\n break;\n\n }\n case \"2\": {\n\n return 'Technician Assigned'\n break;\n\n }\n case \"3\": {\n\n return 'IN-Progress'\n break;\n\n }\n case \"4\": {\n\n return 'Work Done-Technician'\n break;\n\n }\n case \"5\": {\n\n return 'Confirmed by Supervisor'\n break;\n \n }\n case \"6\": {\n\n return 'Pickup Scheduled'\n break;\n \n }\n case \"7\": {\n\n return 'Cancelled'\n break;\n \n }\n case \"8\": {\n\n return 'Re-scheduled'\n break;\n \n }\n case \"9\": {\n\n return 'Accepted'\n break;\n \n }\n }\n\n }\n \n // appointment chat\n\ngetchartnumber1(id: number){\n this.graphRequest1 = id;\n this.populateChart1(this.dashboardData);\n}\nprivate populateChart1(chartData1: any) {\n \n const salesData = [];\n this.visitSaleChartLabels1 = [];\nif(this.graphRequest1==null)\n{\nthis.graphRequest1=3\n}\n\nif(this.graphRequest1==3)\n{\nchartData1.threeMonths.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels1;\n salesData.push(_.totalAppiontmentcount);\n this.visitSaleChartLabels1.push(_.monthName+' '+_.year);\n\n});\n}\nelse if(this.graphRequest1==6)\n{\nchartData1.sixMonths.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels1;\n salesData.push(_.totalAppiontmentcount);\n this.visitSaleChartLabels1.push(_.monthName+' '+_.year);\n\n});\n}\nelse if(this.graphRequest1==11)\n{\nchartData1.yeartoDate.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels1;\n salesData.push(_.totalAppiontmentcount);\n this.visitSaleChartLabels1.push(_.monthName+' '+_.year);\n\n});\n}\nelse if(this.graphRequest1==12)\n{\nchartData1.oneYear.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels1;\n salesData.push(_.totalAppiontmentcount);\n this.visitSaleChartLabels1.push(_.monthName+' '+_.year);\n\n});\n}\nelse if(this.graphRequest1==36)\n{\nchartData1.threeYears.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels1;\n salesData.push(_.totalAppiontmentcount);\n this.visitSaleChartLabels1.push(_.year);\n\n});\n}\n\nelse if(this.graphRequest1==40)\n{\nchartData1.maxYears.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels1;\n salesData.push(_.totalAppiontmentcount);\n this.visitSaleChartLabels1.push(_.year);\n\n});\n}\n\n\n\n this.visitSaleChartData1 = [\n {\n label: \"Appiontments\",\n data: salesData,\n maxBarThickness:6,\n categoryPercentage: 1\n },\n ];\n this.visitSaleChartOptions1 = {\n responsive: true,\n legend: {\n display: false\n },\n scales: {\n yAxes: [\n {\n gridLines: {\n display:true,\n drawBorder: true,\n color: \"#c4cade\",\n zeroLineColor: \"#606c91\"\n },\n ticks: {\n padding: 10,\n fontColor: \"black\",\n fontSize:14,\n beginAtZero : true,\n min:0,\n stepSize:0.2,\n lineHeight: 1,\n maxTicksLimit:11,\n suggestedMax:100,\n suggestedMin:10,\n autoSkip:false,\n \n },\n },\n ],\n xAxes: [\n {\n gridLines: {\n display: false,\n drawBorder: true,\n color: \"#606c91\",\n zeroLineColor: \"rgba(235,237,242,1)\",\n },\n ticks: {\n padding: 10,\n fontColor: \"black\",\n fontSize:14,\n \n\n },\n },\n ],\n },\n };\n\n this.visitSaleChartColors1 = [\n { backgroundColor:[ \"#3cb371\",\n \"#0000FF\",\n \"#9966FF\",\n \"#4C4CFF\",\n \"#00FFFF\",\n \"#f990a7\",\n \"#aad2ed\",\n \"#FF00FF\",\n \"Blue\",\n \"Red\",\n \"Blue\"],borderColor:\"#CFD9DF\" },\n { backgroundColor: [ \"#3cb371\",\n \"#0000FF\",\n \"#9966FF\",\n \"#4C4CFF\",\n \"#00FFFF\",\n \"#f990a7\",\n \"#aad2ed\",\n \"#FF00FF\",\n \"Blue\",\n \"Red\",\n \"Blue\"],borderColor: \"rgba(54, 162, 235, 1)\" },\n ];\n\n}\n\n// reminder chat\n\n\n\ngetchartnumber2(id: number){\n this.graphRequest2 = id;\n this.populateChart2(this.dashboardData);\n}\nprivate populateChart2(chartData1: any) {\n \n const serviceRemindersData = [];\n \n this.visitSaleChartLabels2 = [];\nif(this.graphRequest2==null)\n{\nthis.graphRequest2=3\n}\n\nif(this.graphRequest2==3)\n{\nchartData1.threeMonths.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels2;\n serviceRemindersData.push(_.monthwiseServiceRemaindercount);\n this.visitSaleChartLabels2.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest2==6)\n{\nchartData1.sixMonths.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels2;\n serviceRemindersData.push(_.monthwiseServiceRemaindercount);\n this.visitSaleChartLabels2.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest2==11)\n{\nchartData1.yeartoDate.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels2;\n serviceRemindersData.push(_.monthwiseServiceRemaindercount);\n this.visitSaleChartLabels2.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest2==12)\n{\nchartData1.oneYear.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels2;\n serviceRemindersData.push(_.monthwiseServiceRemaindercount);\n this.visitSaleChartLabels2.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest2==36)\n{\nchartData1.threeYears.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels2;\n serviceRemindersData.push(_.monthwiseServiceRemaindercount);\n this.visitSaleChartLabels2.push(_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\n\nelse if(this.graphRequest2==40)\n{\nchartData1.maxYears.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels2;\n serviceRemindersData.push(_.monthwiseServiceRemaindercount);\n this.visitSaleChartLabels2.push(_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\n\n\n\n this.visitSaleChartData2 = [\n {\n label: \"Service Remainers\",\n data: serviceRemindersData,\n maxBarThickness:6,\n categoryPercentage: 0.2\n },\n ];\n this.visitSaleChartOptions2 = {\n responsive: true,\n legend: {\n display: false\n },\n scales: {\n yAxes: [\n {\n gridLines: {\n drawBorder: true,\n color: \"#c4cade\",\n zeroLineColor: \"#606c91\",\n },\n ticks: {\n padding: 10,\n fontColor: \"black\",\n fontSize:14,\n beginAtZero : true,\n min:0,\n stepSize:0.2,\n lineHeight: 1,\n maxTicksLimit:11,\n suggestedMax:100,\n\n },\n },\n ],\n xAxes: [\n {\n gridLines: {\n display: false,\n drawBorder: true,\n color: \"#606c91\",\n zeroLineColor: \"rgba(235,237,242,1)\",\n },\n ticks: {\n padding: 10,\n fontColor: \"black\",\n fontSize:14\n\n\n },\n },\n ],\n },\n };\n\n this.visitSaleChartColors2 = [\n { backgroundColor:[ \n \"#4C4CFF\",\n \"#f990a7\",\n \"#aad2ed\",\n \"#FF00FF\",\n \"#3cb371\",\n \"#0000FF\",\n \"#9966FF\",\n \n \"#00FFFF\",\n \"Blue\",\n \"Red\",\n \"Blue\"],borderColor:\"#CFD9DF\" },\n { backgroundColor: [ \"#f990a7\",\n \"#aad2ed\",\n \"#FF00FF\",\n \"#3cb371\",\n \"#0000FF\",\n \"#9966FF\",\n \"#4C4CFF\",\n \"#00FFFF\",\n \"Blue\",\n \"Red\",\n \"Blue\"],borderColor: \"rgba(54, 162, 235, 1)\" },\n ];\n\n}\n\n\ngetchartnumber3(id: number){\n this.graphRequest3 = id;\n this.populateChart3(this.dashboardData);\n}\nprivate populateChart3(chartData1: any) {\n const reviewsData = [];\n\n this.visitSaleChartLabels3 = [];\nif(this.graphRequest3==null)\n{\nthis.graphRequest3=3\n}\n\nif(this.graphRequest3==3)\n{\nchartData1.threeMonths.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels3;\n reviewsData.push(_.reviewsCounts.totalCount);\n this.visitSaleChartLabels3.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest3==6)\n{\nchartData1.sixMonths.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels3;\n reviewsData.push(_.reviewsCounts.totalCount);\n this.visitSaleChartLabels3.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest3==11)\n{\nchartData1.yeartoDate.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels3;\n reviewsData.push(_.reviewsCounts.totalCount);\n this.visitSaleChartLabels3.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest3==12)\n{\nchartData1.oneYear.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels3;\n reviewsData.push(_.reviewsCounts.totalCount);\n this.visitSaleChartLabels3.push(_.monthName+' '+_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\nelse if(this.graphRequest3==36)\n{\nchartData1.threeYears.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels3;\n reviewsData.push(_.totalReviewCount.totalCount);\n this.visitSaleChartLabels3.push(_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\n\nelse if(this.graphRequest3==40)\n{\nchartData1.maxYears.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels3;\n reviewsData.push(_.totalReviewCount.totalCount);\n this.visitSaleChartLabels3.push(_.year);\n//});\n// chartData.yearWiseCustomers.forEach((_) => {\n});\n}\n\n\n\n this.visitSaleChartData3 = [\n {\n label: \"Reviews\",\n data: reviewsData,\n maxBarThickness:6,\n categoryPercentage: 0.2\n },\n ];\n this.visitSaleChartOptions3 = {\n responsive: true,\n legend: {\n display: false\n },\n scales: {\n yAxes: [\n {\n gridLines: {\n drawBorder: true,\n color: \"#c4cade\",\n zeroLineColor: \"#606c91\",\n },\n ticks: {\n padding: 10,\n fontColor: \"black\",\n fontSize:14,\n beginAtZero : true,\n min:0,\n stepSize:0.2,\n lineHeight: 1,\n maxTicksLimit:11,\n suggestedMax:100,\n\n },\n },\n ],\n xAxes: [\n {\n gridLines: {\n display: false,\n drawBorder: true,\n color: \"#606c91\",\n zeroLineColor: \"rgba(235,237,242,1)\",\n },\n ticks: {\n padding: 10,\n fontColor: \"black\",\n fontSize:14\n\n\n },\n },\n ],\n },\n };\n\n this.visitSaleChartColors3 = [\n { backgroundColor:[ \"#f990a7\", \"Red\",\"#3cb371\",\n \"#0000FF\",\n \"#9966FF\",\n \"#4C4CFF\",\n \"#00FFFF\",\n \n \"#aad2ed\",\n \"#FF00FF\",\n \"Blue\",\n \"Blue\"],borderColor:\"#CFD9DF\" },\n { backgroundColor: [ \"Red\",\"#3cb371\",\n \"#0000FF\",\n \"#9966FF\",\n \"#4C4CFF\",\n \"#00FFFF\",\n \"#f990a7\",\n \"#aad2ed\",\n \"#FF00FF\",\n \"Blue\",\n \"Blue\"],borderColor: \"rgba(54, 162, 235, 1)\" },\n ];\n\n}\n\ngetchartnumber4(id: number){\n this.graphRequest4 = id;\n this.populateChart4(this.dashboardData);\n}\nprivate populateChart4(chartData1: any) {\n const reviewsRemindersData = [];\n \n this.visitSaleChartLabels4 = [];\nif(this.graphRequest4==null)\n{\nthis.graphRequest4=3\n}\n\nif(this.graphRequest4==3)\n{\nchartData1.threeMonths.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels4;\n reviewsRemindersData.push(_.monthwiseReviewRemaindercount);\n this.visitSaleChartLabels4.push(_.monthName+' '+_.year);\n\n});\n}\nelse if(this.graphRequest4==6)\n{\nchartData1.sixMonths.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels4;\n reviewsRemindersData.push(_.monthwiseReviewRemaindercount);\n this.visitSaleChartLabels4.push(_.monthName+' '+_.year);\n\n});\n}\nelse if(this.graphRequest4==11)\n{\nchartData1.yeartoDate.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels4;\n reviewsRemindersData.push(_.monthwiseReviewRemaindercount);\n this.visitSaleChartLabels4.push(_.monthName+' '+_.year);\n\n});\n}\nelse if(this.graphRequest4==12)\n{\nchartData1.oneYear.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels4;\n reviewsRemindersData.push(_.monthwiseReviewRemaindercount);\n this.visitSaleChartLabels4.push(_.monthName+' '+_.year);\n\n});\n}\nelse if(this.graphRequest4==36)\n{\nchartData1.threeYears.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels4;\n reviewsRemindersData.push(_.monthwiseReviewRemaindercount);\n this.visitSaleChartLabels4.push(_.year);\n\n});\n}\n\nelse if(this.graphRequest4==40)\n{\nchartData1.maxYears.forEach((_) => {\n this.monthNames = this.visitSaleChartLabels4;\n reviewsRemindersData.push(_.monthwiseReviewRemaindercount);\n this.visitSaleChartLabels4.push(_.year);\n\n});\n}\n\n\n\n this.visitSaleChartData4 = [\n {\n label: \"Reviews Reminders\",\n data: reviewsRemindersData,\n maxBarThickness:6,\n categoryPercentage: 0.2\n },\n ];\n this.visitSaleChartOptions4 = {\n responsive: true,\n legend: {\n display: false\n },\n scales: {\n yAxes: [\n {\n gridLines: {\n drawBorder: true,\n color: \"#c4cade\", \n zeroLineColor: \"#606c91\",\n },\n ticks: {\n padding: 10,\n fontColor: \"black\",\n fontSize:14,\n beginAtZero : true,\n min:0,\n stepSize:0.2,\n lineHeight: 1,\n maxTicksLimit:11,\n suggestedMax:100,\n\n },\n },\n ],\n xAxes: [\n {\n gridLines: {\n display: false,\n drawBorder: true,\n color: \"#606c91\",\n zeroLineColor: \"rgba(235,237,242,1)\",\n },\n ticks: {\n padding: 10,\n fontColor: \"black\",\n fontSize:14\n\n\n },\n },\n ],\n },\n };\n\n this.visitSaleChartColors4 = [\n { backgroundColor:[ \" #22ffff\", \"#3cb371\",\n \"#0000FF\",\n \"#9966FF\",\n \"#4C4CFF\",\n \"#00FFFF\",\n \"#f990a7\",\n \"#aad2ed\",\n \"#FF00FF\",\n \"Blue\",\n \"Red\",\n \"Blue\"],borderColor:\"#CFD9DF\" },\n { backgroundColor: [ \"#3cb371\",\n \"#0000FF\",\n \"#9966FF\",\n \"#4C4CFF\",\n \"#00FFFF\",\n \"#f990a7\",\n \"#aad2ed\",\n \"#FF00FF\",\n \"Blue\",\n \"Red\",\n \"Blue\"],borderColor: \"rgba(54, 162, 235, 1)\" },\n ];\n\n}\n}\n"," \n\n
\n
\n
\n \n
\n
Report Details \n \n \n
\n\n\n\n
\n
\n
\n
\n
\n
Appointments \n
\n \n 3M \n \n \n 6M \n \n \n YTD \n \n \n 1Y \n \n \n 3Y \n \n \n MAX \n \n \n\n
\n\n
\n\n
\n
\n
\n\n
\n
\n\n
\n
\n
Appointments History \n \n
\n\n
\n
\n
\n
\n
\n
\n From \n
\n
\n \n\n
\n
\n\n \n
\n
\n
\n
\n To \n
\n
\n \n\n
\n\n
\n\n \n
\n
\n
\n\n
\n\n
\n
\n
\n Select Status : \n
\n
\n \n Accepted \n Confirmed \n Technician Assigned \n IN-Progress \n Work Done-Technician \n Confirmed by Supervisor \n Pickup Scheduled \n Cancelled \n Re-schedule \n All Appointments \n \n
\n
\n\n\n
\n
\n\n
\n
\n \n \n Ticket Id \n First Name \n Last Name \n Phone Number \n Service Date \n Make \n Model \n \n Details \n\n \n \n \n \n {{datas.appointmentId}} \n {{datas.firstName}} \n {{datas.lastName}} \n {{datas.phoneNo}} \n {{datas.dropOffDate | date:'MM-dd-yyyy'}} \n {{datas.vechileBrand}} \n {{datas.vechileModel}} \n \n \n \n \n \n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
Reviews \n
\n \n 3M \n \n \n 6M \n \n \n YTD \n \n \n 1Y \n \n \n 3Y \n \n \n MAX \n \n \n
\n
\n
\n\n
\n
\n
Reviews \n
\n
\n\n
\n
\n
\n
\n Select Source : \n
\n
\n \n\n MTac \n FaceBook \n Twitter \n Google \n Yelp \n Others \n Yahoo \n All Reviews \n\n \n
\n
\n
\n\n
\n
\n
\n
\n \n
\n
\n
\n\n
\n\n
\n
\n
\n \n \n Date \n Name \n Email \n Rating \n Review \n Comment \n \n \n \n \n {{ReviewDatas.dateofService | date:'MM-dd-yyyy'}} \n {{ReviewDatas.firstName}} {{ReviewDatas.lastName}} \n {{ReviewDatas.email}} \n \n {{ReviewDatas.review}} \n {{ReviewDatas.comment}} \n \n \n
\n
\n
\n\n
\n
\n
\n\n
\n
\n
\n
\n
Review Reminders \n
\n \n 3M \n \n \n 6M \n \n \n YTD \n \n \n 1Y \n \n \n 3Y \n \n \n MAX \n \n \n\n
\n\n
\n
\n\n
\n
\n
Review Reminders \n
\n
\n
\n \n
\n
\n
\n\n
\n\n
\n
\n
\n \n \n Name \n Phone Number \n Email \n Service Name \n Servcie Date \n \n \n \n \n {{list.name}} \n {{list.mobile}} \n {{list.email}} \n {{list.serviceNames}} \n {{list.lastServicedOn | date:'MM-dd-yyyy'}} \n \n \n
\n
\n
\n
\n
\n\n\n
\n
\n
\n
Service Reminders \n
\n \n 3M \n \n \n 6M \n \n \n YTD \n \n \n 1Y \n \n \n 3Y \n \n \n MAX \n \n \n\n
\n
\n
\n\n
\n
\n\n
Service Reminders \n
\n
\n
\n \n
\n
\n
\n\n
\n
\n
\n
\n\n \n \n Name \n Phone Number \n Email \n Service Name \n Last Service Date \n Next Service Date \n\n\n \n \n \n \n\n {{list.name}} \n {{list.mobile}} \n {{list.email}} \n {{list.serviceName}} \n {{list.lastServicedOn | date:'MM-dd-yyyy'}} \n {{list.dueDate | date:'MM-dd-yyyy'}} \n \n \n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n\n Please Wait.
\n \n \n\n \n\n \n\n \n\n \n \n
\n
\n
Appointment Details \n
× \n
\n
\n\n\n
\n
\n Customer ID \n : {{appointment.customerId}} \n\n
\n\n
\n Appointment ID \n : {{appointment.appointmentId}} \n\n
\n
\n Appointment Type \n\n : {{appointment.appointmentFrom}} \n
\n\n
\n
\n
\n
\n Name \n : {{appointment.firstName}} {{appointment.lastName}} \n\n
\n\n
\n Mobile Number \n : {{appointment.phoneNo}} \n
\n
\n Email \n : {{appointment.email}} \n
\n\n\n\n\n
\n\n\n\n
\n\n\n
\n
\n Year \n : {{appointment.vechileManufacturingYear}} \n
\n
\n\n \n Make \n : {{appointment.vechileBrand}} \n
\n
\n Model \n : {{appointment.vechileModel}} \n
\n\n
\n\n\n
\n\n
\n Mileage \n : {{appointment.mileage}} miles \n
\n
\n VIN \n : {{appointment.vehicleIdentificationNumber}} \n
\n
\n\n
\n
\n
\n Services Requested \n\n : {{appointment.serviceRequested}} \n
\n
\n Additional Services \n\n : {{appointment.additionalServices}} \n
\n
\n Removed Services \n\n : {{appointment.removedServices}} \n
\n
\n\n
\n\n
\n Service Date \n\n : {{appointment.dropOffDate | date:'MM-dd-yyyy'}} \n
\n
\n Drop Off Time \n\n : {{appointment.dropOffTime}} \n
\n\n
\n Comments \n\n : {{appointment.comments}} \n
\n
\n
\n
\n
\n Appointment status \n\n : {{VechileStatus(appointment.status)}} \n
\n
\n
\n\n\n\n\n
\n
\n
\n
\n\n\n\n","import { Component, OnInit } from '@angular/core';\nimport {ReviewsService} from '../../../reviews.service';\nimport { take } from 'rxjs/operators';\nimport{ ReviewsData} from './ReviewData'\nimport { NgxSpinnerService } from \"ngx-spinner\";\nimport swal from 'sweetalert2';\nimport {GetappointmentsService} from '../../../getappointments.service'\n@Component({\n selector: 'app-reviews',\n templateUrl: './reviews.component.html',\n styleUrls: ['./reviews.component.css']\n})\nexport class ReviewsComponent implements OnInit {\n private clickedReview: any = {};\n public statusChangeAction: string;\n rating=0;\n public dtOptions: any = {};\n public dtOptionsOthers: any = {};\npublic showTable: boolean = false;\nstartDate:string;\nendDate:string;\nreviewFilter1: string;\nreviewFilter2: string;\npublic ReviewData: ReviewsData = {\n reviewTotalCount: 0,\n reviewFiveCount: 0,\n reviewFourCount: 0,\n reviewThreeCount: 0,\n revieTwoCount: 0,\n reviewOneCount: 0,\n recommedationCount: 0,\n ratingAverage:0,\n allReviews:[],\n fbReviews:[],\n googleReviews:[],\n mTacReviews:[],\n otherReviews:[],\n twitterReviews:[],\n yahooReviews:[],\n yelpReviews:[]\n};\n clientId: string;\n constructor(private user:ReviewsService,private SpinnerService: NgxSpinnerService,private app:GetappointmentsService) {\n\n }\n showShortDesciption = true\n alterDescriptionText() {\n this.showShortDesciption = !this.showShortDesciption\n }\n public ngOnInit(): void {\n // this.user.getClientId();\n this.clientId = localStorage.getItem(\"ClientId\");\n this.dtOptions = {\n pagingType: 'full_numbers',\n pageLength: 5,\n lengthMenu : [ 5, 10, 25, 50, 100],\n processing: true,\n dom:\n \"<'row'<'col-sm-6'i><'col-sm-6'f>>\" +\n \"<'row'<'col-sm-12'tr>>\" +\n \"<'row'<'col-sm-4'l><'col-sm-8'p>>\" +\n \"<'row'<'col-sm-6'B>>\",\n buttons: [\n 'excel', 'print',\n {\n extend:'pdfHtml5',\n text:'Pdf',\n orientation:'landscape',\n \n }],\n \n \n columnDefs: [{\n targets: [5],\n createdCell: function(cell) {\n var $cell = $(cell);\n\n\n $(cell).contents().wrapAll(\"
\");\n var $content = $cell.find(\".content\");\n\n $(cell).append($(\"Read more \"));\n const $btn = $(cell).find(\"button\");\n\n $content.css({\n \"height\": \"46px\",\n \"overflow\": \"hidden\"\n })\n $btn.css({\n \"height\": \"20px\",\n \"font-size\": \"11px\",\n \"border\": \"none\",\n \"background\": \"#211E50\",\n \"color\":\"#fff\",\n \"float\": \"right\",\n \"margin-top\": \"5px\",\n\n })\n $cell.data(\"isLess\", true);\n\n $btn.click(function() {\n var isLess = $cell.data(\"isLess\");\n $content.css(\"height\", isLess ? \"auto\" : \"46px\")\n $(this).text(isLess ? \"Read less\" : \"Read more\")\n $cell.data(\"isLess\", !isLess)\n })\n }\n }]\n };\n\n\n this.dtOptionsOthers = {\n pagingType: 'full_numbers',\n pageLength: 5,\n lengthMenu : [ 5, 10, 25, 50, 100],\n processing: true,\n dom:\n \"<'row'<'col-sm-6'i><'col-sm-6'f>>\" +\n \"<'row'<'col-sm-12'tr>>\" +\n \"<'row'<'col-sm-4'l><'col-sm-8'p>>\" +\n \"<'row'<'col-sm-6'B>>\",\n buttons: [\n 'excel', 'print',\n {\n extend:'pdfHtml5',\n text:'Pdf',\n orientation:'landscape',\n \n}],\n columnDefs: [{\n targets: [6],\n createdCell: function(cell) {\n var $cell = $(cell);\n\n\n $(cell).contents().wrapAll(\"
\");\n var $content = $cell.find(\".content\");\n\n $(cell).append($(\"Read more \"));\n const $btn = $(cell).find(\"button\");\n\n $content.css({\n \"height\": \"46px\",\n \"overflow\": \"hidden\"\n })\n $btn.css({\n \"height\": \"20px\",\n \"font-size\": \"11px\",\n \"border\": \"none\",\n \"background\": \"#211E50\",\n \"color\":\"#fff\",\n \"float\": \"right\",\n \"margin-top\": \"5px\",\n\n })\n $cell.data(\"isLess\", true);\n\n $btn.click(function() {\n var isLess = $cell.data(\"isLess\");\n $content.css(\"height\", isLess ? \"auto\" : \"46px\")\n $(this).text(isLess ? \"Read less\" : \"Read more\")\n $cell.data(\"isLess\", !isLess)\n })\n }\n }]\n };\n this.getReviews();\n }\n getStartDate(startDate :string,)\n {\n this.startDate=startDate;\n }\n \n getEndDate(endDate :string,)\n {\n this.endDate=endDate; \n }\n getFilterdData( )\n {\n this.SpinnerService.show();\n this.showTable=false;\n this.user\n .FilteredReviews(this.startDate,this.endDate)\n .pipe(take(1))\n .subscribe((data: any) => {\n this.showTable=true;\n this.reviewFilter1=\"hide\";\n this.reviewFilter2=\"show\";\n this.ReviewData=data;\n \n this.SpinnerService.hide();\n console.log(data);\n });\n }\n private getReviews(): void{\nthis.SpinnerService.show();\nthis.showTable = false;\n this.user.getReviews().pipe(take(1)).subscribe((data:any) =>{\n console.warn(data);\n this.ReviewData=data;\n \n this.reviewFilter1=\"show\";\n this.reviewFilter2=\"hide\";\n this.showTable = true;\n console.log(data);\n this.SpinnerService.hide();\n })\n }\n //get back to review from filters \n reviewClearFilter()\n {\n this.reviewFilter1=\"show\";\n this.reviewFilter2=\"hide\";\n ($(\"#demo-7\")).modal('hide');\n this.getReviews();\n }\n public statusClick( review: any): void {\n this.clickedReview = review;\n this.statusChangeAction = review.reviewStatus ? 'De-activate' : 'Activate';\n // this.modalService.open(modalContent, { backdrop: 'static', keyboard: false });\n }\n \n public changeStatus(): void {\n \n \n this.user.changeUserStatus(this.clickedReview.reviewId).pipe(take(1)).subscribe((res: any) => {\n if (res.statusCode === 1) {\n this.clickedReview.reviewStatus = !this.clickedReview.reviewStatus;\n swal.fire(\n 'Success',\n 'Review '+this.statusChangeAction+' Succesfull.',\n 'success'\n );\n }\n else{\n if (res.statusCode===2){\n swal.fire(\n 'Cancelled!',\n 'Review Not Found',\n 'warning'\n );\n }\n // window.alert('This Email already Registred');\n }\n \n });\n }\n\n public getSocialMediaImg(mediaId: number): string{\n switch(mediaId) {\n case 1: {\n return 'http://mtacpro.com/assets/images/logo-crop.png'\n break;\n\n }\n case 2: {\n return 'https://www.facebook.com/images/fb_icon_325x325.png'\n\n break;\n\n }\n case 3: {\n return 'https://logosvector.net/wp-content/uploads/2015/09/google-plus-new-icon-logo.png'\n break;\n\n }\n case 4: {\n return 'https://cdn2.iconfinder.com/data/icons/metro-uinvert-dock/256/Twitter_NEW.png'\n break;\n\n }\n case 5: {\n return 'https://cdn.iconscout.com/icon/premium/png-256-thumb/review-59-918101.png'\n \n break;\n\n }\n case 6: {\n return 'https://png.pngtree.com/png-clipart/20190613/original/pngtree-yahoo-purple-icon-png-image_3591532.jpg'\n\n break;\n }\n \n case 7: {\n return 'https://cdn3.iconfinder.com/data/icons/popular-services-brands/512/yelp-512.png'\n\n break;\n }\n }\n }\n \n public getSocialMediaName(mediaId: number): string{\n switch(mediaId) {\n case 1: {\n return 'MTac'\n break;\n\n }\n case 2: {\n return 'Facebook'\n\n break;\n\n }\n case 3: {\n return 'Google'\n break;\n\n }\n case 4: {\n return 'Twitter'\n break;\n\n }\n case 5: {\n return 'Others'\n break;\n\n }\n case 6: {\n return 'Yahoo'\n break;\n\n }\n case 7: {\n return 'Yelp'\n break;\n\n }\n }\n\n }\n // public ReviewStatus(reviewStatus:boolean) :string{\n // if(reviewStatus===true)\n // {\n // return \"Enabled\";\n // }\n // else{\n // return \"Disabled\";\n // }\n // }\n}\n\n\n//'copy', 'csv', 'excel', 'pdf', 'print'\n"," \n\n
\n
\n
\n
\n
Customer Reviews \n \n
\n\n
\n
\n Filter \n\n
\n
\n Clear Filter \n
\n
\n\n\n
\n
\n\n
\n
\n \n
\n\n \n
\n
\n\n
\n
\n \n \n Date \n Name \n \n Email \n Rating \n Review \n Comment \n Status Enable / Disable \n \n \n \n \n {{ReviewDatas.dateofService | date:'MM-dd-yyyy'}} \n {{ReviewDatas.firstName}} {{ReviewDatas.lastName}} \n \n {{ReviewDatas.email}} \n \n \n {{ReviewDatas.review}} \n {{ReviewDatas.comment}} \n \n \n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n
\n \n \n Date \n Name \n \n Email \n Rating \n Review \n Comment \n Status Enable / Disable \n \n \n \n \n {{ReviewDatas.dateofService | date:'MM-dd-yyyy'}} \n {{ReviewDatas.firstName}} {{ReviewDatas.lastName}} \n \n {{ReviewDatas.email}} \n \n \n {{ReviewDatas.review}} \n \n {{ReviewDatas.comment}}\n \n \n \n \n \n \n \n \n
\n
\n
\n \n
\n
\n
\n \n \n Date \n Name \n \n Email \n Rating \n Review \n Comment \n Status Enable / Disable \n \n \n \n \n {{ReviewDatas.dateofService | date:'MM-dd-yyyy'}} \n {{ReviewDatas.firstName}} {{ReviewDatas.lastName}} \n \n {{ReviewDatas.email}} \n \n \n {{ReviewDatas.review}} \n \n {{ReviewDatas.comment}}\n \n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n
\n \n \n Date \n Name \n \n Email \n Rating \n Review \n Comment \n Status Enable / Disable \n \n \n \n \n {{ReviewDatas.dateofService | date:'MM-dd-yyyy'}} \n {{ReviewDatas.firstName}} {{ReviewDatas.lastName}} \n \n {{ReviewDatas.email}} \n \n \n {{ReviewDatas.review}} \n \n {{ReviewDatas.comment}}\n \n \n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n
\n \n \n Date \n Name \n \n Email \n Rating \n Review \n Comment \n Status Enable / Disable \n \n \n \n \n {{ReviewDatas.dateofService | date:'MM-dd-yyyy'}} \n {{ReviewDatas.firstName}} {{ReviewDatas.lastName}} \n \n {{ReviewDatas.email}} \n \n \n {{ReviewDatas.review}} \n \n {{ReviewDatas.comment}}\n \n \n \n \n \n \n \n \n
\n
\n
\n
\n\n
\n
\n \n \n Source \n Date \n Name \n \n Email \n Rating \n Review \n Comment \n Status Enable / Disable \n \n \n \n \n {{ getSocialMediaName(ReviewDatas.sourceId)}} \n\n {{ReviewDatas.dateofService | date:'MM-dd-yyyy'}} \n {{ReviewDatas.firstName}} {{ReviewDatas.lastName}} \n \n {{ReviewDatas.email}} \n \n \n {{ReviewDatas.review}} \n {{ReviewDatas.comment}} \n \n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n
\n \n \n Source \n Date \n Name \n \n Email \n Rating \n Review \n Comment \n Status Enable / Disable \n \n \n \n \n {{ getSocialMediaName(ReviewDatas.sourceId)}} \n\n {{ReviewDatas.dateofService | date:'MM-dd-yyyy'}} \n {{ReviewDatas.firstName}} {{ReviewDatas.lastName}} \n \n {{ReviewDatas.email}} \n \n \n {{ReviewDatas.review}} \n {{ReviewDatas.comment}} \n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n\n
\n
\n\n\n
\n
\n\n Please Wait.
\n \n \n
\n
\n \n
\n
Are you sure want to {{statusChangeAction}} Review?
\n
\n \n
\n
\n
\n\n \n","import { Component, OnInit } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport {GetappointmentsService} from '../../../getappointments.service'\nimport {\n FormBuilder,\n FormGroup,\n Validators,\n FormControl,\n} from '@angular/forms';\nimport swal from 'sweetalert2';\nimport { THIS_EXPR } from '@angular/compiler/src/output/output_ast';\n@Component({\n selector: 'app-settings',\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.css']\n})\nexport class SettingsComponent implements OnInit {\n\n getUsersByClient:[];\n public dtOptions: any = {};\n public showTable: boolean = false;\n UserAddForm:FormGroup;\n private clickedUser: any = {};\n public statusChangeAction: string;\n clientId: any;\n constructor(private user:GetappointmentsService,private fb: FormBuilder) {\n \n this.UserAddForm=this.fb.group({\n\n UserName:['',Validators.compose([Validators.required, Validators.minLength(5),Validators.maxLength(50)])],\n Email:['',Validators.compose([Validators.required,Validators.email])],\n Password:['',Validators.compose([Validators.required, Validators.minLength(5),Validators.maxLength(50)])],\n Roles:['',Validators.required],\n ClientId: 1,\n })\n \n }\n getUsers()\n {\n this.user\n .getUsersByClientId()\n .pipe(take(1))\n .subscribe((data: any) => {\n \n this.getUsersByClient = data;\n this.showTable=true;\n console.log(data);\n });\n }\n public get UserAddControl() { return this.UserAddForm.controls; }\n UserAdd() : void{\n const data = {\n UserName: this.UserAddControl[\"UserName\"].value,\n Email: this.UserAddControl[\"Email\"].value,\n Password: this.UserAddControl[\"Password\"].value,\n RoleId: parseInt(this.UserAddControl[\"Roles\"].value),\n ClientId: JSON.parse(this.clientId),\n }\n console.log(data);\n\n if (data) {\n this.user\n .AddUser(data)\n .pipe(take(1))\n .subscribe((res: any) => {\n if (res.statusCode=== 1){\n swal.fire(\n 'Success',\n 'User Added Succesfully.',\n 'success'\n );\n // window.alert('User Added Succesfully.');\n this.UserAddForm.reset();\n \n console.log(res);\n }\n else{\n if (res.statusCode===2){\n swal.fire(\n 'Cancelled!',\n 'This Email already Registred',\n 'warning'\n );\n // window.alert('This Email already Registred');\n }\n else{\n if(res.statusCode===3)\n {\n swal.fire(\n 'Cancelled!',\n 'This Email already Registred',\n 'error'\n );\n // window.alert('Failed to save the User');\n }\n }\n \n }\n \n });\n }\n \n }\n public statusClick( customer: any): void {\n this.clickedUser = customer;\n this.statusChangeAction = customer.status ? 'De-activate' : 'Activate';\n // this.modalService.open(modalContent, { backdrop: 'static', keyboard: false });\n }\n\n public changeStatus(): void {\n \n \n this.user.changeUserStatus(this.clickedUser.userId).pipe(take(1)).subscribe((res: any) => {\n if (res.statusCode === 1) {\n this.clickedUser.status = !this.clickedUser.status;\n swal.fire(\n 'Success',\n 'User '+this.statusChangeAction+' Succesfully.',\n 'success'\n );\n }\n else{\n if (res.statusCode===2){\n swal.fire(\n 'Cancelled!',\n 'User Data Not Found',\n 'warning'\n );\n }\n // window.alert('This Email already Registred');\n }\n \n });\n }\n ngOnInit(): void {\n this.user.getClientId();\n this.getUsers();\n this.clientId = localStorage.getItem(\"ClientId\");\n this.dtOptions = {\n pagingType: 'full_numbers',\n pageLength: 5,\n lengthMenu : [ 5, 10, 25, 50, 100],\n processing: true,\n dom: 'lfrtipB',\n buttons: [\n 'excel', 'pdf', 'print'\n\n ]\n };\n\n }\n\n}"," \n\n
\n
\n
\n
\n \n\n\n\n
\n
\n
\n
\n\n \n \n First Name \n Email \n Role \n Status \n \n \n \n \n {{list.userName}} \n {{list.email}} \n {{list.roleName}} \n \n \n \n \n \n
\n\n
\n
\n
\n
\n
\n Name \n \n
\n \n \n First Name is Required. \n User name minimum should be length of 5. \n User name maximum should be length of 50. \n \n
\n
\n Email \n \n
\n \n \n Email is Required. \n Email is not in correct pattern. \n \n
\n
\n Password \n \n
\n \n \n First NamePassword is Required. \n Password minimum should be length of 5. \n Password maximum should be length of 50. \n \n
\n
\n\n Role \n \n
\n \n Select \n Admin \n Technician \n Supervisor \n \n \n\n \n Role is Required. \n \n \n \n \n
\n
\n \n \n\n\n
\n\n\n\n
\n
\n
\n
\n
\n
\n \n
\n
Are you sure want to {{statusChangeAction}} User?
\n
\n \n
\n
\n
","import { Component, OnInit } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { GetappointmentsService } from 'src/getappointments.service';\n\n@Component({\n selector: 'app-sidenav',\n templateUrl: './sidenav.component.html',\n styleUrls: ['./sidenav.component.css']\n})\nexport class SidenavComponent implements OnInit {\n public getUsersByClient :any=[]\n\n\n constructor(private user:GetappointmentsService) { }\n\n ngOnInit(): void {\n\n $(function(){\n var current = location.pathname;\n $('#nav li a').each(function(){\n var $this = $(this);\n // if the current path is like this link, make it active\n if($this.attr('routerLink').indexOf(current) !== -1){\n $this.addClass('active');\n }\n })\n\n \n })\n \n }\n \n}\n","\n \n\n","import { Injectable } from '@angular/core';\nimport {HttpClient, HttpClientModule} from '@angular/common/http'\nimport { Observable } from 'rxjs';\nimport { CustomerData } from './components/customers/customerss';\nimport { environment } from 'src/environments/environment';\n@Injectable({\n providedIn: 'root'\n})\nexport class CustomersService {\n ClientId: any;\n\n constructor(private http:HttpClient) {\n this.ClientId = localStorage.getItem(\"ClientId\");\n }\n\n getdata(): Observable
>{\n let url: string=`${environment.apiUrl}superAdmin/GetAllCustomers?ClientId=${this.ClientId}`;\n return this.http.get>(url);\n }\n \n getCustomerAppointmentHistory(customerId){\n let url=`${environment.apiUrl}superAdmin/getappointmentsbycustomer?CustomerId=`+customerId+'&ClientId='+this.ClientId;\n return this.http.get(url);\n }\n getFilterdDataCustomers(startDate,endDate){\n let url=`${environment.apiUrl}superAdmin/GetAllCustomers?ClientId=`+1+'&startDate='+startDate+'&endDate='+endDate;\n return this.http.get(url);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport {AuthenticationService} from '../../app/services/authentication.service';\n\n@Component({\n selector: 'app-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.css']\n})\nexport class DashboardComponent implements OnInit {\n [x: string]: any;\n LoginData = [];\n user = this.AuthenticationService;\n constructor(private AuthenticationService: AuthenticationService) {\n this.AuthenticationService.currentUserEmail;\n this.AuthenticationService.currentUserName;\n }\n\n ngOnInit(): void {\n\n }\n\n\n logout() {\n this.AuthenticationService.logout();\n}\n}\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
This is a dashboard layout for Bootstrap 4. This is an example of the Modal component which you can use to show content.\r\n Any content can be placed inside the modal and it can use the Bootstrap grid classes.
\r\n
\r\n Grab the code at Codeply \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { AuthenticationService } from '../../app/services/authentication.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthGuard implements CanActivate {\r\n userData: any;\r\n constructor(\r\n private router: Router,\r\n private authenticationService: AuthenticationService\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n const currentUser = this.authenticationService.currentUserEmail;\r\n // debugger;\r\n if (currentUser) {\r\n if(state.url === '/login' || state.url === '/'){\r\n this.router.navigate(['/dashboard']);\r\n return false;\r\n }\r\n return true;\r\n }\r\n if(state.url === '/login' || state.url === '/'){\r\n return true;\r\n }\r\n this.router.navigate(['/login']);\r\n return false;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n Validators,\n FormControl,\n} from '@angular/forms';\nimport { Router, ActivatedRoute} from '@angular/router';\nimport { LoginService } from '../services/login.service';\nimport { LoginData } from './logins';\nimport { take } from 'rxjs/operators';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { NgxSpinnerService } from \"ngx-spinner\";\nimport {AuthGuard} from \"../guard/AuthGuard\";\nimport swal from 'sweetalert2';\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.css'],\n})\nexport class LoginComponent implements OnInit {\n loginForm: FormGroup;\n LoginData = [];\n data: string[];\n\n public isSubmitClicked: boolean = false;\n AuthGuard: any;\n constructor(private fb: FormBuilder, private user: LoginService, private route: ActivatedRoute,\n private router: Router, private authService: AuthenticationService,private SpinnerService: NgxSpinnerService) {}\n\n ngOnInit(): void {\n \n this.initForm();\n }\n validateAllFormFields(formGroup: FormGroup) {\n //{1}\n Object.keys(formGroup.controls).forEach((field) => {\n //{2}\n const control = formGroup.get(field); //{3}\n if (control instanceof FormControl) {\n //{4}\n control.markAsTouched({ onlySelf: true });\n } else if (control instanceof FormGroup) {\n //{5}\n this.validateAllFormFields(control); //{6}\n }\n });\n }\n\n // onSubmit(){\n // if (this.loginForm.valid) {\n // console.log('form submitted');\n\n // } else {\n // this.validateAllFormFields(this.loginForm); //{7}\n // }\n\n // }\n\n isValidInput(fieldName): boolean {\n return (\n this.loginForm.controls[fieldName].invalid &&\n (this.loginForm.controls[fieldName].dirty ||\n this.loginForm.controls[fieldName].touched)\n );\n }\n initForm(): void {\n this.loginForm = this.fb.group({\n email: [\n '',\n [\n Validators.required,\n Validators.pattern(\n '^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$'\n ),\n ],\n ],\n password: ['', Validators.required],\n });\n }\n public get loginFormControl() { return this.loginForm.controls; }\n\n public submitForm(): void {\n\n this.isSubmitClicked = true;\n if (this.loginForm.valid) {\n this.SpinnerService.show();\n this.user\n .LoginData(this.loginForm.value)\n .pipe(take(1))\n .subscribe((res: any) => {\n if (res.statusCode=== 1){\n this.authService.logdin(res.data.token);\n localStorage.setItem(\"usernamek\", res.data.userName);\n localStorage.setItem(\"RoleId\",res.data.roleId);\n this.SpinnerService.hide();\n if(res.data.roleId===2 )\n {\n \n this.router.navigate(['/dashboard']);\n }\n else\n {\n this.router.navigate(['/appointments']);\n }\n \n \n // swal.fire(\n // 'Success',\n // 'Login Succesfull.',\n // 'success'\n // );\n }\n else{\n if (res.statusCode!==1){\n this.SpinnerService.hide();\n swal.fire(\n 'Error',\n \"Please Enter a valid Username and Password.\",\n 'error'\n );\n // window.alert('Please Enter a valied Username and password');\n\n }\n }\n });\n }\n }\n}\n","\n
\n \n
\n
\n
\n
\n
\n Login
\n \n Email \n \n
\n \n
\n Email is required.\n
\n
\n Must be a valid email format.\n
\n
\n \n Password \n \n
\n \n
\n Password is required.\n
\n
\n \n \n \n Remember me \n
\n \n \n Login \n
\n \n \n \n
\n\n
\n
\n\n \n \n
\n\n Please Wait.
\n ","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-newnav',\n templateUrl: './newnav.component.html',\n styleUrls: ['./newnav.component.css']\n})\nexport class NewnavComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n \n \n \n \n \n \n \n\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\nimport { take } from 'rxjs/operators';\nimport { Router, ActivatedRoute} from '@angular/router';\nimport {ForgotpasswordService } from '../services/forgotpassword.service';\nimport swal from 'sweetalert2';\nimport { NgxSpinnerService } from 'ngx-spinner';\n@Component({\n selector: 'app-recoverypassword',\n templateUrl: './recoverypassword.component.html',\n styleUrls: ['./recoverypassword.component.css']\n})\nexport class RecoverypasswordComponent implements OnInit {\n [x: string]: any;\n recoverypasswordForm: FormGroup;\n recoverypasswordData = [];\n data: string[];\n constructor(private fb: FormBuilder,\n private user: ForgotpasswordService ,\n private route: ActivatedRoute,\n private SpinnerService: NgxSpinnerService,\n private router: Router, ) { }\n\n ngOnInit(): void {\n this.initForm();\n }\n\n validateAllFormFields(formGroup: FormGroup) { //{1}\n Object.keys(formGroup.controls).forEach(field => { //{2}\n const control = formGroup.get(field); //{3}\n if (control instanceof FormControl) { //{4}\n control.markAsTouched({ onlySelf: true });\n } else if (control instanceof FormGroup) { //{5}\n this.validateAllFormFields(control); //{6}\n }\n });\n}\n\nisValidInput(fieldName): boolean {\n return this.recoverypasswordForm.controls[fieldName].invalid &&\n (this.recoverypasswordForm.controls[fieldName].dirty || this.recoverypasswordForm.controls[fieldName].touched);\n}\ninitForm(): void {\n this.recoverypasswordForm = this.fb.group({\n email: ['', [Validators.required,\n Validators.pattern('^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$')]]\n});\n}\n onSubmit(){\nthis.SpinnerService.show();\n if (this.recoverypasswordForm.valid) {\n \n this.custemail =this.recoverypasswordForm.value;\n alert\n this.user\n .recoverypasswordData(this.custemail)\n .pipe(take(1))\n .subscribe((res: any) => {\n console.log(res);\n this.SpinnerService.hide();\n if (res.statusCode=== 1){\n \n swal.fire(\n \n 'Success',\n \"Please Check Your Email for Reset Password Link.\",\n 'success'\n );\n // window.alert(\"Please check your email for reset password Link\");\n // this.router.navigate(['/login']);\n }\n else{ \n if (res.statusCode===2){\n this.SpinnerService.hide();\n swal.fire(\n 'Cancelled!',\n 'User not found with Entered Email Address.',\n 'error'\n );\n // window.alert('Please Enter a valied email');\n\n }\n \n }\n });\n }\n }\n\n}\n","\n\n
\n \n
\n
\n
\n
\n
\n Recover Password
\n Enter your registered email below to receive\n Password reset code
\n \n Email \n \n
\n \n
\n Email is required.\n
\n
\n Must be a valid email format.\n
\n
\n \n \n \n \n \n Submit \n
\n \n \n \n
\n \n
\n
\n\n\n","import { Injectable } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport * as JwtDecode from 'jwt-decode';\n\n@Injectable({ providedIn: \"root\" })\nexport class AuthenticationService {\n clientId: any;\n getItem() {\n throw new Error(\"Method not implemented.\");\n }\n isAuthenticated() {\n throw new Error(\"Method not implemented.\");\n }\n // public userName: string;\n public email: string;\n public role: string;\n public userName: string;\n public token: any = null ;\n currentUser: any;\n currentUserValue: any;\n // private adminNoPermissions: Array<{\n // role: string;\n // category: string;\n // permitionTypes: Array
;\n // }>;\n constructor(private route: Router) {\n // this.logdin(localStorage.getItem(\"A_accesstoken\"));\n this.getUserDetails();\n }\n\n public get currentUserName(): string {\n return this.userName;\n }\n\n public get currentUserRole(): string {\n return this.role;\n }\n\n public get currentUserEmail(): string {\n return this.email;\n }\n public getUserDetails(){\n // this.user = new User();\n this.token = localStorage.getItem(\"A_accesstoken\");\n if (this.token) {\n localStorage.setItem(\"A_accesstoken\", this.token);\n const user : any = JwtDecode(this.token);\n const time_to_login = Date.now() + 86400000; // one day\n localStorage.setItem('timer', JSON.stringify(time_to_login));\n // this.userName =\n // user[\"sub\"];\n this.email =\n user[\"email\"];\n this.role = user[\"http://schemas.microsoft.com/ws/2008/06/identity/claims/role\"];\n this.userName = user[\"userName\"];\n }\n }\n public logdin(token: any): void {\n\n if (token) {\n localStorage.setItem(\"A_accesstoken\", token);\n const user : any = JwtDecode(token);\n console.log(user,\"user\");\n const time_to_login = Date.now() + 86400000; // one day\n localStorage.setItem('timer', JSON.stringify(time_to_login));\n // this.userName =\n // user[\"sub\"];\n this.email = user[\"email\"];\n this.role = user[\"http://schemas.microsoft.com/ws/2008/06/identity/claims/role\"];\n\n\n localStorage.setItem(\"ClientId\",user[\"ClientId\"])\n \n\n } else {\n this.logout();\n }\n\n }\n public logout(): void {\n // this.userName = null;\n this.email = null;\n this.role = null;\n this.userName = null;\n localStorage.removeItem(\"A_accesstoken\");\n localStorage.removeItem(\"ClientId\");\n localStorage.removeItem(\"usernamek\");\n localStorage.removeItem(\"RoleId\");\n this.route.navigateByUrl(\"/login\");\n }\n\n public get getToken(){\n return localStorage.getItem('A_accesstoken');\n console.log();\n }\n}\n","import { Injectable } from '@angular/core';\nimport {HttpClient, HttpClientModule} from '@angular/common/http'\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CarInspectionService {\n\n constructor(private http:HttpClient) { }\n\n getmake(){\n let url=`${environment.apiUrl}hitech/GetMakes?ClientId=${1}`;\n return this.http.get(url);\n }\n getModelsById(id){\n let url=`${environment.apiUrl}hitech/GetModelsByMakeId?makeId=`+id+'&ClientId='+1;\n return this.http.get(url);\n }\n getCarInspections(){\n let url=`${environment.apiUrl}MTac/getallncinspectiondata?ClientId=${1}`;\n return this.http.get(url);\n}\nAddCarinspection(data){\n let url=`${environment.apiUrl}MTac/postncinspectiondata`;\n return this.http.post(url,data);\n\n }\n \n}\n","import { Injectable } from '@angular/core';\nimport {HttpClient, HttpClientModule} from '@angular/common/http';\nimport { getRecoverypassword } from '../recoverypassword/recoverypasswords';\nimport { Observable } from 'rxjs';\nimport { environment } from 'src/environments/environment';\n@Injectable({\n providedIn: 'root'\n})\nexport class ForgotpasswordService {\n\n constructor(private http:HttpClient) { }\n\n public recoverypasswordData(data:getRecoverypassword):Observable{\n let url=`${environment.apiUrl}register/ForgetPassword?Email=` + data.email;\n console.log('form submitted recoverpassword page');\n return this.http.post(url,data);\n\n }\n public Setpassword(data){\n let url=`${environment.apiUrl}register/SetPassword`;\n return this.http.post(url,data);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {HttpClient, HttpClientModule} from '@angular/common/http';\nimport { LoginData } from '../login/logins';\nimport { Observable } from 'rxjs';\nimport { environment } from 'src/environments/environment';\n@Injectable({\n providedIn: 'root'\n})\nexport class LoginService {\n\n constructor(private http:HttpClient) { }\n\n public LoginData(data:LoginData):Observable{\n let url=`${environment.apiUrl}register/login`;\n console.log('form submitted services page');\n return this.http.post(url,data);\n\n }\n saveContactUs(data){\n let url=`http://137.59.201.54:84/api/superAdmin/AddCustomerMessage`;\n return this.http.post(url, data)\n }\n}\n","import { Injectable } from '@angular/core';\nimport {HttpClient, HttpClientModule} from '@angular/common/http'\nimport { environment } from 'src/environments/environment';\nimport { data } from 'jquery';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RemindersService {\n ClientId: any;\n\n constructor(private http:HttpClient) {\n this.ClientId = localStorage.getItem(\"ClientId\");\n }\n getClientId()\n{\n this.ClientId = localStorage.getItem(\"ClientId\");\n return this.ClientId;\n}\n GetReviewReminderData(){\n let url=`${environment.apiUrl}superAdmin/getallreviewremainders?ClientId=${this.ClientId}`;\n console.log(data);\n return this.http.get(url);\n }\n GetServicesReminderData(){\n let url=`${environment.apiUrl}superAdmin/getallserviceremainders?ClientId=${this.ClientId}`;\n console.log(data);\n return this.http.get(url);\n }\n changeReviewReminderStatus(appointmentId) {\n let url=`${environment.apiUrl}superAdmin/changereviewremaindstatus?ClientId=`+this.ClientId+\"&AppointmentId=\"+appointmentId;\n return this.http.post(url,data);\n }\n changeServiceReminderStatus(appointmentId) {\n let url=`${environment.apiUrl}superAdmin/changeserviceremaindstatus?ClientId=`+this.ClientId+\"&AppointmentId=\"+appointmentId;\n return this.http.post(url,data);\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport {HttpInterceptor} from '@angular/common/http';\nimport {AuthenticationService} from '../app/services/authentication.service';\nimport { Router } from '@angular/router';\nimport { catchError } from 'rxjs/operators';\nimport { throwError } from 'rxjs';\nimport { NgxSpinnerService } from \"ngx-spinner\";\n@Injectable({\n providedIn: 'root'\n})\nexport class TokenInterceptorService implements HttpInterceptor {\n constructor(private injector:Injector, private router: Router,private route: Router,\n private authenticationService:AuthenticationService,private SpinnerService: NgxSpinnerService) { }\n public intercept(req, next){\n const authenticationService = this.injector.get(AuthenticationService);\n const token = authenticationService.getToken;\n const tokenizedReq = req.clone({\n setHeaders:{\n Authorization: `Bearer ${authenticationService.getToken}`\n }\n });\n // return next.handle(tokenizedReq);\n return next.handle(tokenizedReq).pipe(catchError(err => {\n if (err.status === 401){\n // if ([401, 403].includes(err.status) && this.authenticationService.currentUser) {\n // auto logout if 401 or 403 response returned from api\n this.SpinnerService.hide();\n this.authenticationService.logout();\n this.SpinnerService.hide();\n this.route.navigateByUrl(\"/login\");\n\n }\n const error = (err && err.error && err.error.message) || err.statusText;\n console.error(err);\n return throwError(error);\n }))\n }\n}\n","import { FormGroup } from '@angular/forms';\r\n\r\n// custom validator to check that two fields match\r\nexport function MustMatch(controlName: string, matchingControlName: string) {\r\n return (formGroup: FormGroup) => {\r\n const control = formGroup.controls[controlName];\r\n const matchingControl = formGroup.controls[matchingControlName];\r\n\r\n if (matchingControl.errors && !matchingControl.errors.mustMatch) {\r\n // return if another validator has already found an error on the matchingControl\r\n return;\r\n }\r\n\r\n // set error on matchingControl if validation fails\r\n if (control.value !== matchingControl.value) {\r\n matchingControl.setErrors({ mustMatch: true });\r\n } else {\r\n matchingControl.setErrors(null);\r\n }\r\n }\r\n}","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\nimport {Router, ActivatedRoute } from \"@angular/router\";\nimport { NgxSpinnerService } from \"ngx-spinner\";\nimport {ForgotpasswordService } from '../services/forgotpassword.service';\nimport { take } from 'rxjs/operators';\nimport swal from 'sweetalert2';\nimport { MustMatch } from './confirmed.validator';\n@Component({\n selector: 'app-welcomepassword',\n templateUrl: './welcomepassword.component.html',\n styleUrls: ['./welcomepassword.component.css']\n})\nexport class WelcomepasswordComponent implements OnInit {\n userId:string;\n wellcomeForm:FormGroup;\n submitted = false;\n constructor( private router: Router,private user: ForgotpasswordService,private fb: FormBuilder,private route: ActivatedRoute,private SpinnerService: NgxSpinnerService) { }\n ngOnInit(): void {\n \n this.userId= this.route.snapshot.queryParamMap.get(\"param\");\n console.log(this.userId);\n\n this.wellcomeForm = this.fb.group({\n \n password: ['', [Validators.required, Validators.minLength(6)]],\n confirmPassword: ['', Validators.required]\n }, {\n validator: MustMatch('password', 'confirmPassword')\n });\n }\n get f() { return this.wellcomeForm.controls; }\n\n CheckValidation(){\n \n this.submitted = true;\n\n // stop here if form is invalid\n if (this.wellcomeForm.valid) {\n this.setPassword();\n }\n else\n {\n return;\n }\n\n}\npublic get setpasswordFormControl() { return this.wellcomeForm.controls; }\nsetPassword()\n{\n this.SpinnerService.show();\n const data ={\n Param: this.userId,\n Newpassword:this.setpasswordFormControl[\"password\"].value\n }\n console.log(data)\n if (data) {\n this.user.Setpassword(data)\n .pipe(take(1))\n .subscribe((res: any) => {\n console.log(res)\n this.SpinnerService.hide(); \n if (res.statusCode=== 1){\n swal.fire(\n 'Success',\n 'Password Changed Succesfully.',\n 'success'\n );\n // this.wellcomeForm.reset();\n // window.alert('Password Changed Succesfully.');\n this.router.navigate(['/login']);\n this.SpinnerService.hide();\n }\n else{\n if (res.statusCode===2){\n swal.fire(\n 'Cancelled',\n 'User Not Available.',\n 'error'\n );\n // window.alert('User Not Available');\n }\n else {\n if (res.statusCode===3){\n swal.fire(\n 'Cancelled', \n \"Enterd Password can't be previous Password.\",\n 'error'\n );\n // window.alert(\"Enterd Password can't be previous Password\");\n }\n }\n }\n });\n }\n}\n}\n\n","\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Welcome Back \n
\n Password \n \n \n
Password is required
\n
Password must be at least 6 characters
\n
\n\n Confirm Password \n \n \n
Confirm Password is required
\n
Passwords must match
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n
\n\n Please Wait.
\n \n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false,\n //production: true,\n // apiUrl:'https://cors-anywhere.herokuapp.com/http://18.222.194.156:81/api/'\n // apiUrl:'http://18.222.194.156:81/api/'\n//apiUrl:'https://localhost:44314/api/'\n//apiUrl:'http://18.222.194.156:94/api/' //Working\n//apiUrl:'http://137.59.201.54:84/api/' //plesk\n // apiUrl:'https://localhost:44354/api/'\n //apiUrl:'https://apim2.mtestsample.co/api/' //Secured Api\n apiUrl:'https://api.mtacpro.com/api/'\n\n\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { Injectable } from '@angular/core';\nimport {HttpClient, HttpClientModule} from '@angular/common/http'\nimport { environment } from 'src/environments/environment';\nimport { data, param } from 'jquery';\n@Injectable({\n providedIn: 'root'\n})\nexport class GetappointmentsService {\n ClientId: any;\n // getReviews() {\n // throw new Error('Method not implemented.');\n // }\n\n constructor(private http:HttpClient) {\n \n }\ngetClientId()\n{\n this.ClientId = localStorage.getItem(\"ClientId\");\n // alert(this.ClientId);\n \n return this.ClientId;\n\n}\n\n getReqests(){\n let url=`${environment.apiUrl}superAdmin/GetContactusCustomers?ClientId=`+this.ClientId;\n return this.http.get(url);\n }\n getmake(){\n let url=`${environment.apiUrl}superAdmin/GetMakes?ClientId=`+this.ClientId;\n return this.http.get(url);\n }\n getModelsById(id){\n let url=`${environment.apiUrl}superAdmin/GetModelsByMakeId?makeId=`+id+'&ClientId='+this.ClientId;\n return this.http.get(url);\n }\n getAppointmentByIdForReview(appointmentId){\n let url=`${environment.apiUrl}superAdmin/getappointmentdetailsforreview?appointmentId=`+appointmentId;\n // let url=\"https://localhost:44314/api/MTac/GetAppointmentbyId?appointmentId=\"+appointmentId;\n return this.http.get(url);\n }\n getAppointmentById(appointmentId){\n let url=`${environment.apiUrl}superAdmin/GetAppointmentbyId?appointmentId=`+appointmentId;\n // let url=\"https://localhost:44314/api/MTac/GetAppointmentbyId?appointmentId=\"+appointmentId;\n return this.http.get(url);\n }\n getUsersByClientId(){\n let url=`${environment.apiUrl}register/GetAllUsersByClient?ClientId=`+this.ClientId;\n return this.http.get(url);\n }\n getServices(){\n let url=`${environment.apiUrl}superAdmin/GetServices?ClientId=`+this.ClientId;\n return this.http.get(url);\n }\n getTechnicions(){\n \n let url=`${environment.apiUrl}register/getallusersbyrole?ClientId=`+this.ClientId+'&RoleId='+4;\n return this.http.get(url);\n }\n\n getallactiveappointments(){\n let url=`${environment.apiUrl}superAdmin/getallactiveappointments?ClientId=`+this.ClientId;\n return this.http.get(url);\n }\n\n getalldata(){\n let url=`${environment.apiUrl}superAdmin/getcustomerlatestappointments?ClientId=`+this.ClientId;\n return this.http.get(url);\n } \n \n getAppointmentsByStaus(appointmentStatus){\n let url=`${environment.apiUrl}superAdmin/GetAppointmentsByStatus?ClientId=`+this.ClientId+'&status='+appointmentStatus;\n return this.http.get(url);\n }\n getAppointmentsByFilter(appointmentStatus,startDate,endDate){\n let url=`${environment.apiUrl}superAdmin/GetAppointmentsByStatus?ClientId=`+this.ClientId+'&status='+appointmentStatus+'&startDate='+startDate+'&endDate='+endDate;\n return this.http.get(url);\n }\n dashboarddata(){\n let url=`${environment.apiUrl}superAdmin/DashBoard?ClientId=${this.ClientId}&months=${6}`;\n console.log(data);\n return this.http.get(url);\n }\n Reportsdata(){\n let url=`${environment.apiUrl}superAdmin/Reports?ClientId=${this.ClientId}&months=${6}`;\n console.log(data);\n return this.http.get(url);\n }\n\n WalkinAppointmentAddandUpdate(data){\n let url=`${environment.apiUrl}superAdmin/WalkinAppoinment`;\n // let url=`https://localhost:44314/api/MTac/WalkinAppoinment`;\n console.log(data);\n return this.http.post(url,data);\n\n }\n AddUser(data){\n let url=`${environment.apiUrl}register/signup`;\n\n console.log(data);\n return this.http.post(url,data);\n\n }\n AddCarinspection(data){\n let url=`${environment.apiUrl}superAdmin/WalkinAppoinment`;\n return this.http.post(url,data);\n \n }\n\n changeUserStatus(userId) {\n let url=`${environment.apiUrl}register/changeUserStatus?ClientId=`+this.ClientId+\"&UserId=\"+userId;\n return this.http.post(url,data);\n \n \n }\n getFilterdDataAppointments(startDate,endDate){\n let url=`${environment.apiUrl}superAdmin/getallactiveappointments?ClientId=`+this.ClientId+'&StartDate='+startDate+'&EndDate='+endDate;\n return this.http.get(url);\n }\n \n\n gettodayandinprogressappointments(){\n let url=`${environment.apiUrl}superAdmin/gettodayandinprogressappointments?ClientId=`+this.ClientId;\n return this.http.get(url);\n }\n\n //for customer requets\n getFilterdCustomerRequsts(startDate,endDate){\n let url=`${environment.apiUrl}superAdmin/GetContactusCustomers?ClientId=`+this.ClientId+'&StartDate='+startDate+'&EndDate='+endDate;\n return this.http.get(url);\n }\n \n getReviewsBySourceId(sourceId){\n let url=`${environment.apiUrl}superAdmin/GetReviewsBySourceId?ClientId=`+this.ClientId+'&sourceId='+sourceId;\n return this.http.get(url);\n }\n}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","import { Injectable } from '@angular/core';\nimport {HttpClient, HttpClientModule} from '@angular/common/http'\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { environment } from 'src/environments/environment';\nimport {ReviewsData} from './app/components/reviews/ReviewData'\nimport {allreviewsData} from './app/components/allreviews/allreviewss'\nimport { data } from 'jquery';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ReviewsService {\n ClientId: any;\n\n constructor(private http:HttpClient) {\n this.ClientId = localStorage.getItem(\"ClientId\");\n }\n // getClientId()\n // {\n // this.ClientId = localStorage.getItem(\"ClientId\");\n // if(this.ClientId==null)\n // {\n \n // }\n // return this.ClientId;\n // }\n public getReviews(): Observable{\n let url=`${environment.apiUrl}superAdmin/GetReviews?clientId=`+this.ClientId;\n \n return this.http.get(url);\n }\n public getReviewsonAllReviews(ClientId): Observable{\n let url=`${environment.apiUrl}superAdmin/GetReviews?clientId=`+ClientId;\n \n return this.http.get(url);\n }\n\n\n GetAppointmentById(appointmentId){\n let url=`${environment.apiUrl}superAdmin/GetReviews?ClientId=`+this.ClientId+'&appointmentId='+appointmentId;\n return this.http.get(url);\n }\n public Addreview(data:any):Observable{\n \n let url=`${environment.apiUrl}superAdmin/AddReviews`;\n console.log('form submitted services page');\n return this.http.post(url,data);\n }\n\n changeUserStatus(reviewId) {\n let url=`${environment.apiUrl}superAdmin/changereviewstatus?ClientId=`+this.ClientId+\"&ReviewId=\"+reviewId;\n return this.http.post(url,data);\n \n \n }\n\n FilteredReviews(startDate,endDate){\n let url=`${environment.apiUrl}superAdmin/GetReviews?ClientId=`+this.ClientId+'&StartDate='+startDate+'&EndDate='+endDate;\n return this.http.get(url);\n }\n \n}\n"],"sourceRoot":"webpack:///"}