File

src/app/accomodationdescription/accomodationdescription.component.ts

Implements

OnInit

Metadata

Index

Properties
Methods
Inputs

Constructor

constructor(route: ActivatedRoute, db: DbConnectionService, router: Router)
Parameters :
Name Type Optional
route ActivatedRoute No
db DbConnectionService No
router Router No

Inputs

accommodation
Type : object

Methods

Async chooseAccommodation
chooseAccommodation()
Returns : any
fetchAccommodationDetails
fetchAccommodationDetails()
Returns : void
fetchAccommodationPictures
fetchAccommodationPictures()
Returns : void
fetchDayByDayView
fetchDayByDayView()
Returns : void
ngOnInit
ngOnInit()
Returns : void

Properties

accommodationName
Type : string
Default value : ""
accommodationPictures
Type : Object[]
Default value : []
activityId
Type : number
mobile
Type : boolean
Default value : false
onBeforeSlide
Default value : () => {...}
settings
Type : object
Default value : { counter: false, }
trip
Type : Object
Default value : null
tripId
Type : number
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>

./accomodationdescription.component.scss

@import 'variables';
@import 'footer';
@import 'header';
@import 'custom-checkbox';
@import 'custom-card';
@import 'custom-table';
// @import '~lightgallery/scss/lightgallery';
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""