import { Component, Injector, ViewChild, ViewEncapsulation } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { appModuleAnimation } from '@shared/animations/routerTransition'; import { AppComponentBase } from '@shared/common/app-component-base'; import { CreateOrUpdateContactUserInput,DriversServiceProxy, LocationServiceProxy, CreateLocationInput,UpdateLocationInput, UserLocationServiceProxy, CreateUserLocationInput,UpdateUserLocationInput, PasswordComplexitySetting,UserRoleDto,UserEditDto,UpdateContactInput, UpdateAddressInput,CreateContactInput, ContactServiceProxy, AddressTypeServiceProxy, PostalCodeServiceProxy, EmailServiceProxy,PhoneServiceProxy, ProfileServiceProxy, AddressServiceProxy} from '@shared/service-proxies/service-proxies'; import { LazyLoadEvent } from 'primeng/components/common/lazyloadevent'; import { finalize } from 'rxjs/operators'; import * as moment from 'moment'; import * as _ from 'lodash'; import { colorSets } from '@swimlane/ngx-charts/release/utils'; import { ContactFormComponent } from '@app/shared/layout/form/contact.form.component'; import { AddressFormComponent } from '@app/shared/layout/form/address-form.component'; declare var KTWizard: any; declare var $: any; declare var KTApp: any; @Component({ templateUrl: './edit-driver.component.html', encapsulation: ViewEncapsulation.None, animations: [appModuleAnimation()] }) export class EditDriverComponent extends AppComponentBase { @ViewChild(ContactFormComponent, {static:false}) contactForm; @ViewChild(AddressFormComponent, {static:false}) addressForm; active = false; saving = false; id: any; driver: UserEditDto = new UserEditDto(); contact: UpdateContactInput = new UpdateContactInput(); address: UpdateAddressInput = new UpdateAddressInput(); contactInput: CreateContactInput = new CreateContactInput(); defaultLocation: any; selectedLocation:any; location: any; filteredLocations: any; defaultAddressType: any; defaultCountry: any; defaultState: any; defaultPostal: any; defaultCity: any; selectedAddressType: any; selectedCountry: any; selectedPostalCode: any; selectedState: any; selectedCity: any; country: any; filteredCountries: any; city: any; filteredCities: any; state: any; filteredStates: any; postal: any; filteredPostal: any; addressType: any; filteredAddressType: any; canChangeUserName = true; isActive = true; isTwoFactorEnabled: boolean = false //this.setting.getBoolean('Abp.Zero.UserManagement.TwoFactorLogin.IsEnabled'); isLockoutEnabled: boolean = false //this.setting.getBoolean('Abp.Zero.UserManagement.UserLockOut.IsEnabled'); passwordComplexitySetting: PasswordComplexitySetting = new PasswordComplexitySetting(); roles: UserRoleDto[]; sendActivationEmail = false; setRandomPassword = false; passwordComplexityInfo = ''; isContact = true; constructor( injector: Injector, private _locationService: LocationServiceProxy, private _driverService: DriversServiceProxy, private _userLocationService: UserLocationServiceProxy, private _contactService: ContactServiceProxy, private _addressTypeService: AddressTypeServiceProxy, private _postalCodeService: PostalCodeServiceProxy, private _profileService: ProfileServiceProxy, private _addressService: AddressServiceProxy, private router: Router, private route: ActivatedRoute ) { super(injector); } setPasswordComplexityInfo(): void { this.passwordComplexityInfo = ''; } ngOnInit(){ $('.kt-select2').select2({ placeholder:"Select.." }); this.route.paramMap.subscribe(params => { this.id = params.get("id") }) this.KTWizard2(); $("#addressTypeSelectInput").change(function(){ this.selectedAddressType = $("#addressTypeSelectInput option:selected").text(); $("#selectedAddressType").text(this.selectedAddressType); }); $("#countrySelectInput").change(function(){ this.selectedCountry = $("#countrySelectInput option:selected").text(); $("#selectedCountry").text(this.selectedCountry + ","); }); $("#postalSelectInput").change(function(){ this.selectedPostalCode = $("#postalSelectInput option:selected").text(); $("#selectedPostalCode").text(this.selectedPostalCode + ","); }); $("#stateSelectInput").change(function(){ this.selectedState = $("#stateSelectInput option:selected").text(); $("#selectedState").text(this.selectedState + ","); }); $("#citySelectInput").change(function(){ this.selectedCity = $("#citySelectInput option:selected").text(); $("#selectedCity").text(this.selectedCity+ ","); }); this.selectedCity = $("#locationSelectInput").val(); $("#locationSelected").text(this.selectedCity); $("#locationSelectInput").change(function(){ this.selectedCity = $("#locationSelectInput option:selected").text(); $("#locationSelected").text(this.selectedCity); }); this._profileService.getPasswordComplexitySetting().subscribe(passwordComplexityResult => { this.passwordComplexitySetting = passwordComplexityResult.setting; this.setPasswordComplexityInfo(); }); this._driverService.getDriverForEdit(this.id).subscribe(res => { console.log(this.id); this.driver = res.user; }); this._userLocationService.getUserLocation(undefined,this.id,undefined, undefined,undefined,undefined,undefined).subscribe(res2 => { let values = []; res2.items.forEach(el => { // $("#locationSelectInput").val(el); console.log(el); values.push(el.locationId); //console.log(values); // this.selectedLocation = el.location.name; // console.log(this.selectedLocation); }); this.defaultLocation = values; console.log(this.defaultLocation); }); this._contactService.getContact( undefined,this.id,undefined,undefined,undefined,undefined, undefined,undefined ).subscribe((result) => { console.log(result.items[0]); if(result.items[0] === undefined){ this.isContact = false; } else{ this.isContact = true; this.contact.id = result.items[0]['id']; this.address.addressLine1 = result.items[0]['address']['addressLine1']; this.address.addressLine2 = result.items[0]['address']['addressLine2']; this.address.id = result.items[0]['address']['id']; this.address.postalCodeId = result.items[0]['address']['postalCode']['id']; result.items[0]['address']['addressType'] === undefined?this.selectedAddressType = '' : this.selectedAddressType= result.items[0]['address']['addressType']['name']; this.selectedCountry = result.items[0]['address']['country']['name']; this.selectedPostalCode = result.items[0]['address']['postalCode']['name']; this.selectedState = result.items[0]['address']['state']['name']; this.selectedCity = result.items[0]['address']['city']['name']; result.items[0]['address']['addressType'] === undefined? this.defaultAddressType = 'null' : this.defaultAddressType= result.items[0]['address']['addressType']['id']; this.defaultCountry = result.items[0]['address']['country']['id']; this.defaultCity = result.items[0]['address']['city']['id']; this.defaultPostal = result.items[0]['address']['postalCode']['id']; this.defaultState = result.items[0]['address']['state']['id']; this.addressType = result.items[0]['address']['addressType']['id']; console.log(this.defaultCountry); } }) // $('#addressCheckbox').change(function(){ // if(this.checked) // $('#contact').fadeIn('slow'); // else // $('#contact').fadeOut('slow'); // }); } ngAfterViewInit() { let maxcount = 1000; this.filterLocations(maxcount); // this.filterPostal(maxcount); this.filterAddressTypes(maxcount); } save(): void { // this.saving = true; // let userInput = new CreateOrUpdateContactUserInput({ // user : new UserEditDto({ // id: this.driver.id, // name: this.driver.name, // surname: this.driver.surname, // userName: this.driver.userName, // password: this.driver.password, // phoneNumber: this.driver.phoneNumber, // emailAddress: this.driver.emailAddress, // isLockoutEnabled: false, // isActive: this.isActive, // isTwoFactorEnabled: this.isTwoFactorEnabled, // shouldChangePasswordOnNextLogin: false // }), // assignedRoleNames : _.map( // _.filter(this.roles, { isAssigned: true }), role => role.roleName // ), // sendActivationEmail : this.sendActivationEmail, // setRandomPassword : this.setRandomPassword, // location : $("#locationSelectInput").val() // }); // // if(Number((document.getElementById('addressTypeSelectInput')).value) == 0) { // // this.address.addressTypeId = null; // // } // // else { // // this.address.addressTypeId = Number((document.getElementById('addressTypeSelectInput')).value); // // } // // this.address.countryId = Number((document.getElementById('countrySelectInput')).value); // // this.address.cityId = Number((document.getElementById('citySelectInput')).value); // // this.address.stateId = Number((document.getElementById('stateSelectInput')).value); // // this.address.postalCodeId = Number((document.getElementById('postalSelectInput')).value); // // this.contact.addressId = this.address.id; // // this.contact.userId = this.driver.id; // // this.contact.firstName = this.driver.name; // // this.contact.lastName = this.driver.surname; // if(this.isContact == false) { // this._driverService.createOrUpdateDriver(userInput) // .pipe(finalize(() => { this.saving = false; })) // .subscribe(() => { // this.notify.info(this.l('SavedSuccessfully')); // this.router.navigate(['/app/sprintship/drivers']); // }); // } // else { // this.saving = true; // this._driverService.createOrUpdateDriver(userInput) // .subscribe( // success=> { // console.log(success); // this.address.postalCodeId = Number((document.getElementById('postalSelectInput')).value); // this.address.addressLine1 = this.address.addressLine1; // if(this.address.addressLine2==null || this.address.addressLine2==""){ // this.address.addressLine2 // } // this.address.addressLine2 = this.address.addressLine2; // if(Number((document.getElementById('addressTypeSelectInput')).value) == 0) { // this.address.addressTypeId = null; // } // else { // this.address.addressTypeId = Number((document.getElementById('addressTypeSelectInput')).value); // } // this._addressService.createAddress(this.address) // .subscribe( // addressResult=>{ // console.log(addressResult); // this.contactInput.addressId = addressResult; // this.contactInput.firstName = this.driver.name; // this.contactInput.lastName = this.driver.surname; // this.contactInput.userId = success; // console.log(this.contactInput); // this._contactService.createContact(this.contactInput) // .pipe(finalize(()=> { // this.saving = false; // })) // .subscribe(() => { // this.notify.info(this.l('SavedSuccessfully')); // this.router.navigate(['/app/sprintship/drivers']); // console.log(this.contactInput); // }); // }); // }, // error=> { // this.saving = false; // } // ) // } } filterLocations(maxcount): void { this._locationService.getLocation( undefined, undefined, undefined, maxcount, undefined ).subscribe(result => { this.filteredLocations = result.items; }); } // filterPostal(maxCount): void { // this._postalCodeService.getPostalCode( // undefined, // undefined, // undefined, // maxCount, // undefined // ).subscribe(result => { // this.filteredPostal = result.items; // }); // } filterAddressTypes(maxCount): void { this._addressTypeService.getAddressType( undefined, undefined, undefined, maxCount, undefined ).subscribe(result => { this.filteredAddressType = result.items; }); } // Class definition KTWizard2(): void { // Base elements var wizardEl; var formEl; var validator; var wizard; // Private functions var initWizard = function () { // Initialize form wizard wizard = new KTWizard('kt_wizard_v2', { startStep: 1, }); // Validation before going to next page wizard.on('beforeNext', function (wizardObj) { if (wizardObj.currentStep == 1) { if ($('#Name').val() == '' || ($('#Surname').val() == '') // || ($('#PhoneNumber').val() == ''|| $('#minutesPerStopInput').val()==0) || $('#EmailAddress').val() == '' || $('#UserName').val() == '' ) { wizardObj.stop(); // don't go to the next step } } else if (wizardObj.currentStep == 2) { if ($('#locationSelectInput').val() == null || $('#locationSelectInput').val() == 0 // $('#address1Input').val() == '' // || ($('#countrySelectInput').val() == null || $('#countrySelectInput').val() == 0) // || ($('#postalSelectInput').val() == null || $('#postalSelectInput').val() == 0) // || ($('#stateSelectInput').val() == null || $('#stateSelectInput').val() == 0) // || ($('#citySelectInput').val() == null || $('#citySelectInput').val() == 0) // || ($('#locationSelectInput').val() == null || $('#locationSelectInput').val() == 0) // || ($('#addressTypeSelectInput').val() == null || $('#addressTypeSelectInput').val() == 0) ) { wizardObj.stop(); // don't go to the next step } } }); // Change event wizard.on('change', function (wizard) { KTUtil.scrollTop(); }); } wizardEl = KTUtil.get('kt_wizard_v2'); formEl = $('#kt_form').serialize(); return initWizard(); //return initValidation(); //return initSubmit(); } }