Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { Injectable } from '@angular/core';
- import { StorageProvider } from '../storage/storage';
- import {
- TYPE_OF_RESTAURANT_BA,
- TYPE_OF_RESTAURANT_CA,
- TYPE_OF_RESTAURANT_PU,
- TYPE_OF_RESTAURANT_RE,
- TYPE_OF_RESTAURANT_CL,
- TYPE_OF_RESTAURANT_BA_STRING,
- TYPE_OF_RESTAURANT_CA_STRING,
- TYPE_OF_RESTAURANT_RE_STRING,
- TYPE_OF_RESTAURANT_PU_STRING,
- TYPE_OF_RESTAURANT_CL_STRING
- } from '../../config/constants';
- @Injectable()
- export class RestaurantParserProvider {
- restaurantList: Restaurant[];
- constructor(private storageProv: StorageProvider) {
- this.restaurantList = new Array<Restaurant>();
- }
- parseMultipleRestaurants(json): Restaurant[] {
- return json.reduce((acc: Restaurant[], currentRestaurant) => {
- acc.push(this.parseRestaurant(currentRestaurant));
- return acc;
- }, new Array<Restaurant>()).sort(
- (a,b) => (a.restaurantName > b.restaurantName) ? 1 : (
- (b.restaurantName > a.restaurantName) ? -1 : 0
- )
- );
- }
- private parseRestaurant(json): Restaurant {
- console.log(json);
- let currentRestaurant: Restaurant = {
- restaurantId: json.id,
- restaurantName: json.name,
- restaurantSlug: json.slug,
- commentary: json.commentary,
- typeOfVenue: this.parseTypeOfVenue(json.type_of_venue),
- country: json.country,
- zipCode: json.zip_code,
- state: json.state,
- city: json.city,
- streetname: json.streetname,
- streetnumber: json.streetnumber,
- openingHours: this.parseMultipleOpeningHours(json.openinghours_data),
- matchedHours: this.matchOpeningHours(
- this.parseMultipleOpeningHours(json.openinghours_data)
- ),
- restaurantLongitude: json.long,
- restaurantLatitude: json.lat
- }
- return currentRestaurant;
- }
- parseMultipleOpeningHours(json): OpeningHours[]{
- return json.reduce((acc: OpeningHours[], currentOpeningHours) => {
- acc.push(this.parseOpeningHours(currentOpeningHours));
- return acc;
- }, new Array<OpeningHours>());
- }
- private parseOpeningHours(json): OpeningHours {
- let currentOpeningHours: OpeningHours = {
- weekday: json.weekday_name,
- fromTime: json.from_hour,
- toTime: json.to_hour
- }
- return currentOpeningHours;
- }
- private parseTypeOfVenue(json): string {
- switch(json){
- case TYPE_OF_RESTAURANT_BA:
- return TYPE_OF_RESTAURANT_BA_STRING;
- case TYPE_OF_RESTAURANT_CA:
- return TYPE_OF_RESTAURANT_CA_STRING
- case TYPE_OF_RESTAURANT_RE:
- return TYPE_OF_RESTAURANT_RE_STRING;
- case TYPE_OF_RESTAURANT_PU:
- return TYPE_OF_RESTAURANT_PU_STRING;
- case TYPE_OF_RESTAURANT_CL:
- return TYPE_OF_RESTAURANT_CL_STRING;
- }
- }
- private matchOpeningHours(openingHoursList: OpeningHours[]) {
- return openingHoursList.reduce((acc, openingHours) => {
- let timeinterval: string = openingHours.fromTime.slice(0,-3) + '-' + openingHours.toTime.slice(0,-3);
- if(!(timeinterval in acc)){
- acc[timeinterval] = (openingHours.weekday.slice(0,2));
- } else {
- acc[timeinterval] += (', ' + (openingHours.weekday.slice(0,2)));
- }
- return acc;
- },{});
- }
- saveRestaurants(): Promise<any> {
- return this.storageProv.saveRestaurantData(this.restaurantList);
- }
- }
- export interface Restaurant {
- restaurantId: number;
- restaurantName: string;
- restaurantSlug: string;
- commentary: string;
- typeOfVenue: string;
- country: string;
- zipCode: number;
- state: string;
- city: string;
- streetname: string;
- streetnumber: number;
- openingHours: OpeningHours[];
- matchedHours: {};
- restaurantLongitude: number;
- restaurantLatitude: number;
- }
- export interface OpeningHours {
- weekday: string;
- fromTime: string;
- toTime: string;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement