diff --git a/functions/src/data/franchise/get/franchise/GetFranchiseRepository.ts b/functions/src/data/franchise/get/franchise/GetFranchiseRepository.ts new file mode 100644 index 0000000..3f3b4ec --- /dev/null +++ b/functions/src/data/franchise/get/franchise/GetFranchiseRepository.ts @@ -0,0 +1,24 @@ +import { database } from '@data/firebase'; + +export async function GetFranchiseRepository(): Promise { + try { + let franchises = [] + const franchisesSnapshot = await database.collection('franchises').get(); + if (franchisesSnapshot.empty) { + console.log("No franchises."); + return []; + } + for (const doc of franchisesSnapshot.docs) { + const data = doc.id; + // console.log("GetFranchiseRepository data: ", JSON.stringify(data)); + franchises.push(data.toLowerCase()) + } + // console.log("GetFranchiseRepository franchises: ", franchises) + return franchises + } catch (error) { + console.error('Error fetching franchises data:', error); + throw error; + } +} + + diff --git a/functions/src/data/franchise/index.ts b/functions/src/data/franchise/index.ts new file mode 100644 index 0000000..21f7e85 --- /dev/null +++ b/functions/src/data/franchise/index.ts @@ -0,0 +1 @@ +export {GetFranchiseRepository} from "./get/franchise/GetFranchiseRepository" \ No newline at end of file diff --git a/functions/src/data/surcharge/get/getSurchargesRepository.ts b/functions/src/data/surcharge/get/getSurchargesRepository.ts index 427f180..a087e08 100644 --- a/functions/src/data/surcharge/get/getSurchargesRepository.ts +++ b/functions/src/data/surcharge/get/getSurchargesRepository.ts @@ -37,7 +37,6 @@ async function _GetSurcharge(placeId: string): Promise => { const result = await GetPlaceRepository(request.id); const surchargeData = await GetSurchargesRepository(request.id); + const franchisesNames = await GetFranchiseRepository() + + const name = result.displayName.text + let rate = surchargeData?.rate ?? undefined + let status = surchargeData?.surchargeStatus ?? SurchargeStatus.UNKNOWN + + franchisesNames.forEach(element => { + if (status === SurchargeStatus.UNKNOWN) { + if(name.toLowerCase().includes(element)){ + status = SurchargeStatus.AUTO_GENERATED + rate = 0.0 + } + } + }) return { id: result.id, @@ -24,8 +39,8 @@ export const getPlaceUsecase = async (request: GetPlaceUsecaseRequest): Promise< latitude: result.location?.latitude ?? 0, longitude: result.location?.longitude ?? 0, }, - rate: surchargeData?.rate ?? undefined, + rate: rate, reportedDate: surchargeData?.reportedDate ?? undefined, // Default to 0 if reportedDate is undefined - surchargeStatus: surchargeData?.surchargeStatus ?? SurchargeStatus.UNKNOWN, + surchargeStatus: status, }; }; diff --git a/functions/src/domain/place/get/places/GetPlacesUsecase.ts b/functions/src/domain/place/get/places/GetPlacesUsecase.ts index 878cc0a..55a859d 100644 --- a/functions/src/domain/place/get/places/GetPlacesUsecase.ts +++ b/functions/src/domain/place/get/places/GetPlacesUsecase.ts @@ -2,6 +2,7 @@ import { GetSurchargesRepository, SurchargeStatus } from "@data/surcharge" import { GetPlacesUsecaseRequest } from "./entity/GetPlacesUsecaseRequest" import { GetPlacesUsecaseResponse } from "./entity/GetPlacesUsecaseResponse" import { GetPlacesRepository } from "@data/place" +import { GetFranchiseRepository } from "@data/franchise" import { locationRestrictionOfNZ } from "@shared/constants" export async function GetPlacesUsecase(request: GetPlacesUsecaseRequest | string[]): Promise { @@ -17,7 +18,7 @@ export async function GetPlacesUsecase(request: GetPlacesUsecaseRequest | string resultPlaces = await GetPlacesRepository(allSurchargesIds) // const resultSurcharges = await GetSurchargesRepository(resultPlaceIds) - + const placesWithSurcharges = resultPlaces.places.map((place) => { return { id: place.id, @@ -45,12 +46,12 @@ export async function GetPlacesUsecase(request: GetPlacesUsecaseRequest | string surchargeStatus: allSurcharges.find((surcharge) => surcharge.id === place.id)?.surchargeStatus as SurchargeStatus, } }) - + return { places: placesWithSurcharges, nextPageToken: undefined, } - + } catch (error) { throw error } @@ -76,8 +77,26 @@ export async function GetPlacesUsecase(request: GetPlacesUsecaseRequest | string }) try { + const resultSurcharges = await GetSurchargesRepository(resultPlaceIds) + const franchisesNames = await GetFranchiseRepository() + const placesWithSurcharges = resultPlaces.places.map((place) => { + + const name = place.displayName.text + + let rate = resultSurcharges.find((surcharge) => surcharge.id === place.id)?.rate + let status = resultSurcharges.find((surcharge) => surcharge.id === place.id)?.surchargeStatus as SurchargeStatus ?? SurchargeStatus.UNKNOWN + + franchisesNames.forEach(element => { + if (status === SurchargeStatus.UNKNOWN) { + if(name.toLowerCase().includes(element)){ + status = SurchargeStatus.AUTO_GENERATED + rate = 0.0 + } + } + }) + return { id: place.id, displayName: { @@ -96,8 +115,8 @@ export async function GetPlacesUsecase(request: GetPlacesUsecaseRequest | string longitude: place.location.longitude, } : undefined, - rate: resultSurcharges.find((surcharge) => surcharge.id === place.id)?.rate, - surchargeStatus: resultSurcharges.find((surcharge) => surcharge.id === place.id)?.surchargeStatus as SurchargeStatus, + rate: rate, + surchargeStatus: status } })