File
Implements
Index
Properties
|
|
Methods
|
|
Inputs
|
|
Methods
Async
chooseAccommodation
|
chooseAccommodation()
|
|
|
fetchAccommodationDetails
|
fetchAccommodationDetails()
|
|
|
fetchAccommodationPictures
|
fetchAccommodationPictures()
|
|
|
fetchDayByDayView
|
fetchDayByDayView()
|
|
|
accommodationName
|
Type : string
|
Default value : ""
|
|
accommodationPictures
|
Type : Object[]
|
Default value : []
|
|
mobile
|
Type : boolean
|
Default value : false
|
|
onBeforeSlide
|
Default value : () => {...}
|
|
settings
|
Type : object
|
Default value : {
counter: false,
}
|
|
trip
|
Type : Object
|
Default value : null
|
|
tripSummary
|
Type : Object[]
|
Default value : []
|
|
import { Component, Input, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { DbConnectionService } from '../db-connection.service';
import { LightgalleryModule } from 'lightgallery/angular/13';
import { BeforeSlideDetail } from 'lightgallery/lg-events';
@Component({
selector: 'app-accomodationdescription',
templateUrl: './accomodationdescription.component.html',
styleUrls: ['./accomodationdescription.component.scss']
})
export class AccomodationdescriptionComponent implements OnInit {
trip: Object = null;
tripId: number;
activityId: number;
mobile: boolean = false;
tripSummary: Object[] = [];
accommodationName = "";
@Input() accommodation: object;
accommodationPictures: Object[] = [];
settings = {
counter: false,
};
onBeforeSlide = (detail: BeforeSlideDetail): void => {
const { index, prevIndex } = detail;
console.log(index, prevIndex);
};
constructor(private route: ActivatedRoute,
private db: DbConnectionService,
private router: Router) { }
ngOnInit(): void {
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
this.mobile = true
}
this.route.params.subscribe(r => {
// error handling
if (!r["tripId"] || isNaN(Number(r["tripId"])))
return alert("Invalid TripID");
if (!r["activityId"] || isNaN(Number(r["activityId"])))
return alert("Invalid activityId");
// extract tripID and activityID from url
this.tripId = Number(r["tripId"]);
this.activityId = Number(r["activityId"]);
if (!r["accommodation"])
return alert("Invalid accommodation");
this.accommodationName = r['accommodation']
})
this.fetchAccommodationDetails();
this.fetchAccommodationPictures()
// this.fetchDayByDayView();
}
fetchAccommodationDetails() {
this.db.executeQuery(`SELECT tripID, name, activityID, nights, tagline, level, pricePerNight, persons, description FROM ActivityAccomodationView WHERE activityID = ${this.activityId} and name="${this.accommodationName}"`).then(r => {
this.accommodation = r["data"][0];
// console.log(this.accommodation)
})
}
fetchAccommodationPictures() {
this.db.executeQuery(`SELECT * FROM AccommodationPicture WHERE accommodation = "${this.accommodationName}"`).then(r => {
this.accommodationPictures = r["data"]
})
}
fetchDayByDayView() {
this.db.executeQuery(`SELECT * from DayByDayView WHERE tripID=${this.tripId}`).then(r => {
this.tripSummary = r["data"];
})
}
async chooseAccommodation(){
await this.db.executeQuery(`UPDATE MainActivity SET accomodation = '${this.accommodation['name']}' WHERE activityID = ${this.activityId}`)
// console.log(`UPDATE HistoricPrice set price = (select totalPrice from TotalPriceView where activityID = ${this.activityId})) WHERE mainActivityID = ${this.activityId};`)
// await this.db.executeQuery(`INSERT INTO HistoricPrice (mainActivityID, price) VALUES (${this.activityId}, (select totalPrice from TotalPriceView where activityID = ${this.activityId}));`)
await this.db.executeQuery(`UPDATE HistoricPrice set price = (select totalPrice from TotalPriceView where activityID = ${this.activityId}) WHERE mainActivityID = ${this.activityId};`)
console.log(`UPDATE HistoricPrice set price = (select totalPrice from TotalPriceView where activityID = ${this.activityId}) WHERE mainActivityID = ${this.activityId};`)
// navigate to activities page
this.router.navigateByUrl(`/trip/${this.tripId}/activities`);
}
}
<div class="header d-flex justify-content-between">
<h2>Select Accomomodation</h2>
<app-wizard [selectedStep]="3" [tripID]=this.tripId></app-wizard>
</div>
<div class="middle-container mobile-container">
<div *ngIf="accommodation" class="col">
<div class="custom-card">
<h3>{{accommodation['name']}}*</h3>
(*or similar)
<hr />
<div class="content">
<b>Persons:</b> {{ accommodation["persons"] }} <br>
<b>Price pp /night:</b> {{ accommodation["pricePerNight"] | currency:'EUR' : 'symbol' : '1.0-0'}} <br>
</div>
<div *ngIf="accommodation">{{accommodation['description']}}</div>
<h5 class ="card-title">pictures</h5>
<div [settings]="settings">
<a *ngFor="let accommodationPicture of accommodationPictures">
<img [src]="accommodationPicture.picture" />
</a>
</div>
<hr />
<!-- <button class="btn"> Add Accommodation
</button> -->
</div>
</div>
<div *ngIf="!mobile && tripId" class="col-md-3">
<div class="custom-card">
<app-yourtrip [accommodation] = "accommodation"></app-yourtrip>
</div>
</div>
</div>
<div class="footer d-flex justify-content-between">
<button *ngIf="tripId" type="button" class="btn btn-back" [routerLink]="['/trip', tripId, 'accommodation', activityId]"><i class="bi bi-back"></i> Back</button>
<button *ngIf="accommodation" type="button" class="btn btn-next" (click)="chooseAccommodation()"><i class="bi bi-bag-plus-fill"></i> Add +{{accommodation["pricePerNight"]*accommodation["persons"] * accommodation["nights"] | currency:'EUR' : 'symbol' : '1.0-0' }}</button>
</div>
@import 'variables';
@import 'footer';
@import 'header';
@import 'custom-checkbox';
@import 'custom-card';
@import 'custom-table';
// @import '~lightgallery/scss/lightgallery';
Legend
Html element with directive