Skip to content

Commit 19d0c0a

Browse files
PetruccioUb0nsun9
andauthored
GetFranchiseRepository created and used into GetSurchargesRepository #61 (#62)
* GetFranchiseRepository created and used into GetSurchargesRepository * GetFranchiseRepository used in getPlaceUsecase * Change surcharge information only when it is UNKNOWN. close #61 --------- Co-authored-by: Bonsung Koo <developer@bonsung.me>
1 parent 98b27cd commit 19d0c0a

File tree

5 files changed

+66
-8
lines changed

5 files changed

+66
-8
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { database } from '@data/firebase';
2+
3+
export async function GetFranchiseRepository(): Promise<string[]> {
4+
try {
5+
let franchises = []
6+
const franchisesSnapshot = await database.collection('franchises').get();
7+
if (franchisesSnapshot.empty) {
8+
console.log("No franchises.");
9+
return [];
10+
}
11+
for (const doc of franchisesSnapshot.docs) {
12+
const data = doc.id;
13+
// console.log("GetFranchiseRepository data: ", JSON.stringify(data));
14+
franchises.push(data.toLowerCase())
15+
}
16+
// console.log("GetFranchiseRepository franchises: ", franchises)
17+
return franchises
18+
} catch (error) {
19+
console.error('Error fetching franchises data:', error);
20+
throw error;
21+
}
22+
}
23+
24+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {GetFranchiseRepository} from "./get/franchise/GetFranchiseRepository"

functions/src/data/surcharge/get/getSurchargesRepository.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ async function _GetSurcharge(placeId: string): Promise<GetSurchargesRepositoryRe
3737
surchargeAmount: surcharge.surchargeAmount,
3838
surchargeStatus: surcharge.surchargeStatus
3939
};
40-
console.log("Surcharge fetched successfully:", result);
4140
return result;
4241
}
4342
} catch (error) {

functions/src/domain/place/get/place/getPlaceUsecase.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,25 @@ import { GetPlaceUsecaseRequest } from "./entity/GetPlaceUsecaseRequest";
33
import { GetPlaceUsecaseResponse } from "./entity/GetPlaceUsecaseResponse";
44
import { GetSurchargesRepository } from '@data/surcharge'
55
import { SurchargeStatus } from "@data/surcharge"
6+
import { GetFranchiseRepository } from "@data/franchise";
67

78
export const getPlaceUsecase = async (request: GetPlaceUsecaseRequest): Promise<GetPlaceUsecaseResponse> => {
89
const result = await GetPlaceRepository(request.id);
910
const surchargeData = await GetSurchargesRepository(request.id);
11+
const franchisesNames = await GetFranchiseRepository()
12+
13+
const name = result.displayName.text
14+
let rate = surchargeData?.rate ?? undefined
15+
let status = surchargeData?.surchargeStatus ?? SurchargeStatus.UNKNOWN
16+
17+
franchisesNames.forEach(element => {
18+
if (status === SurchargeStatus.UNKNOWN) {
19+
if(name.toLowerCase().includes(element)){
20+
status = SurchargeStatus.AUTO_GENERATED
21+
rate = 0.0
22+
}
23+
}
24+
})
1025

1126
return {
1227
id: result.id,
@@ -24,8 +39,8 @@ export const getPlaceUsecase = async (request: GetPlaceUsecaseRequest): Promise<
2439
latitude: result.location?.latitude ?? 0,
2540
longitude: result.location?.longitude ?? 0,
2641
},
27-
rate: surchargeData?.rate ?? undefined,
42+
rate: rate,
2843
reportedDate: surchargeData?.reportedDate ?? undefined, // Default to 0 if reportedDate is undefined
29-
surchargeStatus: surchargeData?.surchargeStatus ?? SurchargeStatus.UNKNOWN,
44+
surchargeStatus: status,
3045
};
3146
};

functions/src/domain/place/get/places/GetPlacesUsecase.ts

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { GetSurchargesRepository, SurchargeStatus } from "@data/surcharge"
22
import { GetPlacesUsecaseRequest } from "./entity/GetPlacesUsecaseRequest"
33
import { GetPlacesUsecaseResponse } from "./entity/GetPlacesUsecaseResponse"
44
import { GetPlacesRepository } from "@data/place"
5+
import { GetFranchiseRepository } from "@data/franchise"
56
import { locationRestrictionOfNZ } from "@shared/constants"
67

78
export async function GetPlacesUsecase(request: GetPlacesUsecaseRequest | string[]): Promise<GetPlacesUsecaseResponse> {
@@ -17,7 +18,7 @@ export async function GetPlacesUsecase(request: GetPlacesUsecaseRequest | string
1718
resultPlaces = await GetPlacesRepository(allSurchargesIds)
1819

1920
// const resultSurcharges = await GetSurchargesRepository(resultPlaceIds)
20-
21+
2122
const placesWithSurcharges = resultPlaces.places.map((place) => {
2223
return {
2324
id: place.id,
@@ -45,12 +46,12 @@ export async function GetPlacesUsecase(request: GetPlacesUsecaseRequest | string
4546
surchargeStatus: allSurcharges.find((surcharge) => surcharge.id === place.id)?.surchargeStatus as SurchargeStatus,
4647
}
4748
})
48-
49+
4950
return {
5051
places: placesWithSurcharges,
5152
nextPageToken: undefined,
5253
}
53-
54+
5455
} catch (error) {
5556
throw error
5657
}
@@ -76,8 +77,26 @@ export async function GetPlacesUsecase(request: GetPlacesUsecaseRequest | string
7677
})
7778

7879
try {
80+
7981
const resultSurcharges = await GetSurchargesRepository(resultPlaceIds)
82+
const franchisesNames = await GetFranchiseRepository()
83+
8084
const placesWithSurcharges = resultPlaces.places.map((place) => {
85+
86+
const name = place.displayName.text
87+
88+
let rate = resultSurcharges.find((surcharge) => surcharge.id === place.id)?.rate
89+
let status = resultSurcharges.find((surcharge) => surcharge.id === place.id)?.surchargeStatus as SurchargeStatus ?? SurchargeStatus.UNKNOWN
90+
91+
franchisesNames.forEach(element => {
92+
if (status === SurchargeStatus.UNKNOWN) {
93+
if(name.toLowerCase().includes(element)){
94+
status = SurchargeStatus.AUTO_GENERATED
95+
rate = 0.0
96+
}
97+
}
98+
})
99+
81100
return {
82101
id: place.id,
83102
displayName: {
@@ -96,8 +115,8 @@ export async function GetPlacesUsecase(request: GetPlacesUsecaseRequest | string
96115
longitude: place.location.longitude,
97116
}
98117
: undefined,
99-
rate: resultSurcharges.find((surcharge) => surcharge.id === place.id)?.rate,
100-
surchargeStatus: resultSurcharges.find((surcharge) => surcharge.id === place.id)?.surchargeStatus as SurchargeStatus,
118+
rate: rate,
119+
surchargeStatus: status
101120
}
102121
})
103122

0 commit comments

Comments
 (0)