expiringsubscriptionreport.component.ts 11.7 KB
import { Component, OnInit, AfterViewChecked, ViewChild,HostListener } from '@angular/core';
import { Router } from '@angular/router';
import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
//import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/Rx';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/filter';
import { ExpiringSubscriptionReports } from '../reports/reportdatamodel';
import { ReportService } from '../reports/report.service';
import { GlobalService } from '../../shared/global';
import { BsModalService } from 'ngx-bootstrap/modal';
import { BsModalRef } from 'ngx-bootstrap/modal/bs-modal-ref.service';
import { DatePipe } from '@angular/common';
import { BsDatepickerModule, BsDatepickerConfig   } from 'ngx-bootstrap';
import { Http, Response } from '@angular/http';
import { LoadingService } from '../../shared/loading.service';
import { PagerComponent } from '../../shared/pager/pager.component';
//import { Ng2SmartTableModule, LocalDataSource } from 'ng2-smart-table';

declare var $: any;

@Component({
    templateUrl: './expiringsubscriptionreport.component.html'
})

export class ExpiringSubscriptionReport implements OnInit, AfterViewChecked {
    public lstExpiringSubscriptionReport: any;
    public lstCountry: any;
    public lstState: any;
    public lstLicenceType: any;
    public lstAccountType: any;
    ExpiringSubscriptionReportForm: FormGroup;
    ExpiringSubscriptionReports: ExpiringSubscriptionReports[];
    numberOfExpiringSubscriptionReport: number;
    limit: number;
    page: number = 1;
    error;
    modalAlerts: string;
    divClass: string = '';
    topPos: string = '2000px';
    selectedRow: number = 0;
    datePipe: DatePipe = new DatePipe('en-US');
    bsValue1: Date = new Date();
    bsValue2: Date = new Date();
    selectedId: number = 0;
    modalRef: BsModalRef;
    date = new Date();
    previousdate = new Date();
    NoRecord: string;
    alerts: string;
    enableTextboxColor: boolean;
    bsConfig: Partial<BsDatepickerConfig>;
    ExportingStart: boolean;
    buttonStatus: boolean;
    @ViewChild(PagerComponent) pagerComponent: PagerComponent;
    recordCount: number;
    pageNo: number;
    pageLength: number;
    ExpiringSubscription = new ExpiringSubscriptionReports();
	actualPageNo: number;
    actualPageLength: number;
	SearchField:any={
		sFromDate:new Date(),
		sToDate:new Date(),
		iLicenseTypeId:0,
		iAccountTypeId:0,
		sZip:'',
		iStateId:0,	
        iCountryId:0,
        iStartPrice:0,
        iEndPrice:-1,		
		sortColumn:'AccountNumber', 
		sortOrder:'asc',
		pageNo:1,
		pageLength:10	  
    };
	
    // Declare height and width variables
    scrHeight:any;
    scrWidth:any;
    @HostListener('window:resize', ['$event'])
    getScreenSize(event?) {

     var $ua = navigator.userAgent;
     if (($ua.match(/(iPod|iPhone|iPad|android)/i))) {
       this.scrHeight = window.innerHeight-580;
     }
     else
     {
       this.scrHeight = window.innerHeight-480;
     }
	 if(this.scrHeight<=360) this.scrHeight=360;
	
     $(".ft_container").css("height",this.scrHeight);
    
    }
    constructor(private router: Router, private reportservice: ReportService,
      private fb: FormBuilder, private modalService: BsModalService,
      public global: GlobalService, private _loadingService: LoadingService) {this.getScreenSize(); }

    ngOnInit(): void {
      this.buttonStatus = false;
      this.ExportingStart = false;
      this.bsConfig = Object.assign({}, { containerClass: 'theme-dark-blue' });
      this.NoRecord = this.global.NoRecords;
        this.previousdate.setDate(this.previousdate.getDate());
        this.ExpiringSubscriptionReportForm = this.fb.group({
            sFromDate: [this.previousdate,[Validators.required]],
            sToDate: [this.date,[Validators.required]],
            sZip: [''],
            iLicenseTypeId: [0],
            iAccountTypeId: [0],
            iStateId: [0],
            iStartPrice: [''],
            iEndPrice: [''], 
            iCountryId: [0]
        });
        this.alerts = '';
        this.enableTextboxColor = true;
        this._loadingService.ShowLoading("global-loading");
        this.GetCountry();
        this.GetState();
        this.GetAccountType();
        this.GetLicenceType();
        this.pageNo = 1;
        this.pageLength = 10;
        this.pagerComponent = new PagerComponent();       
      
        $('#fixed_hdr2').fxdHdrCol({
            fixedCols: 0,
            width: "100%",
            height: this.scrHeight,
            colModal: [
                { width: 150, align: 'center' },
                { width: 180, align: 'center' },
                { width: 150, align: 'Center' },
                { width: 250, align: 'Center' },
                { width: 160, align: 'Center' },
                { width: 130, align: 'Center' },
                { width: 130, align: 'Center' },
                { width: 160, align: 'center' },
                { width: 160, align: 'Center' },
                { width: 150, align: 'center' },
                { width: 140, align: 'center' },
                
            ],
            sort: true
        });
        
        var thisObject=this;//class object
		$(".ft_rwrapper table thead tr th").on("click",function(event){  
				
		  if(event.currentTarget.id!=undefined && event.currentTarget.id!="" && event.currentTarget.id!=null)
		  {
			var fieldName=event.currentTarget.id;
			var sortType=''
			var isAscSort = $(".ft_rwrapper table thead tr #"+fieldName).hasClass('fx_sort_asc'); 
			$(".ft_rwrapper table thead tr th").removeClass('fx_sort_asc fx_sort_desc'); 
		  
			if (isAscSort) { 
			  $(".ft_rwrapper table thead tr #"+fieldName).addClass('fx_sort_desc').removeClass('fx_sort_asc'); 
			  sortType="desc";
			} else { 
			  $(".ft_rwrapper table thead tr #"+fieldName).addClass('fx_sort_asc').removeClass('fx_sort_desc'); 
			  sortType="asc";
			}
	  
			thisObject.SortTableRecords(fieldName,sortType);  

		  }
		 
		});
		
    }
	
  FromDateChange(dateValue: any){
	this.alerts = '';
		this.global.compareTwoDates(this.ExpiringSubscriptionReportForm.controls['sToDate'].value, dateValue._bsValue);
      if (this.global.ValidationMsg != '') {
        this.alerts = this.global.ValidationMsg;
      }		
  }
  
  ToDateChange(dateValue: any){
	this.alerts = '';	
	this.global.compareTwoDates(dateValue._bsValue, this.ExpiringSubscriptionReportForm.controls['sFromDate'].value);
	  if (this.global.ValidationMsg != '') {
		this.alerts = this.global.ValidationMsg;
	  }		
  }
	
  SortTableRecords(fieldName:string,sortType:string) {  
	this.SearchField.sortColumn=fieldName;
	this.SearchField.sortOrder=sortType;
	
	this.GetExpiringSubscriptionReportList();
   }
	
    ngAfterViewChecked() {
      $('#fixed_hdr2 thead').css('width', $('#fixed_hdr2 tbody tr:eq(0)').width());
    }

    GetCountry() {
        this.reportservice.GetCountry().subscribe(y => { this.lstCountry = y; }, error => this.error = <any>error);
    }

    GetState() {
        this.reportservice.GetState().subscribe(st => { this.lstState = st; }, error => this.error = <any>error);
    }
    GetLicenceType() {
        this.reportservice.GetLicenceType().subscribe(st => { this.lstLicenceType = st; }, error => this.error = <any>error);
    }

    GetAccountType() {
        this.reportservice.GetAccountType().subscribe(st => { this.lstAccountType = st; }, error => this.error = <any>error);
    }

    GetExpiringSubscriptionReport(evt: any) {
	  this.actualPageNo = this.pageNo;
      this.actualPageLength =this.pageLength;	
	  
	  var tempArr = evt.split(',');     
	  this.pageNo = parseInt(tempArr[0]);
      this.pageLength = parseInt(tempArr[1]);
      
	  this.SearchField.pageNo=this.pageNo;
	  this.SearchField.pageLength=this.pageLength;
		
	  this.GetExpiringSubscriptionReportList();   
    }
	
	GetExpiringSubscriptionReportList() {
       this._loadingService.ShowLoading("global-loading");
	   $(".ft_rwrapper table thead tr th").removeClass('fx_sort_asc fx_sort_desc'); 
	  
		if (this.SearchField.sortOrder=='asc') { 
		  $(".ft_rwrapper table thead tr #"+this.SearchField.sortColumn).addClass('fx_sort_asc').removeClass('fx_sort_desc');
		} else 
		{ 
		  $(".ft_rwrapper table thead tr #"+this.SearchField.sortColumn).addClass('fx_sort_desc').removeClass('fx_sort_asc'); 
		}
	  if (this.ExportingStart) {
        this.reportservice.GetExpiringSubscriptionReport(this.SearchField).subscribe((ExpiringSubscriptionReports: ExpiringSubscriptionReports[]) => {
        //reset length after csvexport
        this.pageNo = this.actualPageNo;
		this.pageLength=this.actualPageLength;
			
		this.SearchField.pageNo=this.pageNo;
	    this.SearchField.pageLength=this.pageLength;
        this.ExportService(ExpiringSubscriptionReports); }, error => this.error = <any>error);      
      }
      else {
        this.reportservice.GetExpiringSubscriptionReport(this.SearchField).subscribe((ExpiringSubscriptionReports: ExpiringSubscriptionReports[]) => { this.BindFormFields(ExpiringSubscriptionReports); }, error => this.error = <any>error);
      }
        
      this.ExportingStart = false;
   }

    
	SearchRecords() {
      this.ExportingStart = false;
	  this.pageNo=1;
	  this.SearchField.sFromDate=this.ExpiringSubscriptionReportForm.controls['sFromDate'].value;
	  this.SearchField.sToDate=this.ExpiringSubscriptionReportForm.controls['sToDate'].value;
	  this.SearchField.iLicenseTypeId=this.ExpiringSubscriptionReportForm.controls['iLicenseTypeId'].value;
	  this.SearchField.iAccountTypeId=this.ExpiringSubscriptionReportForm.controls['iAccountTypeId'].value;
	  this.SearchField.sZip=this.ExpiringSubscriptionReportForm.controls['sZip'].value;
	  this.SearchField.iStateId=this.ExpiringSubscriptionReportForm.controls['iStateId'].value;
	  this.SearchField.iCountryId=this.ExpiringSubscriptionReportForm.controls['iCountryId'].value;
	  this.SearchField.iStartPrice=this.ExpiringSubscriptionReportForm.controls['iStartPrice'].value;
	  this.SearchField.iEndPrice=this.ExpiringSubscriptionReportForm.controls['iEndPrice'].value;
	
	  this.SearchField.pageNo=this.pageNo;
	  
	  this.GetExpiringSubscriptionReportList();
	  
    }
	
    ExportEvent() {
      if (this.buttonStatus) {
        this.ExportingStart = true;
        this.GetExpiringSubscriptionReport('1, ' + this.recordCount);       
      }
    }
    ExportService(data: any) {
		for (let i = 0; i < data.ExpiringSubscription.length; i++) {
		data.ExpiringSubscription[i]['StartDate']= this.datePipe.transform(data.ExpiringSubscription[i]['StartDate'], 'MM/dd/yyyy');
		data.ExpiringSubscription[i]['EndDate']= this.datePipe.transform(data.ExpiringSubscription[i]['EndDate'], 'MM/dd/yyyy');
		data.ExpiringSubscription[i]['LicenseCreationDate']= this.datePipe.transform(data.ExpiringSubscription[i]['LicenseCreationDate'], 'MM/dd/yyyy');
	   }
	 
	  var reportname=+ this.date.getDay() + "-" + (this.date.getMonth()+1) + "-" + this.date.getSeconds()  
      this.global.ExportToCSV(data.ExpiringSubscription, "ExpiringSubscriptionReport-"+reportname);
      
      this._loadingService.HideLoading("global-loading");
	
    }
    
    BindFormFields(datas) {
      this.recordCount = datas.RecordCount;
      this.lstExpiringSubscriptionReport = datas.ExpiringSubscription;
      
      this.numberOfExpiringSubscriptionReport = this.lstExpiringSubscriptionReport.length; this.limit = this.lstExpiringSubscriptionReport.length;
      if (this.lstExpiringSubscriptionReport.length > 0) {
        this.NoRecord = '';
        this.buttonStatus = true;
      }
      if (this.lstExpiringSubscriptionReport.length == 0) {
        this.NoRecord = this.global.NoRecords;     
        this.buttonStatus = false;
      }
      this._loadingService.HideLoading("global-loading");
    }
}