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, CreateContactUserAddressInput, CreateAddressInput, CreateContactInput, CreatePhoneInput, CreateEmailInput, 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 {Location} from '@angular/common'; 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; declare let swal: any; @Component({ templateUrl: './create-driver.component.html', encapsulation: ViewEncapsulation.None, animations: [appModuleAnimation()] }) export class CreateDriverComponent extends AppComponentBase { @ViewChild(ContactFormComponent, { static: false }) contactForm; @ViewChild(AddressFormComponent, { static: false }) addressForm; active = false; saving = false; id: any; driver: UserEditDto = new UserEditDto(); contact: CreateContactUserAddressInput = new CreateContactUserAddressInput(); address: CreateAddressInput = new CreateAddressInput(); contactInput: CreateContactInput = new CreateContactInput(); defaultLocation: any; selectedLocation: any; location: any; filteredLocations: any; getUserLocationId: any; getAddressId: any; getLocationId: 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 = ''; addressCheckBox = false; requiredState = true; constructor( injector: Injector, private _locationService: LocationServiceProxy, private _driverService: DriversServiceProxy, private _userLocationService: UserLocationServiceProxy, private _contactService: ContactServiceProxy, // private _countryService: CountryServiceProxy, // private _cityService: CityServiceProxy, // private _stateService: StateServiceProxy, private _addressTypeService: AddressTypeServiceProxy, private _postalCodeService: PostalCodeServiceProxy, private _profileService: ProfileServiceProxy, private _addressService: AddressServiceProxy, private _emailService: EmailServiceProxy, private _phoneService: PhoneServiceProxy, private router: Router, private route: ActivatedRoute, private _location:Location, ) { super(injector); } setPasswordComplexityInfo(): void { this.passwordComplexityInfo = ''; } ngOnInit() { $('.kt-select2').select2({ placeholder: "Select.." }); this.route.paramMap.subscribe(params => { this.id = params.get("id") }) // this.KTWizard2(); // $('#addressCheckbox').prop('checked', false); // $('#address').fadeOut('slow'); $("#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 + ","); }); $("#locationSelectInput").change(function () { this.selectedCity = $("#locationSelectInput option:selected").text(); $("#locationSelected").text(this.selectedCity + ""); }); var KTWizard2 = function () { var e, r, i; return { init: function () { var t; KTUtil.get("kt_wizard_v2"), e = $("#kt_form"), (i = new KTWizard("kt_wizard_v2", { startStep: 1, clickableSteps: !0 })).on("beforeNext", function (e) { !0 !== r.form() && e.stop() }), i.on("beforePrev", function (e) { !0 !== r.form() && e.stop() }), i.on("change", function (e) { KTUtil.scrollTop() }), r = e.validate({ ignore: ":hidden", rules: { Name: { required: !0 }, Surname: { required: !0 }, EmailAddress: { required: !0, email: !0 }, locationSelectInput: { required: !0 }, UserName: { required: !0 }, Password: { required: !0, minlength: 5 }, PasswordRepeat: { required: !0,minlength: 5, equalTo:"#Password" }, Address1: { required: !0 }, postalSelectInput: { required: !0 }, countrySelectInput: { required: !0 }, stateSelectInput: { required: !0 }, citySelectInput: { required: !0 } }, invalidHandler: function (e, r) { KTUtil.scrollTop(), swal.fire({ title: "", text: "There are some errors in your submission. Please correct them.", type: "error", confirmButtonClass: "btn btn-secondary" }) }, submitHandler: function (e) { } }) } } }(); jQuery(document).ready(function () { KTWizard2.init() }); } ngAfterViewInit(userId?: number) { let maxcount = 1000; this.filterLocations(maxcount); // this.filterPostal(maxcount); // this.filterCountries(maxcount); // this.filterCities(maxcount); // this.filterStates(maxcount); this.filterAddressTypes(maxcount); $('#addressCheckbox').change(function () { if (!this.checked) $('#address').fadeOut('slow'); else $('#address').fadeIn('slow'); }); this._driverService.getDriverForEdit(userId).subscribe(res => { this.driver = res.user; this._profileService.getPasswordComplexitySetting().subscribe(passwordComplexityResult => { this.passwordComplexitySetting = passwordComplexityResult.setting; this.setPasswordComplexityInfo(); }); }); } save(): void { this.saving = true; if (this.contactForm.pNumber == null) { this.contactForm.pNumber = "n/a"; } let userInput = new CreateOrUpdateContactUserInput({ user: new UserEditDto({ id: this.driver.id, name: this.contactForm.fName, surname: this.contactForm.sName, userName: this.driver.userName, password: this.driver.password, phoneNumber: this.contactForm.pNumber, emailAddress: this.contactForm.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() }); this.requiredState = false this._driverService.createOrUpdateDriver(userInput) .pipe(finalize(() => { this.saving = false; })) .subscribe(success => { this.requiredState; this.address = this.addressForm.address; this.address.postalCodeId = Number((document.getElementById('postalSelectInput')).value); 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.contactForm.fName; this.contactInput.lastName = this.contactForm.sName; this.contactInput.userId = success; this.contactInput 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); }); }); }); } filterLocations(maxcount): void { this._locationService.getLocation( undefined, undefined, undefined, undefined, undefined, maxcount, undefined ).subscribe(result => { this.filteredLocations = result.items; }); } getLocation(id): void { this._locationService.getLocation( id, undefined, undefined, undefined, undefined, undefined, undefined ).subscribe(result => { this.getLocationId = result.items[0].contact.address.id; }); } getUserlocation(id): void { this._userLocationService.getUserLocation( undefined, id, undefined, undefined, undefined, undefined, undefined, undefined, 1, undefined ).subscribe(result => { this.getUserLocationId = result.items[0].locationId; console.log(this.getUserLocationId + "sa"); this.getAddressId = this.getLocation(this.getUserLocationId); console.log(this.getAddressId + "saa"); }); } filterAddressTypes(maxCount): void { this._addressTypeService.getAddressType( undefined, 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; function validateEmail(sEmail) { var filter = /^\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i; if (filter.test(sEmail)) { return true; } else { return false; } } // 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() == '' || $('#Password').val() == '' || $('#PasswordRepeat').val() == '' ) { wizardObj.stop(); // don't go to the next step } if (!validateEmail($('#EmailAddress').val())) { wizardObj.stop(); } } else if (wizardObj.currentStep == 2) { if ($('#locationSelectInput').val() == null || $('#locationSelectInput').val() == 0 || $('#address1').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) // || ($('#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(); } goBack(){ this._location.back(); } }