import { Component, OnInit, Input, ViewChild, ComponentFactoryResolver } from "@angular/core"; import { Router, ActivatedRoute } from "@angular/router"; import { InvestmentProposalForm } from "@app/models/investment-proposal-form"; import { FormInvestmentProposalService } from "@app/services/form-investment-proposal.service"; import { Instrument } from "@app/models/instrument"; import { InvestmentProposalWorkflowService } from "@app/services/investment-proposal-workflow.service"; import { InstrumentDirective } from "@app/components/investment-proposals/instrument/instrument.directive"; import { InstrumentComponent } from "@app/components/investment-proposals/instrument/instrument.component"; import { InstrumentsService } from "@app/services/instruments.service"; import Swal from "sweetalert2"; import { CatalogsService } from "@app/services/catalogs.service"; import { InvestmentsService } from "@app/services/investments.service"; @Component({ selector: "app-investment-proposal-detail", templateUrl: "./proposal-detail.component.html", styleUrls: ["./proposal-detail.component.scss"] }) export class InvestmentProposalDetailComponent implements OnInit { title = "Detalle de la propuesta de inversión"; @Input() ads: Instrument[]; @Input() formData: InvestmentProposalForm; @ViewChild(InstrumentDirective, { static: true }) adHost: InstrumentDirective; isFormValid: boolean = false; general: any; instrument: any; complement: any; final: any; workType: string; form: any; currentAdIndex = -1; interval: any; indexDynamicComponent: number; investmentProposalID: string; investmentExists; state; financials; base_types; countries; companies; rates; revenues; funds; instrumentTypes; markets; emitters; periodicities; format_incomes; payment_terms; operations; gInfo: any; gInstrument: any; gComplement: any; subject: any; investmentName: any; comment: any; justification: any; constructor( private router: Router, private formDataService: FormInvestmentProposalService, private componentFactoryResolver: ComponentFactoryResolver, private instrumentService: InvestmentProposalWorkflowService, private loadInstrumentsService: InstrumentsService, private catalogService: CatalogsService, private route: ActivatedRoute, private investmentService: InvestmentsService ) {} ngOnInit() { //this.formDataService this.ads = this.loadInstrumentsService.getInstruments(); this.route.params.subscribe(params => { this.investmentProposalID = params["id"]; }); if (this.investmentProposalID == undefined) this.investmentProposalID = this.route.snapshot.queryParamMap.get("id"); if (this.investmentProposalID != undefined) { this.investmentExists = true; this.investmentService .getProposalInvestment(this.investmentProposalID) .subscribe(res => { this.state = res["result"]["id_estado_inversion"]["codigo"]; this.gInfo = { asunto: res["result"]["asunto"], origenes_fondo: res["result"]["id_origen_fondo"] == null ? "" : res["result"]["id_origen_fondo"]["id_origen_fondo"], name: res["result"]["nombre_inversion"], //date: "", tipo_tasa: res["result"]["id_tipo_tasa"] || "", tipo_renta: res["result"]["id_tipo_renta"] == null ? "" : res["result"]["id_tipo_renta"]["id_tipo_renta"], periodicidad: res["result"]["id_periodicidad"] == null ? "" : res["result"]["id_periodicidad"]["id_periodicidad"], instrumentos: res["result"]["id_inversion_instrumento"]["id_tipo_instrumento"][ "codigo" ], base_anual: res["result"]["id_tipo_base"] == null ? "" : res["result"]["id_tipo_base"]["id_tipo_base"], casa: res["result"]["id_entidad"] == null ? "" : res["result"]["id_entidad"]["id_entidad_financiera"], formato_ingreso: res["result"]["id_formato_ingreso"] == null ? "" : res["result"]["id_formato_ingreso"]["id_formato_ingreso"] }; this.gInstrument = res["result"]["id_inversion_instrumento"]["instrumento"]; this.gInstrument["id_inversion_instrumento"] = res["result"]["id_inversion_instrumento"][ "id_inversion_instrumento" ]; this.gComplement = { tipo_mercado: res["result"]["id_tipo_mercado"] == null ? "" : res["result"]["id_tipo_mercado"]["id_tipo_mercado"], emisores: res["result"]["id_tipo_emisor"] == null ? "" : res["result"]["id_tipo_emisor"]["id_tipo_emisor"], empresa: res["result"]["id_empresa"] == null ? "" : res["result"]["id_empresa"]["id_empresa"], pais: res["result"]["id_pais"] == null ? "" : res["result"]["id_pais"]["id_pais"], plazo: res["result"]["id_plazo"] == null ? "" : res["result"]["id_plazo"]["id_plazo"], operaciones: res["result"]["id_tipo_operacion"] == null ? "" : res["result"]["id_tipo_operacion"]["id_tipo_operacion"], comentarios: res["result"]["comentario"], justificacion: res["result"]["justificacion"] }; this.formDataService.setGeneralInfo(this.gInfo); this.formDataService.setWork(this.gInstrument); this.formDataService.setComplementInfo(this.gComplement); this.general = this.formDataService.getGeneralInfo(); this.instrument = this.formDataService.getWork(); this.complement = this.formDataService.getComplementInfo(); this.formData = this.formDataService.getFormData(); this.formData.instrumentos; this.indexDynamicComponent = this.ads.findIndex( x => x.component.name == this.formData.instrumentos ); if (this.indexDynamicComponent >= 0) { this.loadComponent(); } else { console.log("No existe el componente"); } if (this.general != undefined) { this.subject = this.general.asunto; this.investmentName = this.general.name; this.comment = this.complement.comment; this.justification = this.complement.comment; this.catalogService.getFinancialEntities().subscribe(res => { this.financials = res.find( e => e.id_entidad_financiera == this.general.casa ); this.financials = this.financials != undefined ? this.financials.nombre : "-"; }); this.catalogService.getBaseTypes().subscribe(res => { this.base_types = res.find( e => e.id_tipo_base == this.general.base_anual ); this.base_types = this.base_types != undefined ? ` ${this.base_types.tipo_base} / ${this.base_types.tipo_base_dias}` : "-"; }); this.catalogService.getCountries().subscribe(res => { this.countries = res.find(e => e.id_pais == this.complement.pais); this.countries = this.countries != undefined ? this.countries.nombre : "-"; }); this.catalogService.getCompanies().subscribe(res => { this.companies = res.find( e => e.id_empresa == this.complement.empresa ); this.companies = this.companies != undefined ? this.companies.nombre : "-"; }); this.catalogService.getRateTypes().subscribe(res => { this.rates = res.find( e => e.id_tipo_tasa == this.general.tipo_tasa ); this.rates = this.rates != undefined ? this.rates.nombre : "-"; }); this.catalogService.getRevenueTypes().subscribe(res => { this.revenues = res.find( e => e.id_tipo_renta == this.general.tipo_renta ); this.revenues = this.revenues != undefined ? this.revenues.nombre : "-"; }); this.catalogService.getFundsOrigins().subscribe(res => { this.funds = res.find( e => e.id_origen_fondo == this.general.origenes_fondo ); this.funds = this.funds != undefined ? this.funds.nombre : "-"; }); this.catalogService.getInstrumentTypes().subscribe(res => { this.instrumentTypes = res.find( e => e.codigo == this.general.instrumentos ); this.instrumentTypes = this.instrumentTypes != undefined ? this.instrumentTypes.nombre : "-"; }); this.catalogService.getMarketTypes().subscribe(res => { this.markets = res.find( e => e.id_tipo_mercado == this.complement.tipo_mercado ); this.markets = this.markets != undefined ? this.markets.nombre : "-"; }); this.catalogService.getEmitterTypes().subscribe(res => { this.emitters = res.find( e => e.id_tipo_emisor == this.complement.emisores ); this.emitters = this.emitters != undefined ? this.emitters.nombre : "-"; }); this.catalogService.getPeriodicities().subscribe(res => { this.periodicities = res.find( e => e.id_periodicidad == this.general.periodicidad ); this.periodicities = this.periodicities != undefined ? this.periodicities.nombre : "-"; }); this.catalogService.getPaymentTerms().subscribe(res => { this.payment_terms = res.find( e => e.codigo == this.complement.calificadora_riesgo ); this.payment_terms = this.payment_terms != undefined ? this.payment_terms.nombre : "-"; }); this.catalogService.getOperationTypes().subscribe(res => { this.operations = res.find( e => e.codigo == this.complement.operaciones ); this.operations = this.operations != undefined ? this.operations.nombre : "-"; }); //getIncomeFormat this.catalogService.getIncomeFormat().subscribe(res => { this.format_incomes = res.find( e => e.id_formato_ingreso == this.general.formato_ingreso ); this.format_incomes = this.format_incomes != undefined ? this.format_incomes.nombre : "-"; }); } }); } else { this.investmentExists = false; } } loadComponent() { this.currentAdIndex = this.indexDynamicComponent % this.ads.length; const adItem = this.ads[this.currentAdIndex]; const componentFactory = this.componentFactoryResolver.resolveComponentFactory( adItem.component ); const viewContainerRef = this.adHost.viewContainerRef; viewContainerRef.clear(); const componentRef = viewContainerRef.createComponent(componentFactory); (componentRef.instance).data = adItem.data; (componentRef.instance).summary = true; } }