diff --git a/src/app/device-setting/device-setting.component.html b/src/app/device-setting/device-setting.component.html
new file mode 100644
index 0000000..c7b0043
--- /dev/null
+++ b/src/app/device-setting/device-setting.component.html
@@ -0,0 +1,153 @@
+
+Loading…
+
+
+
diff --git a/src/app/device-setting/device-setting.component.scss b/src/app/device-setting/device-setting.component.scss
new file mode 100644
index 0000000..dd3d519
--- /dev/null
+++ b/src/app/device-setting/device-setting.component.scss
@@ -0,0 +1,94 @@
+.main {
+ padding: 20px;
+ margin-top: 55px;
+}
+
+.topnav {
+ overflow: hidden;
+ background-color: #e9e9e9;
+}
+
+.topnav a {
+ float: left;
+ display: block;
+ color: black;
+ text-align: center;
+ padding: 14px 16px;
+ text-decoration: none;
+ font-size: 17px;
+}
+
+.topnav a:hover {
+ background-color: #ddd;
+ color: black;
+}
+
+.topnav a.active {
+ background-color: #2196f3;
+ /* color: blueviolet; */
+ width: 290px;
+ font-size: larger;
+ font-weight: 600;
+}
+
+.topnav .search-container {
+ float: right;
+}
+
+.topnav input[type="text"] {
+ padding: 6px;
+ margin-top: 8px;
+ font-size: 17px;
+ border: black;
+}
+
+.topnav .search-container button {
+ float: right;
+ padding: 6px 10px;
+ margin-top: 8px;
+ margin-right: 16px;
+ background: #ddd;
+ font-size: 17px;
+ border: none;
+ cursor: pointer;
+}
+
+.topnav .search-container button:hover {
+ background: blue;
+}
+
+@media screen and (max-width: 600px) {
+ .topnav .search-container {
+ float: none;
+ }
+
+ .topnav a,
+ .topnav input[type="text"],
+ .topnav .search-container button {
+ float: none;
+ display: block;
+ text-align: left;
+ width: 100%;
+ margin: 0;
+ padding: 14px;
+ }
+
+ .topnav input[type="text"] {
+ border: 1px solid #ccc;
+ }
+}
+
+.col-md-6 {
+ margin-top: 15px;
+}
+
+.ms-choice>div {
+ position: inherit !important;
+}
+
+.ms-choice>span {
+ position: inherit !important;
+}
+.ms-parent {
+ display: contents;
+}
\ No newline at end of file
diff --git a/src/app/device-setting/device-setting.component.spec.ts b/src/app/device-setting/device-setting.component.spec.ts
new file mode 100644
index 0000000..6ff5603
--- /dev/null
+++ b/src/app/device-setting/device-setting.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DeviceSettingComponent } from './device-setting.component';
+
+describe('DeviceSettingComponent', () => {
+ let component: DeviceSettingComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ DeviceSettingComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DeviceSettingComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/device-setting/device-setting.component.ts b/src/app/device-setting/device-setting.component.ts
new file mode 100644
index 0000000..4fdc0c3
--- /dev/null
+++ b/src/app/device-setting/device-setting.component.ts
@@ -0,0 +1,336 @@
+import { Component, OnInit } from '@angular/core';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { MdSnackBar } from '@angular/material';
+
+import { ContactService } from '../contact.service';
+declare var $: any;
+
+declare var google: any, swal: any;
+@Component({
+ selector: 'app-device-setting',
+ templateUrl: './device-setting.component.html',
+ styleUrls: ['./device-setting.component.scss']
+})
+export class DeviceSettingComponent implements OnInit {
+ emailId: any;
+ Load: Boolean=false;
+ searchForm: FormGroup;
+ deleteShow: boolean = false;
+ submitted = false;
+ userId: any;
+ deviceForm: FormGroup
+ data: any;
+ deleted: boolean = false;
+ ditributers
+ dealers
+ users: any;
+ selectedSupAdmin
+ selectedDealer
+ selectedUser
+ // @ViewChild(BaseChartDirective) public chart: BaseChartDirective;
+ constructor(private contactService: ContactService, private fb: FormBuilder, public snackBar: MdSnackBar) {
+
+ }
+ ngOnInit(): void {
+ this.searchForm = this.fb.group({
+ imei: ['', Validators.required]
+ })
+ this.deviceForm = this.fb.group({
+ imei: [''],
+ registrationNumber: [''],
+ sim1: [''],
+ sim2: [''],
+ dealaer: [''],
+ user: [''],
+ deviceModel: [''],
+ vehicleType: [''],
+ expirationDate: [''],
+ creationDate: [''],
+ superAdmin: [''],
+ lastRenewal: [''],
+ status: [''],
+ deleted: [''],
+ deletedBy: [''],
+ deletedAt: [''],
+ deletedFrom: ['']
+
+ // 352887076587769
+ })
+ this.emailId = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.userId = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.loadDropdown()
+ this.getDistributers();
+
+ var that=this
+ $("#distributer").change(function () {
+ // alert($(this).val());
+ console.log($(this).val());
+ var value = $(this).val();
+ that.selectedSupAdmin = value[0];
+ that.getDealers(that.selectedSupAdmin)
+
+ console.log(that.selectedSupAdmin);
+
+ // var prevSelect = $("#MultiSelect_Preview").select2();
+ // prevSelect.val($(this).val()).trigger('change');
+ });
+
+ $("#dealer").change(function () {
+ // var that = this
+ // alert($(this).val());
+ console.log($(this).val());
+ var value = $(this).val();
+ that.selectedDealer = value[0];
+ that.getUsers(that.selectedDealer)
+ // that.getUser(that.selectedDealer)
+
+ console.log(that.selectedDealer);
+
+ // var prevSelect = $("#MultiSelect_Preview").select2();
+ // prevSelect.val($(this).val()).trigger('change');
+ });
+ $("#dealer").change(function () {
+ // var that = this
+ // alert($(this).val());
+ console.log($(this).val());
+ var value = $(this).val();
+ that.selectedUser = value[0];
+ // that.getUser(that.selectedUser)
+
+ console.log(that.selectedUser);
+
+ // var prevSelect = $("#MultiSelect_Preview").select2();
+ // prevSelect.val($(this).val()).trigger('change');
+ });
+
+ }
+
+ loadDropdown(){
+ var script = document.createElement("script");
+ script.setAttribute("type", "text/javascript");
+ script.setAttribute("src", "https://unpkg.com/multiple-select@1.3.1/dist/multiple-select.min.js");
+ document.getElementsByTagName("head")[0].appendChild(script);
+
+ setTimeout(() => {
+ $('#distributer').multipleSelect({
+ width: 470,
+ placeholder: "Select Distributer",
+ filter: true,
+ single: true,
+ selectAll: false
+
+ })
+ }, 100);
+
+ setTimeout(() => {
+ $('#dealer').multipleSelect({
+ width: 470,
+ placeholder: "Select Dealer",
+ filter: true,
+ single: true,
+ selectAll: false
+
+ })
+ }, 100);
+
+ setTimeout(() => {
+ $('#user').multipleSelect({
+ width: 470,
+ placeholder: "Select User",
+ filter: true,
+ single: true,
+ selectAll: false
+
+ })
+ }, 100);
+
+ }
+
+ get f() { return this.searchForm.controls; }
+
+
+ getDistributers(){
+ this.Load=true;
+ this.contactService.getSuperAdminList().subscribe(res => {
+ this.ditributers=res;
+ this.loadDropdown()
+ this.Load = false;
+ },err=>{
+ this.Load = false;
+ })
+ }
+ getDealers(id) {
+ this.Load = true;
+ this.dealers=[]
+ this.contactService.getDealersDetails(id).subscribe(res => {
+ this.dealers = res;
+ this.dealers = this.dealers.concat(this.ditributers);
+ this.loadDropdown()
+ this.Load = false;
+ }, err => {
+ this.Load = false;
+ })
+ }
+
+ getUsers(id) {
+ this.Load = true;
+ this.users = []
+ this.contactService.getContactsbyDealer(id).subscribe(res => {
+ this.users = res;
+ this.users = this.users.concat(this.ditributers);
+ this.users = this.users.concat(this.dealers);
+ this.users = this.users.filter((el, i, a) => i === a.indexOf(el))
+
+ this.loadDropdown()
+ this.Load = false;
+ }, err => {
+ this.Load = false;
+ })
+ }
+
+ selectSupAdmin(event){
+ // console.log(event.target.value);
+ this.getDealers(event)
+ }
+
+ selectDealer(event) {
+ console.log(event.target.value);
+ this.getUsers(event.target.value)
+ }
+
+ submit() {
+ this.Load = true;
+ console.log(this.searchForm.value);
+
+ this.submitted = true;
+
+ // stop here if form is invalid
+ if (this.searchForm.invalid) {
+ return;
+ }
+ this.contactService.searchByImei(this.searchForm.value).subscribe((res: any) => {
+ console.log(res);
+ this.data = res[0];
+ this.Load = false;
+ if (res.length != 0) {
+ this.deleteShow = true
+ if (res[0].deletedDevice) {
+ this.deleteShow = false;
+ this.deleted = true;
+ } else {
+
+ this.deleted = false;
+ }
+ this.selectedSupAdmin = this.data.supAdmin ? this.data.supAdmin._id : ''
+ this.selectedUser = this.data.user ? this.data.user._id : '';
+ this.selectedDealer = this.data.Dealer ? this.data.Dealer._id : '',
+ console.log(this.selectedSupAdmin);
+
+ this.deviceForm.patchValue({
+ imei: this.data.Device_ID,
+ registrationNumber: this.data.Device_Name,
+ sim1: this.data.sim_number ? this.data.sim_number : '',
+ sim2: this.data.sim_number2 ? this.data.sim_number2 : '',
+ dealaer: this.data.Dealer ? this.data.Dealer._id: '',
+ user: this.data.user ? this.data.user._id : '',
+ deviceModel: this.data.device_model ? this.data.device_model.device_type : '',
+ vehicleType: this.data.vehicleType ? (this.data.vehicleType.brand ? this.data.vehicleType.brand : '') + ' ' + (this.data.vehicleType.model ? this.data.vehicleType.model : '') : '',
+ expirationDate: this.data.expiration_date ? this.data.expiration_date : '',
+ superAdmin: this.data.supAdmin ? this.data.supAdmin._id : '',
+ lastRenewal: this.data.renew_at ? this.data.renew_at : '',
+ creationDate: this.data.created_on ? this.data.created_on : '',
+ status: this.data.status,
+ deleted: this.data.deletedDevice ? 'Yes' : 'No',
+ deletedBy: this.data.device_deleted_by ? this.data.device_deleted_by.first_name + " " + this.data.device_deleted_by.last_name : ' ',
+ deletedAt: this.data.device_delete_on,
+ deletedFrom: this.data.login_type,
+ })
+ if (this.data.supAdmin)
+ this.getDealers(this.data.supAdmin._id);
+ if (this.data.Dealer)
+ this.getUsers(this.data.Dealer._id)
+ } else {
+ this.deleteShow = false;
+ this.deviceForm.reset();
+ this.snackBar.open("No Data Found", '', {
+ duration: 4000,
+ });
+ }
+
+ },err=>{
+ this.Load = false;
+ })
+
+ }
+
+ deleteDevice() {
+ swal({
+ title: 'Are you sure?',
+ icon: 'warning',
+ html: "You won't be able to revert this!",
+ showCloseButton: true,
+ focusConfirm: false,
+ // confirmButtonText: 'Reset today ODO',
+ confirmButtonText: 'Yes, Save it!',
+ // cancelButtonText: 'Reset total ODO',
+ // cancelButtonAriaLabel: 'Thumbs down'
+ cancelButtonText: 'No, cancel!',
+ }).then((result: { value: boolean; }) => {
+ if (result) {
+ var req = {
+ _id: this.data._id,
+ Dealer: this.selectedDealer ? this.selectedDealer : this.data.Dealer ? this.data.Dealer._id:undefined,
+ user: this.selectedUser ? this.selectedUser : this.data.user ? this.data.user._id : undefined,
+ supAdmin: this.selectedSupAdmin ? this.selectedSupAdmin : this.data.supAdmin ? this.data.supAdmin._id : undefined
+ }
+ this.contactService.post("/devices/updateDeviceByAdmin",req).subscribe(res => {
+ swal({
+ title: 'Saved!',
+ html: 'Your file has been saved.',
+ icon: 'success'
+ })
+ })
+ this.deviceForm.reset();
+ this.deleteShow = false;
+ }
+ }
+ )
+ }
+
+ deleteDevicePermenatly() {
+ swal({
+ title: 'Are you sure?',
+ icon: 'warning',
+ html: "Device will be deleted permanantly",
+ showCloseButton: true,
+ focusConfirm: false,
+ // confirmButtonText: 'Reset today ODO',
+ confirmButtonText: 'Yes, delete it!',
+ // cancelButtonText: 'Reset total ODO',
+ // cancelButtonAriaLabel: 'Thumbs down'
+ cancelButtonText: 'No, cancel!',
+ }).then((result: { value: boolean; }) => {
+ if (result) {
+ var req = {
+ device: this.data.Device_ID,
+ userId: this.userId,
+ permenant: true
+ }
+ this.contactService.deldev(req).subscribe(res => {
+ swal({
+ title: 'Deleted!',
+ html: 'Your file has been deleted.',
+ icon: 'success'
+ })
+ })
+ this.deviceForm.reset();
+ }
+ }
+ )
+ }
+
+
+}
+
+
+
diff --git a/src/app/report/report component/current-position/current-position.component.html b/src/app/report/report component/current-position/current-position.component.html
new file mode 100644
index 0000000..ccd3ba3
--- /dev/null
+++ b/src/app/report/report component/current-position/current-position.component.html
@@ -0,0 +1,77 @@
+
+
+
+
+
+
{{'Current Position Report' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading…
+
+
+
+
+
+ | {{'Object'| translate}} |
+ {{'Time' | translate}} |
+ {{'Position' | translate}} |
+ {{'Speed' | translate}} |
+ {{'Status' | translate}} |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/report/report component/current-position/current-position.component.scss b/src/app/report/report component/current-position/current-position.component.scss
new file mode 100644
index 0000000..a8bee5c
--- /dev/null
+++ b/src/app/report/report component/current-position/current-position.component.scss
@@ -0,0 +1,52 @@
+col-sm-9 col-md-9 col-lg-9 .ms-parent {
+ width: 100% !important;
+}
+#toast {
+ visibility: hidden;
+ max-width: 250px;
+ height: 50px;
+ /*margin-left: -125px;*/
+ margin: auto;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+
+ position: fixed;
+ z-index: 1;
+ left: 60%;
+ right: 0;
+ bottom: 80%;
+ font-size: 13px;
+ white-space: nowrap;
+}
+#toast #img {
+ width: 250px;
+ height: 50px;
+
+ float: left;
+
+ padding-top: 16px;
+ padding-bottom: 16px;
+
+ box-sizing: border-box;
+
+ background-color: #111;
+ color: #fff;
+}
+#toast #desc {
+ color: #fff;
+
+ padding: 16px;
+
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+#toast.show {
+ visibility: visible;
+ -webkit-animation: fadein 0.5s, expand 0.5s 0.5s, stay 3s 1s, shrink 0.5s 2s,
+ fadeout 0.5s 2.5s;
+ animation: fadein 0.5s, expand 0.5s 0.5s, stay 3s 1s, shrink 0.5s 4s,
+ fadeout 0.5s 4.5s;
+}
diff --git a/src/app/report/report component/current-position/current-position.component.spec.ts b/src/app/report/report component/current-position/current-position.component.spec.ts
new file mode 100644
index 0000000..1c50b52
--- /dev/null
+++ b/src/app/report/report component/current-position/current-position.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { CurrentPositionReportComponent } from './current-position.component';
+
+describe('CurrentPositionReportComponent', () => {
+ let component: CurrentPositionReportComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ CurrentPositionReportComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(CurrentPositionReportComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/report/report component/current-position/current-position.component.ts b/src/app/report/report component/current-position/current-position.component.ts
new file mode 100644
index 0000000..6994d7b
--- /dev/null
+++ b/src/app/report/report component/current-position/current-position.component.ts
@@ -0,0 +1,913 @@
+import { Component, OnInit } from '@angular/core';
+import { ContactService } from '../../../contact.service';
+import { MdDialog, MdDialogRef, MD_DIALOG_DATA } from '@angular/material';
+import { MyaccountComponent } from '../../../myaccount/myaccount.component';
+import { Params, Router, ActivatedRoute, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
+import { FlashMessagesService } from 'angular2-flash-messages';
+//import { DetailComponent } from './details/details.component';
+import { ReportService } from '../../report.service';
+import { Subject } from 'rxjs';
+import { takeUntil } from 'rxjs/operators';
+// declare function show
+declare var google: any;
+declare var jsPDF: any;
+declare var $: any;
+const PDF_EXTENSION = ".pdf";
+declare var moment: any;
+@Component({
+ selector: 'app-current-position',
+ templateUrl: './current-position.component.html',
+ styleUrls: ['./current-position.component.scss']
+})
+export class CurrentPositionReportComponent implements OnInit {
+ finalArr = []
+ dataSelect: any[];
+ closeProcess: number;
+ deviceArr: any = [];
+ reportArr: any = [];
+ firstcall: boolean = true;
+ lastcall: boolean = true;
+ skip: number = 0;
+ tabelObj: any;
+ devices: any;
+ value
+ distanceVariation
+ private finalise = new Subject();
+ constructor(private contactService: ContactService, private _service: ReportService, private router: Router, public dialog: MdDialog, private _flashMessagesService: FlashMessagesService) {
+ this._service.invokeEventForCurrentPosition.pipe(
+ takeUntil(this.finalise)
+ ).subscribe(value => {
+ if (value) {
+ this.value = value
+ this.getReport(value);
+ }
+ console.log(value);
+ this.devices = JSON.parse(localStorage.getItem('vehicaleData'))
+ console.log(this.devices);
+
+
+ })
+
+ }
+
+ fs: any;
+ ls: any;
+ emailid: any;
+ or: any;
+ useridd: any;
+ time: any;
+ device_data: any;
+ devicess: any;
+ final: any;
+ custtype: any;
+ cust: boolean = false;
+ Load: Boolean = false;
+ date: any;
+ devicesss: any;
+ mb: any;
+ logoutbut: boolean;
+ dealer: boolean;
+ text: any;
+ option: any;
+ finall: any;
+ Fromdate: any;
+ todate: any;
+ options = [];
+ logo: any;
+ before: any;
+ date1: any;
+ daily_report_data: any;
+ superAdmin: Boolean = false;
+ ngOnInit() {
+ // var fTime = new Date().setHours(0,0,0);
+ // this.Fromdate = new Date(fTime);
+ // show()
+ this.superAdmin = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).isSuperAdmin;
+ this.fs = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).fn;
+ this.ls = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).ln;
+ this.emailid = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.or = JSON.parse(window.atob(window.localStorage.token.split(".")[1]))._orgName;
+ this.useridd = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.mb = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).phn;
+ this.custtype = JSON.parse(window.atob(window.localStorage.token.split('.')[1])).isDealer;
+
+ if (this.custtype == true) {
+ this.cust = true;
+ }
+ if (this.mb.charAt(0) == "n") {
+ this.mb = ' '
+ }
+
+
+ if (window.localStorage['Custumer'] == 'ON') {
+ this.logoutbut = false
+ this.dealer = true
+
+ }
+ else {
+ this.logoutbut = true
+ }
+
+ this.logo = window.localStorage['logo'];
+ this.text = window.localStorage['text'];
+
+
+
+ this.testTable();
+
+ }
+
+
+
+ uId: any;
+ d_name: any;
+ d_report: any;
+ total_dist: any;
+ total_km: any;
+ start_add_lat: any;
+ start_add_long: any;
+ end_add_lat: any;
+ end_add_long: any;
+ device_summary = [];
+ address_show: any;
+
+ end_add_show: any;
+ identifier: any = 'distance_report';
+
+
+ data_descip: any;
+ TODATE
+ FROMDATE
+ tpdata
+ getReport(event) {
+ if (event == 'getExcel') {
+ this.exportExcel();
+ } else if (event == 'getPdf') {
+ this.expotToPdf();
+ } else {
+ var deviceId: any;
+ this.tpdata = event;
+ var that = this;
+ // var fd = new Date(this.tpdata.fromDate);
+ // var td = new Date(this.tpdata.toDate);
+ // var toDATE = new Date(this.tpdata.fromDate);
+ // this.TODATE = moment(this.tpdata.toDate).format('LL')
+ // this.FROMDATE = moment(this.tpdata.fromDate).format('LL')
+ // var date: any = toDATE.setDate(toDATE.getDate() + 1)
+ // this.FROMDATE=new Date(date).toISOString().replace(/T.*/,'').split('-').reverse().join('-')
+ // this.TODATE=td.toISOString().replace(/T.*/,'').split('-').reverse().join('-')
+ //console.log("FROM", this.FROMDATE, "==", this.TODATE);
+ // if (event.deviceArr.length == 0) {
+ // deviceId = [];
+ // } else {
+ // deviceId = event.deviceArr;
+ // }
+ // this.deviceArr = deviceId;
+ // console.log('this.deviceArr', this.deviceArr);
+ // this.Fromdate = fd.toISOString();
+ // this.todate = td.toISOString();
+
+ // var diff = moment(this.todate).diff(this.Fromdate, 'days')
+ // if (diff >= 31) {
+
+ // this.data_descip = 'Report is unavailable for more than a month';
+ // launch_toast();
+
+ // } else if (diff >= 15 && this.deviceArr.length >= 10) {
+ // // if(this.deviceArr.length>=10){
+
+ // this.data_descip = 'Please select less than 10 vehicals';
+ // launch_toast();
+ // // }
+ // } else {
+ this.skip = 0;
+ this.firstcall = false;
+ this.lastcall = true;
+ this.tabelObj.ajax.reload();
+ //}
+ }
+
+ function launch_toast() {
+ // console.log(divid);
+ var x = document.getElementById("toast")
+ //console.log(x);
+ x.className = "show";
+ setTimeout(function () { x.className = x.className.replace("show", ""); }, 4500);
+ }
+
+ }
+
+ testTable() {
+ const that = this;
+ console.log("inside function");
+ $(document).ready(function () {
+ that.tabelObj = $('#deviceTable').DataTable({
+ // dom: 'Bfrtip',
+ // buttons: [
+ // 'copy',
+ // 'print',
+ // 'excel'
+ // ],
+ "processing": false,
+ "searching": true,
+ pagingType: 'full_numbers',
+ pageLength: 25,
+ serverSide: false,
+ responsive: true,
+ "scrollY": '60vh',
+ "scrollCollapse": true,
+
+ // "deferLoading": 25 ,
+ lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "All"]],
+ "rowCallback": function (row: Node, data: any | Object, index: number) {
+
+ $('#edit', row).bind('click', () => {
+ var internalThat = that;
+ // console.log('rowrowrowrow=>',row);
+ // console.log('datadatadatadata',data);
+ // var fromDate=new Date(that.Fromdate)
+ // var date=new Date(fromDate.setDate(fromDate.getDate()+1)).toISOString()
+
+ // let dialogRef = that.dialog.open(DetailComponent, {
+ // // width: '950px',
+ // // height: '1160px',
+ // data: data.details
+
+ // });
+ });
+
+ $('#refresh', row).bind('click', () => {
+ var internalThat = that;
+ console.log('rowrowrowrow=>', row);
+ console.log('datadatadatadata', data);
+
+ let geocoder = new google.maps.Geocoder();
+ let t_latlng
+ var d_lat;
+ var d_lng;
+
+
+ if (data.last_location) {
+ t_latlng = new google.maps.LatLng(data.last_location.lat, data.last_location.long);
+ d_lat = data.last_location.lat;
+ d_lng = data.last_location.long
+
+
+
+ let request = {
+ latLng: t_latlng
+ };
+ geocoder.geocode(request, function (data, status) {
+ if (status == google.maps.GeocoderStatus.OK) {
+ if (data[0] != null) {
+ var liveAdd = data[0].formatted_address;
+ // //console.log(outerThis.liveAdd);
+ that.saveAddress(d_lat, d_lng, liveAdd)
+ }
+ }
+ else {
+
+ // that.liveAdd = 'NA';
+
+
+ }
+
+ })
+ }
+ })
+ // else{
+
+ // outerThis.liveAdd = res.address;
+ // }
+ // console.log("ADDRESS---->",outerThis.liveAdd);
+
+ // })
+
+
+
+ // });
+
+ },
+ ajax: (dataTablesParameters, callback) => {
+ console.log(that.Fromdate);
+ var date
+ var deviceID;
+ // if(that.Fromdate){
+ // var fromDate=new Date(that.Fromdate)
+ // date=new Date(fromDate.setDate(fromDate.getDate()+1)).toISOString()
+
+ // }
+ console.log(date);
+ that.Load = true;
+ var from_date = that.Fromdate;
+ var to_date = that.todate;
+ var user = that.useridd;
+ var temp = {
+ from_date: from_date,
+ to_date: to_date,
+ user: user
+ }
+
+ var suburl = "";
+ // var limit = 26;
+ // suburl += "/summary/getDistanceNew?from=" + temp.from_date + '&to=' + temp.to_date + '&user=' + temp.user + '&skip=' + that.skip;
+ // if (that.deviceArr.length != 0) {
+ // suburl += '&device=' + that.deviceArr;
+ // }
+ suburl += "/devices/getDeviceByUser?email=" + that.emailid + '&id=' + that.useridd
+
+ if (true) {
+ that.contactService.get(suburl).subscribe((resp: any) => {
+ that.Load = false;
+ that.reportArr = [];
+ that.reportArr = resp.devices && resp.devices.length ? resp.devices :[] ;
+
+ if (that.reportArr.length != 0) {
+ var j = 0;
+ that.finalArr = [];
+ for (var i = 0; i < that.reportArr.length; i++) {
+ if (that.reportArr[i]) {
+
+ if (that.reportArr[i].status_updated_at == undefined) {
+ let dev_status_1 = that.reportArr[i].status ? that.reportArr[i].status : "Not available";
+ that.reportArr[i].status = dev_status_1;
+ // console.log("Not Available !!!");
+ } else {
+ // this.arrival_time = new Date(that.reportArr[i].status_updated_at)
+ let dev_status = that.reportArr[i] ? that.reportArr[i].status : "NA";
+ var curr_time: any = new Date();
+ this.arrival_time = new Date(that.reportArr[i].status_updated_at);
+ var fd: any = new Date(this.arrival_time);
+ // console.log('curr_time',curr_time,this.arrival_time);
+ var diffInMilliSeconds = Math.abs(curr_time - fd) / 1000;
+
+ // calculate days
+ const days = Math.floor(diffInMilliSeconds / 86400);
+ diffInMilliSeconds -= days * 86400;
+ // console.log('calculated days', days);
+
+ // calculate hours
+ const hours = Math.floor(diffInMilliSeconds / 3600) % 24;
+ diffInMilliSeconds -= hours * 3600;
+ // console.log('calculated hours', hours);
+
+ // calculate minutes
+ const minutes = Math.floor(diffInMilliSeconds / 60) % 60;
+ diffInMilliSeconds -= minutes * 60;
+ // console.log('minutes', minutes);
+
+ let difference = '';
+ if (days > 0) {
+ difference += (days === 1) ? `${days} day, ` : `${days} days, `;
+ }
+
+ difference += (hours === 0 || hours === 1) ? `${hours} hour, ` : `${hours} hours, `;
+
+ difference += (minutes === 0 || hours === 1) ? `${minutes} minutes` : `${minutes} minutes`;
+
+ // new conversion logic
+ this.Durations = difference;
+ if (dev_status == undefined) {
+
+ this.status_toShow = "NA";
+
+ } else {
+ this.status_toShow = dev_status + " " + "Since" + " " + this.Durations;
+ }
+
+ that.reportArr[i].status = this.status_toShow;
+ }
+
+ that.clocation_1(that.reportArr[i], function (err, succ) {
+ if (err) {
+ console.log(err);
+ j++;
+ } else {
+ console.log(succ);
+ that.finalArr.push(succ);
+ console.log(that.finalArr);
+ j++;
+ if (j === that.reportArr.length) {
+ that.Load = false;
+ callback({ data: that.finalArr });
+ }
+ }
+ })
+ } else {
+ that.Load = false;
+ callback({ data: [] });
+ }
+
+
+
+ }
+ } else {
+ that.Load = false;
+ that.firstcall = true;
+ that.lastcall = (that.skip > 0) ? false : true;
+ callback({ data: [] });
+
+ }
+ }, err => {
+ that.Load = false;
+ callback({ data: [] });
+ console.log("error", err);
+ });
+ } else {
+
+ }
+ },
+
+ "columns": [
+ {
+ "data": "Device_Name",
+ "render": function (data, type, row) {
+ return data ? data : '';
+ }
+ },
+ {
+ "data": "last_ping_on",
+ "render": function (data, type, row) {
+ var expDate = new Date(data);
+ return data ? (moment(expDate).format('lll')) : "";
+ }
+ },
+ {
+ "data": "position",
+ "render": function (data, type, row) {
+ // let date=new Date(that.todate).getDate()+"/"+new Date(that.todate).getMonth()+"/"+new Date(that.todate).getFullYear()
+ var address
+ var biden = typeof data;
+ if (biden === 'object') {
+ // var addressLink = '
';
+ return ``;
+ } else {
+ return data ? data : '--';
+ }
+ }
+ },
+ {
+ "data": "last_speed",
+ "defaultContent": "",
+ render: function (data, type, row) {
+ return (data ? data : '') + ' kph';
+ }
+ },
+
+ {
+ "data": "status",
+ render: function (data, type, row) {
+
+ return data ? data : '';
+ }
+ }
+ //
+ ],
+ "columnDefs": [
+ { className: "dt-body-left", "targets": [0, 1, 2, 3, 4] },
+ // {
+ // "targets": '_all',
+ // "createdCell": function (td, cellData, rowData, row, col) {
+ // $(td).css('padding', '18px')
+ // }
+ // } ,
+ // { "width": "10px", "targets": 0 },
+ // { "width": "40px", "targets": 1 },
+ // { "width": "100px", "targets": 2 },
+ // { "width": "70px", "targets": 3 },
+ // { "width": "10px", "targets": 3 },
+
+ // {
+ // targets: -1, //-1 es la ultima columna y 0 la primera
+ // data: null,
+ // defaultContent: '
'
+ // },
+ ]
+ });
+
+ });
+
+ }
+ saveAddress(lat, lng, address) {
+ var addressObj = {
+ "lat": lat,
+ "long": lng,
+ "address": address
+ }
+ this.contactService.saveAdd(addressObj).subscribe(res => {
+ console.log(res);
+ this.getReport(this.value);
+ }, err => {
+ //console.log("couldn't save address");
+ })
+
+ }
+
+
+
+ tab: any;
+ exportExcel() {
+ var tab_text = "";
+ var textRange; var j = 0;
+ var table = $('#deviceTable').clone();
+
+ table[0].querySelector("thead").remove();
+ table[0].prepend($(".dataTable thead").clone()[0]);
+ this.tab = table[0];
+
+ for (j = 0; j < this.tab.rows.length; j++) {
+ tab_text = tab_text + this.tab.rows[j].innerHTML + "
";
+
+ }
+
+ tab_text = tab_text + "
";
+
+ tab_text = tab_text.replace(/]*>|<\/input>/gi, "");
+
+ var ua = window.navigator.userAgent;
+ var msie = ua.indexOf("MSIE ");
+
+ var sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text));
+
+ return (sa);
+ }
+
+
+
+ filterStates(val) {
+
+ // console.log(val)
+ // console.log(this.options)
+
+
+ if (val == "") {
+
+ this.dataSelect = [];
+ // console.log("deviceValue",this.dataSelect);
+ } else {
+
+ const filterValue: any = val;
+
+ this.dataSelect = this.options.filter(function (d) {
+ var t = d.value.toLocaleLowerCase().indexOf(filterValue.toLocaleLowerCase());
+ // this.option = this.options[i];
+
+
+ return t > -1;
+ });
+
+ return this.dataSelect;
+
+ }
+
+
+ }
+
+ ngOnDestroy() {
+ this.closeProcess = 0;
+ this.finalise.next(void 0);
+ }
+
+
+ clocation_1(latlngObj, cb) {
+
+ var outerThis = this;
+ var la = '';
+
+ let latLng = {
+ lat: "0",
+ long: "0"
+ };
+
+ latLng = {
+ long: latlngObj.last_loc && latlngObj.last_loc.coordinates && latlngObj.last_loc.coordinates.length && latlngObj.last_loc.coordinates[0] ? latlngObj.last_loc.coordinates[0] : 0,
+ lat: latlngObj.last_loc && latlngObj.last_loc.coordinates && latlngObj.last_loc.coordinates.length && latlngObj.last_loc.coordinates[1] ? latlngObj.last_loc.coordinates[1]: 0
+ }
+
+ outerThis.contactService.getAddressByApi(latLng).subscribe(res => {
+ if (res.message == "Address not found in databse") {
+ var adata = {
+ iden: 'noaddress',
+ latlng: latLng
+ }
+ latlngObj['position'] = adata;
+
+ } else {
+ latlngObj['position'] = res.address;
+
+ }
+ cb(null,latlngObj);
+ }, err => {
+ latlngObj['position'] = 'N/A';
+ cb(null, latlngObj);
+ })
+
+ }
+
+
+ next() {
+ // this.reportArr =[];
+ this.lastcall = false;
+ this.skip += 1;
+ // this.sidebarData();
+ // this.ngOnInit();
+ this.tabelObj.ajax.reload();
+ }
+ pre() {
+ // this.reportArr=[]
+ // console.log(this.skip)
+ if (this.skip > 0) {
+ this.skip -= 1;
+ this.lastcall = false;
+ // this.sidebarData();
+ // this.ngOnInit();
+ this.tabelObj.ajax.reload();
+ } else {
+ this.lastcall = true;
+ this.firstcall = false;
+ }
+
+ }
+
+ // --------------------New Method for excel export-------------------
+ exportExcels() {
+ for (var i = 0; i < this.reportArr.length; i++) {
+
+ //this.reportArr[i].status = this.reportArr[i].device.Device_Name;
+
+
+ }
+
+ this.downloadFile(this.reportArr);
+ }
+
+ downloadFile(data, filename = 'Distance Report') {
+
+
+
+
+
+ let arrHeader = ["Object", "Time", "Position", "Speed", "Status"];
+ let csvData = this.ConvertToCSV(data, arrHeader);
+ let blob = new Blob(['\ufeff' + csvData], { type: 'text/csv;charset=utf-8;' });
+ let dwldLink = document.createElement("a");
+ let url = URL.createObjectURL(blob);
+ let isSafariBrowser = navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1;
+ if (isSafariBrowser) { //if Safari open in new window to save file with random filename.
+ dwldLink.setAttribute("target", "_blank");
+ }
+ dwldLink.setAttribute("href", url);
+ dwldLink.setAttribute("download", "Distance Report.csv");
+ dwldLink.style.visibility = "hidden";
+ document.body.appendChild(dwldLink);
+ dwldLink.click();
+ document.body.removeChild(dwldLink);
+ }
+ ConvertToCSV(objArray, headerList) {
+ let array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
+ // console.log(array,"<===");Distance 126.94
+ // Running 2:1
+ // Idle 1:56
+ // Stop
+
+ let str = 'Current Position Report \r\n';
+ let row = 'S.No,';
+
+ let newHeaders = ["Object", "Time", "Position", "Speed", "Status"];
+
+ for (let index in newHeaders) {
+ row += newHeaders[index] + ',';
+ }
+ row = row.slice(0, -1);
+ str += row + '\r\n';
+ for (let i = 0; i < array.length; i++) {
+ let line = (i + 1) + '';
+ if (i < array.length) { }
+ for (let index in headerList) {
+ let head = headerList[index];
+ line += ',' + this.strRep(array[i][head]);
+ }
+ str += line + '\r\n';
+
+ }
+ return str;
+ }
+
+ strRep(data) {
+ if (typeof data == "string") {
+ let newData = data.replace(/,/g, " ");
+ return newData;
+ }
+ else if (typeof data == "undefined") {
+ return "-";
+ }
+ else if (typeof data == "number") {
+ return data.toString();
+ }
+ else {
+ return data;
+ }
+ }
+
+ expotToPdf() {
+ console.log(this.finalArr);
+
+ this.downloadPdf()
+
+ }
+ // downloadPdf() {
+ // let fileName =
+ // "Distance Report" +
+ // new Date().getTime() +
+ // PDF_EXTENSION;
+ // var pdfsize = "a2";
+
+ // var doc = new jsPDF("p", "pt", pdfsize);
+ // var f_date = moment(this.Fromdate).format('lll');
+ // var t_date =moment(this.todate).format('lll');
+ // var date_combine = f_date + ' to ' + t_date;
+ // // doc.setFontSize(30);
+ // doc.setFontSize(15);
+ // doc.text('Distance Report ', 20, 30);
+ // // doc.text(date_combine, 250, 60);
+ // doc.setFontStyle("arial");
+
+ // var header = function(data) {
+ // doc.setFontSize(15);
+ // doc.setTextColor(40);
+ // doc.setFontStyle('normal');
+ // //doc.addImage(headerImgData, 'JPEG', data.settings.margin.left, 20, 50, 50);
+ // // doc.text("Testing Report", data.settings.margin.left, 50);
+ // };
+
+ // var options = {
+ // beforePageContent: header,
+ // margin: {
+ // top: 120
+ // },
+ // startY: doc.autoTableEndPosY() + 20
+ // };
+
+ // doc.autoTable({
+ // head: this.headRows(),
+ // // margin: { top: 80 },
+ // body: this.bodyRows(this.finalArr.length, this.finalArr),
+ // options
+
+ // });
+ // doc.save(fileName);
+ // }
+
+
+
+ startAddress;
+
+ endAddress;
+ f_date
+ t_date
+ downloadPdf() {
+ var outerThis = this
+ let fileName =
+ "Current Position Report" +
+ new Date() +
+ PDF_EXTENSION;
+ var pdfsize = "a2";
+ var totalPagesExp = "{total_pages_count_string}";
+ outerThis.startAddress = outerThis.finalArr[0].address;
+ outerThis.endAddress = outerThis.finalArr[outerThis.finalArr.length - 1].address
+ var doc = new jsPDF("p", "pt", pdfsize);
+ // outerThis.f_date = moment(this.Fromdate).format('lll');
+ // outerThis.t_date =moment(this.todate).format('lll');
+ // var date_combine = f_date + ' to ' + t_date;
+ // doc.setFontSize(30);
+ var pageHeight = doc.internal.pageSize.height || doc.internal.pageSize.getHeight();
+ var pageWidth = doc.internal.pageSize.width || doc.internal.pageSize.getWidth();
+ doc.setFontSize(15);
+ // doc.text(60, 20, 'Travel Path Report (Date='+date_combine+') Device Name='+this.device_name,);
+
+ doc.text("Current Position Report", 500, 30);
+ doc.setFontStyle("arial");
+
+ var header = function (data) {
+ doc.setFontSize(30);
+ doc.setTextColor(40);
+ doc.setFontStyle('arial');
+
+ };
+
+ var options = {
+ beforePageContent: header,
+ margin: {
+ top: 120
+ },
+
+ startY: doc.autoTableEndPosY() + 20
+ };
+ var logo = localStorage.getItem('logo1');
+ outerThis.toDataURL(logo, function (dataUrl) {
+
+ doc.autoTable({
+ head: outerThis.headRows(),
+ // margin: { top: 80 },
+ // startY: doc.autoTable.previous.finalY + 200,
+ body: outerThis.bodyRows(outerThis.finalArr.length, outerThis.finalArr),
+ options,
+ styles: { overflow: 'linebreak' },
+
+ theme: 'grid',
+ didDrawPage: function (data) {
+ // Header
+ doc.setFontSize(20);
+ doc.setTextColor(40);
+ doc.setFontStyle('arial');
+ // logo=localStorage.getItem('logo1');
+ if (logo)
+ doc.addImage(dataUrl, 'JPEG', pageWidth - 100, 6, 75, 75);
+ doc.autoTable({
+ html: "#headerTable",
+ styles: { fontSize: 13, textColor: "[255,72,72]" },
+ margin: { bottom: 140, left: 40, right: 8, top: 40 },
+ theme: 'plain'
+ });
+
+ // Footer
+ var str = "Page " + doc.internal.getNumberOfPages()
+ // Total page number plugin only available in jspdf v1.0+
+ if (typeof doc.putTotalPages === 'function') {
+ str = str + " of " + totalPagesExp;
+ }
+ doc.setFontSize(10);
+
+ // jsPDF 1.4+ uses getWidth, <1.4 uses .width
+ var pageSize = doc.internal.pageSize;
+ var pageHeight = pageSize.height ? pageSize.height : pageSize.getHeight();
+ doc.text(str, data.settings.margin.left, pageHeight - 10);
+ },
+
+ margin: { top: 85 },
+
+ });
+ if (typeof doc.putTotalPages === 'function') {
+ doc.putTotalPages(totalPagesExp);
+ }
+ doc.save(fileName);
+ })
+ }
+
+ toDataURL(url, callback) {
+
+ var xhr = new XMLHttpRequest();
+ xhr.onload = function () {
+ var reader = new FileReader();
+ reader.onloadend = function () {
+ callback(reader.result);
+ }
+ reader.readAsDataURL(xhr.response);
+ };
+ xhr.open('GET', url);
+ xhr.responseType = 'blob';
+ xhr.send();
+ }
+
+ headRows() {
+
+ return [
+ // displayedColumns=['vehicleName','IMEI','totalDistance','fuel','ignOn','ignOff','idleTime','outOfReach','noGps','trips','maxSpeed','startLocation','endLocation','details'];
+
+ {
+ device_name:'Object',
+time:'Time',
+position:'Position',
+speed:'Speed',
+status:'Status'
+ }
+ ];
+ }
+
+
+ bodyRows(rowCount, pdfBody) {
+ console.log(rowCount, pdfBody);
+
+ rowCount = rowCount || 10;
+ let body = [];
+ for (var j = 0; j < rowCount; j++) {
+ var expDate = pdfBody[j].last_ping_on ? (moment(new Date(pdfBody[j].last_ping_on)).format('lll')) : "";
+ body.push({
+
+ device_name: pdfBody[j].Device_Name,
+ time: expDate,
+ position: pdfBody[j].position,
+ speed: (pdfBody[j].last_speed ? pdfBody[j].last_speed : "0") + ' kph',
+ status: pdfBody[j].status,
+
+ });
+ }
+ return body;
+ }
+
+
+
+
+
+
+}
diff --git a/src/app/user-setting/user-setting.component.html b/src/app/user-setting/user-setting.component.html
new file mode 100644
index 0000000..38102a8
--- /dev/null
+++ b/src/app/user-setting/user-setting.component.html
@@ -0,0 +1,113 @@
+
+Loading…
+
+
\ No newline at end of file
diff --git a/src/app/user-setting/user-setting.component.scss b/src/app/user-setting/user-setting.component.scss
new file mode 100644
index 0000000..f3916b6
--- /dev/null
+++ b/src/app/user-setting/user-setting.component.scss
@@ -0,0 +1,96 @@
+.main {
+ padding: 20px;
+ margin-top: 55px;
+ height: 90vh;
+}
+
+.topnav {
+ overflow: hidden;
+ background-color: #e9e9e9;
+}
+
+.topnav a {
+ float: left;
+ display: block;
+ color: black;
+ text-align: center;
+ padding: 14px 16px;
+ text-decoration: none;
+ font-size: 17px;
+}
+
+.topnav a:hover {
+ background-color: #ddd;
+ color: black;
+}
+
+.topnav a.active {
+ background-color: #2196f3;
+ /* color: blueviolet; */
+ width: 290px;
+ font-size: larger;
+ font-weight: 600;
+}
+
+.topnav .search-container {
+ float: right;
+}
+
+.topnav input[type="text"] {
+ padding: 6px;
+ margin-top: 8px;
+ font-size: 17px;
+ border: black;
+}
+
+.topnav .search-container button {
+ float: right;
+ padding: 6px 10px;
+ margin-top: 8px;
+ margin-right: 16px;
+ background: #ddd;
+ font-size: 17px;
+ border: none;
+ cursor: pointer;
+}
+
+.topnav .search-container button:hover {
+ background: blue;
+}
+
+@media screen and (max-width: 600px) {
+ .topnav .search-container {
+ float: none;
+ }
+
+ .topnav a,
+ .topnav input[type="text"],
+ .topnav .search-container button {
+ float: none;
+ display: block;
+ text-align: left;
+ width: 100%;
+ margin: 0;
+ padding: 14px;
+ }
+
+ .topnav input[type="text"] {
+ border: 1px solid #ccc;
+ }
+}
+
+.col-md-6 {
+ margin-top: 15px;
+}
+
+.ms-choice>div {
+ position: inherit !important;
+}
+
+.ms-choice>span {
+ position: inherit !important;
+}
+
+.ms-parent {
+ display: contents;
+}
\ No newline at end of file
diff --git a/src/app/user-setting/user-setting.component.spec.ts b/src/app/user-setting/user-setting.component.spec.ts
new file mode 100644
index 0000000..13250ed
--- /dev/null
+++ b/src/app/user-setting/user-setting.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { UserSettingComponent } from './user-setting.component';
+
+describe('UserSettingComponent', () => {
+ let component: UserSettingComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ UserSettingComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(UserSettingComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should be created', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/user-setting/user-setting.component.ts b/src/app/user-setting/user-setting.component.ts
new file mode 100644
index 0000000..4dfd2a7
--- /dev/null
+++ b/src/app/user-setting/user-setting.component.ts
@@ -0,0 +1,309 @@
+import { Component, OnInit } from '@angular/core';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { MdSnackBar } from '@angular/material';
+
+import { ContactService } from '../contact.service';
+declare var $: any;
+
+declare var google: any, swal: any;
+@Component({
+ selector: 'app-user-setting',
+ templateUrl: './user-setting.component.html',
+ styleUrls: ['./user-setting.component.scss']
+})
+export class UserSettingComponent implements OnInit {
+ emailId: any;
+ Load:Boolean=false;
+ searchForm: FormGroup;
+ deleteShow: boolean = false;
+ submitted = false;
+ userId: any;
+ deviceForm: FormGroup
+ data: any;
+ deleted: boolean = false;
+ dealers: any[];
+ ditributers: any;
+ selectedSupAdmin: any;
+ selectedDealer: any;
+ // @ViewChild(BaseChartDirective) public chart: BaseChartDirective;
+ constructor(private contactService: ContactService, private fb: FormBuilder, public snackBar: MdSnackBar) {
+
+ }
+ ngOnInit(): void {
+ this.searchForm = this.fb.group({
+ imei: ['', Validators.required]
+ })
+
+ // Name
+ // emial
+ // dealer
+ // superadmin
+ // isdeleted
+ // issuspended
+ // user id
+ // createdon
+ // expiredon
+
+ this.deviceForm = this.fb.group({
+ Name: [''],
+ email: [''],
+ Dealer: [''],
+ supAdmin: [''],
+ accountSuspended: [''],
+ user_id: [''],
+ created_on: [''],
+ expire_date: [''],
+ DeletedUser: ['']
+ // imei:[''],
+ // registrationNumber:[''],
+ // sim1:[''],
+ // sim2:[''],
+ // dealaer:[''],
+ // user:[''],
+ // deviceModel:[''],
+ // vehicleType:[''],
+ // expirationDate:[''],
+ // creationDate:[''],
+ // superAdmin:[''],
+ // lastRenewal:[''],
+ // status:[''],
+ // deleted:[''],
+ // deletedBy:[''],
+ // deletedAt:[''],
+ // deletedFrom:['']
+
+ // 352887076587769
+ })
+ this.emailId = JSON.parse(window.atob(window.localStorage.token.split(".")[1])).email;
+ this.userId = JSON.parse(window.atob(window.localStorage.token.split('.')[1]))._id;
+ this.loadDropdown()
+ this.getDistributers();
+
+ var that = this
+ $("#distributer").change(function () {
+ // alert($(this).val());
+ console.log($(this).val());
+ var value = $(this).val();
+ that.selectedSupAdmin = value[0];
+ that.getDealers(that.selectedSupAdmin)
+
+ console.log(that.selectedSupAdmin);
+
+ // var prevSelect = $("#MultiSelect_Preview").select2();
+ // prevSelect.val($(this).val()).trigger('change');
+ });
+
+ $("#dealer").change(function () {
+ // var that = this
+ // alert($(this).val());
+ console.log($(this).val());
+ var value = $(this).val();
+ that.selectedDealer = value[0];
+ // that.getUsers(that.selectedDealer)
+ // that.getUser(that.selectedDealer)
+
+ console.log(that.selectedDealer);
+
+ // var prevSelect = $("#MultiSelect_Preview").select2();
+ // prevSelect.val($(this).val()).trigger('change');
+ });
+
+
+ }
+
+ loadDropdown() {
+ var script = document.createElement("script");
+ script.setAttribute("type", "text/javascript");
+ script.setAttribute("src", "https://unpkg.com/multiple-select@1.3.1/dist/multiple-select.min.js");
+ document.getElementsByTagName("head")[0].appendChild(script);
+
+ setTimeout(() => {
+ $('#distributer').multipleSelect({
+ width: 470,
+ placeholder: "Select Distributer",
+ filter: true,
+ single: true,
+ selectAll: false
+
+ })
+ }, 100);
+
+ setTimeout(() => {
+ $('#dealer').multipleSelect({
+ width: 470,
+ placeholder: "Select Dealer",
+ filter: true,
+ single: true,
+ selectAll: false
+
+ })
+ }, 100);
+
+
+
+ }
+
+ get f() { return this.searchForm.controls; }
+
+ getDistributers() {
+ this.Load=true;
+ this.contactService.getSuperAdminList().subscribe(res => {
+ this.ditributers = res;
+ this.loadDropdown()
+ this.Load = false;
+ },err=>{
+ this.Load = false;
+ })
+ }
+ getDealers(id) {
+ this.Load = true;
+ this.dealers = []
+ this.contactService.getDealersDetails(id).subscribe(res => {
+ this.dealers = res;
+ this.dealers = this.dealers.concat(this.ditributers);
+ this.loadDropdown()
+ this.Load = false;
+ }, err => {
+ this.Load = false;
+ })
+ }
+
+ selectSupAdmin(event) {
+ console.log(event.target.value);
+ this.getDealers(event.target.value)
+ }
+
+ submit() {
+ console.log(this.searchForm.value);
+ this.Load = true;
+ this.submitted = true;
+
+ // stop here if form is invalid
+ if (this.searchForm.invalid) {
+ return;
+ }
+ this.contactService.get('/users/searchUser?search=' + this.searchForm.value.imei).subscribe((res: any) => {
+ console.log(res);
+ this.Load = false;
+ this.data = res[0];
+ if (res.length != 0) {
+ this.deleteShow = true
+ if (res[0].DeletedUser) {
+ this.deleteShow = false;
+ this.deleted = true;
+ } else {
+
+ this.deleted = false;
+ }
+
+ this.selectedSupAdmin = res[0].supAdmin ? res[0].supAdmin._id : ''
+
+ this.selectedDealer = res[0].Dealer ? res[0].Dealer._id : ''
+
+ console.log(res[0].Dealer ? res[0].Dealer.last_name ? res[0].Dealer.last_name : "" : '');
+ var dealerFirst = res[0].Dealer ? res[0].Dealer.first_name ? res[0].Dealer.first_name : '' : '';
+ var dealerLast = res[0].Dealer ? res[0].Dealer.last_name ? res[0].Dealer.last_name : "" : ''
+ var supFirst = res[0].supAdmin ? res[0].supAdmin.first_name ? res[0].supAdmin.first_name : '' : ''
+ var supLast = res[0].supAdmin ? res[0].supAdmin.last_name ? res[0].supAdmin.last_name : '' : ''
+ // var dealer=res[0].Dealer?res[0].Dealer.first_name?res[0].Dealer.first_name:'':''+' '+res[0].Dealer?res[0].Dealer.last_name?res[0].Dealer.last_name:"":''
+ // var supAdm=res[0].supAdmin?res[0].supAdmin.first_name?res[0].supAdmin.first_name:'':''+' '+res[0].supAdmin?res[0].supAdmin.last_name?res[0].supAdmin.last_name:'':''
+ this.deviceForm.patchValue({
+ Name: [res[0].first_name ? res[0].first_name : '' + ' ' + res[0].last_name ? res[0].last_name : ''],
+ email: [res[0].email],
+ Dealer: [res[0].Dealer ? res[0].Dealer._id:''],
+ supAdmin: [res[0].supAdmin ? res[0].supAdmin._id : ''],
+ accountSuspended: [res[0].accountSuspended == true ? 'Yes' : 'No'],
+ user_id: [res[0].user_id],
+ created_on: [new Date(res[0].created_on)],
+ expire_date: [new Date(res[0].expire_date)],
+ DeletedUser: res[0].DeletedUser == true ? 'Yes' : 'No'
+ })
+ if (this.data.supAdmin)
+ this.getDealers(this.data.supAdmin._id);
+ } else {
+ this.deleteShow = false;
+ this.deviceForm.reset();
+ this.snackBar.open("No Data Found", '', {
+ duration: 4000,
+ });
+ }
+
+ this.Load = false;
+ }, err => {
+ this.Load = false;
+ })
+
+ }
+
+ deleteDevice() {
+ swal({
+ title: 'Are you sure?',
+ icon: 'warning',
+ html: "You won't be able to revert this!",
+ showCloseButton: true,
+ focusConfirm: false,
+ // confirmButtonText: 'Reset today ODO',
+ confirmButtonText: 'Yes, save it!',
+ // cancelButtonText: 'Reset total ODO',
+ // cancelButtonAriaLabel: 'Thumbs down'
+ cancelButtonText: 'No, cancel!',
+ }).then((result: { value: boolean; }) => {
+ if (result) {
+ var deletePayload = {
+ _id: this.data._id,
+ Dealer: this.selectedDealer ? this.selectedDealer : this.data.Dealer ? this.data.Dealer._id:undefined,
+ supAdmin: this.selectedSupAdmin ? this.selectedSupAdmin : this.data.supAdmin ? this.data.supAdmin._id : undefined
+ }
+ console.log(deletePayload);
+ this.contactService.post('/users/updateUserFrom',deletePayload).subscribe(res => {
+ swal({
+ title: 'Transfered!',
+ html: 'Your file has been saved.',
+ icon: 'success'
+ })
+ this.deviceForm.reset();
+ }, err => {
+ console.log(err);
+ var message = JSON.parse(err._body)
+ swal({
+ title: 'Status: ' + err.status,
+ html: message.message,
+ icon: 'warning'
+ })
+ })
+
+ }
+ }
+ )
+ }
+
+ deleteDevicePermenatly() {
+ swal({
+ title: 'Are you sure?',
+ icon: 'warning',
+ html: "User will be deleted permanantly",
+ showCloseButton: true,
+ focusConfirm: false,
+ // confirmButtonText: 'Reset today ODO',
+ confirmButtonText: 'Yes, delete it!',
+ // cancelButtonText: 'Reset total ODO',
+ // cancelButtonAriaLabel: 'Thumbs down'
+ cancelButtonText: 'No, cancel!',
+ }).then((result: { value: boolean; }) => {
+ if (result) {
+
+ this.contactService.permanentDeluser(this.data._id).subscribe(res => {
+ swal(
+ 'Deleted',
+ 'User Deleted',
+ 'success'
+ )
+ this.deviceForm.reset();
+ })
+ }
+ }
+ )
+ }
+
+
+}
\ No newline at end of file