Commit 2369c8bf78616d543fbdfb11dd90aaeaa3bca5bf

Authored by Marcelo Puebla
Exists in develop

Merge branch 'develop' into 'develop'

Develop

See merge request !150
src/app/shared/header-publicidad/header-publicidad.component.ts
1 import { Component, OnInit, TemplateRef } from '@angular/core'; 1 import { Component, OnInit, TemplateRef } from '@angular/core';
2 import { APP_SETTINGS } from 'src/etc/AppSettings'; 2 import { APP_SETTINGS } from 'src/etc/AppSettings';
3 import { IPublicidad } from 'src/app/interfaces/IPublicidad'; 3 import { IPublicidad } from 'src/app/interfaces/IPublicidad';
4 import { PublicidadService } from 'src/app/services/publicidad/publicidad.service'; 4 import { PublicidadService } from 'src/app/services/publicidad/publicidad.service';
5 import { IArticulo } from 'src/app/interfaces/IArticulo'; 5 import { IArticulo } from 'src/app/interfaces/IArticulo';
6 import { PromocionComponent } from '../promocion/promocion.component'; 6 import { PromocionComponent } from '../promocion/promocion.component';
7 import { BsModalService, BsModalRef } from 'ngx-bootstrap/modal'; 7 import { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';
8 import { ArticuloService } from 'src/app/services/articulo/articulo.service'; 8 import { ArticuloService } from 'src/app/services/articulo/articulo.service';
9 import { ConfirmacionComponent } from '../confirmacion/confirmacion.component'; 9 import { ConfirmacionComponent } from '../confirmacion/confirmacion.component';
10 import { SinonimoService } from 'src/app/services/sinonimo/sinonimo.service'; 10 import { SinonimoService } from 'src/app/services/sinonimo/sinonimo.service';
11 import { ISinonimo } from 'src/app/interfaces/ISinonimo'; 11 import { ISinonimo } from 'src/app/interfaces/ISinonimo';
12 import { SinonimoComponent } from '../sinonimo/sinonimo.component'; 12 import { SinonimoComponent } from '../sinonimo/sinonimo.component';
13 import * as _ from 'lodash'; 13 import * as _ from 'lodash';
14 import { NoStockComponent } from 'src/app/modules/seleccion-articulos/no-stock/no-stock.component';
14 15
15 @Component({ 16 @Component({
16 selector: 'app-header-publicidad', 17 selector: 'app-header-publicidad',
17 templateUrl: './header-publicidad.component.html', 18 templateUrl: './header-publicidad.component.html',
18 styleUrls: ['./header-publicidad.component.scss'] 19 styleUrls: ['./header-publicidad.component.scss']
19 }) 20 })
20 export class HeaderPublicidadComponent implements OnInit { 21 export class HeaderPublicidadComponent implements OnInit {
21 urlImagenes = `${APP_SETTINGS.apiImagenes}/imagenes/`; 22 urlImagenes = `${APP_SETTINGS.apiImagenes}/imagenes/`;
22 publicidades: IPublicidad[] = []; 23 publicidades: IPublicidad[] = [];
23 modalRef: BsModalRef; 24 modalRef: BsModalRef;
24 modalSinonimo: BsModalRef; 25 modalSinonimo: BsModalRef;
25 26
26 constructor( 27 constructor(
27 private publicidadService: PublicidadService, 28 private publicidadService: PublicidadService,
28 private articuloService: ArticuloService, 29 private articuloService: ArticuloService,
29 private modalService: BsModalService, 30 private modalService: BsModalService,
30 private sinonimoService: SinonimoService 31 private sinonimoService: SinonimoService
31 ) { } 32 ) { }
32 33
33 ngOnInit() { 34 ngOnInit() {
34 this.getPublicidades(); 35 this.getPublicidades();
35 this.mediaPantalla(); 36 this.mediaPantalla();
36 } 37 }
37 38
38 getPublicidades() { 39 getPublicidades() {
39 this.publicidadService.getAll() 40 this.publicidadService.getAll()
40 .subscribe((res: IPublicidad[]) => { 41 .subscribe((res: IPublicidad[]) => {
41 this.publicidades = res; 42 this.publicidades = res;
42 }, err => console.error(err)); 43 }, err => console.error(err));
43 } 44 }
44 45
45 elegirArticulo(publicidad: IPublicidad) { 46 elegirArticulo(publicidad: IPublicidad) {
46 if (publicidad.id_articulo) this.getByID(publicidad.id_articulo); 47 if (publicidad.id_articulo) this.getByID(publicidad.id_articulo);
47 } 48 }
48 49
49 getByID(id: number) { 50 getByID(id: number) {
50 this.articuloService.getById(id) 51 this.articuloService.getById(id)
51 .subscribe((res: IArticulo) => { 52 .subscribe((res: IArticulo) => {
52 if (res.FPP) { 53 if (res.ExiVta < 1) {
53 this.openModalPromos(res); 54 if (this.modalRef) return;
54 return; 55 this.modalRef = this.modalService.show(NoStockComponent, {
56 class: 'modal-dialog-centered',
57 backdrop: false,
58 ignoreBackdropClick: true,
59 });
60 this.modalRef.content.onClose
61 .subscribe(() => this.modalRef = null);
55 } else { 62 } else {
56 this.openModalConfirmacion(res); 63 if (res.FPP) {
57 return; 64 this.openModalPromos(res);
65 return;
66 } else {
67 this.openModalConfirmacion(res);
68 return;
69 }
58 } 70 }
59 }, err => console.error(err)); 71 }, err => console.error(err));
60 } 72 }
61 73
62 openModalPromos(articulo: IArticulo) { 74 openModalPromos(articulo: IArticulo) {
63 if (this.modalRef) return; 75 if (this.modalRef) return;
64 this.modalRef = this.modalService.show(PromocionComponent, 76 this.modalRef = this.modalService.show(PromocionComponent,
65 { 77 {
66 initialState: { 78 initialState: {
67 idArticulo: articulo.id 79 idArticulo: articulo.id
68 }, 80 },
69 class: 'modal-dialog-centered' 81 class: 'modal-dialog-centered'
70 }); 82 });
71 } 83 }
72 84
73 openModalConfirmacion(articulo: IArticulo) { 85 openModalConfirmacion(articulo: IArticulo) {
74 if (this.modalRef) return; 86 if (this.modalRef) return;
75 this.articuloService.setArticulosSinImagen([articulo]); 87 this.articuloService.setArticulosSinImagen([articulo]);
76 this.modalRef = this.modalService.show(ConfirmacionComponent, 88 this.modalRef = this.modalService.show(ConfirmacionComponent,
77 { 89 {
78 initialState: { 90 initialState: {
79 titleMessage: articulo.DET_LAR, 91 titleMessage: articulo.DET_LAR,
80 imagenPath: articulo.imagenes.length ? articulo.imagenes[0].imagen : 'assets/img/imagen-no-encontrada.jpg', 92 imagenPath: articulo.imagenes.length ? articulo.imagenes[0].imagen : 'assets/img/imagen-no-encontrada.jpg',
81 footerMessageFirst: `¿QUERÉS AGREGAR ESTE COMBO`, 93 footerMessageFirst: `¿QUERÉS AGREGAR ESTE COMBO`,
82 footerMessageSecond: `a tu carrito?`, 94 footerMessageSecond: `a tu carrito?`,
83 footerConfirmation: articulo.PreVen 95 footerConfirmation: articulo.PreVen
84 }, 96 },
85 ignoreBackdropClick: true, 97 ignoreBackdropClick: true,
86 class: 'modal-dialog-centered' 98 class: 'modal-dialog-centered'
87 }); 99 });
88 this.modalRef.content.onClose.subscribe((resClose) => { 100 this.modalRef.content.onClose.subscribe((resClose) => {
89 this.modalRef = null; 101 this.modalRef = null;
90 if (!resClose) return; 102 if (!resClose) return;
91 this.sinonimoService.getSinonimos(articulo.CodSec, articulo.CodArt) 103 this.sinonimoService.getSinonimos(articulo.CodSec, articulo.CodArt)
92 .subscribe((res: ISinonimo[]) => { 104 .subscribe((res: ISinonimo[]) => {
93 if (res.length) { 105 if (res.length) {
94 const sinonimos = []; 106 const sinonimos = [];
95 const gruposArticulos = _.groupBy(res[0].productos, 'ID_SIN'); 107 const gruposArticulos = _.groupBy(res[0].productos, 'ID_SIN');
96 Object.keys(gruposArticulos).forEach((key, i) => { 108 Object.keys(gruposArticulos).forEach((key, i) => {
97 sinonimos.push({ productos: gruposArticulos[key], }); 109 sinonimos.push({ productos: gruposArticulos[key], });
98 for (const a of articulo.productos) { 110 for (const a of articulo.productos) {
99 if (key === a.idSinonimo.toString()) { 111 if (key === a.idSinonimo.toString()) {
100 sinonimos[i].cantidad = sinonimos[i].cantidadRestante = a.cantidad; 112 sinonimos[i].cantidad = sinonimos[i].cantidadRestante = a.cantidad;
101 continue; 113 continue;
102 } 114 }
103 } 115 }
104 }); 116 });
105 res = sinonimos; 117 res = sinonimos;
106 this.openModalSinonimos(res, articulo); 118 this.openModalSinonimos(res, articulo);
107 } else { 119 } else {
108 articulo.cantidad = 1; 120 articulo.cantidad = 1;
109 this.articuloService.setArticulo(articulo); 121 this.articuloService.setArticulo(articulo);
110 } 122 }
111 }, err => console.error(err)); 123 }, err => console.error(err));
112 }); 124 });
113 this.mediaPantalla(); 125 this.mediaPantalla();
114 } 126 }
115 127
116 openModalSinonimos(sinonimosData: ISinonimo[], articulo: IArticulo) { 128 openModalSinonimos(sinonimosData: ISinonimo[], articulo: IArticulo) {
117 if (this.modalSinonimo) return; 129 if (this.modalSinonimo) return;
118 this.modalSinonimo = this.modalService.show(SinonimoComponent, { 130 this.modalSinonimo = this.modalService.show(SinonimoComponent, {
119 initialState: { 131 initialState: {
120 sinonimos: sinonimosData, 132 sinonimos: sinonimosData,
121 articulo 133 articulo
122 }, 134 },
123 class: 'modal-dialog-centered' 135 class: 'modal-dialog-centered'
124 }); 136 });
125 this.modalSinonimo.content.onClose 137 this.modalSinonimo.content.onClose
126 .subscribe((res: any) => { 138 .subscribe((res: any) => {
127 this.modalSinonimo = null; 139 this.modalSinonimo = null;
128 if (!res) return; 140 if (!res) return;
129 articulo.productos = res.articulos; 141 articulo.productos = res.articulos;
130 this.articuloService.setArticulo(articulo); 142 this.articuloService.setArticulo(articulo);
131 }); 143 });
132 } 144 }
133 145
134 mediaPantalla() { 146 mediaPantalla() {
135 if ($('body').hasClass('media-pantalla')) { 147 if ($('body').hasClass('media-pantalla')) {
136 $('#headerPublicidad,#headerPad').addClass('media-pantalla'); 148 $('#headerPublicidad,#headerPad').addClass('media-pantalla');
137 } 149 }
138 } 150 }
139 } 151 }
140 152