Commit 83095eaa690f5082395218a58dedadbdf5dba827

Authored by Birendra Kumar
1 parent 55309a92

partially committed admin bug fixes

400-SOURCECODE/AIAHTML5.ADMIN.API/Models/LicenseModel.cs
... ... @@ -168,7 +168,7 @@ namespace AIAHTML5.ADMIN.API.Models
168 168 LicenseObj.TotalRenewals = result[0].TotalRenewals;
169 169 LicenseObj.SubscriptionStartDate = (result[0].SubscriptionStartDate == null ? DateTime.MinValue : result[0].SubscriptionStartDate.Value);
170 170 LicenseObj.SubscriptionEndDate = (result[0].SubscriptionEndDate == null ? DateTime.MinValue : result[0].SubscriptionEndDate.Value);
171   - LicenseObj.RenewDate = (result[0].RenewalDate == null ? DateTime.MinValue : result[0].RenewalDate.Value);
  171 + LicenseObj.RenewDate = (result[0].RenewalDate == null ? DateTime.Now.Date : result[0].RenewalDate.Value);
172 172 }
173 173 }
174 174 catch (Exception ex) { }
... ...
400-SOURCECODE/Admin/src/app/app.component.html
... ... @@ -33,7 +33,7 @@
33 33 <a href="#" *ngIf="item.HeaderMenuStatus=='True'" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{item.HeaderMenuName}}<span class="caret"></span></a>
34 34 <ul class="dropdown-menu">
35 35 <li *ngFor="let item1 of item.SubMenu">
36   - <a *ngIf="item1.SubMenuStatus=='True'" [routerLink]="item1.SubMenuUrl">{{item1.SubMenuName}}</a>
  36 + <a *ngIf="item1.SubMenuStatus=='True'" [routerLink]="item1.SubMenuUrl" [id]="item1.SubMenuId">{{item1.SubMenuName}}</a>
37 37 </li>
38 38 </ul>
39 39 </li>
... ...
400-SOURCECODE/Admin/src/app/app.routing.module.ts
... ... @@ -33,6 +33,7 @@ const appRoutes: Routes = [
33 33 { path: 'managediscountcode', component: ManageDiscountCode },
34 34 { path: 'subscriptionprice', component: SubscriptionPrice },
35 35 { path: 'adduser', component: AddUser },
  36 + { path: 'addgeneral', component: AddUser },
36 37 { path: 'unblockuser', component: UnblockUser },
37 38 { path: 'searchlicense', component: SearchLicense },
38 39 { path: 'addlicense', component: AddLicense },
... ...
400-SOURCECODE/Admin/src/app/components/LicenseEntity/addlicense.component.html
... ... @@ -104,7 +104,7 @@
104 104 </div>
105 105 <div class="checkbox" *ngIf="license.LicenseId > 0">
106 106 <label>
107   - <input formControlName="renew" type="checkbox" /> <span style="font-weight: bold">Renew</span>
  107 + <input formControlName="renew" type="checkbox" (change)="reNewChange($event.target.checked)" /> <span style="font-weight: bold">Renew</span>
108 108 </label>
109 109 </div>
110 110 </div>
... ... @@ -276,7 +276,7 @@
276 276 <div class="form-group marginTop5">
277 277 <label for="Phone" class="col-sm-12 col-lg-6 control-label text-right-lg paddTop7 padd-left0" title="">Phone <span class="red">*</span> : </label>
278 278 <div class="col-sm-12 col-lg-6 padd-left0 padd-right0">
279   - <input type="text" class="form-control input-sm" id="Phone" formControlName="phone" maxlength="30">
  279 + <input type="text" class="form-control input-sm" id="Phone" formControlName="phone" maxlength="30" (keyup)="onKeyUp($event)">
280 280 <span class="help-block">(xxx-xxx-xxxx)</span>
281 281 <div *ngIf="insertUpdateLicenseFrm.controls.phone.hasError('required') && insertUpdateLicenseFrm.controls.phone.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Phone is required</div>
282 282 <div *ngIf="insertUpdateLicenseFrm.controls.phone.hasError('pattern') && (insertUpdateLicenseFrm.controls.phone.dirty || license.LicenseId > 0)" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Phone is invalid</div>
... ... @@ -292,9 +292,9 @@
292 292 <div class="form-group marginTop5">
293 293 <label for="Email" class="col-sm-12 col-lg-6 control-label text-right-lg paddTop7 padd-left0" title="">Email ID <span class="red">*</span> : </label>
294 294 <div class="col-sm-12 col-lg-6 padd-left0 padd-right0">
295   - <input type="email" class="form-control input-sm" id="Email" formControlName="emailId" maxlength="50">
296   - <div *ngIf="insertUpdateLicenseFrm.controls.emailId.hasError('required') && insertUpdateLicenseFrm.controls.emailId.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Email is required</div>
297   - <div *ngIf="insertUpdateLicenseFrm.controls.emailId.hasError('email') && insertUpdateLicenseFrm.controls.emailId.value != '' && insertUpdateLicenseFrm.controls.emailId.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Email is invalid</div>
  295 + <input type="text" class="form-control input-sm" id="Email" formControlName="emailId" maxlength="50" pattern="[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,3}$">
  296 + <div *ngIf="insertUpdateLicenseFrm.controls.emailId.hasError('required') && !insertUpdateLicenseFrm.controls.emailId.value && insertUpdateLicenseFrm.controls.emailId.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Email is required</div>
  297 + <div *ngIf="insertUpdateLicenseFrm.controls.emailId.invalid && insertUpdateLicenseFrm.controls.emailId.value" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Email is invalid</div>
298 298 </div>
299 299 </div>
300 300 </div>
... ...
400-SOURCECODE/Admin/src/app/components/LicenseEntity/addlicense.component.ts
... ... @@ -35,15 +35,15 @@ export class AddLicense implements OnInit {
35 35 divClass: string = '';
36 36 topPos: string = '2000px';
37 37 datePipe: DatePipe = new DatePipe('en-US');
38   - bsValue1: Date = null;//new Date();
  38 + bsValue1: Date =new Date();
39 39 bsValue2: Date = null;//new Date();
40 40 bsValue3: Date = null;//new Date();
41 41 modalRef: BsModalRef;
42 42 editionLoginsText: string;
43 43 rowIndex: number = 0;
44 44 ParamsObj: any;
45   - // minDate = new Date(1110, 11, 1);
46 45 minDate = new Date();
  46 + startDate= new Date();
47 47 maxDate = new Date(9999, 11, 31);
48 48 bsConfig: Partial<BsDatepickerConfig>;
49 49 dateStartInvalid: boolean = false;
... ... @@ -63,39 +63,39 @@ export class AddLicense implements OnInit {
63 63 this.editionLoginsText = '';
64 64 this.insertUpdateLicenseFrm = this.fb.group({
65 65 licenseId: [0],
66   - accountNumber: ['', Validators.required],
  66 + accountNumber: ['', [Validators.required,this.noWhitespaceValidator]],
67 67 accountTypeId: [0, Validators.min(1)],
68 68 productId: [''],
69   - licenseeFirstName: ['', Validators.required],
70   - licenseeLastName: ['', Validators.required],
  69 + licenseeFirstName: ['', [Validators.required,this.noWhitespaceValidator]],
  70 + licenseeLastName: ['', [Validators.required,this.noWhitespaceValidator]],
71 71 licenseTypeId: [1],
72   - institutionName: ['', Validators.required],
73   - address1: ['', Validators.required],
  72 + institutionName: ['', [Validators.required,this.noWhitespaceValidator]],
  73 + address1: ['', [Validators.required,this.noWhitespaceValidator]],
74 74 address2: [''],
75   - city: ['', Validators.required],
  75 + city: ['', [Validators.required,this.noWhitespaceValidator]],
76 76 stateId: [0, Validators.min(1)],
77 77 countryId: [0, Validators.min(1)],
78   - zip: ['', Validators.required],
79   - emailId: ['', [Validators.email, Validators.required]],
80   - phone: ['', [Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$')]],
  78 + zip: ['', [Validators.required,this.noWhitespaceValidator]],
  79 + emailId: ['', [Validators.required,this.noWhitespaceValidator]],
  80 + phone: ['', [Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$'),this.noWhitespaceValidator]],
81 81 editionLoginArr: this.fb.array([]),
82 82 editionLogins: [''],
83 83 totalLogins: [0],
84   - subscriptionPrice: ['', [Validators.required, Validators.pattern('[0-9.]*')]],
85   - subscriptionStartDate: ['', Validators.required],
  84 + subscriptionPrice: [0, [Validators.required, Validators.pattern('[0-9.]*'),this.noWhitespaceValidator]],
  85 + subscriptionStartDate: [this.startDate, Validators.required],
86 86 subscriptionEndDate: ['', Validators.required],
87   - noOfImages: [0, [Validators.required, Validators.pattern('[0-9]*')]],
88   - masterSiteUrl: ['a', Validators.required],
  87 + noOfImages: ['', [Validators.required, Validators.pattern('[0-9]*'),this.noWhitespaceValidator]],
  88 + masterSiteUrl: ['a', [Validators.required,this.noWhitespaceValidator]],
89 89 siteUrlFrom: [''],
90 90 siteUrlTo: [''],
91   - login: ['a', [Validators.required, Validators.minLength(8)]],
92   - password: ['a', [Validators.required, Validators.minLength(8)]],
  91 + login: ['a', [Validators.required, Validators.minLength(8),this.noWhitespaceValidator]],
  92 + password: ['a', [Validators.required, Validators.minLength(8),this.noWhitespaceValidator]],
93 93 securityQuestionId: [0, Validators.min(1)],
94   - answer: ['a', Validators.required],
  94 + answer: ['a', [Validators.required,this.noWhitespaceValidator]],
95 95 testLicenseEditionId: [1],
96 96 creatorId: [this.globalService.loggedInUser.Id],
97 97 renew: [false],
98   - renewDate: [''],
  98 + renewDate: ['', Validators.required],
99 99 totalRenewals: [0],
100 100 isActive: ['false']
101 101 });
... ... @@ -133,7 +133,76 @@ export class AddLicense implements OnInit {
133 133 });
134 134 }, error => this.error = <any>error);
135 135 }
  136 + public noWhitespaceValidator(control: FormControl) {
  137 + // new validation for intial whaite space
  138 + //****Birendra *****/
  139 + var isValid=false;
  140 + if(control.value!=null)
  141 + {
  142 + var controlLen=control.value.length;
  143 + if(controlLen==undefined)//undefined for integer value
  144 + {
  145 + isValid=true;
  146 + }
  147 + else if(controlLen!=0)
  148 + {
  149 + const isWhitespace = (control.value || '').trim().length === 0;
  150 + isValid = !isWhitespace;
  151 + if(!isValid)
  152 + {
  153 + control.setValue('');
  154 +
  155 + }
  156 + }
  157 + }
  158 + // can use also on page of input control
  159 + //
  160 + return isValid ? null: { 'whitespace': true };
  161 +
  162 + }
  163 +
  164 + onKeyUp(event: any) {
  165 + var mobno = event.target.value;
  166 + var newnum=mobno;
  167 + if(mobno!="" && event.key!="Backspace")
  168 + {
  169 + var tempArr = mobno.split('-');
  170 +
  171 + if(tempArr.length==1)
  172 + {
  173 + var countdigit=tempArr[0].length;
  174 + newnum=tempArr[0];
  175 + if(countdigit==3)
  176 + {
  177 + newnum=tempArr[0]+"-";
  178 + }
  179 + else if(countdigit>3)
  180 + {
  181 + newnum=tempArr[0].substr(0,3)+"-"+tempArr[0].substr(3,1);
  182 + }
  183 +
  184 + }
  185 + else if(tempArr.length==2)
  186 + {
  187 + newnum=tempArr[0]+"-"+tempArr[1];
  188 + var countdigit=tempArr[1].length;
  189 + if(countdigit==3)
  190 + {
  191 + newnum=tempArr[0]+"-"+tempArr[1]+"-";
  192 + }
  193 + else if(countdigit>3)
  194 + {
  195 + newnum= tempArr[0]+"-"+tempArr[1].substr(0,3)+"-"+tempArr[1].substr(3,1);
  196 + }
  197 + }
  198 + else
  199 + {
  200 + newnum=tempArr[0]+"-"+tempArr[1]+"-"+tempArr[2];
  201 + }
136 202  
  203 + }
  204 + this.insertUpdateLicenseFrm.controls['phone'].setValue(newnum);
  205 +};
137 206  
138 207 openModal(template: TemplateRef<any>) {
139 208 this.modalRef = this.modalService.show(template);
... ... @@ -157,6 +226,34 @@ export class AddLicense implements OnInit {
157 226 this.OnLoginBlur();
158 227 }
159 228  
  229 + // clear alert on check/uncheck renew checkbox
  230 + reNewChange(isChecked: boolean)
  231 + {
  232 + this.alerts = '';
  233 + this.NumberOfRows=0;
  234 + if (this.insertUpdateLicenseFrm.controls['licenseTypeId'].value == 2) {
  235 + this.insertUpdateLicenseFrm.controls['editionLoginArr'].value.forEach(element => {
  236 + if(this.NumberOfRows >1)
  237 + {
  238 + this.alerts = "<span>Please select one edition only.</span>";
  239 + }
  240 + else{
  241 + if (element.Checked == 1 && element.Login > 0) {
  242 + this.NumberOfRows+=1
  243 + }
  244 + else if (element.Checked == 1)
  245 + {
  246 + this.NumberOfRows+=1
  247 + }
  248 +
  249 + }
  250 + });
  251 + if(this.totalLogins>1)
  252 + {
  253 + this.alerts += "<br><span>For single license total login can not be more than one.</span>";
  254 + }
  255 + }
  256 + }
160 257 DateChange(dateValue: any) {
161 258 this.alerts = '';
162 259 this.NumberOfRows=0;
... ... @@ -289,7 +386,7 @@ export class AddLicense implements OnInit {
289 386 if (this.license.SiteUrlTo == null) {
290 387 this.license.SiteUrlTo = '';
291 388 }
292   - this.LicenseTypeChanged(this.license.LicenseTypeId);
  389 + this.LicenseTypeChanged(this.license.LicenseTypeId,this.license.SubscriptionStartDate);
293 390 this.insertUpdateLicenseFrm.controls['licenseId'].setValue(this.license.LicenseId);
294 391 this.insertUpdateLicenseFrm.controls['licenseTypeId'].setValue(this.license.LicenseTypeId);
295 392 this.insertUpdateLicenseFrm.controls['accountNumber'].setValue(this.license.AccountNumber);
... ... @@ -300,7 +397,7 @@ export class AddLicense implements OnInit {
300 397 this.insertUpdateLicenseFrm.controls['institutionName'].setValue(this.license.InstitutionName);
301 398 this.insertUpdateLicenseFrm.controls['address1'].setValue(this.license.Address1);
302 399 this.insertUpdateLicenseFrm.controls['address2'].setValue(this.license.Address2);
303   - this.insertUpdateLicenseFrm.controls['city'].setValue(this.license.City);
  400 + this.insertUpdateLicenseFrm.controls['city'].setValue(this.license.City);
304 401 this.insertUpdateLicenseFrm.controls['stateId'].setValue(this.license.StateId);
305 402 this.insertUpdateLicenseFrm.controls['countryId'].setValue(this.license.CountryId);
306 403 this.insertUpdateLicenseFrm.controls['zip'].setValue(this.license.Zip);
... ... @@ -310,7 +407,7 @@ export class AddLicense implements OnInit {
310 407 this.insertUpdateLicenseFrm.controls['subscriptionPrice'].setValue(this.license.Price);
311 408 this.insertUpdateLicenseFrm.controls['subscriptionStartDate'].setValue(this.datePipe.transform(this.license.SubscriptionStartDate, 'MM/dd/yyyy'));
312 409 this.insertUpdateLicenseFrm.controls['subscriptionEndDate'].setValue(this.datePipe.transform(this.license.SubscriptionEndDate, 'MM/dd/yyyy'));
313   - this.insertUpdateLicenseFrm.controls['renewDate'].setValue(this.datePipe.transform(this.license.Renewdate, 'MM/dd/yyyy'));
  410 + this.insertUpdateLicenseFrm.controls['renewDate'].setValue(this.datePipe.transform(this.license.RenewDate, 'MM/dd/yyyy'));
314 411 this.insertUpdateLicenseFrm.controls['noOfImages'].setValue(this.license.NoOfImages);
315 412 this.insertUpdateLicenseFrm.controls['masterSiteUrl'].setValue(this.license.MasterSiteUrl);
316 413 this.insertUpdateLicenseFrm.controls['siteUrlFrom'].setValue(this.license.SiteUrlFrom);
... ... @@ -331,10 +428,10 @@ export class AddLicense implements OnInit {
331 428  
332 429 this.insertUpdateLicenseFrm.controls['phone'].clearValidators();
333 430 if (this.lstCountry.find(C => C.Id == this.license.CountryId).CountryName != "United States") {
334   - this.insertUpdateLicenseFrm.controls['phone'].setValidators([Validators.required]);
  431 + this.insertUpdateLicenseFrm.controls['phone'].setValidators([Validators.required,this.noWhitespaceValidator]);
335 432 }
336 433 else {
337   - this.insertUpdateLicenseFrm.controls['phone'].setValidators([Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$')]);
  434 + this.insertUpdateLicenseFrm.controls['phone'].setValidators([Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$'),this.noWhitespaceValidator]);
338 435 }
339 436 this.insertUpdateLicenseFrm.controls['phone'].updateValueAndValidity();
340 437 this.insertUpdateLicenseFrm.controls['phone'].setValue(this.license.Phone);
... ... @@ -471,7 +568,15 @@ export class AddLicense implements OnInit {
471 568 }
472 569 }
473 570  
474   - LicenseTypeChanged(LicenseTypeId: number) {
  571 + LicenseTypeChanged(LicenseTypeId: number,startDate: Date) {
  572 +
  573 + var currentDate = new Date();
  574 +
  575 + if(startDate==undefined)
  576 + {
  577 + this.insertUpdateLicenseFrm.controls['subscriptionStartDate'].setValue(currentDate);
  578 +
  579 + }
475 580 this.totalLogins = 0;
476 581 this.editionLoginsText = '';
477 582 this.license.TotalLogins = this.totalLogins;
... ... @@ -483,6 +588,7 @@ export class AddLicense implements OnInit {
483 588 this.insertUpdateLicenseFrm.controls['subscriptionPrice'].setValue('');
484 589 this.insertUpdateLicenseFrm.controls['masterSiteUrl'].setValue('');
485 590 this.insertUpdateLicenseFrm.controls['accountNumber'].setValue('');
  591 +
486 592 this.lstEditionLogins = new Array();
487 593 this.lstEdition.forEach(element => {
488 594 this.lstEditionLogins.push({ Id: element.Id, Title: element.Title, Login: 0 });
... ... @@ -574,10 +680,10 @@ export class AddLicense implements OnInit {
574 680 this.alerts += '<span>Account number already exists. Enter a different account number.</span>';
575 681 }
576 682 if (this.alerts == '') {
577   - return this.licenseService.InsertLicense(obj)
578   - .subscribe(
579   - n => (this.AfterInsertData(n, template)),
580   - error => this.error = <any>error);
  683 + // return this.licenseService.InsertLicense(obj)
  684 + // .subscribe(
  685 + // n => (this.AfterInsertData(n, template)),
  686 + // error => this.error = <any>error);
581 687 }
582 688 },
583 689 error => this.error = <any>error);
... ... @@ -589,10 +695,10 @@ export class AddLicense implements OnInit {
589 695 if (this.alerts == '') {
590 696 console.log(this.insertUpdateLicenseFrm.controls['subscriptionStartDate'].value + ', ' + this.insertUpdateLicenseFrm.controls['subscriptionEndDate'].value + ', ' + this.insertUpdateLicenseFrm.controls['renewDate'].value);
591 697 console.log(obj.subscriptionStartDate + ', ' + obj.subscriptionEndDate + ', ' + obj.renewDate);
592   - return this.licenseService.UpdateLicense(obj)
593   - .subscribe(
594   - n => (this.AfterUpdateData(n, template)),
595   - error => this.error = <any>error);
  698 + // return this.licenseService.UpdateLicense(obj)
  699 + // .subscribe(
  700 + // n => (this.AfterUpdateData(n, template)),
  701 + // error => this.error = <any>error);
596 702 }
597 703 }
598 704 }
... ... @@ -612,16 +718,16 @@ export class AddLicense implements OnInit {
612 718 if (this.lstCountry.find(C => C.Id == this.license.CountryId).CountryName != "United States") {
613 719 this.license.StateId = this.lstState.find(C => C.StateName == "Other").Id;
614 720 this.insertUpdateLicenseFrm.controls['stateId'].setValue(this.license.StateId);
615   - this.insertUpdateLicenseFrm.controls['phone'].clearValidators();
616   - this.insertUpdateLicenseFrm.controls['phone'].setValidators([Validators.required]);
  721 + // this.insertUpdateLicenseFrm.controls['phone'].clearValidators();
  722 + // this.insertUpdateLicenseFrm.controls['phone'].setValidators([Validators.required,this.noWhitespaceValidator]);
617 723 }
618 724 else {
619 725 this.license.StateId = 0;
620 726 this.insertUpdateLicenseFrm.controls['stateId'].setValue(this.license.StateId);
621   - this.insertUpdateLicenseFrm.controls['phone'].clearValidators();
622   - this.insertUpdateLicenseFrm.controls['phone'].setValidators([Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$')]);
  727 + // this.insertUpdateLicenseFrm.controls['phone'].clearValidators();
  728 + // this.insertUpdateLicenseFrm.controls['phone'].setValidators([Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$'),this.noWhitespaceValidator]);
623 729 }
624   - this.insertUpdateLicenseFrm.controls['phone'].updateValueAndValidity();
  730 + //this.insertUpdateLicenseFrm.controls['phone'].updateValueAndValidity();
625 731 }
626 732  
627 733 OnStateChange(element: any) {
... ... @@ -629,16 +735,16 @@ export class AddLicense implements OnInit {
629 735 if (this.lstState.find(C => C.Id == this.license.StateId).StateName != "Other") {
630 736 this.license.CountryId = this.lstCountry.find(C => C.CountryName == "United States").Id;
631 737 this.insertUpdateLicenseFrm.controls['countryId'].setValue(this.license.CountryId);
632   - this.insertUpdateLicenseFrm.controls['phone'].clearValidators();
633   - this.insertUpdateLicenseFrm.controls['phone'].setValidators([Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$')]);
  738 + // this.insertUpdateLicenseFrm.controls['phone'].clearValidators();
  739 + // this.insertUpdateLicenseFrm.controls['phone'].setValidators([Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$'),this.noWhitespaceValidator]);
634 740 }
635 741 else {
636 742 this.license.CountryId = 0;
637 743 this.insertUpdateLicenseFrm.controls['countryId'].setValue(this.license.CountryId);
638   - this.insertUpdateLicenseFrm.controls['phone'].clearValidators();
639   - this.insertUpdateLicenseFrm.controls['phone'].setValidators([Validators.required]);
  744 + // this.insertUpdateLicenseFrm.controls['phone'].clearValidators();
  745 + // this.insertUpdateLicenseFrm.controls['phone'].setValidators([Validators.required,this.noWhitespaceValidator]);
640 746 }
641   - this.insertUpdateLicenseFrm.controls['phone'].updateValueAndValidity();
  747 + // this.insertUpdateLicenseFrm.controls['phone'].updateValueAndValidity();
642 748 }
643 749  
644 750 SubscriptionPriceBlur() {
... ...
400-SOURCECODE/Admin/src/app/components/LicenseEntity/editlicensebasicsettings.component.html
... ... @@ -97,9 +97,9 @@
97 97 <div class="form-group">
98 98 <label for="inputEmail3" class="col-sm-4 control-label">Email ID <span class="red">*</span> :</label>
99 99 <div class="col-sm-7">
100   - <input type="email" class="form-control input-sm" id="Email" formControlName="emailId" maxlength="50">
101   - <div *ngIf="updateLicenseBasicSettingsFrm.controls.emailId.hasError('required') && updateLicenseBasicSettingsFrm.controls.emailId.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Email is required</div>
102   - <div *ngIf="updateLicenseBasicSettingsFrm.controls.emailId.hasError('email') && updateLicenseBasicSettingsFrm.controls.emailId.value != '' && updateLicenseBasicSettingsFrm.controls.emailId.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Email is invalid</div>
  100 + <input type="text" class="form-control input-sm" id="Email" formControlName="emailId" maxlength="50" pattern="[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,3}$">
  101 + <div *ngIf="updateLicenseBasicSettingsFrm.controls.emailId.hasError('required') && !updateLicenseBasicSettingsFrm.controls.emailId.value && updateLicenseBasicSettingsFrm.controls.emailId.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Email is required</div>
  102 + <div *ngIf="updateLicenseBasicSettingsFrm.controls.emailId.invalid && updateLicenseBasicSettingsFrm.controls.emailId.value" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Email is invalid</div>
103 103 </div>
104 104 </div>
105 105  
... ... @@ -161,7 +161,7 @@
161 161 <div class="form-group">
162 162 <label for="inputEmail3" class="col-sm-4 control-label">Phone <span class="red">*</span> :</label>
163 163 <div class="col-sm-7">
164   - <input type="text" class="form-control input-sm" id="Phone" formControlName="phone" maxlength="30">
  164 + <input type="text" class="form-control input-sm" id="Phone" formControlName="phone" maxlength="30" (keyup)="onKeyUp($event)">
165 165 <span class="help-block">(xxx-xxx-xxxx)</span>
166 166 <div *ngIf="updateLicenseBasicSettingsFrm.controls.phone.hasError('required') && updateLicenseBasicSettingsFrm.controls.phone.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Phone is required</div>
167 167 <div *ngIf="updateLicenseBasicSettingsFrm.controls.phone.hasError('pattern') && updateLicenseBasicSettingsFrm.controls.phone.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Phone is invalid</div>
... ...
400-SOURCECODE/Admin/src/app/components/LicenseEntity/editlicensebasicsettings.component.ts
... ... @@ -48,23 +48,93 @@ export class EditLicenseBasicSettings implements OnInit {
48 48 this.lastScrollPos = 0;
49 49 this.updateLicenseBasicSettingsFrm = this.fb.group({
50 50 licenseId: [0],
51   - accountNumber: ['', Validators.required],
52   - licenseeFirstName: ['', Validators.required],
53   - licenseeLastName: ['', Validators.required],
54   - institutionName: ['', Validators.required],
55   - address1: ['', Validators.required],
  51 + accountNumber: ['', [Validators.required,this.noWhitespaceValidator]],
  52 + licenseeFirstName: ['', [Validators.required,this.noWhitespaceValidator]],
  53 + licenseeLastName: ['', [Validators.required,this.noWhitespaceValidator]],
  54 + institutionName: ['', [Validators.required,this.noWhitespaceValidator]],
  55 + address1: ['', [Validators.required,this.noWhitespaceValidator]],
56 56 address2: [''],
57   - city: ['', Validators.required],
  57 + city: ['', [Validators.required,this.noWhitespaceValidator]],
58 58 stateId: [0],
59 59 countryId: [0],
60   - zip: ['', Validators.required],
61   - emailId: ['', [Validators.required, Validators.email]],
62   - phone: ['', [Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$')]],
  60 + zip: ['', [Validators.required,this.noWhitespaceValidator]],
  61 + emailId: ['', [Validators.required,this.noWhitespaceValidator]],
  62 + phone: ['', [Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$'),this.noWhitespaceValidator]],
63 63 });
64 64 this.GetCountry();
65 65 this.GetState();
66 66 this.GetLicenseAccounts();
67 67 }
  68 + public noWhitespaceValidator(control: FormControl) {
  69 + // new validation for intial whaite space
  70 + //****Birendra *****/
  71 + var isValid=false;
  72 + if(control.value!=null)
  73 + {
  74 + var controlLen=control.value.length;
  75 + if(controlLen==undefined)//undefined for integer value
  76 + {
  77 + isValid=true;
  78 + }
  79 + else if(controlLen!=0)
  80 + {
  81 + const isWhitespace = (control.value || '').trim().length === 0;
  82 + isValid = !isWhitespace;
  83 + if(!isValid)
  84 + {
  85 + control.setValue('');
  86 +
  87 + }
  88 + }
  89 + }
  90 + // can use also on page of input control
  91 + //
  92 + return isValid ? null: { 'whitespace': true };
  93 +
  94 + }
  95 + onKeyUp(event: any) {
  96 + var mobno = event.target.value;
  97 + var newnum=mobno;
  98 + if(mobno!="" && event.key!="Backspace")
  99 + {
  100 + var tempArr = mobno.split('-');
  101 +
  102 + if(tempArr.length==1)
  103 + {
  104 + var countdigit=tempArr[0].length;
  105 + newnum=tempArr[0];
  106 + if(countdigit==3)
  107 + {
  108 + newnum=tempArr[0]+"-";
  109 + }
  110 + else if(countdigit>3)
  111 + {
  112 + newnum=tempArr[0].substr(0,3)+"-"+tempArr[0].substr(3,1);
  113 + }
  114 +
  115 + }
  116 + else if(tempArr.length==2)
  117 + {
  118 + newnum=tempArr[0]+"-"+tempArr[1];
  119 + var countdigit=tempArr[1].length;
  120 + if(countdigit==3)
  121 + {
  122 + newnum=tempArr[0]+"-"+tempArr[1]+"-";
  123 + }
  124 + else if(countdigit>3)
  125 + {
  126 + newnum= tempArr[0]+"-"+tempArr[1].substr(0,3)+"-"+tempArr[1].substr(3,1);
  127 + }
  128 + }
  129 + else
  130 + {
  131 + newnum=tempArr[0]+"-"+tempArr[1]+"-"+tempArr[2];
  132 + }
  133 +
  134 + }
  135 + this.updateLicenseBasicSettingsFrm.controls['phone'].setValue(newnum);
  136 +
  137 +};
68 138  
69 139 openModal(template: TemplateRef<any>) {
70 140 this.modalRef = this.modalService.show(template);
... ...
400-SOURCECODE/Admin/src/app/components/LicenseEntity/sitelicenseaccount.component.html
... ... @@ -336,7 +336,7 @@
336 336 <label for="Phone" class="col-sm-12 col-lg-6 control-label text-right-lg paddTop7 padd-left0">Phone <span class="red">*</span> :</label>
337 337 </div>
338 338 <div class="col-sm-12 col-lg-6 padd-left0 padd-right0">
339   - <input type="phone" class="form-control input-sm" id="Phone" formControlName="phone" maxlength="30">
  339 + <input type="phone" class="form-control input-sm" id="Phone" formControlName="phone" maxlength="30" (keyup)="onKeyUp($event)">
340 340 <!--<div *ngIf="insertUpdateSiteLicenseFrm.controls.phone.hasError('required') && insertUpdateSiteLicenseFrm.controls.phone.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Phone is required</div>-->
341 341 <span class="help-block">(xxx-xxx-xxxx)</span>
342 342 <div *ngIf="insertUpdateSiteLicenseFrm.controls.phone.hasError('required') && insertUpdateSiteLicenseFrm.controls.phone.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Phone is required</div>
... ... @@ -362,7 +362,7 @@
362 362 <div class="form-group marginTop5">
363 363 <label for="ClientAdminEmail" class="col-sm-12 col-lg-6 control-label text-right-lg paddTop7 padd-left0">Client Admin Email ID :</label>
364 364 <div class="col-sm-12 col-lg-6 padd-left0 padd-right0">
365   - <input type="email" class="form-control input-sm" id="ClientAdminEmail" formControlName="clientAdminEmail" maxlength="50">
  365 + <input type="text" class="form-control input-sm" id="ClientAdminEmail" formControlName="clientAdminEmail" maxlength="50" pattern="[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,3}$">
366 366 </div>
367 367 </div>
368 368 </div>
... ...
400-SOURCECODE/Admin/src/app/components/LicenseEntity/sitelicenseaccount.component.ts
... ... @@ -63,22 +63,22 @@ export class SiteLicenseAccount implements OnInit {
63 63 licenseId: [0],
64 64 accountNumber: [{value: '', disabled: true}],
65 65 siteId: [0],
66   - siteUrl: ['', Validators.required],
  66 + siteUrl: ['', [Validators.required,this.noWhitespaceValidator]],
67 67 siteUrlTo: [''],
68 68 siteMasterUrlTo: [''],
69 69 buildAccName: [''],
70   - institutionName: ['', Validators.required],
  70 + institutionName: ['', [Validators.required,this.noWhitespaceValidator]],
71 71 departmentName: [''],
72   - address1: ['', Validators.required],
  72 + address1: ['', [Validators.required,this.noWhitespaceValidator]],
73 73 address2: [''],
74   - city: ['', Validators.required],
  74 + city: ['', [Validators.required,this.noWhitespaceValidator]],
75 75 countryId: [0, Validators.min(1)],
76 76 stateId: [0, Validators.min(1)],
77   - zip: ['', Validators.required],
78   - phone: ['', [Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$')]],
  77 + zip: ['', [Validators.required,this.noWhitespaceValidator]],
  78 + phone: ['', [Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$'),this.noWhitespaceValidator]],
79 79 //phone: ['', Validators.required],
80 80 clientAdminId: [0, Validators.min(1)],
81   - clientAdminEmail: [{value: '', disabled: true}, Validators.email],
  81 + clientAdminEmail: [{value: '', disabled: true}, this.noWhitespaceValidator],
82 82 isActive: [0],
83 83 isMaster: [0],
84 84 creationDate: [''],
... ... @@ -123,6 +123,75 @@ export class SiteLicenseAccount implements OnInit {
123 123 document.body.appendChild(testScript);
124 124 }
125 125 }
  126 + public noWhitespaceValidator(control: FormControl) {
  127 + // new validation for intial whaite space
  128 + //****Birendra *****/
  129 + var isValid=false;
  130 + if(control.value!=null)
  131 + {
  132 + var controlLen=control.value.length;
  133 + if(controlLen==undefined)//undefined for integer value
  134 + {
  135 + isValid=true;
  136 + }
  137 + else if(controlLen!=0)
  138 + {
  139 + const isWhitespace = (control.value || '').trim().length === 0;
  140 + isValid = !isWhitespace;
  141 + if(!isValid)
  142 + {
  143 + control.setValue('');
  144 +
  145 + }
  146 + }
  147 + }
  148 + // can use also on page of input control
  149 + //
  150 + return isValid ? null: { 'whitespace': true };
  151 +
  152 + }
  153 + onKeyUp(event: any) {
  154 + var mobno = event.target.value;
  155 + var newnum=mobno;
  156 + if(mobno!="" && event.key!="Backspace")
  157 + {
  158 + var tempArr = mobno.split('-');
  159 +
  160 + if(tempArr.length==1)
  161 + {
  162 + var countdigit=tempArr[0].length;
  163 + newnum=tempArr[0];
  164 + if(countdigit==3)
  165 + {
  166 + newnum=tempArr[0]+"-";
  167 + }
  168 + else if(countdigit>3)
  169 + {
  170 + newnum=tempArr[0].substr(0,3)+"-"+tempArr[0].substr(3,1);
  171 + }
  172 +
  173 + }
  174 + else if(tempArr.length==2)
  175 + {
  176 + newnum=tempArr[0]+"-"+tempArr[1];
  177 + var countdigit=tempArr[1].length;
  178 + if(countdigit==3)
  179 + {
  180 + newnum=tempArr[0]+"-"+tempArr[1]+"-";
  181 + }
  182 + else if(countdigit>3)
  183 + {
  184 + newnum= tempArr[0]+"-"+tempArr[1].substr(0,3)+"-"+tempArr[1].substr(3,1);
  185 + }
  186 + }
  187 + else
  188 + {
  189 + newnum=tempArr[0]+"-"+tempArr[1]+"-"+tempArr[2];
  190 + }
  191 +
  192 + }
  193 + this.insertUpdateSiteLicenseFrm.controls['phone'].setValue(newnum);
  194 + };
126 195  
127 196 openModal(template: TemplateRef<any>) {
128 197 this.modalRef = this.modalService.show(template);
... ... @@ -428,46 +497,38 @@ export class SiteLicenseAccount implements OnInit {
428 497 this.insertUpdateSiteLicenseFrm.controls['clientAdminEmail'].setValue('');
429 498 }
430 499 OnCountryChange(element: any) {
431   - if (element.innerText != '') {
432   -
433   - }
434   - else {
435 500 this.license.CountryId = parseInt(element.value);
436 501 if (this.lstCountry.find(C => C.Id == this.license.CountryId).CountryName != "United States") {
437 502 this.license.StateId = this.lstState.find(C => C.StateName == "Other").Id;
438 503 this.insertUpdateSiteLicenseFrm.controls['stateId'].setValue(this.license.StateId);
439   - this.insertUpdateSiteLicenseFrm.controls['phone'].clearValidators();
440   - this.insertUpdateSiteLicenseFrm.controls['phone'].setValidators([Validators.required]);
  504 + // this.insertUpdateSiteLicenseFrm.controls['phone'].clearValidators();
  505 + // this.insertUpdateSiteLicenseFrm.controls['phone'].setValidators([Validators.required,this.noWhitespaceValidator]);
441 506 }
442 507 else {
443 508 this.license.StateId = 0;
444 509 this.insertUpdateSiteLicenseFrm.controls['stateId'].setValue(this.license.StateId);
445   - this.insertUpdateSiteLicenseFrm.controls['phone'].clearValidators();
446   - this.insertUpdateSiteLicenseFrm.controls['phone'].setValidators([Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$')]);
  510 + // this.insertUpdateSiteLicenseFrm.controls['phone'].clearValidators();
  511 + // this.insertUpdateSiteLicenseFrm.controls['phone'].setValidators([Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$'),this.noWhitespaceValidator]);
447 512 }
448   - this.insertUpdateSiteLicenseFrm.controls['phone'].updateValueAndValidity();
449   - }
  513 + // this.insertUpdateSiteLicenseFrm.controls['phone'].updateValueAndValidity();
  514 +
450 515 }
451 516 OnStateChange(element: any) {
452   - if (element.innerText != '') {
453   -
454   - }
455   - else {
456 517 this.license.StateId = parseInt(element.value);
457 518 if (this.lstState.find(C => C.Id == this.license.StateId).StateName != "Other") {
458 519 this.license.CountryId = this.lstCountry.find(C => C.CountryName == "United States").Id;
459 520 this.insertUpdateSiteLicenseFrm.controls['countryId'].setValue(this.license.CountryId);
460   - this.insertUpdateSiteLicenseFrm.controls['phone'].clearValidators();
461   - this.insertUpdateSiteLicenseFrm.controls['phone'].setValidators([Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$')]);
  521 + // this.insertUpdateSiteLicenseFrm.controls['phone'].clearValidators();
  522 + // this.insertUpdateSiteLicenseFrm.controls['phone'].setValidators([Validators.required, Validators.pattern('^([0-9]{3})-([0-9]{3})-([0-9]{4})$'),this.noWhitespaceValidator]);
462 523 }
463 524 else {
464 525 this.license.CountryId = 0;
465 526 this.insertUpdateSiteLicenseFrm.controls['countryId'].setValue(this.license.CountryId);
466   - this.insertUpdateSiteLicenseFrm.controls['phone'].clearValidators();
467   - this.insertUpdateSiteLicenseFrm.controls['phone'].setValidators([Validators.required]);
  527 + // this.insertUpdateSiteLicenseFrm.controls['phone'].clearValidators();
  528 + // this.insertUpdateSiteLicenseFrm.controls['phone'].setValidators([Validators.required,this.noWhitespaceValidator]);
468 529 }
469   - this.insertUpdateSiteLicenseFrm.controls['phone'].updateValueAndValidity();
470   - }
  530 + // this.insertUpdateSiteLicenseFrm.controls['phone'].updateValueAndValidity();
  531 +
471 532 }
472 533  
473 534 EditLicenseSite(){
... ...
400-SOURCECODE/Admin/src/app/components/SubscriptionPrice/subscriptionprice.component.ts
... ... @@ -55,9 +55,9 @@ RecordDeleted: number[];
55 55 });
56 56 this.insertSubscriptionPriceFrm = this.fb.group({
57 57 subscriptionPriceId: [''],
58   - title: ['', Validators.required],
59   - price: ['', [Validators.required, Validators.pattern('[0-9.]*')]],
60   - duration: ['', [Validators.required, Validators.pattern('[0-9]*')]],
  58 + title: ['', [Validators.required,this.noWhitespaceValidator]],
  59 + price: ['', [Validators.required, Validators.pattern('[0-9.]*'),this.noWhitespaceValidator]],
  60 + duration: ['', [Validators.required, Validators.pattern('[0-9]*'),this.noWhitespaceValidator]],
61 61 editionId: [''],
62 62 isActive: ['false']
63 63 });
... ... @@ -91,6 +91,33 @@ RecordDeleted: number[];
91 91 document.body.appendChild(testScript);
92 92 }
93 93 }
  94 + public noWhitespaceValidator(control: FormControl) {
  95 + // new validation for intial whaite space
  96 + //****Birendra *****/
  97 + var isValid=false;
  98 + if(control.value!=null)
  99 + {
  100 + var controlLen=control.value.length;
  101 + if(controlLen==undefined)//undefined for integer value
  102 + {
  103 + isValid=true;
  104 + }
  105 + else if(controlLen!=0)
  106 + {
  107 + const isWhitespace = (control.value || '').trim().length === 0;
  108 + isValid = !isWhitespace;
  109 + if(!isValid)
  110 + {
  111 + control.setValue('');
  112 +
  113 + }
  114 + }
  115 + }
  116 + // can use also on page of input control
  117 + //
  118 + return isValid ? null: { 'whitespace': true };
  119 +
  120 + }
94 121  
95 122 public SearchSubscriptionPrices(evt: any) {
96 123 if (this.global.ValidationMsg != '') {
... ...
400-SOURCECODE/Admin/src/app/components/UserEntity/adduser.component.html
... ... @@ -71,6 +71,7 @@
71 71 <div *ngIf="!adduserFrm.controls.LastName.valid && adduserFrm.controls.LastName.dirty" class="alert alert-danger" style="padding: 2px; margin-bottom: 2px;">Last Name is required</div>
72 72 </div>
73 73 </div>
  74 + <div *ngIf="this.router.url === '/adduser'">
74 75 <div class="form-group" #accountNo *ngIf="this.commonService.UserType == 1 || this.commonService.UserType == 2">
75 76 <label for="inputEmail3" class="col-sm-4 control-label">Account Number <span class="red">*</span> :</label>
76 77 <div class="col-sm-7" dropdown (isOpenChange)="onOpenChange($event)" (keyup)="onKeyPress($event)" [dropup]="isDropup">
... ... @@ -89,6 +90,7 @@
89 90 </ul>
90 91 </div>
91 92 </div>
  93 +
92 94 <div class="form-group" #accountNo *ngIf="this.commonService.UserType > 2">
93 95 <label for="inputEmail3" class="col-sm-4 control-label">Account Number <span class="red">*</span> :</label>
94 96 <div class="col-sm-7" dropdown (isOpenChange)="onOpenChange($event)" (keyup)="onKeyPress($event)" [dropup]="isDropup">
... ... @@ -116,6 +118,7 @@
116 118 </select>
117 119 </div>
118 120 </div>
  121 + </div>
119 122 <div class="row">
120 123 <div class="col-sm-12 marginTop20 text-center">
121 124 <button type="button" class="btn btn-primary btn-sm" data-toggle="modal" (click)="AddUser()"><i class="fa fa-plus-circle"></i> Add</button>
... ...
400-SOURCECODE/Admin/src/app/components/UserEntity/adduser.component.ts
... ... @@ -60,29 +60,65 @@ export class AddUser implements OnInit, AfterViewInit {
60 60 //this.userservice.GetUserById(this.UserId);
61 61 this.adduserFrm = this.fb.group({
62 62 id: [''],
63   - UserName: ['', [Validators.required, Validators.minLength(8)]],
64   - Password: ['', [Validators.required, Validators.minLength(8)]],
65   - ConfirmPassword: ['', Validators.required],
66   - FirstName: ['', Validators.required],
67   - LastName: ['', Validators.required],
68   - EmailId: ['', Validators.required],
  63 + UserName: ['', [Validators.required, Validators.minLength(8),this.noWhitespaceValidator]],
  64 + Password: ['', [Validators.required, Validators.minLength(8),this.noWhitespaceValidator]],
  65 + ConfirmPassword: ['', [Validators.required,this.noWhitespaceValidator]],
  66 + FirstName: ['', [Validators.required,this.noWhitespaceValidator]],
  67 + LastName: ['', [Validators.required,this.noWhitespaceValidator]],
  68 + EmailId: ['', [Validators.required,this.noWhitespaceValidator]],
69 69 AccountNumberId: ['', Validators.required],
70 70 UserTypeId: ['', Validators.required],
71 71 ProductEditionId: ['', Validators.required]
72 72 });
73 73  
74 74 this._loadingService.ShowLoading("global-loading");
75   - this.bindUsers();
76   - this.GetAccountNumber();
77   - //this.GetUserTypeByLicenseId();
78   -
  75 + this.bindUsers(0);
  76 + if(this.router.url === '/adduser')
  77 + {
  78 + this.GetAccountNumber();
  79 + }
  80 + else{
  81 + this._loadingService.HideLoading("global-loading");
  82 + }
  83 +
79 84 }
80 85 ngAfterViewInit() {
81   - this.CheckDropDownOrUp(this.accountNodiv.nativeElement);
  86 + if(this.router.url === '/adduser')
  87 + {
  88 + this.CheckDropDownOrUp(this.accountNodiv.nativeElement);
  89 + }
  90 +
82 91 }
83 92 redirect() {
84 93 this.router.navigate(['/']);
85 94 }
  95 + public noWhitespaceValidator(control: FormControl) {
  96 + // new validation for intial whaite space
  97 + //****Birendra *****/
  98 + var isValid=false;
  99 + if(control.value!=null)
  100 + {
  101 + var controlLen=control.value.length;
  102 + if(controlLen==undefined)//undefined for integer value
  103 + {
  104 + isValid=true;
  105 + }
  106 + else if(controlLen!=0)
  107 + {
  108 + const isWhitespace = (control.value || '').trim().length === 0;
  109 + isValid = !isWhitespace;
  110 + if(!isValid)
  111 + {
  112 + control.setValue('');
  113 +
  114 + }
  115 + }
  116 + }
  117 + // can use also on page of input control
  118 + //
  119 + return isValid ? null: { 'whitespace': true };
  120 +
  121 + }
86 122 GetUserTypeByLicenseId() {
87 123 var Accountnumber = this.adduserFrm.controls['AccountNumberId'].value;
88 124 if (Accountnumber == "") { Accountnumber = 0 }
... ... @@ -222,16 +258,19 @@ export class AddUser implements OnInit, AfterViewInit {
222 258 this.alerts += '</br><span>Last Name is required.</span>';
223 259 }
224 260  
225   -
226   - if (this.adduserFrm.value.AccountNumberId == '0') {
227   - this.alerts += '</br><span>Please select account number</span>';
228   - }
229   - if (this.adduserFrm.value.UserTypeId == '0') {
230   - this.alerts += '</br><span>Please select user type</span>';
231   - }
232   - if (this.adduserFrm.value.ProductEditionId == '0') {
233   - this.alerts += '</br><span>Please select product edition</span>';
234   - }
  261 + if(this.router.url === '/adduser')
  262 + {
  263 + if (this.adduserFrm.value.AccountNumberId == '0') {
  264 + this.alerts += '</br><span>Please select account number</span>';
  265 + }
  266 + if (this.adduserFrm.value.UserTypeId == '0') {
  267 + this.alerts += '</br><span>Please select user type</span>';
  268 + }
  269 + if (this.adduserFrm.value.ProductEditionId == '0') {
  270 + this.alerts += '</br><span>Please select product edition</span>';
  271 + }
  272 + }
  273 +
235 274 if (this.alerts == '') {
236 275 var AddUserEntity = this.adduserFrm.value;
237 276 return this.userservice.InsertUser(AddUserEntity)
... ... @@ -253,22 +292,23 @@ export class AddUser implements OnInit, AfterViewInit {
253 292  
254 293 }
255 294 ResetForm() {
256   - this._buildForm();
  295 + var lcid= this.adduserFrm.controls['AccountNumberId'].value;
  296 + this._buildForm(lcid);
257 297 }
258   - _buildForm() {
  298 + _buildForm(lcid) {
259 299 this.adduserFrm = this.fb.group({
260 300 id: [''],
261   - UserName: [""],
262   - Password: [""],
263   - ConfirmPassword: [""],
264   - FirstName: [""],
265   - LastName: [""],
266   - EmailId: [""],
267   - AccountNumberId: ["0"],
268   - UserTypeId: ["0"],
269   - ProductEditionId: ["0"]
270   -
  301 + UserName: ['', [Validators.required, Validators.minLength(8),this.noWhitespaceValidator]],
  302 + Password: ['', [Validators.required, Validators.minLength(8),this.noWhitespaceValidator]],
  303 + ConfirmPassword: ['', [Validators.required,this.noWhitespaceValidator]],
  304 + FirstName: ['', [Validators.required,this.noWhitespaceValidator]],
  305 + LastName: ['', [Validators.required,this.noWhitespaceValidator]],
  306 + EmailId: ['', [Validators.required,this.noWhitespaceValidator]],
  307 + AccountNumberId: ['', Validators.required],
  308 + UserTypeId: ['', Validators.required],
  309 + ProductEditionId: ['', Validators.required]
271 310 });
  311 + this.bindUsers(lcid);
272 312 }
273 313 CheckDropDownOrUp(elm: any) {
274 314 var dropDownTop = elm.children[0].offsetTop;
... ... @@ -283,23 +323,31 @@ export class AddUser implements OnInit, AfterViewInit {
283 323 }
284 324 @HostListener('window:scroll', ['$event'])
285 325 onWindowScroll(event) {
286   - // console.debug("Scroll Event", document.body.scrollTop);
287   - // see Andr๏ฟฝs Szepesh๏ฟฝzi's comment below
288   - //console.debug("Scroll Event", window.pageYOffset );
289   - this.CheckDropDownOrUp(this.accountNodiv.nativeElement);
  326 + if(this.router.url === '/adduser')
  327 + {
  328 + this.CheckDropDownOrUp(this.accountNodiv.nativeElement);
  329 + }
290 330 }
291 331  
292 332 @HostListener('window:resize', ['$event'])
293 333 onWindowResize(event) {
294   - this.CheckDropDownOrUp(this.accountNodiv.nativeElement);
  334 + if(this.router.url === '/adduser')
  335 + {
  336 + this.CheckDropDownOrUp(this.accountNodiv.nativeElement);
  337 + }
295 338 }
296   - bindUsers() {
297   -
298   - //console.log(data);
299   - //alert(JSON.stringify(data));
300   - //this.user = data[0];
301   -
302   -
  339 + bindUsers(lcid) {
  340 + this.alerts = '';
  341 + if (this.commonService.UserTypeName == "Client Admin" || this.commonService.UserTypeName == "District Admin" )
  342 + {
  343 + this.adduserFrm.controls['AccountNumberId'].setValue(lcid)
  344 + }
  345 + else
  346 + {
  347 + this.accountDropDownText = 'Select';
  348 + this.adduserFrm.controls['AccountNumberId'].setValue(0)
  349 + }
  350 +
303 351 this.adduserFrm.controls['id'].setValue(0)
304 352 this.adduserFrm.controls['FirstName'].setValue('')
305 353 this.adduserFrm.controls['LastName'].setValue('')
... ... @@ -307,8 +355,17 @@ export class AddUser implements OnInit, AfterViewInit {
307 355 this.adduserFrm.controls['UserName'].setValue('')
308 356 this.adduserFrm.controls['Password'].setValue('')
309 357 this.adduserFrm.controls['ConfirmPassword'].setValue('')
310   - this.adduserFrm.controls['AccountNumberId'].setValue(0)
311   - this.adduserFrm.controls['UserTypeId'].setValue(0)
  358 +
  359 + if(this.router.url === '/adduser')
  360 + {
  361 + this.adduserFrm.controls['UserTypeId'].setValue(0)
  362 + }
  363 + else
  364 + {
  365 + // for genral admin
  366 + this.adduserFrm.controls['UserTypeId'].setValue(2)
  367 + }
  368 +
312 369 this.adduserFrm.controls['ProductEditionId'].setValue(0)
313 370  
314 371 }
... ...
400-SOURCECODE/Admin/src/app/components/UserEntity/datamodel.ts
... ... @@ -64,7 +64,7 @@ export class License {
64 64 ProductKey: string;
65 65 SubscriptionStartDate: Date;
66 66 SubscriptionEndDate: Date;
67   - Renewdate: Date;
  67 + RenewDate: Date;
68 68 EditionLogins: string;
69 69 Price: DoubleRange;
70 70 NoOfImages: number;
... ...
400-SOURCECODE/Admin/src/app/components/UserEntity/updateuserprofile.component.ts
... ... @@ -66,7 +66,11 @@ export class UpdateUserProfile implements OnInit {
66 66 if(control.value!=null)
67 67 {
68 68 var controlLen=control.value.length;
69   - if(controlLen!=0)
  69 + if(controlLen==undefined)//undefined for integer value
  70 + {
  71 + isValid=true;
  72 + }
  73 + else if(controlLen!=0)
70 74 {
71 75 const isWhitespace = (control.value || '').trim().length === 0;
72 76 isValid = !isWhitespace;
... ...
400-SOURCECODE/Admin/src/app/components/UserEntity/users.component.html
... ... @@ -168,7 +168,7 @@
168 168 </div>
169 169 </form>
170 170  
171   - <div style="position: absolute; z-index: 100; width: 80%" [style.top]="topPos" [style.display]="(Mode=='Add' || Mode=='Edit') ? 'block' : 'none'"
  171 + <div style="position: absolute; z-index: 100; width: 100%" [style.top]="topPos" [style.display]="(Mode=='Add' || Mode=='Edit') ? 'block' : 'none'"
172 172 class="well">
173 173 <div class="row">
174 174 <div class="col-sm-12">
... ...
400-SOURCECODE/Admin/src/app/components/UserEntity/users.component.ts
... ... @@ -88,12 +88,12 @@ export class UsersList implements OnInit, AfterViewChecked {
88 88 });
89 89 this.adduserFrm = this.fb.group({
90 90 id: [''],
91   - UserName: ['', [Validators.required, Validators.minLength(8)]],
92   - Password: ['', [Validators.required, Validators.minLength(8)]],
93   - ConfirmPassword: ['', Validators.required],
94   - FirstName: ['', Validators.required],
95   - LastName: ['', Validators.required],
96   - EmailId: ['', Validators.required],
  91 + UserName: ['', [Validators.required, Validators.minLength(8),this.noWhitespaceValidator]],
  92 + Password: ['', [Validators.required, Validators.minLength(8),this.noWhitespaceValidator]],
  93 + ConfirmPassword: ['', [Validators.required,this.noWhitespaceValidator]],
  94 + FirstName: ['', [Validators.required,this.noWhitespaceValidator]],
  95 + LastName: ['', [Validators.required,this.noWhitespaceValidator]],
  96 + EmailId: ['', [Validators.required,this.noWhitespaceValidator]],
97 97 AccountNumber: [''],
98 98 UserTypeTitle: [''],
99 99 AccountTypeTitle: [''],
... ... @@ -172,6 +172,33 @@ export class UsersList implements OnInit, AfterViewChecked {
172 172  
173 173 //this.GetUserList();
174 174 }
  175 + public noWhitespaceValidator(control: FormControl) {
  176 + // new validation for intial whaite space
  177 + //****Birendra *****/
  178 + var isValid=false;
  179 + if(control.value!=null)
  180 + {
  181 + var controlLen=control.value.length;
  182 + if(controlLen==undefined)//undefined for integer value
  183 + {
  184 + isValid=true;
  185 + }
  186 + else if(controlLen!=0)
  187 + {
  188 + const isWhitespace = (control.value || '').trim().length === 0;
  189 + isValid = !isWhitespace;
  190 + if(!isValid)
  191 + {
  192 + control.setValue('');
  193 +
  194 + }
  195 + }
  196 + }
  197 + // can use also on page of input control
  198 + //
  199 + return isValid ? null: { 'whitespace': true };
  200 +
  201 + }
175 202 handleChange(evt) {
176 203 var target = evt.target;
177 204 if (target.value == 'true') {
... ...
400-SOURCECODE/Admin/src/assets/data/Menu.json
... ... @@ -87,6 +87,12 @@
87 87 "SubMenuStatus": "True"
88 88 },
89 89 {
  90 + "SubMenuId": "224",
  91 + "SubMenuName": "Add General Admin",
  92 + "SubMenuUrl": "addgeneral",
  93 + "SubMenuStatus": "True"
  94 + },
  95 + {
90 96 "SubMenuId": "209",
91 97 "SubMenuName": "Unblock User",
92 98 "SubMenuUrl": "unblockuser",
... ... @@ -294,6 +300,12 @@
294 300 "SubMenuStatus": "True"
295 301 },
296 302 {
  303 + "SubMenuId": "224",
  304 + "SubMenuName": "Add General Admin",
  305 + "SubMenuUrl": "addgeneral",
  306 + "SubMenuStatus": "True"
  307 + },
  308 + {
297 309 "SubMenuId": "209",
298 310 "SubMenuName": "Unblock User",
299 311 "SubMenuUrl": "unblockuser",
... ...