From cbc7e3fa2b8ad11880163d1763565dc40eaa9edf Mon Sep 17 00:00:00 2001 From: nikita Date: Thu, 18 Jan 2018 16:01:48 +0530 Subject: [PATCH] merged code from AIAAdminApi --- 400-SOURCECODE/Admin/src/app/components/SubscriptionPrice/subscriptionprice.component.html | 231 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 400-SOURCECODE/Admin/src/app/components/SubscriptionPrice/subscriptionprice.component.ts | 182 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 400-SOURCECODE/Admin/src/app/components/SubscriptionPrice/subscriptionprice.service.ts | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 492 insertions(+), 0 deletions(-) create mode 100644 400-SOURCECODE/Admin/src/app/components/SubscriptionPrice/subscriptionprice.component.html create mode 100644 400-SOURCECODE/Admin/src/app/components/SubscriptionPrice/subscriptionprice.component.ts create mode 100644 400-SOURCECODE/Admin/src/app/components/SubscriptionPrice/subscriptionprice.service.ts diff --git a/400-SOURCECODE/Admin/src/app/components/SubscriptionPrice/subscriptionprice.component.html b/400-SOURCECODE/Admin/src/app/components/SubscriptionPrice/subscriptionprice.component.html new file mode 100644 index 0000000..b27e17f --- /dev/null +++ b/400-SOURCECODE/Admin/src/app/components/SubscriptionPrice/subscriptionprice.component.html @@ -0,0 +1,231 @@ +
+ +
+

Subscription Price

+
+ + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+
+
+
+
+
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + +
SelectSubscription TypeDuration(in Month)PriceActive
+ + + + {{item.Title}}{{item.Duration}}{{item.Price | number : '1.2'}} + +
+
+
+ + +
+
+ + + +
+
+ +
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+ +
+ + + +
Subscription title is required
+
+
+ +
+ +
+ +
Subscription price is required
+
Subscription price must be numeric
+
+
+ +
+ +
+ +
Subscription duration is required
+
Subscription duration must be numeric
+
+
+ +
+ +
+ + +
+
+ +
+
+ + +
+
+ +
+ + + + + + + + + + +
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/400-SOURCECODE/Admin/src/app/components/SubscriptionPrice/subscriptionprice.component.ts b/400-SOURCECODE/Admin/src/app/components/SubscriptionPrice/subscriptionprice.component.ts new file mode 100644 index 0000000..5e75630 --- /dev/null +++ b/400-SOURCECODE/Admin/src/app/components/SubscriptionPrice/subscriptionprice.component.ts @@ -0,0 +1,182 @@ +import { Component, OnInit, AfterViewInit, Input, Output, EventEmitter, OnChanges, + SimpleChanges, TemplateRef, Pipe, PipeTransform } from '@angular/core'; +import { SubscriptionPriceService } from './subscriptionprice.service'; +import { Router } from '@angular/router'; +import { FormControl, FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { SubscriptionPriceModel } from '../UserEntity/datamodel'; +import { BsDatepickerModule } from 'ngx-bootstrap'; +import { Http, Response } from '@angular/http'; +import { DatePipe } from '@angular/common'; +import { ContenteditableModelDirective } from '../../shared/contenteditabledirective' +import { BsModalService } from 'ngx-bootstrap/modal'; +import { BsModalRef } from 'ngx-bootstrap/modal/bs-modal-ref.service'; +//import { Global } from '../../Shared/global'; +//import { DBOperation } from 'S'; +//import { Observable } from 'rxjs/Observable'; + +@Component({ + templateUrl: './subscriptionprice.component.html' +}) + +export class SubscriptionPrice implements OnInit { + +Mode: string = 'Search'; +subscriptionPrice: SubscriptionPriceModel; +subscriptionPrices: Array; +subscriptionPriceFrm: FormGroup; +insertSubscriptionPriceFrm: FormGroup; +checkedRecords: Array; +error: any; +alerts: string; +modalAlerts: string; +topPos: string = '2000px'; +datePipe: DatePipe = new DatePipe('en-US'); +selectedEditionId: number = 1; +divClass: string = ''; +modalRef: BsModalRef; + +constructor(private subscriptionPriceService: SubscriptionPriceService, private router: Router, private fb: FormBuilder, private modalService: BsModalService) { } + + ngOnInit(): void { + this.divClass = 'col-sm-12'; + this.subscriptionPrice = new SubscriptionPriceModel(); + this.alerts = ''; + this.subscriptionPriceFrm = this.fb.group({ + subscriptionPrices: this.fb.array([]) + }); + this.insertSubscriptionPriceFrm = this.fb.group({ + subscriptionPriceId: [''], + title: ['', Validators.required], + price: ['', [Validators.required, Validators.pattern('[0-9.]*')]], + duration: ['', [Validators.required, Validators.pattern('[0-9]*')]], + editionId: [''], + isActive: [false] + }); + this.SearchSubscriptionPrices(this.selectedEditionId); + } + + public SearchSubscriptionPrices(searchEditionId: number) { + this.selectedEditionId = searchEditionId; + this.subscriptionPriceService.GetSubscriptionPrices( + { + editionId: this.selectedEditionId, + }) + .subscribe(x => { this.BindFormFields(x) }, error => this.error = error); + } + + openModal(template: TemplateRef) { + if(this.checkedRecords.filter(C => C > 0).length == 0) return; + this.modalRef = this.modalService.show(template); + } + + onChange(Idx: number, Id: number, isChecked: boolean){ + if(isChecked){ + this.checkedRecords[Idx] = Id; + } + else{ + this.checkedRecords[Idx] = 0; + } + } + + AfterDeleteData(data, template) { + if (data.Status == "false") { + this.alerts = "Subscription prices delete unsuccessfull"; + } else { + this.modalAlerts = "

Subscription prices deleted successfully

"; + this.modalRef = this.modalService.show(template); + this.SearchSubscriptionPrices(this.selectedEditionId); + } + } + + AfterInsertData(data, template) { + if (data.Status == "false") { + this.alerts = "Subscription price save unsuccessfull"; + } else { + this.modalAlerts = "

Subscription price saved successfully

"; + this.modalRef = this.modalService.show(template); + } + } + + AfterUpdateData(data, template) { + if (data.Status == "false") { + this.alerts = "Subscription prices update unsuccessfull\n"; + } else { + this.modalAlerts = "

Subscription prices updated successfully

"; + this.modalRef = this.modalService.show(template); + } + } + + BindFormFields(data){ + this.subscriptionPrices = data; + this.checkedRecords = new Array(this.subscriptionPrices.length); + this.subscriptionPriceFrm.setControl('subscriptionPrices', this.fb.array(this.subscriptionPrices)); + } + + UpdateSubscriptionPrices(template: TemplateRef){ + console.log(this.subscriptionPriceFrm.value); + this.alerts = ''; + if(this.alerts == ''){ + var obj = this.subscriptionPriceFrm.controls['subscriptionPrices'].value; + this.subscriptionPriceService.UpdateSubscriptionPrices(obj).subscribe( + data => (this.AfterUpdateData(data, template)), + error => { + this.error = error; + this.alerts = "" + this.error + ""; + }); + } + } + + InsertSubscriptionPrice(template: TemplateRef){ + console.log(this.insertSubscriptionPriceFrm.value); + this.alerts = ''; + if(this.alerts == ''){ + var obj = this.insertSubscriptionPriceFrm.value; + return this.subscriptionPriceService.InsertSubscriptionPrice(obj) + .subscribe( + data => (this.AfterInsertData(data, template)), + error => { + this.error = error; + this.alerts = "" + this.error + ""; + }); + } + } + + DeleteSubscriptionPrices(template: TemplateRef){ + console.log(this.checkedRecords); + this.alerts = ''; + if(this.alerts == ''){ + var obj = this.checkedRecords.filter(C => C > 0); + return this.subscriptionPriceService.DeleteSubscriptionPrices(obj) + .subscribe( + data => (this.AfterDeleteData(data, template)), + error => { + this.error = error; + this.alerts = "" + this.error + ""; + }); + } + } + + AddSubscriptionPrice(){ + this.Mode = 'Add'; + this.topPos = '100px'; + this.divClass = 'col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3'; + this.insertSubscriptionPriceFrm.reset(); + this.alerts = ''; + this.insertSubscriptionPriceFrm.controls['subscriptionPriceId'].setValue(0); + this.insertSubscriptionPriceFrm.controls['title'].setValue(''); + this.insertSubscriptionPriceFrm.controls['price'].setValue(''); + this.insertSubscriptionPriceFrm.controls['duration'].setValue(''); + this.insertSubscriptionPriceFrm.controls['editionId'].setValue(this.selectedEditionId); + this.insertSubscriptionPriceFrm.controls['isActive'].setValue(false); + } + + CancelAdd(){ + this.Mode = 'Search'; + this.topPos = '2000px'; + this.divClass = 'col-sm-12'; + this.insertSubscriptionPriceFrm.reset(); + this.alerts = ''; + this.SearchSubscriptionPrices(this.selectedEditionId); + } + +} diff --git a/400-SOURCECODE/Admin/src/app/components/SubscriptionPrice/subscriptionprice.service.ts b/400-SOURCECODE/Admin/src/app/components/SubscriptionPrice/subscriptionprice.service.ts new file mode 100644 index 0000000..1ec813e --- /dev/null +++ b/400-SOURCECODE/Admin/src/app/components/SubscriptionPrice/subscriptionprice.service.ts @@ -0,0 +1,79 @@ +import { Injectable, Inject } from '@angular/core'; +//import { HttpClient, HttpParams, HttpRequest} from "@angular/common/http"; +import { Http, Response, Headers, RequestOptions, HttpModule } from '@angular/http'; +import 'rxjs/add/operator/map'; +import 'rxjs/add/operator/catch'; +import 'rxjs/add/observable/throw'; +import 'rxjs/add/operator/do'; +import { Observable } from 'rxjs/Observable'; +import { GlobalService } from '../../Shared/global'; + +@Injectable() +export class SubscriptionPriceService { + + constructor(private http: Http, private commonService: GlobalService ) { } + + + GetSubscriptionPrices(obj: any) { + return this.http.get(this.commonService.SubscriptionBaseUrl + "/GetSubscriptionPrices?editionId=" + + obj.editionId) + .map(this.extractData) + .catch((res: Response) => this.handleError(res)); + } + + InsertSubscriptionPrice(obj: any) { + //let options = new RequestOptions({ headers: this.headers }); + var jsonData = {'id': obj.subscriptionPriceId, 'title': obj.title, 'price': obj.price, 'duration': obj.duration, 'editionId': obj.editionId, 'isActive': obj.isActive }; + console.log(obj); + var headers = new Headers({ + 'Content-Type': 'application/json' + }); + return this.http.post(this.commonService.SubscriptionBaseUrl + "/InsertSubscriptionPrice", + JSON.stringify(jsonData), {headers: headers}) + .map(this.extractData) + .catch((res: Response) => this.handleError(res)); + } + + UpdateSubscriptionPrices(obj: any) { + //let options = new RequestOptions({ headers: this.headers }); + var jsonData = { obj }; + console.log(obj); + var headers = new Headers({ + 'Content-Type': 'application/json' + }); + return this.http.post(this.commonService.SubscriptionBaseUrl + "/UpdateSubscriptionPrices", + JSON.stringify(jsonData), {headers: headers}) + .map(this.extractData) + .catch((res: Response) => this.handleError(res)); + } + + DeleteSubscriptionPrices(obj: any) { + //let options = new RequestOptions({ headers: this.headers }); + var subscriptionPriceIds = obj; + console.log(subscriptionPriceIds); + var headers = new Headers({ + 'Content-Type': 'application/json' + }); + return this.http.post(this.commonService.SubscriptionBaseUrl + "/DeleteSubscriptionPrices", + subscriptionPriceIds, {headers: headers}) + .map(this.extractData) + .catch((res: Response) => this.handleError(res)); + } + + extractData(res: Response) { + //debugger; + let body = res.json(); + return body; + } + + handleError(error: any) { + // In a real world app, we might use a remote logging infrastructure + // We'd also dig deeper into the error to get a better message + let errMsg = (error.message) ? error.message : + error.status ? `${error.status} - ${error.statusText}` : 'Server error'; + console.error(errMsg); // log to console instead + return Observable.throw(errMsg); + } + + +} -- libgit2 0.21.4