From 282e37b43f4f5e2f8a2f4b71fb611326d45608fb Mon Sep 17 00:00:00 2001 From: Marcelo Puebla Date: Mon, 20 Jan 2020 19:30:09 -0300 Subject: [PATCH] Agregado publicidades y promociones --- src/app/interfaces/IPublicidad.ts | 2 + src/app/modules/admin/admin.component.ts | 7 +- src/app/modules/carrito/carrito.component.ts | 10 ++- .../seleccion-articulos.component.html | 56 +------------ .../seleccion-articulos.component.ts | 49 ++++++----- src/app/services/publicidad/publicidad.service.ts | 4 +- .../header-publicidad.component.html | 3 +- .../header-publicidad.component.ts | 34 ++++++++ src/app/shared/promocion/promocion.component.html | 96 ++++++++++------------ src/app/shared/promocion/promocion.component.ts | 36 +++++++- src/scss/height-width.scss | 8 ++ src/scss/styles-bootstrap.scss | 14 +--- tslint.json | 10 +++ 13 files changed, 173 insertions(+), 156 deletions(-) diff --git a/src/app/interfaces/IPublicidad.ts b/src/app/interfaces/IPublicidad.ts index 7acafc4..59ce4a3 100644 --- a/src/app/interfaces/IPublicidad.ts +++ b/src/app/interfaces/IPublicidad.ts @@ -6,6 +6,7 @@ export interface IPublicidad { DET_LAR?: string; id?: number; base64?: any; + id_articulo?: number; } export class Publicidad { @@ -16,6 +17,7 @@ export class Publicidad { DET_LAR?: string; id?: number; base64?: any; + id_articulo?: number; constructor(publicidad?: Partial) { if (publicidad) { diff --git a/src/app/modules/admin/admin.component.ts b/src/app/modules/admin/admin.component.ts index add19c4..7ad2215 100644 --- a/src/app/modules/admin/admin.component.ts +++ b/src/app/modules/admin/admin.component.ts @@ -1,6 +1,5 @@ import { Component, OnInit, HostListener } from '@angular/core'; import { Router } from '@angular/router'; -import { BsModalRef } from 'ngx-bootstrap/modal'; @Component({ selector: 'app-admin', @@ -13,9 +12,8 @@ export class AdminComponent implements OnInit { constructor( private router: Router, - // private modalRef: BsModalRef - ) { } - + ) { } + ngOnInit() { this.startTimeOutInactividad(); } @@ -35,7 +33,6 @@ export class AdminComponent implements OnInit { startTimeOutInactividad() { this.timerReposo = setTimeout(() => { - // this.modalRef.hide(); this.router.navigate(['cancelar-compra']); }, 90000); } diff --git a/src/app/modules/carrito/carrito.component.ts b/src/app/modules/carrito/carrito.component.ts index 5a766cb..aef1e01 100644 --- a/src/app/modules/carrito/carrito.component.ts +++ b/src/app/modules/carrito/carrito.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, OnDestroy } from '@angular/core'; import { Location } from '@angular/common'; import { ArticuloService } from 'src/app/services/articulo/articulo.service'; import { APP_SETTINGS } from 'src/etc/AppSettings'; import { trigger, state, style, transition, animate } from '@angular/animations'; import { IArticulo } from 'src/app/interfaces/IArticulo'; import { Router } from '@angular/router'; +import { BsModalRef } from 'ngx-bootstrap/modal/public_api'; @Component({ selector: 'app-carrito', @@ -23,9 +24,10 @@ import { Router } from '@angular/router'; ]) ] }) -export class CarritoComponent implements OnInit { +export class CarritoComponent implements OnInit, OnDestroy { urlImagenes = `${APP_SETTINGS.apiDeboSuite}/imagenes/`; maxCantidad = 50; + modalRef: BsModalRef; constructor( public articuloService: ArticuloService, @@ -40,6 +42,10 @@ export class CarritoComponent implements OnInit { } } + ngOnDestroy() { + if (this.modalRef) this.modalRef.hide(); + } + deleteArticulo(index: number) { this.articuloService.carrito.splice(index, 1); this.articuloService.calcularTotal(); diff --git a/src/app/modules/seleccion-articulos/seleccion-articulos.component.html b/src/app/modules/seleccion-articulos/seleccion-articulos.component.html index 1024605..eb095e2 100644 --- a/src/app/modules/seleccion-articulos/seleccion-articulos.component.html +++ b/src/app/modules/seleccion-articulos/seleccion-articulos.component.html @@ -100,7 +100,7 @@
+ (click)="elegirArticulo(articulo)">
{{articulo.PreVen | currency}}
@@ -224,57 +224,3 @@
- - - - - \ No newline at end of file diff --git a/src/app/modules/seleccion-articulos/seleccion-articulos.component.ts b/src/app/modules/seleccion-articulos/seleccion-articulos.component.ts index 808257f..552640b 100644 --- a/src/app/modules/seleccion-articulos/seleccion-articulos.component.ts +++ b/src/app/modules/seleccion-articulos/seleccion-articulos.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, TemplateRef } from '@angular/core'; +import { Component, OnInit, TemplateRef, OnDestroy } from '@angular/core'; import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal'; import { ArticuloService } from 'src/app/services/articulo/articulo.service'; import { IArticulo } from 'src/app/interfaces/IArticulo'; @@ -6,13 +6,14 @@ import { APP_SETTINGS } from 'src/etc/AppSettings'; import { ICategoria } from 'src/app/interfaces/ICategoria'; import { CategoriaService } from 'src/app/services/categoria/categoria.service'; import { PromocionService } from 'src/app/services/promocion/promocion.service'; +import { PromocionComponent } from 'src/app/shared/promocion/promocion.component'; @Component({ selector: 'app-seleccion-articulos', templateUrl: './seleccion-articulos.component.html', styleUrls: ['./seleccion-articulos.component.scss'] }) -export class SeleccionArticulosComponent implements OnInit { +export class SeleccionArticulosComponent implements OnInit, OnDestroy { showSpinner = true; timeoutHandler: any; urlImagenes = `${APP_SETTINGS.apiDeboSuite}/imagenes/`; @@ -27,20 +28,21 @@ export class SeleccionArticulosComponent implements OnInit { allActive = true; modalRef: BsModalRef; total = 0; - articuloPromo: IArticulo[] = []; - promociones: IArticulo[] = []; constructor( public articuloService: ArticuloService, private categoriaService: CategoriaService, private modalService: BsModalService, - private promocionService: PromocionService, ) { } ngOnInit() { this.getCategorias(); } + ngOnDestroy() { + if (this.modalRef) this.modalRef.hide(); + } + getCategorias() { this.categoriaService.getAll() .subscribe((categorias: ICategoria[]) => { @@ -125,32 +127,29 @@ export class SeleccionArticulosComponent implements OnInit { } elegirArticulo(articulo: IArticulo) { - this.articuloService.getById(articulo.id) - .subscribe((res: IArticulo) => { - res.cantidad = 1; - this.articuloService.setArticulo(res); - }, err => console.error(err)); + if (!articulo.FPP) { + this.getByID(articulo.id); + } else { + this.openModalPromos(articulo); + } } - openModalPromos(articulo: IArticulo, templatePromos: TemplateRef) { - this.articuloService.getById(articulo.id) + getByID(id: number) { + this.articuloService.getById(id) .subscribe((res: IArticulo) => { - this.articuloPromo[0] = res; - this.getPromociones(); + res.cantidad = 1; + this.articuloService.setArticulo(res); }, err => console.error(err)); - this.modalRef = this.modalService.show(templatePromos, { class: 'custom-modal modal-dialog-centered', backdrop: 'static' }); - setTimeout(() => { - this.modalRef.hide(); - }, 80000); } - getPromociones() { - var sector = this.articuloPromo[0].CodSec; - var codigo = this.articuloPromo[0].CodArt; - this.promocionService.getPromociones(sector, codigo) - .subscribe((res: IArticulo[]) => { - this.promociones = res; - }, error => { console.error(error); }) + openModalPromos(articulo: IArticulo) { + this.modalRef = this.modalService.show(PromocionComponent, + { + initialState: { + idArticulo: articulo.id + }, + class: 'modal-promo modal-dialog-centered' + }); } increaseShow() { diff --git a/src/app/services/publicidad/publicidad.service.ts b/src/app/services/publicidad/publicidad.service.ts index 4a21444..2a764e2 100644 --- a/src/app/services/publicidad/publicidad.service.ts +++ b/src/app/services/publicidad/publicidad.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { APP_SETTINGS } from 'src/etc/AppSettings'; -import { IPublicidad } from 'src/wrappers/publicidad'; +import { IPublicidad } from 'src/app/interfaces/IPublicidad'; @Injectable({ providedIn: 'root' @@ -31,4 +31,4 @@ export class PublicidadService { delete(id: any) { return this.http.delete(`${this.urlDeboSuite}/publicidad/${id}`); } -} \ No newline at end of file +} diff --git a/src/app/shared/header-publicidad/header-publicidad.component.html b/src/app/shared/header-publicidad/header-publicidad.component.html index 4945d06..fd070ca 100644 --- a/src/app/shared/header-publicidad/header-publicidad.component.html +++ b/src/app/shared/header-publicidad/header-publicidad.component.html @@ -8,7 +8,8 @@ draggable="false" ondragstart="return false;" (contextmenu)="false" - src="{{urlImagenes}}{{p.imagen}}"> + src="{{urlImagenes}}{{p.imagen}}" + (click)="elegirArticulo(p)"> diff --git a/src/app/shared/header-publicidad/header-publicidad.component.ts b/src/app/shared/header-publicidad/header-publicidad.component.ts index 805cc81..850989a 100644 --- a/src/app/shared/header-publicidad/header-publicidad.component.ts +++ b/src/app/shared/header-publicidad/header-publicidad.component.ts @@ -2,6 +2,10 @@ import { Component, OnInit } from '@angular/core'; import { APP_SETTINGS } from 'src/etc/AppSettings'; import { IPublicidad } from 'src/app/interfaces/IPublicidad'; import { PublicidadService } from 'src/app/services/publicidad/publicidad.service'; +import { IArticulo } from 'src/app/interfaces/IArticulo'; +import { PromocionComponent } from '../promocion/promocion.component'; +import { BsModalService, BsModalRef } from 'ngx-bootstrap/modal'; +import { ArticuloService } from 'src/app/services/articulo/articulo.service'; @Component({ selector: 'app-header-publicidad', @@ -11,9 +15,12 @@ import { PublicidadService } from 'src/app/services/publicidad/publicidad.servic export class HeaderPublicidadComponent implements OnInit { urlImagenes = `${APP_SETTINGS.apiDeboSuite}/imagenes/`; publicidades: IPublicidad[] = []; + modalRef: BsModalRef; constructor( private publicidadService: PublicidadService, + private articuloService: ArticuloService, + private modalService: BsModalService, ) { } ngOnInit() { @@ -27,4 +34,31 @@ export class HeaderPublicidadComponent implements OnInit { }, err => console.error(err)); } + elegirArticulo(publicidad: IPublicidad) { + if (publicidad.id_articulo) this.getByID(publicidad.id_articulo); + } + + + getByID(id: number) { + this.articuloService.getById(id) + .subscribe((res: IArticulo) => { + if (res.FPP) { + this.openModalPromos(res); + return; + } + res.cantidad = 1; + this.articuloService.setArticulo(res); + }, err => console.error(err)); + } + + openModalPromos(articulo: IArticulo) { + this.modalRef = this.modalService.show(PromocionComponent, + { + initialState: { + idArticulo: articulo.id + }, + class: 'modal-promo modal-dialog-centered' + }); + } + } diff --git a/src/app/shared/promocion/promocion.component.html b/src/app/shared/promocion/promocion.component.html index 7c71d2a..8c5b9c8 100644 --- a/src/app/shared/promocion/promocion.component.html +++ b/src/app/shared/promocion/promocion.component.html @@ -1,63 +1,51 @@ -
-
-
- -
-
-
-
-

{{'ENSALADA CAESAR'}}

-

¿QUERÉS LLEVAR ESTA ENSALADA

-

en combo con 1 bebida?

-
-
-
-
-

- {{'Sola'}} {{155 | currency}} - -

-
+