farzinmonsef / tk1

0 stars 0 forks source link

all files #2

Open farzinmonsef opened 4 years ago

farzinmonsef commented 4 years ago

All files

farzinmonsef commented 4 years ago

.angulardoc.json .editorconfig .gitignore \angular.json \browserslist \Dir1.txt \filenames.vbs \Jenkinsfile \karma.conf.js \package-lock.json \package-lock.json.2204078569 \package.json \README.md \ssh.exe.stackdump \tsconfig.app.json \tsconfig.json \tsconfig.spec.json \tslint.json

\dist\LegalWeb\web.config

\e2e\protractor.conf.js \e2e\tsconfig.json

\e2e\src\app.e2e-spec.ts \e2e\src\app.po.ts

\src\index.html \src\main.ts \src\polyfills.ts \src\proxy.config.json \src\styles.css \src\test.ts \src\web.config

\src\app\app-routing.ts \src\app\app.component.css \src\app\app.component.html \src\app\app.component.spec.ts \src\app\app.component.ts \src\app\app.module.ts

\src\app\components\master\footer\footer.component.css \src\app\components\master\footer\footer.component.html \src\app\components\master\footer\footer.component.spec.ts \src\app\components\master\footer\footer.component.ts

\src\app\components\master\header\header.component.css \src\app\components\master\header\header.component.html \src\app\components\master\header\header.component.spec.ts \src\app\components\master\header\header.component.ts

\src\app\components\master\home\home.component.css \src\app\components\master\home\home.component.html \src\app\components\master\home\home.component.spec.ts \src\app\components\master\home\home.component.ts

\src\app\components\master\navbar\navbar.component.spec.ts \src\app\components\master\navbar\navbar.component.ts

\src\app\components\shared\app.config.service.ts \src\app\components\shared\requestObject.ts \src\app\components\shared\responseObject.ts

\src\app\components\survey\survey.module.ts

\src\app\components\survey\details\details.component.css \src\app\components\survey\details\details.component.html \src\app\components\survey\details\details.component.spec.ts \src\app\components\survey\details\details.component.ts \src\app\components\survey\details\details.service.spec.ts \src\app\components\survey\details\details.service.ts

\src\app\components\survey\details\model\AttributeNameEnum.ts \src\app\components\survey\details\model\detailsmodel.ts \src\app\components\survey\details\model\recognitions.ts \src\app\components\survey\details\model\StatusEnum.ts \src\app\components\survey\details\model\surveyDetail.ts

\src\app\components\survey\email\email.component.css \src\app\components\survey\email\email.component.html \src\app\components\survey\email\email.component.spec.ts \src\app\components\survey\email\email.component.ts \src\app\components\survey\email\email.service.ts

\src\app\components\survey\email\model\email.ts \src\app\components\survey\email\model\respondents.ts

\src\app\components\survey\list\surveylist.component.css \src\app\components\survey\list\surveylist.component.html \src\app\components\survey\list\surveylist.component.spec.ts \src\app\components\survey\list\surveylist.component.ts \src\app\components\survey\list\surveylist.service.ts

\src\app\components\survey\list\models\SurveyInformation.ts

\src\app\components\survey\preview\preview.component.css \src\app\components\survey\preview\preview.component.html \src\app\components\survey\preview\preview.component.spec.ts \src\app\components\survey\preview\preview.component.ts

\src\app\components\survey\questions\questions.component.css \src\app\components\survey\questions\questions.component.html \src\app\components\survey\questions\questions.component.spec.ts \src\app\components\survey\questions\questions.component.ts \src\app\components\survey\questions\questions.service.ts

\src\app\components\survey\questions\model\masterquestionapi.ts \src\app\components\survey\questions\model\questionapi.ts \src\app\components\survey\questions\model\questions.ts

\src\app\components\survey\respondent-tracking\respondent-tracking.component.css \src\app\components\survey\respondent-tracking\respondent-tracking.component.html \src\app\components\survey\respondent-tracking\respondent-tracking.component.spec.ts \src\app\components\survey\respondent-tracking\respondent-tracking.component.ts \src\app\components\survey\respondent-tracking\respondent-tracking.service.spec.ts \src\app\components\survey\respondent-tracking\respondent-tracking.service.ts

\src\app\components\survey\respondent-tracking\enum\SurveyActions.ts

\src\app\components\survey\respondent-tracking\model\recipient-reminder.ts \src\app\components\survey\respondent-tracking\model\SurveyRecipientInformation.ts \src\app\components\survey\respondent-tracking\model\SurveyRecipientUpdateStatus.ts

\src\app\components\survey\stepper\stepper.component.css \src\app\components\survey\stepper\stepper.component.html \src\app\components\survey\stepper\stepper.component.spec.ts \src\app\components\survey\stepper\stepper.component.ts \src\app\components\survey\stepper\stepper.service.ts

\src\app\components\surveyrespondent\surveyrespondent.component.css \src\app\components\surveyrespondent\surveyrespondent.component.html \src\app\components\surveyrespondent\surveyrespondent.component.spec.ts \src\app\components\surveyrespondent\surveyrespondent.component.ts \src\app\components\surveyrespondent\surveyrespondent.service.spec.ts \src\app\components\surveyrespondent\surveyrespondent.service.ts

\src\app\components\surveyrespondent\models\attribute-name.spec.ts \src\app\components\surveyrespondent\models\attribute-name.ts \src\app\components\surveyrespondent\models\question.spec.ts \src\app\components\surveyrespondent\models\question.ts \src\app\components\surveyrespondent\models\survey-attribute.ts \src\app\components\surveyrespondent\models\survey-master-question-answers.ts \src\app\components\surveyrespondent\models\survey-question-answer.spec.ts \src\app\components\surveyrespondent\models\survey-question-answer.ts \src\app\components\surveyrespondent\models\survey-question.spec.ts \src\app\components\surveyrespondent\models\survey-question.ts \src\app\components\surveyrespondent\models\survey-recipient.spec.ts \src\app\components\surveyrespondent\models\survey-recipient.ts \src\app\components\surveyrespondent\models\survey-recognition-question-answer.spec.ts \src\app\components\surveyrespondent\models\survey-recognition-question-answer.ts \src\app\components\surveyrespondent\models\survey-recognition.ts \src\app\components\surveyrespondent\models\survey.ts

\src\app\interceptors\credential.interceptor.ts \src\app\interceptors\httpError.interceptor.ts \src\app\interceptors\HttpLogging.Interceptor.ts

\src\assets.gitkeep

\src\assets\config\config.json

\src\assets\fonts\Connections-Bold.css \src\assets\fonts\Connections-Bold.eot \src\assets\fonts\Connections-Bold.html \src\assets\fonts\Connections-Bold.svg \src\assets\fonts\Connections-Bold.ttf \src\assets\fonts\Connections-Bold.woff \src\assets\fonts\Connections-BoldItalic.css \src\assets\fonts\Connections-BoldItalic.eot \src\assets\fonts\Connections-BoldItalic.html \src\assets\fonts\Connections-BoldItalic.svg \src\assets\fonts\Connections-BoldItalic.ttf \src\assets\fonts\Connections-BoldItalic.woff \src\assets\fonts\Connections-Italic.css \src\assets\fonts\Connections-Italic.eot \src\assets\fonts\Connections-Italic.html \src\assets\fonts\Connections-Italic.svg \src\assets\fonts\Connections-Italic.ttf \src\assets\fonts\Connections-Italic.woff \src\assets\fonts\Connections.css \src\assets\fonts\Connections.eot \src\assets\fonts\Connections.html \src\assets\fonts\Connections.svg \src\assets\fonts\Connections.ttf \src\assets\fonts\Connections.woff

\src\assets\images\backto_2x.png \src\assets\images\bigblue.png \src\assets\images\bofa-favicon.ico \src\assets\images\BofA-logo.svg \src\assets\images\export.png \src\assets\images\hallowblue.png \src\assets\images\icon_alert.svg \src\assets\images\icon_checkmark.svg \src\assets\images\icon_document.svg \src\assets\images\icon_share.svg \src\assets\images\icon_sign_edit.svg \src\assets\images\littleblue.png \src\assets\images\solidgrey.png

\src\assets\styles\bootstrap.min.css \src\assets\styles\kendo.custom.css \src\assets\styles\styles.css

\src\environments\environment.prod.ts \src\environments\environment.ts

farzinmonsef commented 4 years ago

\src\app\components\survey\email\email.component.html

farzinmonsef commented 4 years ago

email.component.ts

import { Component, OnInit } from '@angular/core'; import { FormGroup, FormBuilder, FormControl, Validators } from '@angular/forms'; import { EmailModel } from '../email/model/email'; import { RespondentsModel } from '../email/model/respondents'; import { EmailService } from '../email/email.service'; import { FileInfo, UploadEvent, RemoveEvent, FileRestrictions, SuccessEvent, SelectEvent } from '@progress/kendo-angular-upload'; import { AppConfig } from '../../shared/app.config.service'; import { DetailsService } from '../details/details.service'; import { ResponseObject } from '../../shared/responseObject'; import { GridDataResult, DataStateChangeEvent } from '@progress/kendo-angular-grid'; import { SortDescriptor, orderBy, process, State } from '@progress/kendo-data-query';

@Component({ selector: 'app-email', templateUrl: './email.component.html', styleUrls: ['./email.component.css'] })

export class EmailComponent implements OnInit { surveyId: any; createdEmailId: number; attachment: FileInfo; private webApiServerUrl: string; myFiles: Array = []; fileUploadCount = 0; uploadSaveUrl: string; uploadRemoveUrl: string; submitted: boolean = false;

respondentFiles: FileInfo; respondentslist: RespondentsModel[]; respondenthasfile: boolean = false; attachmenthasfile: boolean = false; respondentSaveUrl: string;

selectedTab: boolean = true; currentSurvey: number = 2; public respondentGridData: GridDataResult; emailDetail: EmailModel;

constructor(private formBuilder: FormBuilder, private detailsService: DetailsService, private emailService: EmailService, private appConfig: AppConfig) { this.webApiServerUrl = appConfig.webApiServerUrl; }

public sort: SortDescriptor[] = [{ field: 'Name', dir: 'asc' }];

public state: State = { skip: 0, filter: { logic: 'and', filters: [] } };

emailForm = new FormGroup({ Subject: new FormControl(''), Body: new FormControl(''), ContactInfo: new FormControl(''), myUpload: new FormControl('') });

public attachmentUploadRestrictions: FileRestrictions = { maxFileSize: 5242880, allowedExtensions: [".pdf"] };

public respondentRestrictions: FileRestrictions = { allowedExtensions: [".xls", ".xlsx"] };

public attachmentSelectEventHandler(e: SelectEvent): void { }

attachmentSuccessEventHandler(e: SuccessEvent) { if (e.operation === 'upload') { e.files.forEach((file) => this.myFiles.push(file)); } else if (e.operation === 'remove') { } this.attachmenthasfile = true; }

attachmentUploadEventHandler(e: UploadEvent) { e.data = { GuidValue: e.files[0].uid, SurveyId: this.surveyId }; }

attachmentRemoveEventHandler(e: RemoveEvent) { e.data = { GuidValue: e.files[0].uid, SurveyId: this.surveyId }; this.myFiles.pop(); }

respondentsuccessEventHandler(e: SuccessEvent) { if (e.operation == 'upload') { this.respondentslist = e.response.body.baseResponseList; this.respondentGridData = e.response.body.baseResponseList; this.respondenthasfile = true; } if (e.operation == 'remove') { } }

respondentuploadEventHandler(e: UploadEvent) { e.data = { GuidValue: e.files[0].uid, SurveyId: this.surveyId } }

backtodetails() { if (this.selectedTab == false) { this.selectedTab = true; } }

ngOnInit() { this.createdEmailId = 0; this.detailsService.currentData.subscribe(data => this.surveyId = data); this.fileUploadCount = 0; this.uploadSaveUrl = this.webApiServerUrl + 'SurveyAttachment/SaveTemplate'; this.uploadRemoveUrl = this.webApiServerUrl + 'SurveyAttachment/RemoveTemplate'; this.respondentSaveUrl = this.webApiServerUrl + 'SurveyRecipients/' + this.surveyId + '/Post';

this.emailForm = this.formBuilder.group({
  Subject: ['', Validators.maxLength(255)],
  Body: ['', Validators.maxLength(4000)],
  ContactInfo: ['', Validators.maxLength(1000)]
});

if (this.surveyId > 0) {
  this.emailService.getEmailDetail(this.surveyId).subscribe(emailModel => {
    let lstEmail = emailModel.baseResponseList;
    this.createdEmailId = lstEmail[0].emailId;
    this.loadEmail(lstEmail);
  });

  this.emailService.getRespondents(this.surveyId).subscribe(respondents => {
    this.respondentslist = respondents.baseResponseList;
    this.loadRespondents();
  });

  this.emailService.getAttachments(this.surveyId).subscribe(attachments => {
    for (let dbFile of attachments.baseResponseList) {
      this.myFiles.push({ name: dbFile.fileName });
      this.attachmenthasfile = true;
    }
  });
}

}

private loadEmail(lstEmail: EmailModel[]): void { this.emailForm = this.formBuilder.group({ Subject: lstEmail[0].subject, Body: lstEmail[0].body, ContactInfo: lstEmail[0].contactInfo, }); }

public dataStateChange(state: DataStateChangeEvent): void { this.state = state; this.respondentGridData = process(this.respondentslist, this.state); }

public sortChange(sort: SortDescriptor[]): void { this.sort = sort; this.loadRespondents(); }

private loadRespondents(): void { this.respondentGridData = process(this.respondentslist, this.state); }

get form() { return this.emailForm.controls; }

onSubmit() { this.submitted = true; if (this.emailForm.invalid) { return false; } let email = new EmailModel(this.emailForm.value); email.SurveyId = this.surveyId; if (this.createdEmailId > 0) { email.emailId = this.createdEmailId; } this.emailService.SaveEmail(email).subscribe( (newSurvey: ResponseObject) => { var createdEmail: EmailModel[] = newSurvey.baseResponseList; this.createdEmailId = createdEmail[0].emailId; });

//let result = this.emailService.SaveEmail(email).subscribe();

} }

farzinmonsef commented 4 years ago

email.service.ts

import { Injectable } from '@angular/core'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { AppConfig } from '../../shared/app.config.service'; import { Observable, of } from 'rxjs'; import { EmailModel } from './model/email'; import { ResponseObject } from '../../shared/responseObject'; import { RequestObject } from '../../shared/requestObject'; import { RespondentsModel } from './model/respondents'; import { tap, catchError } from 'rxjs/operators'; import { FileInfo } from '@progress/kendo-angular-upload';

@Injectable({ providedIn: 'root' })

export class EmailService{ private webApiServerUrl: string;

constructor(private http: HttpClient, private appConfig: AppConfig) {
    this.webApiServerUrl = appConfig.webApiServerUrl;
  }

public SaveEmail(email: EmailModel): Observable<ResponseObject<EmailModel>> {
  let requestObject = this.createRequestObjectFromEmail(email);
  let apiEndpoint = `${this.webApiServerUrl}SurveyEmail`;
  return this.http.post<ResponseObject<EmailModel>>(apiEndpoint, requestObject);
}

private createRequestObjectFromEmail(email: EmailModel): RequestObject<EmailModel[]> {
  let emailArray = new Array<EmailModel>();
  emailArray.push(email);
  let request : RequestObject<EmailModel[]> =
  {
    baseItem: emailArray
  };
  return request;
}

getRespondents(surveyId: number): Observable<ResponseObject<RespondentsModel>> {
  const cmd = 'SurveyRecipient/' + surveyId;
  const result = this.http.get<ResponseObject<RespondentsModel>>(this.webApiServerUrl + cmd)
      .pipe(
          tap(
              response => console.log('respondents retrieved')),
          catchError(this.handleError<ResponseObject<RespondentsModel>>('getRespondents'))
      );
  return result;

}

getAttachments(surveyId: number): Observable<ResponseObject> { const cmd = 'SurveyAttachment/GetAttachmentsBySurveyId/' + surveyId; const result = this.http.get<ResponseObject>(this.webApiServerUrl + cmd) .pipe( tap( response => console.log('Attachments retrieved')), catchError(this.handleError<ResponseObject>('getAttachments')) ); return result; }

getEmailDetail(surveyId: number): Observable<ResponseObject> { const cmd = 'survey/' + surveyId + '/email'; const result = this.http.get<ResponseObject>(this.webApiServerUrl + cmd) .pipe( tap( response => console.log('EmailDetail retrieved')), catchError(this.handleError<ResponseObject>('getEmailDetail')) ); return result; }

private handleError(operation = 'operation', result?: T) { return (error: any): Observable => { console.error(error); return of(result as T); } } }

farzinmonsef commented 4 years ago

model\email.ts

export class EmailModel{ Subject: string = ''; Body: string = ''; ContactInfo: string = ''; SurveyId: number; emailId: number;

subject: string; body: string; contactInfo: string;

constructor(init?: Partial) { Object.assign(this, init); } }

farzinmonsef commented 4 years ago

respondents.ts

export class RespondentsModel{ personNumber: number; firstName: string = ''; lastNane: string = ''; email: string = ''; awarenessDate: string = ''; statusCode: string = ''; constructor(init?: Partial) { Object.assign(this, init); } }

farzinmonsef commented 4 years ago

email.component.css

.input-wide { width: 500px; }

.form-input-group { padding-bottom: 5px; }

.backtodetailsbutton{ float: right; padding: 10px; margin: 5px; }

.k-grid-header th.k-header{ background-color: #012169 !important; color: #ffffff !important; }

farzinmonsef commented 4 years ago

\src\app\components\shared\app.config.service.ts

import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { tap } from 'rxjs/operators';

@Injectable({ providedIn: 'root' }) export class AppConfig { private _webApiServerUrl: string; private _environment: string;

constructor(private http: HttpClient) { }

public get webApiServerUrl(): string { return this._webApiServerUrl; }

public get environment(): string { return this._environment; }

public loadEnviroment() { switch (this._environment) { case ('LOCAL'): this._webApiServerUrl = "http://localhost:49584/api/"; break; case ('DEV'): this._webApiServerUrl = "http://ah-1074742-001.sdi.corp.bankofamerica.com:8003/api/";

    break;
  case ('UAT'):
    this._webApiServerUrl = "tbd";
    break;
  case ('CIT'):
    this._webApiServerUrl = "tbd";
    break;
  case ('PROD'):
    this._webApiServerUrl = "tbd";
    break;
}

} public loadFromFile(filePath: string): Promise { var that = this;

return this.http.get<any>(filePath).pipe(tap(data => {
  that._environment = data.env.name;
  this.loadEnviroment();
})).toPromise();

}

}

farzinmonsef commented 4 years ago

\src\app\components\shared\requestObject.ts

export interface RequestObject { baseItem: T; }

farzinmonsef commented 4 years ago

\src\app\components\shared\responseObject.ts

export interface ResponseObject { baseResponseItem: T; baseResponseList: T[]; errorList: string[]; }