Fairoj : Changes and issues fixes

This commit is contained in:
venbatechnologies@gmail.com 2019-10-24 17:15:06 +05:30
parent 83725caed0
commit 79c71aa4ae
39 changed files with 900 additions and 541 deletions

View File

@ -67,6 +67,8 @@ import {
} from "ngx-social-button"; } from "ngx-social-button";
import { PasswordChangeComponent } from './components/password-change/password-change.component'; import { PasswordChangeComponent } from './components/password-change/password-change.component';
import { ShareButtonsModule } from '@ngx-share/buttons'; import { ShareButtonsModule } from '@ngx-share/buttons';
import { OnlyNumberDirective } from './directives/only-number.directive';
import { DirectivesModuleModule } from './directives/directives-module/directives-module.module';
export function HttpLoaderFactory(http: HttpClient) { export function HttpLoaderFactory(http: HttpClient) {
@ -109,7 +111,8 @@ const DEFAULT_PERFECT_SCROLLBAR_CONFIG: PerfectScrollbarConfigInterface = {
UserCertificateComponent, UserCertificateComponent,
PrivacyPolicyComponent, PrivacyPolicyComponent,
PasswordChangeComponent, PasswordChangeComponent,
userCertificateDisplay userCertificateDisplay,
// ProjectListComponent // ProjectListComponent
], ],
@ -155,7 +158,8 @@ const DEFAULT_PERFECT_SCROLLBAR_CONFIG: PerfectScrollbarConfigInterface = {
MatProgressBarModule, MatProgressBarModule,
// MDBBootstrapModule.forRoot() // MDBBootstrapModule.forRoot()
NgxSocialButtonModule, NgxSocialButtonModule,
ShareButtonsModule ShareButtonsModule,
DirectivesModuleModule
], ],
providers: [ providers: [
TranslateService, TranslateService,

View File

@ -88,7 +88,7 @@
<!-- Sponsor Column --> <!-- Sponsor Column -->
<ng-container matColumnDef="Sponsor_Qty"> <ng-container matColumnDef="Sponsor_Qty">
<mat-header-cell *matHeaderCellDef > Sponsored Qty </mat-header-cell> <mat-header-cell *matHeaderCellDef > Sponsored Qty </mat-header-cell>
<mat-cell data-label="Sponsored Qty" *matCellDef="let row;let i = index"> <input step="1" min="1" max="" title="Qty" [(ngModel)]="sponsor_qty[i]" class="text" size="2" type="number" (change)="somethingChanged($event.target.value,i,row.cost_per_unit,row.mat_id,row)" <mat-cell data-label="Sponsored Qty" *matCellDef="let row;let i = index"> <input OnlyNumber="true" step="1" min="1" max="" title="Qty" [(ngModel)]="sponsor_qty[i]" class="text" size="2" type="number" (change)="somethingChanged($event.target.value,i,row.cost_per_unit,row.mat_id,row)"
class="sponsor_input" > </mat-cell> class="sponsor_input" > </mat-cell>
</ng-container> </ng-container>
@ -121,10 +121,26 @@
</div> </div>
</div> </div>
<mat-paginator [pageSize]="pageSize" [pageSizeOptions]="[5, 10, 25, 50, 100]" showFirstLastButtons ></mat-paginator> <mat-paginator [pageSize]="pageSize" [pageSizeOptions]="[5, 10, 25, 50, 100]" showFirstLastButtons ></mat-paginator>
<div style="text-align: center;" *ngIf="dataStatus" fxLayoutAlign="center">
<mat-label style=" font-size: 1.25rem;">I am happy to contribute</mat-label>&nbsp;&nbsp;
<mat-radio-group [(ngModel)]="contribute_type" >&nbsp;&nbsp;&nbsp;
<mat-radio-button value="2" ><span style=" font-size: 1.25rem;">Material</span></mat-radio-button><br/>
<mat-radio-button value="1"><span style=" font-size: 1.25rem;">Funds</span></mat-radio-button>
</mat-radio-group><br/>
<!-- <mat-form-field appearance="outline" fxFlex="50" fxFlex.xs="100" class="select_cot_type">
<mat-label style=" font-size: 1.25rem;">I am happy to contribute</mat-label>
<mat-select color="secondary" placeholder="Select" [(ngModel)]="contribute_type" #username="ngModel">
<mat-option value="2"><span style=" font-size: 1.25rem;">Materials</span></mat-option>
<mat-option value="1"><span style=" font-size: 1.25rem;">Funds/Money</span></mat-option>
</mat-select>
<mat-error *ngIf="username.invalid && username.errors.required && (username.dirty || username.touched)">Contribute type is required</mat-error>
</mat-form-field> -->
</div>
<div class="pt-1 pr-1" style="text-align: right;" *ngIf="dataStatus"> <div class="pt-1 pr-1" style="text-align: right;" *ngIf="dataStatus">
<button mat-raised-button color="primary" (click)="finalSave(2)" class="mr-1 mb-1">I'd like to Contribute in Kind</button>
<button (click)="finalSave(1)" mat-raised-button style="background-color:rgb(69, 189, 189);color:white" >I'd like to Contribute in Cash</button>
<!-- <button mat-raised-button color="primary" (click)="finalSave(2)" class="mr-1 mb-1">I'd like to Contribute in Kind</button> -->
<button (click)="finalSave(contribute_type)" mat-raised-button style="background-color:rgb(69, 189, 189);color:white;font-weight: bold" >Submit</button>
</div> </div>
</div> </div>
<ng-template #status><h2>{{msg}}</h2></ng-template> <ng-template #status><h2>{{msg}}</h2></ng-template>
@ -163,7 +179,7 @@
<!-- <div fxLayout fxLayout="row" fxLayout.xs="column" fxLayoutGap.xs="0"> --> <!-- <div fxLayout fxLayout="row" fxLayout.xs="column" fxLayoutGap.xs="0"> -->
<div class="text-center" fxFlex="100%" fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="40" fxFlex.lg="100" fxFlex.xl="100"> <div class="text-center" fxFlex="100%" fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="40" fxFlex.lg="100" fxFlex.xl="100">
<mat-form-field appearance="outline" style="width: 70%;text-align: center;"> <mat-form-field appearance="outline" style="width: 70%;text-align: center;">
<input matInput type="tel" placeholder="Amount in Rs." [(ngModel)]="general_devlop_amt" maxlength="10" (change)="dev_fund_change($event.target.value)" onkeypress="return event.charCode >= 48 && event.charCode <= 57"> <input matInput type="tel" OnlyNumber="true" placeholder="Amount in Rs." [(ngModel)]="general_devlop_amt" maxlength="10" (change)="dev_fund_change($event.target.value)" onkeypress="return event.charCode >= 48 && event.charCode <= 57">
</mat-form-field> </mat-form-field>
<!-- </div> --> <!-- </div> -->
</div> </div>

View File

@ -264,4 +264,16 @@ a {
width:30%; width:30%;
text-align: left; text-align: left;
} }
}
.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle {
border-color: cyan;
}
::ng-deep .mat-select-content{
width:2000px;
background-color: red;
font-size: 10px;
} }

View File

@ -43,6 +43,7 @@ export class ContributeComponent implements OnInit {
msg: any; msg: any;
@ViewChild('table_element',{static:true}) table_element : ElementRef @ViewChild('table_element',{static:true}) table_element : ElementRef
clientWidth: any; clientWidth: any;
contribute_type:any='';
constructor(public restApi:ApiService,public fb:FormBuilder,public router:Router,private apiService:ApiService,public schInfo:SchoolDetailsService) { constructor(public restApi:ApiService,public fb:FormBuilder,public router:Router,private apiService:ApiService,public schInfo:SchoolDetailsService) {
// Create 100 users // Create 100 users
@ -345,6 +346,10 @@ export class ContributeComponent implements OnInit {
alert("Please tell us the number of items you would like to contribute"); alert("Please tell us the number of items you would like to contribute");
return return
} }
if(this.contribute_type == '' ){
alert("Please choose the contribute type");
return
}
let data = {'records': let data = {'records':
{ {
'id':'', 'id':'',
@ -387,7 +392,7 @@ export class ContributeComponent implements OnInit {
return return
} }
if(this.general_devlop_amt ==''){ if(this.general_devlop_amt ==''){
alert("Please tell us the number of items you would like to contribute"); alert("Please Fill the Amount");
return return
} }
let data = {'records': let data = {'records':

View File

@ -18,7 +18,8 @@
<input matInput placeholder="Password" type="password" name="password" required formControlName="password"> <input matInput placeholder="Password" type="password" name="password" required formControlName="password">
</mat-form-field> </mat-form-field>
<button class="mat-green" mat-raised-button (click)="csrUserLogin()">SIGN IN</button> <button class="mat-green" mat-raised-button (click)="csrUserLogin()">SIGN IN</button>
<p class="mat-text-warn mb-0">Forgot password?</p> <p class="mat-text-warn mb-0" style="text-align: right;color:red;"><a style="color:red;
text-decoration: underline;" (click)="forgotPassworDialog()" class="mat-text-primary"><span style="color:red;">Forgot Password?</span></a></p>
<p class="mb-0">Don't have an account? <a (click)="registerDialog()" class="mat-text-primary">Register Here</a></p> <p class="mb-0">Don't have an account? <a (click)="registerDialog()" class="mat-text-primary">Register Here</a></p>
</div> </div>
<!-- <div> <!-- <div>

View File

@ -10,3 +10,13 @@
// color: blue; // color: blue;
cursor: pointer; cursor: pointer;
} }
.forgot_p{
float: right;
}
.forgot_a{
color:red;
text-decoration: underline;
}
.forgot_a :hover{
text-decoration: none;
}

View File

@ -4,9 +4,10 @@ import { FormControl, FormBuilder } from '@angular/forms';
import { environment } from 'environments/environment'; import { environment } from 'environments/environment';
import { ApiService } from 'app/shared/api.service'; import { ApiService } from 'app/shared/api.service';
import { Location } from "@angular/common"; import { Location } from "@angular/common";
import { MatDialog } from '@angular/material'; import { MatDialog, MatDialogRef } from '@angular/material';
import { RegisterComponent } from '../register/register.component'; import { RegisterComponent } from '../register/register.component';
import { AdminLayoutComponent } from 'app/layouts/admin/admin-layout.component'; import { AdminLayoutComponent } from 'app/layouts/admin/admin-layout.component';
import { PasswordChangeComponent } from '../password-change/password-change.component';
@Component({ @Component({
selector: 'ms-login-session', selector: 'ms-login-session',
@ -22,7 +23,7 @@ export class LoginComponent {
previousUrl: string; previousUrl: string;
constructor(public restApi:ApiService,public fb:FormBuilder,public router:Router, constructor(public restApi:ApiService,public fb:FormBuilder,public router:Router,
private location:Location,private matDialog:MatDialog) { private location:Location,private matDialog:MatDialog,private dialogRef:MatDialogRef<LoginComponent>) {
// console.log(this.router.events); // console.log(this.router.events);
@ -111,6 +112,15 @@ this.previousUrl = this.restApi.getPreviousUrl();
panelClass: 'custom-modalbox' panelClass: 'custom-modalbox'
}) })
} }
forgotPassworDialog(){
this.dialogRef.close();
this.matDialog.open(PasswordChangeComponent,{
"height":"360px",
"width":"320px",
panelClass: 'custom-modalbox',
data:'forgotPass'
})
}
} }

View File

@ -4,6 +4,7 @@
<div class="close_icon" (click)="closeDialog()"> <div class="close_icon" (click)="closeDialog()">
<mat-icon >close</mat-icon> <mat-icon >close</mat-icon>
</div> </div>
<div *ngIf="!forgotPassComponent">
<header> <h4>Password Change</h4></header> <header> <h4>Password Change</h4></header>
<!-- <mat-card style="width:100%"> <!-- <mat-card style="width:100%">
@ -16,6 +17,9 @@
<mat-form-field appearance="outline" style="width:100%"> <mat-form-field appearance="outline" style="width:100%">
<input matInput type="password" placeholder="Password" formControlName="password" autocomplete="off"> <input matInput type="password" placeholder="Password" formControlName="password" autocomplete="off">
<mat-error *ngIf="passwordChangeForm.controls['password'].hasError('required')">Password is Required</mat-error>
<mat-error *ngIf="passwordChangeForm.controls['password'].hasError('minlength')">Password must be minimum of 4 Characters</mat-error>
<mat-error *ngIf="passwordChangeForm.controls['password'].hasError('maxlength')">Password must be maximum of 12 Characters</mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field appearance="outline" style="width:100%"> <mat-form-field appearance="outline" style="width:100%">
<input matInput type="password" placeholder="Confirm Password" formControlName="confirm_password" autocomplete="off" (keyup)="checkValidators($event.target.value,'pass')"> <input matInput type="password" placeholder="Confirm Password" formControlName="confirm_password" autocomplete="off" (keyup)="checkValidators($event.target.value,'pass')">
@ -24,7 +28,33 @@
<button style="float:right;" class="mat-red" mat-raised-button (click)="csrUserRegistration()">Update</button> <br/> <button style="float:right;" class="mat-red" mat-raised-button (click)="csrUserRegistration()">Update</button> <br/>
</form> </form>
</div>
<div *ngIf="forgotPassComponent">
<header> <h4>Forgot Password</h4></header>
<!-- <mat-card style="width:100%">
<mat-card-header>
<mat-card-title>
</mat-card-title>
</mat-card-header> -->
<form [formGroup]="forgotPassForm">
<mat-form-field appearance="outline" style="width:100%">
<input matInput type="text" placeholder="Email" formControlName="mail" autocomplete="off">
<mat-error *ngIf="forgotPassForm.controls['mail'].hasError('required')">Email is required</mat-error>
<mat-error *ngIf="forgotPassForm.controls['mail'].hasError('email')">Invalid Email</mat-error>
</mat-form-field>
<mat-form-field appearance="outline" style="width:100%">
<input OnlyNumber="true" matInput type="number" placeholder="Mobile Number" formControlName="mobile" autocomplete="off" >
<mat-error *ngIf="forgotPassForm.controls['mobile'].hasError('required')">mobile number is required</mat-error>
<mat-error *ngIf="forgotPassForm.controls['mobile'].hasError('min')">minimum 10 digit required</mat-error>
<mat-error *ngIf="forgotPassForm.controls['mobile'].hasError('max')">maximum 12 digit is allowed</mat-error>
</mat-form-field>
<button style="float:right;" class="mat-red" mat-raised-button (click)="forgotPassSubmit()">Submit</button> <br/>
</form>
</div>
<!-- </mat-card> --> <!-- </mat-card> -->
</div> </div>
</div> </div>

View File

@ -14,14 +14,17 @@ export class PasswordChangeComponent implements OnInit {
passwordChangeForm:FormGroup passwordChangeForm:FormGroup
pass_pattern_error: boolean; pass_pattern_error: boolean;
go_reg: any; go_reg: any;
forgotPassForm:FormGroup
forgotPassComponent: boolean;
constructor(private restApi:ApiService,private fb:FormBuilder,private dialogRef:MatDialog,@Inject(MAT_DIALOG_DATA) public data:any,private router:Router) { constructor(private restApi:ApiService,private fb:FormBuilder,private dialogRef:MatDialog,@Inject(MAT_DIALOG_DATA) public data:any,private router:Router) {
console.log(data) console.log(data)
} }
ngOnInit() { ngOnInit() {
if(this.data !='forgotPass'){
this.passwordChangeForm=this.fb.group({ this.passwordChangeForm=this.fb.group({
id:[this.data,Validators.compose([Validators.required])], id:[this.data,Validators.compose([Validators.required])],
password:['',Validators.compose([Validators.required])], password:['',Validators.compose([Validators.required,Validators.minLength(4),Validators.maxLength(12)])],
confirm_password:['',Validators.compose([Validators.required])] confirm_password:['',Validators.compose([Validators.required])]
// name:[''], // name:[''],
// email:[{value:'',disabled:true}], // email:[{value:'',disabled:true}],
@ -39,6 +42,14 @@ export class PasswordChangeComponent implements OnInit {
}) })
} }
else{
this.forgotPassComponent=true
this.forgotPassForm=this.fb.group({
mail:['',Validators.compose([Validators.email,Validators.required])],
mobile:['',Validators.compose([Validators.required, Validators.min(1000000000), Validators.max(999999999999)])]
})
}
}
checkValidators(value,option){ checkValidators(value,option){
if(option == 'pass'){ if(option == 'pass'){
if(value == this.passwordChangeForm.value.password){ if(value == this.passwordChangeForm.value.password){
@ -86,5 +97,20 @@ export class PasswordChangeComponent implements OnInit {
closeDialog(){ closeDialog(){
this.dialogRef.closeAll() this.dialogRef.closeAll()
} }
forgotPassSubmit(){
if(this.forgotPassForm.invalid){
alert("Please Fill all the Fields")
return;
}
this.restApi.forgetPwd(this.forgotPassForm.value).subscribe(res=>{
if(res['dataStatus']){
alert(res['msg'])
this.dialogRef.closeAll()
}
else{
alert(res['msg'])
}
})
}
} }

View File

@ -48,7 +48,7 @@
<mat-card-content style="text-align: center;"> <mat-card-content style="text-align: center;">
<h3><strong><span class="amount"><span class="currency-symbol">&#8377;&nbsp;</span>{{grand_tot_value}}</span></strong></h3><br/> <h3><strong><span class="amount"><span class="currency-symbol">&#8377;&nbsp;</span>{{grand_tot_value}}</span></strong></h3><br/>
<mat-radio-group aria-label="Payment Mode" [(ngModel)]="payment_mode" (click)="changeValidation($event)"> <mat-radio-group aria-label="Payment Mode" [(ngModel)]="payment_mode" (change)="changeValidation($event,'1')">
<mat-radio-button value="1" >Online</mat-radio-button>&nbsp; <mat-radio-button value="1" >Online</mat-radio-button>&nbsp;
<mat-radio-button value="2">Offline</mat-radio-button> <mat-radio-button value="2">Offline</mat-radio-button>
</mat-radio-group> </mat-radio-group>
@ -72,14 +72,15 @@
</mat-form-field>&nbsp;&nbsp;&nbsp; --> </mat-form-field>&nbsp;&nbsp;&nbsp; -->
<label>Please tell us when you would like to deliver the selected items :</label><br> <label>Please tell us when you would like to deliver the selected items :</label><br>
<mat-form-field appearance="outline"> <mat-form-field appearance="outline">
<input matInput [matDatepicker]="picker" [min]="maxDate" placeholder="Delivery date" formControlName="do_delivery"> <input matInput [matDatepicker]="picker" [min]="maxDate" placeholder="Delivery date" formControlName="do_delivery" required>
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle> <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker #picker></mat-datepicker> <mat-datepicker #picker></mat-datepicker>
<mat-error *ngIf="contributeKind.controls['do_delivery'].errors">Delivery Date is Required</mat-error>
</mat-form-field>&nbsp;&nbsp;&nbsp;<br/> </mat-form-field>&nbsp;&nbsp;&nbsp;<br/>
<label>Please deliver the items to the following address :</label><br> <!--<label>Please deliver the items to the following address :</label><br>
<mat-form-field appearance="outline" > <mat-form-field appearance="outline" >
<input matInput placeholder = "Delivery Point" type="text" formControlName="delivery_point"> <input matInput placeholder = "Delivery Point" type="text" formControlName="delivery_point">
</mat-form-field>&nbsp;&nbsp;&nbsp;<br/> </mat-form-field>&nbsp;&nbsp;&nbsp;<br/> -->
<label>Please leave your comments and any other inputs here :</label><br> <label>Please leave your comments and any other inputs here :</label><br>
<mat-form-field appearance="outline"> <mat-form-field appearance="outline">
<textarea matInput placeholder="Remarks" type="text" formControlName="remarks"></textarea> <textarea matInput placeholder="Remarks" type="text" formControlName="remarks"></textarea>
@ -114,7 +115,7 @@
<mat-card-title>Payment Details</mat-card-title> <mat-card-title>Payment Details</mat-card-title>
<form [formGroup]="offlineDetForm"> <form [formGroup]="offlineDetForm">
<mat-form-field style="width: 100%;"> <mat-form-field style="width: 100%;">
<mat-select placeholder="Payment Mode" formControlName="payment_type"> <mat-select placeholder="Payment Mode" formControlName="payment_type" (selectionChange)="changeValidation($event,'2')">
<mat-option *ngFor="let value of payment_mode_data" [value]="value.id">{{value.name}}</mat-option> <mat-option *ngFor="let value of payment_mode_data" [value]="value.id">{{value.name}}</mat-option>
</mat-select> </mat-select>
<mat-error>Please Choose the option </mat-error> <mat-error>Please Choose the option </mat-error>
@ -123,13 +124,15 @@
<div fxLayout="row" fxLayout.xs="column"> <div fxLayout="row" fxLayout.xs="column">
<mat-form-field class="mr-1" fxFlex.xs="100" fxFlex="50" > <mat-form-field class="mr-1" fxFlex.xs="100" fxFlex="50" >
<input matInput type="text" formControlName="payment_ref" placeholder="Cheque / DD Number"> <input OnlyNumber="true" matInput type="text" formControlName="payment_ref" placeholder="Cheque / DD Number">
<mat-error *ngIf="offlineDetForm.controls['payment_ref'].errors">Cheque / DD Number is required</mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex.xs="100" fxFlex="50"> <mat-form-field fxFlex.xs="100" fxFlex="50">
<input matInput [matDatepicker]="picker" placeholder="Date" formControlName="check_date"> <input matInput [matDatepicker]="picker" [min]="checkDate_DD_min" [max]="checkDate_DD_max" placeholder="Date" formControlName="check_date">
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle> <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker #picker></mat-datepicker> <mat-datepicker #picker></mat-datepicker>
<mat-error *ngIf="offlineDetForm.controls['check_date'].errors">Date is required</mat-error>
</mat-form-field> </mat-form-field>
</div> </div>
<div fxLayout="row" fxLayout.xs="column"> <div fxLayout="row" fxLayout.xs="column">
@ -157,7 +160,7 @@
</div> </div>
<div *ngIf="offlineDetForm.value.check_deposit_mode == '2' && offlineDetForm.controls['check_deposit_mode']"> <div *ngIf="offlineDetForm.value.check_deposit_mode == '2' && offlineDetForm.controls['check_deposit_mode']">
<mat-form-field style="width: 100%;"> <mat-form-field style="width: 100%;">
<input matInput type="text" formControlName="cheque_drop_address" placeholder="Cheque Drop Details"> <input matInput type="text" formControlName="cheque_drop_address" placeholder="Please provide details of the bank, branch where the cheque is dropped">
</mat-form-field> </mat-form-field>
</div> </div>
</div> </div>
@ -167,12 +170,14 @@
<div fxLayout="row"> <div fxLayout="row">
<mat-form-field style="width: 50%;" class="mr-1"> <mat-form-field style="width: 50%;" class="mr-1">
<input matInput type="text" formControlName="payment_ref" placeholder="Transaction Reference"> <input matInput type="text" formControlName="payment_ref" placeholder="Transaction Reference Id">
<mat-error *ngIf="offlineDetForm.controls['payment_ref'].errors">Transaction Reference Id is required</mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field style="width: 50%;"> <mat-form-field style="width: 50%;">
<input matInput [matDatepicker]="picker" placeholder="Date" formControlName="check_date"> <input matInput [matDatepicker]="picker" [max]="maxDate" placeholder="Date" formControlName="check_date">
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle> <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker #picker></mat-datepicker> <mat-datepicker #picker></mat-datepicker>
<mat-error *ngIf="offlineDetForm.controls['check_date'].errors">Date is required</mat-error>
</mat-form-field> </mat-form-field>
</div> </div>
</div> </div>
@ -183,9 +188,9 @@
</div> </div>
<ul> <ul>
<li *ngIf="payment_mode == '1'"><span>Tamil Nadu State Parent Teacher Association (TNPTA) accepts online voluntary contributions using Net Banking or VISA-Debit/Credit Cards in Indian Rupees (INR) from Individuals, Organizations, Trusts,Companies and Institutions etc.</span></li> <li *ngIf="payment_mode == '1'"><span>Tamil Nadu State Parent Teacher Association (TNPTA) accepts online voluntary contributions using Net Banking or Debit/Credit Cards in Indian Rupees (INR) from Individuals, Organizations, Trusts,Companies and Institutions etc.</span></li>
<li><span>All contributions towards Tamil Nadu State Parent Teacher Association (TNPTA) are exempt from Income Tax under section 80 (G).</span></li> <li *ngIf="payment_mode == '1' || payment_mode == '2'"><span>All contributions towards Tamil Nadu State Parent Teacher Association (TNPTA) are exempt from Income Tax under section 80 (G).</span></li>
<li><span>The PAN Number of Tamil Nadu State Parent Teacher Association (TNPTA) is AACAT2920R.</span></li> <li *ngIf="payment_mode == '1' || payment_mode == '2'"><span>The PAN Number of Tamil Nadu State Parent Teacher Association (TNPTA) is AACAT2920R.</span></li>
</ul> </ul>

View File

@ -56,9 +56,19 @@ export class PaymentComponent implements OnInit {
offlineDetForm:FormGroup; offlineDetForm:FormGroup;
payment_mode_data=[{id:1,name:"Cheque/DD"},{id:2,name:"Bank Transfer"}] payment_mode_data=[{id:1,name:"Cheque/DD"},{id:2,name:"Bank Transfer"}]
deposit_mode_data=[{id:1,name:"Despatch"},{id:2,name:"Cheque Drop"}] deposit_mode_data=[{id:1,name:"Despatch"},{id:2,name:"Cheque Drop"}]
checkDate_DD_min: any;
checkDate_DD_max: any;
constructor(public restApi:ApiService,public fb:FormBuilder,public router:Router,private apiService:ApiService) { constructor(public restApi:ApiService,public fb:FormBuilder,public router:Router,private apiService:ApiService) {
this.isToken(); this.isToken();
console.log(this.maxDate)
let month = this.maxDate.getMonth();
let year = this.maxDate.getFullYear();
let prevMonth = (month === 0) ? 10 : month -2;
let nextMonth = (month === 11) ? 12 : month + 1;
this.checkDate_DD_min=new Date()
this.checkDate_DD_max=new Date()
this.checkDate_DD_min.setMonth(prevMonth);
this.checkDate_DD_max.setMonth(nextMonth);
} }
ngOnInit() { ngOnInit() {
@ -83,9 +93,10 @@ export class PaymentComponent implements OnInit {
if(this.contribute_type == '2'){ if(this.contribute_type == '2'){
this.contributeKind=this.fb.group({ this.contributeKind=this.fb.group({
delivery_point:[''], delivery_point:[''],
do_delivery:[''], do_delivery:['',Validators.compose([Validators.required])],
remarks:[''] remarks:['']
}) })
} }
this.offlineDetForm=this.fb.group({ this.offlineDetForm=this.fb.group({
payment_type:[''], payment_type:[''],
@ -117,6 +128,13 @@ export class PaymentComponent implements OnInit {
} }
} }
validateAllFormFields(formGroup: FormGroup) {
console.log(formGroup) //{1}
Object.keys(formGroup.controls).forEach(field => { // {1}
const control = formGroup.get(field); // {2}
control.markAsTouched({ onlySelf: true }); // {3}
});
}
proceed_for_payment(){ proceed_for_payment(){
if(this.payment_mode == '' && this.contribute_type != '2'){ if(this.payment_mode == '' && this.contribute_type != '2'){
alert('Please Choose the Payment Option') alert('Please Choose the Payment Option')
@ -124,14 +142,19 @@ export class PaymentComponent implements OnInit {
} }
let params=this.contribute_params let params=this.contribute_params
if(this.contribute_type == '2'){ if(this.contribute_type == '2'){
params.records.mat_delivery_point=this.contributeKind.value.delivery_point if(this.contributeKind.invalid){
alert("Please Fill the Date of Delivery Field")
return;
}
// params.records.mat_delivery_point=this.contributeKind.value.delivery_point
params.records.mat_delivery_date=this.contributeKind.value.do_delivery params.records.mat_delivery_date=this.contributeKind.value.do_delivery
params.records.gen_dev_fund_remarks=this.contributeKind.value.remarks params.records.gen_dev_fund_remarks=this.contributeKind.value.remarks
} }
if(this.payment_mode == '2'){ if(this.payment_mode == '2'){
if(this.offlineDetForm.invalid){ if(this.offlineDetForm.invalid){
alert('Please Choose the Payment Mode'); this.validateAllFormFields(this.offlineDetForm)
alert('Please fill all the fields');
return; return;
} }
params.records.payment_type=this.offlineDetForm.value.payment_type params.records.payment_type=this.offlineDetForm.value.payment_type
@ -207,13 +230,37 @@ export class PaymentComponent implements OnInit {
// } // }
// } // }
changeValidation(value){ changeValidation(event,flag){
if(value.target.innerText == 'Offline'){ console.log(event)
// for paymet type 1-online 2-offline
if(flag == '1'){
if(event.value == '2'){
this.offlineDetForm.controls['payment_type'].setValidators(Validators.compose([Validators.required])) this.offlineDetForm.controls['payment_type'].setValidators(Validators.compose([Validators.required]))
} }
else{ else{
this.offlineDetForm.controls['payment_type'].clearValidators(); this.offlineDetForm.controls['payment_type'].clearValidators();
this.offlineDetForm.controls['payment_type'].updateValueAndValidity();
}
}
// for paymet ref 1-check-dd 2-bt
if(flag== '2'){
if(event.value == '1'){
this.offlineDetForm.controls['payment_ref'].setValidators(Validators.compose([Validators.required]))
this.offlineDetForm.controls['check_date'].setValidators(Validators.compose([Validators.required]))
this.offlineDetForm.controls['check_branch_bank'].setValidators(Validators.compose([Validators.required]))
this.offlineDetForm.controls['check_deposit_mode'].setValidators(Validators.compose([Validators.required]))
}
else if(event.value == '2'){
this.offlineDetForm.controls['payment_ref'].setValidators(Validators.compose([Validators.required]))
this.offlineDetForm.controls['check_date'].setValidators(Validators.compose([Validators.required]))
this.offlineDetForm.controls['check_branch_bank'].clearValidators()
this.offlineDetForm.controls['check_branch_bank'].updateValueAndValidity()
this.offlineDetForm.controls['check_deposit_mode'].clearValidators()
this.offlineDetForm.controls['check_deposit_mode'].updateValueAndValidity()
}
} }
} }

View File

@ -6,478 +6,487 @@
</mat-card-title> </mat-card-title>
</mat-card-header> </mat-card-header>
<mat-card-content><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <mat-card-content><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HEAD> <HTML>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8"> <HEAD>
<TITLE></TITLE> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
<META NAME="GENERATOR" CONTENT="LibreOffice 4.1.6.2 (Linux)"> <TITLE></TITLE>
<META NAME="AUTHOR" CONTENT="Arun Selvan"> <META NAME="GENERATOR" CONTENT="LibreOffice 4.1.6.2 (Linux)">
<META NAME="CREATED" CONTENT="20191016;121800000000000"> <META NAME="AUTHOR" CONTENT="Arun Selvan">
<META NAME="CHANGEDBY" CONTENT="Arun Selvan"> <META NAME="CREATED" CONTENT="20191016;121800000000000">
<META NAME="CHANGED" CONTENT="20191016;134600000000000"> <META NAME="CHANGEDBY" CONTENT="Arun Selvan">
<META NAME="AppVersion" CONTENT="16.0000"> <META NAME="CHANGED" CONTENT="20191024;82700000000000">
<META NAME="DocSecurity" CONTENT="0"> <META NAME="AppVersion" CONTENT="16.0000">
<META NAME="HyperlinksChanged" CONTENT="false"> <META NAME="DocSecurity" CONTENT="0">
<META NAME="LinksUpToDate" CONTENT="false"> <META NAME="HyperlinksChanged" CONTENT="false">
<META NAME="ScaleCrop" CONTENT="false"> <META NAME="LinksUpToDate" CONTENT="false">
<META NAME="ShareDoc" CONTENT="false"> <META NAME="ScaleCrop" CONTENT="false">
<STYLE TYPE="text/css"> <META NAME="ShareDoc" CONTENT="false">
<!-- <STYLE TYPE="text/css">
@page { margin: 1in } <!--
P { margin-bottom: 0.08in; direction: ltr; widows: 2; orphans: 2 } @page { margin: 1in }
A:link { color: #0000ff; } P { margin-bottom: 0.08in; direction: ltr; widows: 2; orphans: 2; background:none; }
--> A:link { color: #0000ff; }
</STYLE> A{
</HEAD> color:#0000ff;
<BODY LANG="en-IN" LINK="#0000ff" DIR="LTR"> text-decoration: underline;
<P STYLE="margin-bottom: 0.19in; line-height: 0.23in"> }
<FONT COLOR="#212529"><FONT FACE="Arial, serif">LAST UPDATED: OCTOBER -->
16, 2019</FONT></FONT></P> </STYLE>
<P STYLE="margin-bottom: 0.19in; line-height: 0.23in"> </HEAD>
<FONT COLOR="#212529"><FONT FACE="Arial, serif">This Privacy Policy <BODY LANG="en-IN" LINK="#0000ff" DIR="LTR" style="padding: 8px;">
applies to&nbsp;</FONT></FONT><A style="color:#0000ff;text-decoration: underline" HREF="https://contribute.tnschools.gov.in"><FONT FACE="Arial, serif">https://contribute.tnschools.gov.in</FONT></A><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;(“</FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>Website</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&quot;), <P STYLE="margin-bottom: 0.19in; line-height: 0.23in">
and all other websites, applications, online services, and other <FONT COLOR="#212529"><FONT FACE="Arial, serif">LAST UPDATED: OCTOBER
interactive features or downloads that post a link to this Privacy 24, 2019</FONT></FONT></P>
Policy, whether accessed via computer, mobile device or otherwise <P STYLE="margin-bottom: 0.19in; line-height: 0.23in">
(collectively, &quot;</FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>Sites</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">,&quot; <FONT COLOR="#212529"><FONT FACE="Arial, serif">This Privacy Policy
and individually, a “</FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>Site</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">”). applies to&nbsp;</FONT></FONT><A HREF="https://contribute.tnschools.gov.in"><FONT FACE="Arial, serif">https://contribute.tnschools.gov.in</FONT></A><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;(“</FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>Website</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&quot;),
The Sites are owned or controlled by TAMIL NADU STATE PARENT TEACHER and all other websites, applications, online services, and other
ASSOCIATION ( “</FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>TNTPTA</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"> interactive features or downloads that post a link to this Privacy
,&quot;</FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>Owner</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&quot;). Policy, whether accessed via computer, mobile device or otherwise
This Privacy Policy only covers information collected at the Sites. (collectively, &quot;</FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>Sites</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">,&quot;
This Privacy Policy may apply to the information that Owner collects and individually, a “</FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>Site</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">”).
offline, but only if specifically stated at the time of collection or The Sites are owned or controlled by TAMIL NADU STATE PARENT TEACHER
if the information is combined in our databases. Please review this ASSOCIATION ( “</FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>TNTPTA</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">
Privacy Policy carefully. In addition, please review our Terms of ,&quot;</FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>Owner</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&quot;).
Use, which governs your use of the Sites. This Privacy Policy is This Privacy Policy only covers information collected at the Sites.
incorporated into and subject to the Terms of Use. By visiting the This Privacy Policy may apply to the information that Owner collects
Sites you agree to be bound by the terms of this Privacy Policy. If offline, but only if specifically stated at the time of collection or
you do not agree please do not use or access the Site and immediately if the information is combined in our databases. Please review this
close this page.</FONT></FONT></P> Privacy Policy carefully. In addition, please review our Terms of
<P STYLE="margin-bottom: 0.19in; line-height: 0.23in"> Use, which governs your use of the Sites. This Privacy Policy is
<FONT COLOR="#212529"><FONT FACE="Arial, serif">We fully describe our incorporated into and subject to the Terms of Use. By visiting the
privacy practices below in this Privacy Policy.</FONT></FONT></P> Sites you agree to be bound by the terms of this Privacy Policy. If
<P STYLE="margin-bottom: 0.19in; line-height: 0.23in"> you do not agree please do not use or access the Site and immediately
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>THIS OVERVIEW close this page.</FONT></FONT></P>
HIGHLIGHTS SOME IMPORTANT INFORMATION REGARDING OUR USE AND SHARING <P STYLE="margin-bottom: 0.19in; line-height: 0.23in">
OF YOUR INFORMATION, BUT PLEASE REVIEW OUR FULL PRIVACY POLICY BEFORE <FONT COLOR="#212529"><FONT FACE="Arial, serif">We fully describe our
USING OUR SITE.</B></FONT></FONT></P> privacy practices below in this Privacy Policy.</FONT></FONT></P>
<P STYLE="margin-bottom: 0.19in; line-height: 0.23in"> <P STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<FONT COLOR="#212529"><FONT FACE="Arial, serif">We primarily use the <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>THIS OVERVIEW
information we collect when you interact with the Sites in connection HIGHLIGHTS SOME IMPORTANT INFORMATION REGARDING OUR USE AND SHARING
with your relationship with the Owner, your use of the Sites, and for OF YOUR INFORMATION, BUT PLEASE REVIEW OUR FULL PRIVACY POLICY BEFORE
sending you information from us or on behalf of third parties. Please USING OUR SITE.</B></FONT></FONT></P>
review the “</FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>Information <P STYLE="margin-bottom: 0.19in; line-height: 0.23in">
Collection</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"> <FONT COLOR="#212529"><FONT FACE="Arial, serif">We primarily use the
and “</FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>How information we collect when you interact with the Sites in connection
We Use Your Information</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"> with your relationship with the Owner, your use of the Sites, and for
sections for a full description of the information we collect and how sending you information from us or on behalf of third parties. Please
we use that information. Note that we do not share your Personal review the “</FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>Information
Information (information that identifies you as a specific Collection</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">
individual, such as your full name, email address or street address) and “</FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>How
with third parties for their marketing purposes without your consent; We Use Your Information</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">
however, we may share your Personal Information under certain limited sections for a full description of the information we collect and how
circumstances. For more information, please review the section below we use that information. Note that we do not share your Personal
entitled “</FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>How Information (information that identifies you as a specific
We May Share the Information Collected</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">.”</FONT></FONT></P> individual, such as your full name, email address or street address)
<P STYLE="margin-bottom: 0.19in; line-height: 0.23in"> with third parties for their marketing purposes without your consent;
<FONT COLOR="#212529"><FONT FACE="Arial, serif">This Privacy Policy however, we may share your Personal Information under certain limited
is published in accordance with the provisions of the Indian circumstances. For more information, please review the section below
Information Technology Act, 2000 and the rules made thereunder, entitled “</FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>How
specifically, The Information Technology (Reasonable Security We May Share the Information Collected</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">.”</FONT></FONT></P>
Practices and Procedures and Sensitive Personal data or information) <P STYLE="margin-bottom: 0.19in; line-height: 0.23in">
Rules, 2011 and the Information Technology (Intermediary Guidelines) <FONT COLOR="#212529"><FONT FACE="Arial, serif">This Privacy Policy
Rules, 2011.</FONT></FONT></P> is published in accordance with the provisions of the Indian
<P STYLE="margin-bottom: 0.19in; line-height: 0.23in"> Information Technology Act, 2000 and the rules made thereunder,
<FONT COLOR="#212529"><FONT FACE="Arial, serif">Personal Information specifically, The Information Technology (Reasonable Security
for the purposes of this Policy shall include, but not limited to, Practices and Procedures and Sensitive Personal data or information)
information regarding Your name, photograph, address, telephone Rules, 2011 and the Information Technology (Intermediary Guidelines)
number, date of birth, gender, e-mail address, financial information Rules, 2011.</FONT></FONT></P>
details, Facebook profile, contacts, etc.</FONT></FONT></P> <P STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<P STYLE="margin-bottom: 0.19in; line-height: 0.23in"> <FONT COLOR="#212529"><FONT FACE="Arial, serif">Personal Information
<BR><BR> for the purposes of this Policy shall include, but not limited to,
</P> information regarding Your name, photograph, address, telephone
<P STYLE="margin-bottom: 0.19in; line-height: 0.23in"> number, date of birth, gender, e-mail address, financial information
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>By Visiting This details, Facebook profile, contacts, etc.</FONT></FONT></P>
Site You Agree To Be Bound By The Terms And Conditions Of This </B></FONT></FONT> <P STYLE="margin-bottom: 0.19in; line-height: 0.23in">
</P> <BR><BR>
<P STYLE="margin-bottom: 0.19in; line-height: 0.5in"> </P>
<FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">1. <P STYLE="margin-bottom: 0.19in; line-height: 0.23in">
Collection of Personal Information, Other Information and Its Usage</FONT></FONT></FONT></P> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>By Visiting This
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> Site You Agree To Be Bound By The Terms And Conditions</B></FONT></FONT></P>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;This <P STYLE="margin-bottom: 0.19in; line-height: 0.5in">
Privacy Policy explains the nature of personal and non-personal <FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">1.
information that the Site collects or receives and the manner in Collection of Personal Information, Other Information and Its Usage</FONT></FONT></FONT></P>
which it possesses, stores, deals or handles such personal and <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
non-personal information.</FONT></FONT></P> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;This
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> Privacy Policy explains the nature of personal and non-personal
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Where information that the Site collects or receives and the manner in
possible, we indicate which fields are required and which fields are which it possesses, stores, deals or handles such personal and
optional. You always have the option to not provide information by non-personal information.</FONT></FONT></P>
choosing not to use a particular service or feature on the Site. We <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
may automatically track certain information about you based upon your <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Where
behaviour on our Site.</FONT></FONT></P> possible, we indicate which fields are required and which fields are
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> optional. You always have the option to not provide information by
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.3</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We choosing not to use a particular service or feature on the Site. We
use data collection devices such as &quot;Cookies or Web Beacons&quot; may automatically track certain information about you based upon your
on certain pages of the Site to help analyse our web page flow, behaviour on our Site.</FONT></FONT></P>
measure promotional effectiveness, and promote trust and safety. <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
&quot;Cookies&quot; are small files placed on your hard drive that <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.3</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We
assist us in providing our services. We offer certain features that use data collection devices such as &quot;Cookies or Web Beacons&quot;
are only available through the use of a &quot;Cookie&quot;. We also on certain pages of the Site to help analyse our web page flow,
use Cookies to allow you to enter your password less frequently measure promotional effectiveness, and promote trust and safety.
during a session. Cookies or Web Beacons can also help us provide &quot;Cookies&quot; are small files placed on your hard drive that
information that is targeted to your interests, tell us which parts assist us in providing our services. We offer certain features that
of our website you have visited, and facilitate and measure the are only available through the use of a &quot;Cookie&quot;. We also
effectiveness of advertisements and web searches.</FONT></FONT></P> use Cookies to allow you to enter your password less frequently
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> during a session. Cookies or Web Beacons can also help us provide
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.4</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;The information that is targeted to your interests, tell us which parts
information as collected will be retained by TNTPA in compliance of of our website you have visited, and facilitate and measure the
the applicable laws.</FONT></FONT></P> effectiveness of advertisements and web searches.</FONT></FONT></P>
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Information <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.4</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;The
for the purposes of this Policy shall include, but shall not be information as collected will be retained by TNTPA in compliance of
limited to the following:</FONT></FONT></P> the applicable laws.</FONT></FONT></P>
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Personal <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Information
information such as your name, photograph, address, telephone number, for the purposes of this Policy shall include, but shall not be
date of birth, gender, e-mail address, financial information details, limited to the following:</FONT></FONT></P>
etc.;</FONT></FONT></P> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Personal
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Your information such as your name, photograph, address, telephone number,
log-in and password details in connection with the account sign-in date of birth, gender, e-mail address, financial information details,
process. The Owner reserve the right to reject usernames that are etc.;</FONT></FONT></P>
offensive or are found to be unsuitable by the Owner;</FONT></FONT></P> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Your
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5.3</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Limited log-in and password details in connection with the account sign-in
access to your Facebook/ social media profile if you choose to log in process. The Owner reserve the right to reject usernames that are
through such login process;</FONT></FONT></P> offensive or are found to be unsuitable by the Owner;</FONT></FONT></P>
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5.4</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;If <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5.3</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Limited
you transact with us (through making donations / contributions), we access to your Facebook/ social media profile if you choose to log in
collect some additional information, such as a billing address, a through such login process;</FONT></FONT></P>
credit / debit card number and a credit / debit card expiration date <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
and/ or other payment instrument details and tracking information <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5.4</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;If
from cheques or money orders;</FONT></FONT></P> you transact with us (through making donations / contributions), we
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> collect some additional information, such as a billing address, a
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5.5</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;If credit / debit card number and a credit / debit card expiration date
you choose to post mails or leave feedback, we will collect that and/ or other payment instrument details and tracking information
information you provide to us. We retain this information as from cheques or money orders;</FONT></FONT></P>
necessary to resolve disputes, provide User support and troubleshoot <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
problems as permitted by law;</FONT></FONT></P> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5.5</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;If
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> you choose to post mails or leave feedback, we will collect that
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5.6</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;If information you provide to us. We retain this information as
you send us personal correspondence, such as emails or letters, or if necessary to resolve disputes, provide User support and troubleshoot
other Users or third parties send us correspondence about your problems as permitted by law;</FONT></FONT></P>
activities or postings on the Site, we may collect such information <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
into a file specific to you;</FONT></FONT></P> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5.6</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;If
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> you send us personal correspondence, such as emails or letters, or if
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5.7</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Details other Users or third parties send us correspondence about your
of any requests or transactions made by you through the Site; and</FONT></FONT></P> activities or postings on the Site, we may collect such information
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> into a file specific to you;</FONT></FONT></P>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5.8</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;IP <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
addresses, browser and operating system specifications, location etc.</FONT></FONT></P> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5.7</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Details
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> of any requests or transactions made by you through the Site; and</FONT></FONT></P>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.6</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Such <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
personal information may be collected in various ways including <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.5.8</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;IP
during the course of you registering as a user/donor on the Site;</FONT></FONT></P> addresses, browser and operating system specifications, location etc.</FONT></FONT></P>
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.7</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;You <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.6</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Such
hereby represent to us that:</FONT></FONT></P> personal information may be collected in various ways including
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> during the course of you registering as a user/donor on the Site;</FONT></FONT></P>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.7.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;the <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
information you provide us from time to time is and shall be <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.7</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;You
authentic, correct, current and updated and you have all the rights, hereby represent to us that:</FONT></FONT></P>
permissions and consents as may be required to provide such <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
information to us;</FONT></FONT></P> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.7.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;the
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> information you provide us from time to time is and shall be
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.7.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Your authentic, correct, current and updated and you have all the rights,
providing the information to us and our consequent storage, permissions and consents as may be required to provide such
collection, usage, transfer, access or processing of the same shall information to us;</FONT></FONT></P>
not be in violation of any third party agreement, laws, charter <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
documents, judgments, orders and decrees;</FONT></FONT></P> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.7.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;By
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> providing the information to us and our consequent storage,
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.7.3</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We collection, usage, transfer, access or processing of the same shall
and each of our entities officers, directors, contractors or agents not be in violation of any third party agreement, laws, charter
shall not be responsible for the authenticity of the information that documents, judgments, orders and decrees;</FONT></FONT></P>
you or any other user provide to us. You shall indemnify and hold <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
harmless us and each of our entities officers, directors, contractors <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.7.3</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We
or agents and any third party relying on the information provided by and each of our entities officers, directors, contractors or agents
you in the event you are in breach of this Privacy Policy including shall not be responsible for the authenticity of the information that
this provision and the immediately preceding provision above.</FONT></FONT></P> you or any other user provide to us. You shall indemnify and hold
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> harmless us and each of our entities officers, directors, contractors
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.7.4</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;You or agents and any third party relying on the information provided by
are capable (in case of an individual, being above 18 years of age) you in the event you are in breach of this Privacy Policy including
and duly authorised (in case of a legal entity, by way of appropriate this provision and the immediately preceding provision above.</FONT></FONT></P>
corporate approvals) to enter into the campaigning/ funding <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
arrangement, on behalf of himself, any other person, company, or <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.7.4</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;You
other entity.</FONT></FONT></P> are capable (in case of an individual, being above 18 years of age)
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> and duly authorised (in case of a legal entity, by way of appropriate
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;The corporate approvals) to enter into the campaigning/ funding
information so collected from you may be used:</FONT></FONT></P> arrangement, on behalf of himself, any other person, company, or
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> other entity.</FONT></FONT></P>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;To <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
identify you when you sign-in and administer your account with us;</FONT></FONT></P> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;The
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> information so collected from you may be used:</FONT></FONT></P>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;To <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
enable us to provide you with our services and ensure a better user <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;To
experience;</FONT></FONT></P> identify you when you sign-in and administer your account with us;</FONT></FONT></P>
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8.3</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;To <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;To
send you information such as receipts, certificates, upcoming events, enable us to provide you with our services and ensure a better user
newsletters, etc. which we think you may find useful or which you experience;</FONT></FONT></P>
have requested from us;</FONT></FONT></P> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8.3</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;To
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8.4</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;To send you information such as receipts, certificates, upcoming events,
present projects to you when you use the Site, which we believe will newsletters, etc. which we think you may find useful or which you
be of interest;</FONT></FONT></P> have requested from us;</FONT></FONT></P>
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8.5</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;To <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8.4</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;To
respond to your queries and assist you with customer service or present projects to you when you use the Site, which we believe will
technical support issues;</FONT></FONT></P> be of interest;</FONT></FONT></P>
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8.6</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;To <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8.5</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;To
analyze the use of the Site and the people visiting, to improve our respond to your queries and assist you with customer service or
content and services;</FONT></FONT></P> technical support issues;</FONT></FONT></P>
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8.7</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;For <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8.6</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;To
other purposes that we disclose when we request for this information;</FONT></FONT></P> analyze the use of the Site and the people visiting, to improve our
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> content and services;</FONT></FONT></P>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8.8</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;To <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
notify you about our updated information, activities, and other <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8.7</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;For
related information; </FONT></FONT> other purposes that we disclose when we request for this information;</FONT></FONT></P>
</P> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<P STYLE="margin-bottom: 0.19in; line-height: 0.5in"> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>1.8.8</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;To
<FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">2. notify you about our updated information, activities, and other
Sharing of Personal Information</FONT></FONT></FONT></P> related information; </FONT></FONT>
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> </P>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>2.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp; <P STYLE="margin-bottom: 0.19in; line-height: 0.5in">
We may also disclose aggregated user information for the purpose of <FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">2.
maintaining &amp; understanding user analytics and behaviour on the Sharing of Personal Information</FONT></FONT></FONT></P>
Site. For example, we may disclose the number of Users on the Site, <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
total and average contribution data, nationality of the contributors, <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>2.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;
organization of the contributors etc.</FONT></FONT></P> We may also disclose aggregated user information for the purpose of
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> maintaining &amp; understanding user analytics and behaviour on the
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>2.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We Site. For example, we may disclose the number of Users on the Site,
may exchange, transfer, share, part with all information (personal total and average contribution data, nationality of the contributors,
information and/or any information provided by you), across borders organization of the contributors etc.</FONT></FONT></P>
and from your country and jurisdiction to any other countries and <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
jurisdictions across the world (including India), with affiliates / <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>2.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We
agent / third party service provider / partners and other agencies may exchange, transfer, share, part with all information (personal
for purposes specified under this Privacy Policy or to fulfil our information and/or any information provided by you), across borders
obligations towards you or as may be required by law.</FONT></FONT></P> and from your country and jurisdiction to any other countries and
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> jurisdictions across the world (including India), with affiliates /
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>2.3</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We agent / third party service provider / partners and other agencies
may share personal information with our other corporate entities and for purposes specified under this Privacy Policy or to fulfil our
affiliates to help detect and prevent identity theft, fraud and other obligations towards you or as may be required by law.</FONT></FONT></P>
potentially illegal acts; correlate related or multiple accounts to <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
prevent abuse of our services; and to facilitate joint or co-branded <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>2.3</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We
services that you request where such services are provided by more may share personal information with our other corporate entities and
than one corporate entity.</FONT></FONT></P> affiliates to help detect and prevent identity theft, fraud and other
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> potentially illegal acts; correlate related or multiple accounts to
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>2.4</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We prevent abuse of our services; and to facilitate joint or co-branded
may disclose personal information if required to do so by law or in services that you request where such services are provided by more
good faith if such disclosure is reasonably necessary to respond to than one corporate entity.</FONT></FONT></P>
subpoenas, court orders, or other legal process. We may disclose <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
personal information to law enforcement offices, third party rights <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>2.4</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We
owners, or others in good faith if such disclosure is reasonably may disclose personal information if required to do so by law or in
necessary to enforce our Terms or Privacy Policy; or protect the good faith if such disclosure is reasonably necessary to respond to
rights, property or personal safety of our Users or the general subpoenas, court orders, or other legal process. We may disclose
public.</FONT></FONT></P> personal information to law enforcement offices, third party rights
<P STYLE="margin-bottom: 0.19in; line-height: 0.5in"> owners, or others in good faith if such disclosure is reasonably
<FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">3. necessary to enforce our Terms or Privacy Policy; or protect the
Use of Demographic / Profile Data / Your Information</FONT></FONT></FONT></P> rights, property or personal safety of our Users or the general
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> public.</FONT></FONT></P>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>3.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We <P STYLE="margin-bottom: 0.19in; line-height: 0.5in">
use personal information to provide the services you request. To the <FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">3.
extent we use your personal information to market to you, we will Use of Demographic / Profile Data / Your Information</FONT></FONT></FONT></P>
provide you the ability to opt-out of such uses. We use your personal <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
information to resolve disputes; troubleshoot problems; help promote <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>3.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We
a safe service; collect money; measure interest in our services and use personal information to provide the services you request. To the
updates; customize your experience; detect and protect us against extent we use your personal information to market, we will provide
error, fraud and other criminal activity; enforce our terms and you the option to opt-out of such uses. We use your personal
conditions; and as otherwise described to you at the time of information to resolve disputes; troubleshoot problems; help promote
collection. In our efforts to continually improve our service a safe service; collect money; measure interest in our services and
offerings, we collect and analyse demographic and profile data about updates; customize your experience; detect and protect us against
our users' activity on our Website.</FONT></FONT></P> error, fraud and other criminal activity; enforce our terms and
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> conditions; and as otherwise described to you at the time of
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>3.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We collection. In our efforts to continually improve our service
identify and use your IP address to help diagnose problems with our offerings, we collect and analyse demographic and profile data about
server, and to administer our Website. Your IP address is also used our users' activity on our Website.</FONT></FONT></P>
to help identify you and to gather broad demographic information. We <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
will occasionally ask you to complete optional online surveys. These <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>3.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We
surveys may ask you for contact information and demographic identify and use your IP address to help diagnose problems with our
information (like zip code, age, or income level). We use this data server, and to administer our Website. Your IP address is also used
to tailor your experience at our Website, providing you with content to help identify you and to gather broad demographic information. We
that we think you might be interested in and to display content will occasionally ask you to complete optional online surveys. These
according to your preferences.</FONT></FONT></P> surveys may ask you for contact information and demographic
<P STYLE="margin-bottom: 0.19in; line-height: 0.5in"> information (like zip code, age, or income level). We use this data
<FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">4. to tailor your experience at our Website, providing you with content
Uses of your Credit/Debit Card Details</FONT></FONT></FONT></P> that we think you might be interested in and to display content
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> according to your preferences.</FONT></FONT></P>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>4.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;The <P STYLE="margin-bottom: 0.19in; line-height: 0.5in">
credit and debit card details that you submit while making a <FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">4.
contribution on the Site goes through the safe and secure transaction Uses of your Credit/Debit Card Details</FONT></FONT></FONT></P>
process provided by our payment gateway partners, which only include <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
the most trusted payment gateways in India. Furthermore, you will <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>4.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;The
also be taken through a 3D secure verification such as &quot;Verified credit and debit card details that you submit while making a
by Visa&quot; or “Master Card 3D Secure” password protected contribution on the Site goes through the safe and secure transaction
process to prevent any misuse of your debit/credit cards.</FONT></FONT></P> process provided by our payment gateway partners, which only include
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> the most trusted payment gateways in India. Furthermore, you will
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>4.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Please also be taken through a 3D secure verification such as &quot;Verified
note the following regarding your debit/credit card details: Your by Visa&quot; or “Master Card 3D Secure” password protected
credit/debit card details (card numbers, passwords, CVV numbers, process to prevent any misuse of your debit/credit cards.</FONT></FONT></P>
etc.) are not shared with the Owner or the Site or the campaigner. <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
They remain safely with the certified payment gateway.</FONT></FONT></P> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>4.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Please
<P STYLE="margin-bottom: 0.19in; line-height: 0.5in"> note the following regarding your debit/credit card details: Your
<FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">5. credit/debit card details (card numbers, passwords, CVV numbers,
Anonymity</FONT></FONT></FONT></P> etc.) are not shared with the Owner or the Site or the campaigner.
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> They remain safely with the certified payment gateway.</FONT></FONT></P>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>5.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;The <P STYLE="margin-bottom: 0.19in; line-height: 0.5in">
Site allows a contributor to make an &quot;anonymous&quot; <FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">5.
contribution to a campaign, even after registering through email or Anonymity</FONT></FONT></FONT></P>
the Facebook login. By choosing to be anonymous, the Site does not <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
publish the contributor's name or image on a campaign's contributor <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>5.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;The
section. TNTPA knows about your identity when you register, but does Site allows a contributor to make an &quot;anonymous&quot;
not reveal it to anyone.</FONT></FONT></P> contribution to a campaign, even after registering through email or
<P STYLE="margin-bottom: 0.19in; line-height: 0.5in"> the Facebook login. By choosing to be anonymous, the Site does not
<FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">6. publish the contributor's name or image on a campaign's contributor
Review of Information / Account Deactivation / Removal of Information</FONT></FONT></FONT></P> section. TNTPA knows about your identity when you register, but does
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> not reveal it to anyone without your consent.</FONT></FONT></P>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>6.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;If <P STYLE="margin-bottom: 0.19in; line-height: 0.5in">
at any time a user wishes to review the information provided to us at <FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">6.
the time of registering with us or at any time thereafter, you may do Review of Information / Account Deactivation / Removal of Information</FONT></FONT></FONT></P>
so by signing into your account and amending the same.</FONT></FONT></P> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>6.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;If
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>6.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We at any time a user wishes to review the information provided to us at
provide all Users with the opportunity to opt-out of receiving the time of registering with us or at any time thereafter, you may do
non-essential (updates, newsletters) communications from us after so by signing into your account and amending the same.</FONT></FONT></P>
setting up an account. All Users are also given the option of <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
cancelling their user accounts and bringing to our attention their <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>6.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We
desire to discontinue the use of our services. If you want to remove provide all Users with the opportunity to opt-out of receiving
your contact information from this Site and our newsletters, please non-essential (updates, newsletters) communications from us after
send us an email at&nbsp;tnpta.csr@gmail.com Even if user opts-out, setting up an account. All Users are also given the option of
TNPA reserves the right to notify you about your existing account.</FONT></FONT></P> cancelling their user accounts and bringing to our attention their
<P STYLE="margin-bottom: 0.19in; line-height: 0.5in"> desire to discontinue the use of our services. If you want to remove
<FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">7. your contact information from this Site and our newsletters, please
Consent</FONT></FONT></FONT></P> send us an email at&nbsp;tnpta.csr@gmail.com Even if user opts-out,
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> TNPA reserves the right to notify you about your existing account.</FONT></FONT></P>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>7.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;By <P STYLE="margin-bottom: 0.19in; line-height: 0.5in">
using the Site and/ or by providing your information, you consent to <FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">7.
the collection and use of the information you disclose on the Site in Consent</FONT></FONT></FONT></P>
accordance with this Privacy Policy, including but not limited to <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
your consent for sharing your information as per this Privacy Policy. <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>7.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;By
If we decide to change our Privacy Policy, we will post those changes using the Site and/ or by providing your information, you consent to
on this page so that you are always aware of what information we the collection and use of the information you disclose on the Site in
collect, how we use it, and under what circumstances we disclose it.</FONT></FONT></P> accordance with this Privacy Policy, including but not limited to
<P STYLE="margin-bottom: 0.19in; line-height: 0.5in"> your consent for sharing your information as per this Privacy Policy.
<FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">8. If we decide to change our Privacy Policy, we will post those changes
Security</FONT></FONT></FONT></P> on this page so that you are always aware of what information we
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> collect, how we use it, and under what circumstances we disclose it.</FONT></FONT></P>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>8.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We <P STYLE="margin-bottom: 0.19in; line-height: 0.5in">
have adopted reasonable security practices and procedure to ensure <FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">8.
that the personal information collected is secure. Your personal Security</FONT></FONT></FONT></P>
information is held on secure servers. You agree that such measures <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
are secured and adequate when you register with us/create an account.</FONT></FONT></P> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>8.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> have adopted reasonable security practices and procedure to ensure
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>8.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;While that the personal information collected is secure. Your personal
we will endeavour to take all reasonable and appropriate steps to information is held on secure servers. You agree that such measures
keep secure any information which we hold about you and prevent are secure and adequate when you register with us/create an account.</FONT></FONT></P>
unauthorized access, you acknowledge that the internet is not 100% <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
secure and that we cannot provide any absolute assurance regarding <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>8.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;While
the security of your personal information. We will not be liable in we will endeavour to take all reasonable and appropriate steps to
any way in relation to any breach of security or unintended loss or keep secure any information which we hold about you and prevent
disclosure of information caused by us in relation to your personal unauthorized access, you acknowledge that the internet is not 100%
information.</FONT></FONT></P> secure and that we cannot provide any absolute assurance regarding
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> the security of your personal information. We will not be liable in
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>8.3</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Notwithstanding any way in relation to any breach of security or unintended loss or
anything contained in this Privacy Policy or elsewhere, we shall not disclosure of information caused by us in relation to your personal
be held responsible for any loss, damage or misuse of your personal information.</FONT></FONT></P>
information, if such loss, damage or misuse is attributable to a <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
Force Majeure Event.</FONT></FONT></P> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>8.3</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Notwithstanding
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> anything contained in this Privacy Policy or elsewhere, we shall not
<FONT COLOR="#212529"></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>Force be held responsible for any loss, damage or misuse of your personal
Majeure Event</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"> information, if such loss, damage or misuse is attributable to a
shall mean any event that is beyond the reasonable control of us and Force Majeure Event.</FONT></FONT></P>
shall include, without limitation, sabotage, fire, flood, explosion, <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
acts of God, civil commotion, strikes or industrial action of any <FONT COLOR="#212529"></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>Force
kind, riots, insurrection, war, acts of government, computer hacking, Majeure Event</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">
unauthorised access to computer, computer system or computer network, shall mean any event that is beyond the reasonable control of us and
computer crashes, breach of security and encryption (provided beyond shall include, without limitation, sabotage, fire, flood, explosion,
reasonable control of us), power or electricity failure or acts of God, civil commotion, strikes or industrial action of any
unavailability of adequate power or electricity.</FONT></FONT></P> kind, riots, insurrection, war, acts of government, computer hacking,
<P STYLE="margin-bottom: 0.19in; line-height: 0.5in"> unauthorised access to computer, computer system or computer network,
<FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">9. computer crashes, breach of security and encryption (provided beyond
Link to Third Party Site</FONT></FONT></FONT></P> reasonable control of us), power or electricity failure or
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> unavailability of adequate power or electricity.</FONT></FONT></P>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>9.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Links <P STYLE="margin-bottom: 0.19in; line-height: 0.5in">
to third-party advertisements, third-party websites or any third <FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">9.
party electronic communication service are not provided on the Site Link to Third Party Site</FONT></FONT></FONT></P>
and are not controlled by, or affiliated to, or associated with, us <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
unless expressly specified on the Site.</FONT></FONT></P> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>9.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;Links
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> to third-party advertisements, third-party websites or any third
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>9.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We party electronic communication service are not provided on the Site
are not responsible for any form of transmission, whatsoever, and are not controlled by, or affiliated to, or associated with, us
received by you from any third party website. Accordingly, we do not unless expressly specified on the Site.</FONT></FONT></P>
make any representations concerning the privacy practices or policies <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
of such third parties or terms of use of such third party websites, <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>9.2</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;We
nor do we control or guarantee the accuracy, integrity, or quality of are not responsible for any form of transmission, whatsoever,
the information, data, text, software, music, sound, photographs, received by you from any third party website. Accordingly, we do not
graphics, videos, messages or other materials available on such third make any representations concerning the privacy practices or policies
party websites. The inclusion or exclusion does not imply any of such third parties or terms of use of such third party websites,
endorsement by us of the third party websites, the website's nor do we control or guarantee the accuracy, integrity, or quality of
provider, or the information on the website. The information provided the information, data, text, software, music, sound, photographs,
by you to such third party websites shall be governed in accordance graphics, videos, messages or other materials available on such third
with the privacy policies of such third party websites and it is party websites. The inclusion or exclusion does not imply any
recommended that you review the privacy policy of such third party endorsement by us of the third party websites, the website's
websites prior to using such websites.</FONT></FONT></P> provider, or the information on the website. The information provided
<P STYLE="margin-bottom: 0.19in; line-height: 0.5in"> by you to such third party websites shall be governed in accordance
<FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">10. with the privacy policies of such third party websites and it is
Grievance Officer</FONT></FONT></FONT></P> recommended that you review the privacy policy of such third party
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> websites prior to using such websites.</FONT></FONT></P>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>10.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;In <P STYLE="margin-bottom: 0.19in; line-height: 0.5in">
accordance with Information Technology Act, 2000 and rules made there <FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">10.
under, the name and contact details of the Grievance Officer who can Grievance Officer</FONT></FONT></FONT></P>
be contacted with respect to any complaints, questions, comments or <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
concerns including those pertaining to breach of Terms of Use, <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>10.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;In
Privacy Policy and other policies or questions is provided below:</FONT></FONT></P> accordance with Information Technology Act, 2000 and rules made there
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; background: #ffffff; line-height: 0.23in"> under, the name and contact details of the Grievance Officer who can
<FONT COLOR="#212529"><FONT FACE="Arial, serif">Mr. Umasankar</FONT></FONT></P> be contacted with respect to any complaints, questions, comments or
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; background: #ffffff; line-height: 0.23in"> concerns including those pertaining to breach of Terms of Use,
<FONT COLOR="#212529"><FONT FACE="Arial, serif">Treasurer, Tamil Nadu Privacy Policy and other policies or questions is provided below:</FONT></FONT></P>
State Parent Teacher Association</FONT></FONT></P> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; background: #ffffff; line-height: 0.23in">
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; background: #ffffff; line-height: 0.23in"> <FONT COLOR="#212529"><FONT FACE="Arial, serif">Treasurer, </FONT></FONT>
<FONT COLOR="#212529"><FONT FACE="Arial, serif">DPI Campus, College </P>
Road,</FONT></FONT></P> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; background: #ffffff; line-height: 0.23in">
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; background: #ffffff; line-height: 0.23in"> <FONT COLOR="#212529"><FONT FACE="Arial, serif">Tamil Nadu State
<FONT COLOR="#212529"><FONT FACE="Arial, serif">Chennai - 600006, Parent Teacher Association</FONT></FONT></P>
India.</FONT></FONT></P> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; background: #ffffff; line-height: 0.23in">
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; background: #ffffff; line-height: 0.23in"> <FONT COLOR="#212529"><FONT FACE="Arial, serif">DPI Campus, College
<FONT COLOR="#212529"><FONT FACE="Arial, serif">Email:&nbsp;tnpta.csr@gmail.com Road,</FONT></FONT></P>
</FONT></FONT> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; background: #ffffff; line-height: 0.23in">
</P> <FONT COLOR="#212529"><FONT FACE="Arial, serif">Chennai - 600006,
<P STYLE="margin-bottom: 0.19in; line-height: 0.5in"> India.</FONT></FONT></P>
<FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">11. <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; background: #ffffff; line-height: 0.23in">
Changes to this Policy</FONT></FONT></FONT></P> <FONT COLOR="#212529"><FONT FACE="Arial, serif">Email:&nbsp;</FONT></FONT><A HREF="mailto:tnpta.csr@gmail.com"><FONT FACE="Arial, serif">tnpta.csr@gmail.com</FONT></A><FONT COLOR="#212529"><FONT FACE="Arial, serif">
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"> </FONT></FONT>
<FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>11.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;The </P>
Owner may update this Privacy Policy at any time and any changes will <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; background: #ffffff; line-height: 0.23in"><A NAME="_GoBack"></A>
be effective upon posting. In the event that there are material <FONT COLOR="#212529"><FONT FACE="Arial, serif">Phone : +91 44 -
changes to the way we treat your Personal Information, we will 28279758</FONT></FONT></P>
provide notice through the Site. We may also notify you by email, in <P STYLE="margin-bottom: 0.19in; line-height: 0.5in">
our discretion. We will use your consent in a manner consistent with <FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">11.
the Privacy Policy in effect at the time you submitted the Changes to this Policy</FONT></FONT></FONT></P>
information, unless you consent to the new or revised policy.</FONT></FONT></P> <P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<P STYLE="margin-bottom: 0.19in; line-height: 0.5in"> <FONT COLOR="#212529"><FONT FACE="Arial, serif"><B>11.1</B></FONT></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">&nbsp;The
<FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">12. Owner may update this Privacy Policy at any time and any changes will
Effective Date</FONT></FONT></FONT></P> be effective upon posting. In the event that there are material
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in"><A NAME="_GoBack"></A> changes to the way we treat your Personal Information, we will
<FONT COLOR="#212529"><FONT FACE="Arial, serif">This policy was provide notice through the Site. We may also notify you by email, in
updated and became immediately effective on October, 16th 2019</FONT></FONT></P> our discretion. We will use your consent in a manner consistent with
<P STYLE="margin-bottom: 0in"><BR> the Privacy Policy in effect at the time you submitted the
</P> information, unless you consent to the new or revised policy.</FONT></FONT></P>
</BODY> <P STYLE="margin-bottom: 0.19in; line-height: 0.5in">
</HTML> <FONT COLOR="#000000"><FONT FACE="Arial, serif"><FONT SIZE=6 STYLE="font-size: 27pt">12.
Effective Date</FONT></FONT></FONT></P>
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0.19in; line-height: 0.23in">
<FONT COLOR="#212529"><FONT FACE="Arial, serif">This policy is
effective from October, 24</FONT></FONT><FONT COLOR="#212529"><SUP><FONT FACE="Arial, serif">th</FONT></SUP></FONT><FONT COLOR="#212529"><FONT FACE="Arial, serif">
2019</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
</BODY>
</HTML>
</mat-card-content></mat-card> </mat-card-content></mat-card>
<footer class="footer"> <footer class="footer">
<h5>&#9400; TN Schools, All rights reserved &nbsp;&nbsp;|<span class="footer-web"><a class="footer-privacy" href="#/privacy-policy" target="_blank">Privacy Policy</a></span></h5> <h5>&#9400; TN Schools, All rights reserved &nbsp;&nbsp;|<span class="footer-web"><a class="footer-privacy" href="#/privacy-policy" target="_blank">Privacy Policy</a></span></h5>

View File

@ -334,7 +334,7 @@
<!-- Sponsor Column --> <!-- Sponsor Column -->
<ng-container matColumnDef="Sponsor_Qty"> <ng-container matColumnDef="Sponsor_Qty">
<mat-header-cell *matHeaderCellDef > Sponsored Qty </mat-header-cell> <mat-header-cell *matHeaderCellDef > Sponsored Qty </mat-header-cell>
<mat-cell data-label="Sponsored Qty" *matCellDef="let row;let i = index"> <input step="1" min="1" max="" title="Qty" [(ngModel)]="sponsor_qty[i]" class="text" size="2" type="number" (change)="somethingChanged($event.target.value,i,row.cost_per_unit,row.mat_id,row)" <mat-cell data-label="Sponsored Qty" *matCellDef="let row;let i = index"> <input OnlyNumber="true" step="1" min="1" max="" title="Qty" [(ngModel)]="sponsor_qty[i]" class="text" size="2" type="number" (change)="somethingChanged($event.target.value,i,row.cost_per_unit,row.mat_id,row)"
class="sponsor_input"> </mat-cell> class="sponsor_input"> </mat-cell>
</ng-container> </ng-container>
@ -366,12 +366,33 @@
</table> </table>
</div> </div>
</div> </div>
<mat-paginator [pageSize]="pageSize" [pageSizeOptions]="[5, 10, 25, 50, 100]" showFirstLastButtons ></mat-paginator> <!-- <mat-paginator [pageSize]="pageSize" [pageSizeOptions]="[5, 10, 25, 50, 100]" showFirstLastButtons ></mat-paginator> -->
<div class="pt-1 pr-1" style="text-align: right;" *ngIf="dataStatus"> <!-- <div class="pt-1 pr-1" style="text-align: right;" *ngIf="dataStatus">
<button mat-raised-button color="primary" (click)="finalSave(2)" class="mr-1 mb-1">I'd like to Contribute in Kind</button> <button mat-raised-button color="primary" (click)="finalSave(2)" class="mr-1 mb-1">I'd like to Contribute in Kind</button>
<button (click)="finalSave(1)" mat-raised-button style="background-color:rgb(69, 189, 189);color:white" >I'd like to Contribute in Cash</button> <button (click)="finalSave(1)" mat-raised-button style="background-color:rgb(69, 189, 189);color:white" >I'd like to Contribute in Cash</button>
</div> </div> -->
<div style="text-align: center;" *ngIf="dataStatus" fxLayoutAlign="center">
<mat-label style=" font-size: 1.25rem;">I am happy to contribute</mat-label>&nbsp;&nbsp;
<mat-radio-group [(ngModel)]="contribute_type" >&nbsp;&nbsp;&nbsp;
<mat-radio-button value="2" ><span style=" font-size: 1.25rem;">Material</span></mat-radio-button><br/>
<mat-radio-button value="1"><span style=" font-size: 1.25rem;">Funds</span></mat-radio-button>
</mat-radio-group><br/>
<!-- <mat-form-field appearance="outline" fxFlex="50" fxFlex.xs="100" class="select_cot_type">
<mat-label style=" font-size: 1.25rem;">I am happy to contribute</mat-label>
<mat-select color="secondary" placeholder="Select" [(ngModel)]="contribute_type" #username="ngModel">
<mat-option value="2"><span style=" font-size: 1.25rem;">Materials</span></mat-option>
<mat-option value="1"><span style=" font-size: 1.25rem;">Funds/Money</span></mat-option>
</mat-select>
<mat-error *ngIf="username.invalid && username.errors.required && (username.dirty || username.touched)">Contribute type is required</mat-error>
</mat-form-field> -->
</div>
<div class="pt-1 pr-1" style="text-align: right;" *ngIf="dataStatus">
<!-- <button mat-raised-button color="primary" (click)="finalSave(2)" class="mr-1 mb-1">I'd like to Contribute in Kind</button> -->
<button (click)="finalSave(contribute_type)" mat-raised-button style="background-color:rgb(69, 189, 189);color:white;font-weight: bold" >Submit</button>
</div>
</div> </div>
<ng-template #status><h2>{{msg}}</h2></ng-template> <ng-template #status><h2>{{msg}}</h2></ng-template>

View File

@ -34,6 +34,7 @@ export class ProjectDetailComponent implements OnInit {
@ViewChild('table_element',{static:true}) table_element : ElementRef @ViewChild('table_element',{static:true}) table_element : ElementRef
clientWidth: any; clientWidth: any;
@ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator;
contribute_type:any=''
// types_of_funds=['State Fund','District Fund','School common Fund','For this Project'] // types_of_funds=['State Fund','District Fund','School common Fund','For this Project']
constructor(public restApi:ApiService,public fb:FormBuilder,public router:Router,public schInfo:SchoolDetailsService,private activatedRoute:ActivatedRoute) { } constructor(public restApi:ApiService,public fb:FormBuilder,public router:Router,public schInfo:SchoolDetailsService,private activatedRoute:ActivatedRoute) { }
@ -136,6 +137,10 @@ finalSave(flag)
alert("Please Fill the amount"); alert("Please Fill the amount");
return return
} }
if(this.contribute_type == '' ){
alert("Please choose the contribute type");
return
}
let data = {'records': let data = {'records':
{ {
'id':'', 'id':'',

View File

@ -28,7 +28,7 @@
<!-- <div class="buy"><i class="material-icons">add_shopping_cart</i></div> --> <!-- <div class="buy"><i class="material-icons">add_shopping_cart</i></div> -->
</div> </div>
</div> </div>
<div class="inside" *ngIf="schooldetails.school_name != 'More'"> <div class="inside" *ngIf="schooldetails.school_name != 'MORE'">
<div class="icon"><mat-icon>info_outline</mat-icon></div> <div class="icon"><mat-icon>info_outline</mat-icon></div>
<div class="contents"> <div class="contents">
<table> <table>
@ -59,6 +59,15 @@
<h1 class="text"><span> More</span></h1> <h1 class="text"><span> More</span></h1>
</mat-card> </mat-card>
</div> --> </div> -->
<div fxFlex.sm="33.33" fxFlex.xs="100" fxFlex.md="23.33" fxFlex.lg="23.33" fxFlex.xl="23.33" class="m-gap p-gap">
<mat-card style="margin: 8px;padding:0px;height: 300px;border-radius: 40px;" fxFlex="100" [routerLink]="['/contribute']">
<mat-card style=" -webkit-filter: blur(3px);
filter: blur(3px);background-image:url('assets/images/csr-img/collage.png');background-repeat: no-repeat, repeat;background-size: cover;" fxLayoutAlign="center center" >
</mat-card>
<h1 class="text"><span style="font-size: 40px">+</span><br/><span class="more_text"> MORE</span></h1>
</mat-card>
</div>
<!-- <div fxFlex.sm="33.33" fxFlex.xs="100" fxFlex.sm="50" fxFlex.md="23.33" fxFlex.lg="23.33" fxFlex.xl="23.33" class="m-gap p-gap"> --> <!-- <div fxFlex.sm="33.33" fxFlex.xs="100" fxFlex.sm="50" fxFlex.md="23.33" fxFlex.lg="23.33" fxFlex.xl="23.33" class="m-gap p-gap"> -->
<!-- <div class="p-list-main mb-2"> <!-- <div class="p-list-main mb-2">

View File

@ -201,23 +201,28 @@ mat-card{
border-radius: 4px; border-radius: 4px;
// background-color: #e91e63; // background-color: #e91e63;
border: none; border: none;
color: white; color:cyan;
text-align: center; text-align: center;
font-size: 35px; font-size: 35px;
padding: 5px; padding: 5px;
width: 200px; width: 200px;
transition: all 0.5s; transition: all 0.5s;
cursor: pointer; cursor: pointer;
position: absolute;
top:20%;
left:17%;
} }
.text span { .text .more_text {
cursor: pointer; cursor: pointer;
display: inline-block; display: inline-block;
position: relative; position: relative;
transition: 0.5s; transition: 0.5s;
} }
.text span:after { .text .more_text:after {
content: '\00bb'; content: '\00bb';
position: absolute; position: absolute;
opacity: 0; opacity: 0;
@ -226,12 +231,12 @@ mat-card{
transition: 0.5s; transition: 0.5s;
} }
.text:hover span { .text:hover .more_text {
padding-right: 25px; padding-right: 25px;
color:rgb(225, 0, 255) color:rgb(225, 0, 255)
} }
.text:hover span:after { .text:hover .more_text:after {
opacity: 1; opacity: 1;
right: 0; right: 0;
} }

View File

@ -31,7 +31,7 @@ export class ProjectListComponent implements OnInit {
// this.school_list = schDet['records'].filter(sch=>sch.is_featured==this.is_featured)[0]; // this.school_list = schDet['records'].filter(sch=>sch.is_featured==this.is_featured)[0];
this.school_list = schDet['records']; this.school_list = schDet['records'];
this.school_list = this.school_list.filter(sch=>sch.is_featured==1); this.school_list = this.school_list.filter(sch=>sch.is_featured==1);
this.school_list.push({school_name:"More",images:['assets/images/csr-img/school_empty.jpg']}) // this.school_list.push({school_name:"MORE",images:['assets/images/csr-img/school_empty.jpg']})
// this.school_list[this.school_list.length-1].images.push('assets/images/csr-img/school_empty.jpg') // this.school_list[this.school_list.length-1].images.push('assets/images/csr-img/school_empty.jpg')
console.log(this.school_list); console.log(this.school_list);
@ -54,7 +54,7 @@ export class ProjectListComponent implements OnInit {
getschDetails(schDetails) getschDetails(schDetails)
{ {
if(schDetails.school_name != 'More'){ if(schDetails.school_name != 'MORE'){
let data = {'school_name':schDetails.school_name,'images':schDetails.images,'district_name':schDetails.district_name,'total_b':schDetails.total_b,'total_g':schDetails.total_g,'total':schDetails.total,'teach_tot':schDetails.teach_tot,'nonteach_tot':schDetails.nonteach_tot,'totstaff':schDetails.totstaff,'total_cost':schDetails.total_cost,'total_recevied':schDetails.total_recevied,'school_id':schDetails.school_id,'block_name':schDetails.block_name,'management':schDetails.management,'category':schDetails.category,'high_class':schDetails.high_class,'low_class':schDetails.low_class,'latitude':schDetails.longitude,'longitude':schDetails.longitude,'school_req_id':schDetails.school_req_id}; let data = {'school_name':schDetails.school_name,'images':schDetails.images,'district_name':schDetails.district_name,'total_b':schDetails.total_b,'total_g':schDetails.total_g,'total':schDetails.total,'teach_tot':schDetails.teach_tot,'nonteach_tot':schDetails.nonteach_tot,'totstaff':schDetails.totstaff,'total_cost':schDetails.total_cost,'total_recevied':schDetails.total_recevied,'school_id':schDetails.school_id,'block_name':schDetails.block_name,'management':schDetails.management,'category':schDetails.category,'high_class':schDetails.high_class,'low_class':schDetails.low_class,'latitude':schDetails.longitude,'longitude':schDetails.longitude,'school_req_id':schDetails.school_req_id};
this.schInfo.updateDetails(data); this.schInfo.updateDetails(data);

View File

@ -14,16 +14,24 @@
<div fxLayout="column" fxLayoutAlign="start stretch"> <div fxLayout="column" fxLayoutAlign="start stretch">
<mat-form-field style="width: 100%"> <mat-form-field style="width: 100%">
<input matInput placeholder="Name" type="text" name="name" formControlName="name" required> <input matInput placeholder="Name" type="text" name="name" formControlName="name" required>
<mat-error *ngIf="go_reg.controls['name'].errors">Name is Required</mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field style="width: 100%"> <mat-form-field style="width: 100%">
<input matInput placeholder="E Mail" type="email" name="email" formControlName="email" required > <input matInput placeholder="E Mail" type="email" name="email" formControlName="email" required (change)="checkExists($event.target.value,'email')">
<mat-error *ngIf="go_reg.controls['email'].hasError('required')">Email is required</mat-error>
<mat-error *ngIf="go_reg.controls['email'].hasError('email')">Invalid Email</mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field style="width: 100%"> <mat-form-field style="width: 100%">
<input matInput placeholder="Confirm E Mail" type="email" name="confirm_email" formControlName="confirm_email" required (keyup)="checkValidators($event.target.value,'email')"> <input matInput placeholder="Confirm E Mail" type="email" name="confirm_email" formControlName="confirm_email" required (keyup)="checkValidators($event.target.value,'email')">
<mat-error *ngIf="go_reg.controls['confirm_email'].hasError('required')">Email is required</mat-error>
<mat-error *ngIf="go_reg.controls['confirm_email'].hasError('email')">Invalid Email</mat-error>
</mat-form-field> </mat-form-field>
<div style="color:red;font-size: 14px;float: right" *ngIf="email_pattern_error"> Email & Confirm Email does not match.</div> <div style="color:red;font-size: 14px;float: right" *ngIf="email_pattern_error"> Email & Confirm Email does not match.</div>
<mat-form-field style="width: 100%"> <mat-form-field style="width: 100%">
<input matInput placeholder="Phone Number" type="number" name="mobile" formControlName="mobile" required> <input matInput placeholder="Phone Number" type="text" name="mobile" inputmode="numeric" pattern="[0-9]*" OnlyNumber="true" formControlName="mobile" required min="10" max="12" minlength="10" maxlength="12" (change)="checkExists($event.target.value,'mobile')">
<mat-error *ngIf="go_reg.controls['mobile'].hasError('required')">mobile number is required</mat-error>
<mat-error *ngIf="go_reg.controls['mobile'].hasError('min')">minimum 10 digit required</mat-error>
<mat-error *ngIf="go_reg.controls['mobile'].hasError('max')">maximum 12 digit is allowed</mat-error>
</mat-form-field> </mat-form-field>
<!-- <mat-form-field style="width: 100%"> <!-- <mat-form-field style="width: 100%">
<input matInput [matDatepicker]="picker" [max]="maxDate" placeholder="Date of Birth" formControlName="user_dob"> <input matInput [matDatepicker]="picker" [max]="maxDate" placeholder="Date of Birth" formControlName="user_dob">
@ -32,10 +40,14 @@
</mat-form-field> --> </mat-form-field> -->
<mat-form-field style="width: 100%"> <mat-form-field style="width: 100%">
<input matInput placeholder="Password" type="password" name="password" formControlName="password" required > <input matInput placeholder="Password" type="password" name="password" formControlName="password" required >
<mat-error *ngIf="go_reg.controls['password'].hasError('required')">Password is Required</mat-error>
<mat-error *ngIf="go_reg.controls['password'].hasError('minlength')">Password must be minimum of 4 Characters</mat-error>
<mat-error *ngIf="go_reg.controls['password'].hasError('maxlength')">Password must be maximum of 12 Characters</mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field style="width: 100%"> <mat-form-field style="width: 100%">
<input matInput placeholder="Confirm Password" type="password" name="confirm_password" formControlName="confirm_password" required (keyup)="checkValidators($event.target.value,'pass')"> <input matInput placeholder="Confirm Password" type="password" name="confirm_password" formControlName="confirm_password" required (keyup)="checkValidators($event.target.value,'pass')">
<mat-error *ngIf="go_reg.controls['confirm_password'].errors">Confirm Password is Required</mat-error>
</mat-form-field> </mat-form-field>
<div style="color:red;font-size: 14px;float: right" *ngIf="pass_pattern_error"> Password & Confirm Password does not match.</div> <div style="color:red;font-size: 14px;float: right" *ngIf="pass_pattern_error"> Password & Confirm Password does not match.</div>
<!-- <div fxLayout="row" fxLayoutAlign="start center" class="mb-2"> <!-- <div fxLayout="row" fxLayoutAlign="start center" class="mb-2">
@ -60,6 +72,7 @@
<div *ngIf="slide1"> <div *ngIf="slide1">
<mat-form-field style="width: 100%"> <mat-form-field style="width: 100%">
<input matInput placeholder="Organisation Name" type="text" name="orgname" formControlName="orgname" > <input matInput placeholder="Organisation Name" type="text" name="orgname" formControlName="orgname" >
<mat-error *ngIf="go_reg.controls['org_info']['controls'].orgname.hasError('required')">Organisation Name is Required</mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field style="width: 100%;"> <mat-form-field style="width: 100%;">
<textarea matInput placeholder="Registered Address" name="org_address" formControlName="org_address" ></textarea> <textarea matInput placeholder="Registered Address" name="org_address" formControlName="org_address" ></textarea>
@ -70,13 +83,17 @@
<mat-slide-toggle name="slideToggle" (change)="change_fun2($event)" > <mat-slide-toggle name="slideToggle" (change)="change_fun2($event)" >
</mat-slide-toggle> </mat-slide-toggle>
</div> </div>
<div *ngIf="slide2"> <div *ngIf="slide2">
<mat-form-field style="width: 100%"> <mat-form-field style="width: 100%">
<input matInput placeholder="PAN of the Organisation" type="text" name="org_pan" max="10" maxlength="10" formControlName="org_pan" > <mat-label>PAN of the Organisation</mat-label>
<input matInput placeholder="Format:ACDEF1234Z" type="text" name="org_pan" max="10" maxlength="10" formControlName="org_pan" oninput="this.value = this.value.toUpperCase()">
<mat-error *ngIf="go_reg.controls['org_info']['controls'].org_pan.errors">Enter a valid PAN number</mat-error>
</mat-form-field> </mat-form-field>
</div> </div>
</div> </div>
<mat-checkbox formControlName="profile_share"> </mat-checkbox>&nbsp; <span tex-wrap>I hereby consent to share details of my contributions with the public</span><br/><br/> <mat-checkbox formControlName="profile_share"> </mat-checkbox>&nbsp; <span tex-wrap>I hereby give my consent to share details of my contribution in the public domain</span><br/><br/>
<mat-checkbox formControlName="notify_pref" text-wrap></mat-checkbox>&nbsp; <mat-checkbox formControlName="notify_pref" text-wrap></mat-checkbox>&nbsp;
<span tex-wrap>I hereby give my consent to receive periodic updates through email and other modes</span> <span tex-wrap>I hereby give my consent to receive periodic updates through email and other modes</span>
<!-- <mat-label>Conscent profile share to public</mat-label> <!-- <mat-label>Conscent profile share to public</mat-label>

View File

@ -41,9 +41,10 @@ export class RegisterComponent {
name: new FormControl('',Validators.compose([Validators.required])), name: new FormControl('',Validators.compose([Validators.required])),
email: new FormControl('',Validators.compose([Validators.required,Validators.email])), email: new FormControl('',Validators.compose([Validators.required,Validators.email])),
confirm_email:new FormControl('',Validators.compose([Validators.required,Validators.email])), confirm_email:new FormControl('',Validators.compose([Validators.required,Validators.email])),
mobile: new FormControl(''), // mobile: new FormControl('',Validators.compose([Validators.required,Validators.minLength(10),Validators.maxLength(12), Validators.pattern('[0-9]*')])),
mobile: new FormControl('',Validators.compose([Validators.required, Validators.min(1000000000), Validators.max(999999999999)])),
// user_dob:new FormControl(''), // user_dob:new FormControl(''),
password: new FormControl('',Validators.compose([Validators.required])), password: new FormControl('',Validators.compose([Validators.required,Validators.minLength(4),Validators.maxLength(12)])),
confirm_password:new FormControl('',Validators.compose([Validators.required])), confirm_password:new FormControl('',Validators.compose([Validators.required])),
user_type:new FormControl('1'), user_type:new FormControl('1'),
org_info: this.fb.group({ org_info: this.fb.group({
@ -63,10 +64,13 @@ export class RegisterComponent {
if(value.checked == true){ if(value.checked == true){
this.slide1=true this.slide1=true
this.go_reg.controls['user_type'].setValue('2'); this.go_reg.controls['user_type'].setValue('2');
this.go_reg.controls['org_info']['controls'].orgname.setValidators(Validators.compose([Validators.required,Validators.maxLength(99)]))
} }
else{ else{
this.slide1=false this.slide1=false
this.go_reg.controls['user_type'].setValue('1'); this.go_reg.controls['user_type'].setValue('1');
this.go_reg.controls['org_info']['controls'].orgname.clearValidators();
this.go_reg.controls['org_info']['controls'].orgname.updateValueAndValidity()
} }
} }
setValidatorConfirmPass(value){ setValidatorConfirmPass(value){
@ -108,9 +112,13 @@ export class RegisterComponent {
if(value.checked == true){ if(value.checked == true){
this.slide2=true this.slide2=true
// this.go_reg.controls['org_pan'].setV // this.go_reg.controls['org_pan'].setV
console.log(this.go_reg.controls['org_info'])
this.go_reg.controls['org_info']['controls'].org_pan.setValidators(Validators.compose([Validators.required,Validators.maxLength(10),Validators.minLength(10),Validators.pattern('[A-Z]{5}[0-9]{4}[A-Z]{1}')]))
} }
else{ else{
this.slide2=false this.slide2=false
this.go_reg.controls['org_info']['controls'].org_pan.clearValidators();
this.go_reg.controls['org_info']['controls'].org_pan.updateValueAndValidity();
} }
} }
loginScreen(){ loginScreen(){
@ -133,9 +141,12 @@ export class RegisterComponent {
alert("Please fill all the mandatory fields marked with '*'") alert("Please fill all the mandatory fields marked with '*'")
return; return;
} }
// this.go_reg.removeControl('confirm_password') // this.go_reg.removeControl('confirm_password')
// this.go_reg.removeControl('cofirm_email') // this.go_reg.removeControl('cofirm_email')
// console.log(this.go_reg.value);return false; // console.log(this.go_reg.value);return false;
let url = `${environment.apiUrl}${'csrUserRegistration'}`; let url = `${environment.apiUrl}${'csrUserRegistration'}`;
console.log("dd",url) console.log("dd",url)
let data = this.go_reg.value; let data = this.go_reg.value;
@ -148,6 +159,7 @@ export class RegisterComponent {
// this.router.navigate(['/authentication/login']); // this.router.navigate(['/authentication/login']);
this.loginScreen() this.loginScreen()
}) })
} }
register() { register() {
this.router.navigate(['/']); this.router.navigate(['/']);
@ -155,6 +167,21 @@ export class RegisterComponent {
closeDialog(){ closeDialog(){
this.matDialog.closeAll(); this.matDialog.closeAll();
} }
checkExists(value,option){
if(value == ''){
return
}
console.log(this.go_reg.controls)
let param={key:option,data:value}
this.restApi.checkExistCredentials(param).subscribe(res=>{
if(!res['dataStatus']){
alert(res['msg'])
setTimeout(()=>{
this.go_reg.controls[option].setValue('')
})
}
})
}
} }

View File

@ -47,6 +47,11 @@
<mat-cell data-label="Cost/Qty" *matCellDef="let row;" > {{row.cost_per_unit === null?0:row.cost_per_unit}} </mat-cell> <mat-cell data-label="Cost/Qty" *matCellDef="let row;" > {{row.cost_per_unit === null?0:row.cost_per_unit}} </mat-cell>
<!-- <td mat-footer-cell *matFooterCellDef> Total </td> --> <!-- <td mat-footer-cell *matFooterCellDef> Total </td> -->
</ng-container> </ng-container>
<ng-container matColumnDef="HM_Address">
<mat-header-cell *matHeaderCellDef >Delivery Address</mat-header-cell>
<mat-cell data-label="Delivery Address" *matCellDef="let row;" ><span style="text-transform: capitalize;"> {{row.teacher_name != null ? row.teacher_name.toLowerCase() : ''}}<br/>{{row.school_address != null ? row.school_address.split("/")[0].toLowerCase() : ''}}<br/>{{row.school_address != null ? row.school_address.split("/")[1].toLowerCase() : ''}} - {{row.pincode}}<br/>{{row.mbl_nmbr}}</span></mat-cell>
<!-- <td mat-footer-cell *matFooterCellDef> Total </td> -->
</ng-container>
<!-- Total Column --> <!-- Total Column -->
<ng-container matColumnDef="Amount"> <ng-container matColumnDef="Amount">

View File

@ -101,6 +101,12 @@
justify-content: flex-end ; justify-content: flex-end ;
} }
.mat-column-HM_Address{
margin:0px;
padding: 0px;
justify-content: center;
flex: 0 0 25%;
}
@media(max-width:768px) { @media(max-width:768px) {
.main-detail-product { .main-detail-product {
padding: 0.3rem !important; padding: 0.3rem !important;

View File

@ -13,16 +13,30 @@ export class ReqListComponent implements OnInit {
@ViewChild(MatSort, {static: true}) sort: MatSort; @ViewChild(MatSort, {static: true}) sort: MatSort;
pageSize = 10; pageSize = 10;
displayedColumns: string[] = [ 'Item_Need', 'School', 'Required_Qty', 'Received_Qty', 'balance_Qty','Sponsor_Qty', 'Cost_Per_Unit', 'Amount']; displayedColumns: string[] = [ 'Item_Need', 'School', 'Required_Qty', 'Received_Qty', 'balance_Qty','Sponsor_Qty', 'Cost_Per_Unit', 'Amount'];
cont_type
constructor() { constructor() {
} }
ngOnInit() { ngOnInit() {
let list_req= sessionStorage.getItem('contribute-selected-list') let list_req:any= sessionStorage.getItem('contribute-selected-list')
let cont_params:any=sessionStorage.getItem('contribute-params')
this. cont_type=JSON.parse(cont_params).records.cont_type
if(this.cont_type == '2'){
this.displayedColumns.pop()
this.displayedColumns.pop()
this.displayedColumns.push('HM_Address')
console.log(this.displayedColumns)
}
console.log(cont_params,this.cont_type)
list_req=JSON.parse(list_req) list_req=JSON.parse(list_req)
console.log(list_req); console.log(list_req);
if(list_req.length > 0){ if(list_req.length > 0){
this.dataLength = list_req.length; this.dataLength = list_req.length;
list_req.forEach(value=>{
value.school_address=value.school_address.replace('<br>','/')
})
console.log(list_req)
this.dataSource.data = list_req; this.dataSource.data = list_req;
} }
} }

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
import { Component, OnInit, ViewChild, ElementRef } from '@angular/core'; import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
import { ApiService } from 'app/shared/api.service'; import { ApiService } from 'app/shared/api.service';
import { FormGroup, FormBuilder, FormControl } from '@angular/forms'; import { FormGroup, FormBuilder, FormControl, Validators } from '@angular/forms';
import {animate, state, style, transition, trigger} from '@angular/animations'; import {animate, state, style, transition, trigger} from '@angular/animations';
import { MatTableDataSource, MatSnackBar, MatDialog } from '@angular/material'; import { MatTableDataSource, MatSnackBar, MatDialog } from '@angular/material';
import * as jspdf from 'jspdf'; import * as jspdf from 'jspdf';
@ -76,6 +76,7 @@ export class UserProfileComponent implements OnInit {
this.user_data.profile_share == '1' ? this.user_data.profile_share = true : this.user_data.profile_share=false this.user_data.profile_share == '1' ? this.user_data.profile_share = true : this.user_data.profile_share=false
this.user_data.notify_pref == '1' ? this.user_data.notify_pref = true : this.user_data.notify_pref=false this.user_data.notify_pref == '1' ? this.user_data.notify_pref = true : this.user_data.notify_pref=false
this.user_data.org_pan!= null && this.user_data.org_pan != '' ? this.slide2=true: false this.user_data.org_pan!= null && this.user_data.org_pan != '' ? this.slide2=true: false
this.user_data.org_pan!= null && this.user_data.org_pan != '' ? this.profile_form.controls['org_info']['controls'].org_pan.setValidators( Validators.compose([Validators.required,Validators.maxLength(10),Validators.minLength(10),Validators.pattern('[A-Z]{5}[0-9]{4}[A-Z]{1}')])) : this.profile_form.controls['org_info']['controls'].org_pan.clearValidators()
this.user_data.user_type == '2' ? this.slide1 =true : this.slide1=false this.user_data.user_type == '2' ? this.slide1 =true : this.slide1=false
this.profile_form.patchValue(this.user_data) this.profile_form.patchValue(this.user_data)
this.profile_form.controls['org_info'].patchValue(this.user_data); this.profile_form.controls['org_info'].patchValue(this.user_data);
@ -210,7 +211,10 @@ export class UserProfileComponent implements OnInit {
} }
csrUserRegistration() csrUserRegistration()
{ {
if(this.profile_form.invalid){
alert("Please Fill All the Fields")
return
}
// this.go_reg.removeControl('confirm_password') // this.go_reg.removeControl('confirm_password')
// this.go_reg.removeControl('cofirm_email') // this.go_reg.removeControl('cofirm_email')
// console.log(this.go_reg.value);return false; // console.log(this.go_reg.value);return false;

View File

@ -28,6 +28,7 @@
</div> --> </div> -->
<slideshow class="image" [height]="height" <slideshow class="image" [height]="height"
[autoPlay]="true" [autoPlay]="true"
autoPlayInterval="9000"
[showArrows]="true" [showArrows]="true"
arrowSize="20px" arrowSize="20px"
[imageUrls]="imageSources" [imageUrls]="imageSources"
@ -65,7 +66,7 @@ showCaptions="true"
</div> </div>
</div> </div>
<div fxLayout="column"> <div fxLayout="column">
<h5 >Requirements<br/><small style="font-size:12px;">of the listed </small></h5> <h5 >Support Required<br/><small style="font-size:12px;">at</small></h5>
<hr style="border-top:2px solid rgb(81, 202, 202) !important;width:190px !important;"> <hr style="border-top:2px solid rgb(81, 202, 202) !important;width:190px !important;">
<div fxLayout="column" class="text-center mt-2 mb-1"> <div fxLayout="column" class="text-center mt-2 mb-1">
@ -77,7 +78,7 @@ showCaptions="true"
<!-- <div fxLayout="row" class="text-center mt-1 mb-1"> --> <!-- <div fxLayout="row" class="text-center mt-1 mb-1"> -->
<div fxFlex="100"> <div fxFlex="100">
<h2 class="mt-0 logo_one" style="color: #a978e0 !important;"><span>{{support_and_req.students_tot_count}}</span></h2> <h2 class="mt-0 logo_one" style="color: #a978e0 !important;"><span>{{support_and_req.students_tot_count}}</span></h2>
<p>Student lives impacted</p> <p>Students get benefited</p>
</div> </div>
</div> </div>
</div> </div>

View File

@ -694,9 +694,11 @@ hr{
height: auto; height: auto;
transition: .5s ease; transition: .5s ease;
backface-visibility: hidden; backface-visibility: hidden;
box-shadow: 10px 10px 60px 0 rgba(0,0,0,.75) !important; box-shadow: 10px 10px 60px 0 rgba(0,0,0,.75) !important;
} }
.middle { .middle {
transition: .5s ease; transition: .5s ease;
opacity: 0; opacity: 0;

View File

@ -55,11 +55,11 @@ export class DashboardComponent {
width:string="300px;" width:string="300px;"
imageSources=[{ imageSources=[{
// url:'https://cdn.vox-cdn.com/uploads/chorus_image/image/56748793/dbohn_170625_1801_0018.0.0.jpg', // url:'https://cdn.vox-cdn.com/uploads/chorus_image/image/56748793/dbohn_170625_1801_0018.0.0.jpg',
url:'assets/images/csr-img/s1m.jpg', url:'assets/images/csr-img/s6.jpg',
// caption:'First' // caption:'First'
}, },
{ {
url:'assets/images/csr-img/s6m.jpg' url:'assets/images/csr-img/s1m.jpg'
}, },
{ {
// url:'https://cdn.vox-cdn.com/uploads/chorus_asset/file/9278671/jbareham_170917_2000_0124.jpg', // url:'https://cdn.vox-cdn.com/uploads/chorus_asset/file/9278671/jbareham_170917_2000_0124.jpg',

View File

@ -17,6 +17,8 @@ import { ProjectListComponent } from 'app/components/project-list/project-list.c
import { ProjectDetailComponent } from 'app/components/project-detail/project-detail.component'; import { ProjectDetailComponent } from 'app/components/project-detail/project-detail.component';
import {FooterComponent} from 'app/components/footer/footer.component' import {FooterComponent} from 'app/components/footer/footer.component'
import { SlickCarouselModule } from 'ngx-slick-carousel'; import { SlickCarouselModule } from 'ngx-slick-carousel';
import { OnlyNumberDirective } from 'app/directives/only-number.directive';
import { DirectivesModuleModule } from 'app/directives/directives-module/directives-module.module';
@NgModule({ @NgModule({
@ -46,7 +48,7 @@ import { SlickCarouselModule } from 'ngx-slick-carousel';
MatButtonToggleModule, MatButtonToggleModule,
MatTabsModule, MatTabsModule,
MatPaginatorModule, MatPaginatorModule,
DirectivesModuleModule
], ],
declarations: [ DashboardComponent,ProjectListComponent,ProjectDetailComponent ] declarations: [ DashboardComponent,ProjectListComponent,ProjectDetailComponent ]
}) })

View File

@ -0,0 +1,14 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { OnlyNumberDirective } from '../only-number.directive';
@NgModule({
declarations: [OnlyNumberDirective],
exports: [
OnlyNumberDirective,
]
})
export class DirectivesModuleModule { }

View File

@ -0,0 +1,8 @@
import { OnlyNumberDirective } from './only-number.directive';
describe('OnlyNumberDirective', () => {
it('should create an instance', () => {
const directive = new OnlyNumberDirective();
expect(directive).toBeTruthy();
});
});

View File

@ -0,0 +1,32 @@
import { Directive, Input, HostListener } from '@angular/core';
@Directive({
selector: '[OnlyNumber]'
})
export class OnlyNumberDirective {
constructor() { }
@Input() OnlyNumber: boolean;
@HostListener('keydown', ['$event']) onKeyDown(event) {
let e = <KeyboardEvent> event;
if (this.OnlyNumber) {
if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||
// Allow: Ctrl+A
(e.keyCode == 65 && e.ctrlKey === true) ||
// Allow: Ctrl+C
(e.keyCode == 67 && e.ctrlKey === true) ||
// Allow: Ctrl+X
(e.keyCode == 88 && e.ctrlKey === true) ||
// Allow: home, end, left, right
(e.keyCode >= 35 && e.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
// Ensure that it is a number and stop the keypress
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault();
}
}
}
}

View File

@ -113,8 +113,8 @@
</div> </div>
</div> </div>
</div> --> </div> -->
<div fxFlex.sm="100" fxFlex.xs="100" fxFlex.md="99.33" fxFlex.lg="63.33" fxFlex.xl="53.33" fxFlex="100" fxLayoutAlign="right"> <div fxFlex.sm="100" fxFlex.xs="100" fxFlex.md="99.33" fxFlex.lg="100" fxFlex.xl="53.33" fxFlex="100" fxLayoutAlign="flex-end">
<div class="horizontal-menu" style="text-align: right;margin-left: 40px;position: relative;left:14%;"> <div class="horizontal-menu" style="text-align: right;">
<nav> <nav>
<ul class="main-h-list" style="font-size: 18px;font-weight: bold"> <ul class="main-h-list" style="font-size: 18px;font-weight: bold">
<li *ngFor="let menuitem of horizontalMenuItems.getAll()" class="vertical_nav"> <li *ngFor="let menuitem of horizontalMenuItems.getAll()" class="vertical_nav">

View File

@ -55,6 +55,7 @@ export class ApiService {
}); });
} }
//GET //GET
get(url) get(url)
{ {
@ -178,6 +179,14 @@ export class ApiService {
return this.http.get(apiUrl+'csrDashboardContent').pipe return this.http.get(apiUrl+'csrDashboardContent').pipe
(catchError(err=>this.handleError(err))) (catchError(err=>this.handleError(err)))
} }
checkExistCredentials(data){
return this.http.post(apiUrl+'checkExistCredentials',data).pipe
(catchError(err=>this.handleError(err)))
}
forgetPwd(data){
return this.http.post(apiUrl+'forgetPwd',data).pipe(
catchError(err=>this.handleError(err))
)
}
} }

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 916 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 416 KiB

View File

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@ -5,12 +5,12 @@
<!-- <head> --> <!-- <head> -->
<meta property="og:description" content="Alone we can do so little, <meta property="og:description" content="Alone we can do so little,
together we can do so much " /> together we can do so much " />
<meta property="og:image" content="https://contribute.tnschools.gov.in/certificate.jpg" /> <meta property="og:image" content="https://contribute.tnschools.gov.in/csr/assets/certificate.jpg" />
<!-- </head> --> <!-- </head> -->
<base href="./"> <base href="./">
<meta property="og:image" content="certificate.jpg" /> <!-- <meta property="og:image" content="certificate.jpg" /> -->
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">