5 Commits

17 changed files with 217 additions and 5 deletions

View File

@@ -45,6 +45,10 @@ const routes: Routes = [
{
path: 'view-discoteca-cliente',
loadChildren: () => import('./view-discoteca-cliente/view-discoteca-cliente.module').then( m => m.ViewDiscotecaClientePageModule)
},
{
path: 'reservamodal',
loadChildren: () => import('./reservamodal/reservamodal.module').then( m => m.ReservamodalPageModule)
},

View File

@@ -0,0 +1,8 @@
export interface Reservai {
UserID: number,
EventoID: number,
codigoDescuento: string,
codigoUnico: string,
codigoUnicoID: number,
descuentoPorciento: number
}

View File

@@ -1,5 +1,5 @@
export interface User {
id: number;
userID: number;
discotecaID: number;
userType: number;
username: string;

View File

@@ -3,8 +3,7 @@ import { FormControl, FormGroup, Validators } from '@angular/forms';
import { Tab1Service } from '../tab1/tab1.service';
import { Router } from '@angular/router';
import { Eventoi } from '../interfaces/eventoi';
import { DatePipe } from '@angular/common'
import { ViewEventoPageRoutingModule } from '../view-evento/view-evento-routing.module';
@Component({
selector: 'app-prompt-evento',

View File

@@ -0,0 +1,17 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { ReservamodalPage } from './reservamodal.page';
const routes: Routes = [
{
path: '',
component: ReservamodalPage
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class ReservamodalPageRoutingModule {}

View File

@@ -0,0 +1,20 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { IonicModule } from '@ionic/angular';
import { ReservamodalPageRoutingModule } from './reservamodal-routing.module';
import { ReservamodalPage } from './reservamodal.page';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
ReservamodalPageRoutingModule
],
declarations: [ReservamodalPage]
})
export class ReservamodalPageModule {}

View File

@@ -0,0 +1,9 @@
<ion-header>
<ion-toolbar>
<ion-title>reservamodal</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
{{codigoReserva}}
</ion-content>

View File

@@ -0,0 +1,24 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { ReservamodalPage } from './reservamodal.page';
describe('ReservamodalPage', () => {
let component: ReservamodalPage;
let fixture: ComponentFixture<ReservamodalPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ReservamodalPage ],
imports: [IonicModule.forRoot()]
}).compileComponents();
fixture = TestBed.createComponent(ReservamodalPage);
component = fixture.componentInstance;
fixture.detectChanges();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@@ -0,0 +1,18 @@
import { Component, OnInit } from '@angular/core';
import { NavParams } from '@ionic/angular';
@Component({
selector: 'app-reservamodal',
templateUrl: './reservamodal.page.html',
styleUrls: ['./reservamodal.page.scss'],
})
export class ReservamodalPage implements OnInit {
codigoReserva: string;
constructor(private navParams: NavParams) { }
ngOnInit() {
this.codigoReserva = this.navParams.get('codigo');
}
}

View File

@@ -7,6 +7,7 @@ import { Discoteca } from '../discoteca';
import { UserLogin } from '../interfaces/user-login';
import { DiscotecaI } from '../interfaces/discoteca-i';
import { Eventoi } from '../interfaces/eventoi';
import { Reservai } from '../interfaces/reservai';
@Injectable({
@@ -51,6 +52,10 @@ export class ApiService {
}
creaReserva(reserva: Reservai): Observable<Reservai>{
return this.http.post<Reservai>(this.baseUrl+"/reserva", reserva);
}

View File

@@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { CodigoreservaService } from './codigoreserva.service';
describe('CodigoreservaService', () => {
let service: CodigoreservaService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(CodigoreservaService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});

View File

@@ -0,0 +1,27 @@
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class CodigoreservaService {
codigo: string;
length: number;
constructor() {
}
generarAleatorio(){
this.length = 7;
var result = [];
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var charactersLength = characters.length;
for ( var i = 0; i < this.length; i++ ) {
result.push(characters.charAt(Math.floor(Math.random() *
charactersLength)));
}
return result.join("");
}
}

View File

@@ -17,7 +17,7 @@ export class LoginService {
constructor(private apiService: ApiService, private router: Router, private tab1service: Tab1Service, private feedService: FeedService) {
this.user = {
id: 0,
userID: 0,
discotecaID: 0,
userType: 0,
username: '',

View File

@@ -16,6 +16,7 @@ export class ViewDiscotecaClientePage implements OnInit {
constructor(private feedService: FeedService) { }
ngOnInit() {
this.eventos = [];
this.discoteca = this.feedService.discotecaEvento;
this.feedService.eventos.forEach(evento => {
if (this.discoteca.discotecaID == evento.discotecaID){

View File

@@ -26,6 +26,14 @@
<a [routerLink]="['/tabsUser/tab2/view-discoteca-cliente']">{{discoteca?.nombre}}</a>
</div>
</ion-row>
<ion-row>
<ion-button (click)="openReserva()">
Reserva
</ion-button>
</ion-row>
<ion-row>
<span>Código de descuento: </span><input type="text" id="codigoDescuento">
</ion-row>
</div>
</ion-grid>
</ion-content>

View File

@@ -1,7 +1,14 @@
import { stringify } from '@angular/compiler/src/util';
import { Component, OnInit } from '@angular/core';
import { ModalController } from '@ionic/angular';
import { DiscotecaI } from '../interfaces/discoteca-i';
import { Eventoi } from '../interfaces/eventoi';
import { Reservai } from '../interfaces/reservai';
import { ReservamodalPage } from '../reservamodal/reservamodal.page';
import { ApiService } from '../services/api.service';
import { CodigoreservaService } from '../services/codigoreserva.service';
import { FeedService } from '../services/feed.service';
import { LoginService } from '../services/login.service';
@Component({
selector: 'app-view-evento-cliente',
@@ -12,11 +19,60 @@ export class ViewEventoClientePage implements OnInit {
evento: Eventoi;
discoteca: DiscotecaI;
constructor(private feedService: FeedService) { }
reserva: Reservai;
codigoReserva: string;
reservaRealizada: boolean;
constructor(private feedService: FeedService, private modalController: ModalController,
private codigoReservaService: CodigoreservaService, private loginService: LoginService, private apiService: ApiService) { }
ngOnInit() {
this.reservaRealizada = false;
this.evento = this.feedService.getEventoByIndex(this.feedService.eventoIndex);
this.discoteca = this.feedService.discotecaEvento;
}
generarCodigo(){
return stringify(this.codigoReservaService.generarAleatorio());
}
initReserva(){
this.reserva = {
UserID: this.loginService.user.userID,
EventoID: this.evento.id,
codigoDescuento: null,
codigoUnico: '',
codigoUnicoID: null,
descuentoPorciento: null
}
}
openReserva(){
this.initReserva();
this.reserva.codigoDescuento = (<HTMLInputElement>document.getElementById("codigoDescuento")).value;
this.reserva.codigoUnico = this.generarCodigo();
this.creaReserva(this.reserva);
}
creaReserva(reserva){
this.apiService.creaReserva(reserva)
.subscribe(
data => {
console.log(data);
this.reserva = data;
this.reservaRealizada = true;
this.modalController.create({
component: ReservamodalPage,
componentProps : {
codigo: this.reserva.codigoUnico
}
}).then(modal => modal.present());
},
error => {
console.log(error);
}
)
}
}