|
@@ -422,7 +422,9 @@ const EditNmDataScreen = ({ navigation, route }: { navigation: any; route: any }
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
const validateVisits = useCallback((): boolean => {
|
|
const validateVisits = useCallback((): boolean => {
|
|
|
- const newVisits = visits.filter((visit: Visit) => !visit.isExisting);
|
|
|
|
|
|
|
+ const newVisits = visits.filter(
|
|
|
|
|
+ (visit: Visit) => !visit.isExisting || (visit.isEditing && visit.isExisting)
|
|
|
|
|
+ );
|
|
|
|
|
|
|
|
for (const visit of newVisits) {
|
|
for (const visit of newVisits) {
|
|
|
// if (!isDateValid(visit.startDate) || !isDateValid(visit.endDate) || !visit.quality) {
|
|
// if (!isDateValid(visit.startDate) || !isDateValid(visit.endDate) || !visit.quality) {
|
|
@@ -445,75 +447,142 @@ const EditNmDataScreen = ({ navigation, route }: { navigation: any; route: any }
|
|
|
setIsLoading(true);
|
|
setIsLoading(true);
|
|
|
try {
|
|
try {
|
|
|
const newVisits = visits.filter((visit: Visit) => !visit.isExisting);
|
|
const newVisits = visits.filter((visit: Visit) => !visit.isExisting);
|
|
|
|
|
+ const editedVisits = visits.filter((visit: Visit) => visit.isEditing && visit.isExisting);
|
|
|
|
|
|
|
|
- if (newVisits.length === 0) {
|
|
|
|
|
- // Alert.alert('No new visits to save.');
|
|
|
|
|
|
|
+ if (newVisits.length === 0 && editedVisits.length === 0) {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- newVisits.forEach(async (v) => {
|
|
|
|
|
- await addVisit(
|
|
|
|
|
- {
|
|
|
|
|
- token,
|
|
|
|
|
- region: id,
|
|
|
|
|
- quality: v.quality.id,
|
|
|
|
|
- year_from: v.startDate?.year || null,
|
|
|
|
|
- month_from: v.startDate?.month || null,
|
|
|
|
|
- day_from: v.startDate?.day || null,
|
|
|
|
|
- year_to: v.endDate?.year || null,
|
|
|
|
|
- month_to: v.endDate?.month || null,
|
|
|
|
|
- day_to: v.endDate?.day || null,
|
|
|
|
|
- // completed: 1,
|
|
|
|
|
- hidden: 0
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- onSuccess: async (data) => {
|
|
|
|
|
- await getRegion(
|
|
|
|
|
- { token, id },
|
|
|
|
|
- {
|
|
|
|
|
- onSuccess: (res) => {
|
|
|
|
|
- if (isFromRegionsList && res.region) {
|
|
|
|
|
- const updatedNM = nmRegions.map((item: NmRegion) => {
|
|
|
|
|
- if (item.id === id) {
|
|
|
|
|
- return {
|
|
|
|
|
- ...item,
|
|
|
|
|
- year: res.region?.first_visited_in_year,
|
|
|
|
|
- last: res.region?.last_visited_in_year,
|
|
|
|
|
- quality: res.region?.best_visit_quality,
|
|
|
|
|
- visits: res.region?.no_of_visits
|
|
|
|
|
- };
|
|
|
|
|
- }
|
|
|
|
|
- return item;
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ if (editedVisits.length) {
|
|
|
|
|
+ editedVisits.forEach(async (v) => {
|
|
|
|
|
+ await updateVisitAsync(
|
|
|
|
|
+ {
|
|
|
|
|
+ token,
|
|
|
|
|
+ region: id,
|
|
|
|
|
+ id: v.id,
|
|
|
|
|
+ quality: v.quality.id,
|
|
|
|
|
+ year_from: v.startDate?.year || null,
|
|
|
|
|
+ month_from: v.startDate?.month || null,
|
|
|
|
|
+ day_from: v.startDate?.day || null,
|
|
|
|
|
+ year_to: v.endDate?.year || null,
|
|
|
|
|
+ month_to: v.endDate?.month || null,
|
|
|
|
|
+ day_to: v.endDate?.day || null,
|
|
|
|
|
+ hidden: 0
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ onSuccess: async (data) => {
|
|
|
|
|
+ await getRegion(
|
|
|
|
|
+ { token, id },
|
|
|
|
|
+ {
|
|
|
|
|
+ onSuccess: (res) => {
|
|
|
|
|
+ if (isFromRegionsList && res.region) {
|
|
|
|
|
+ const updatedNM = nmRegions.map((item: NmRegion) => {
|
|
|
|
|
+ if (item.id === id) {
|
|
|
|
|
+ return {
|
|
|
|
|
+ ...item,
|
|
|
|
|
+ year: res.region?.first_visited_in_year,
|
|
|
|
|
+ last: res.region?.last_visited_in_year,
|
|
|
|
|
+ quality: res.region?.best_visit_quality,
|
|
|
|
|
+ visits: res.region?.no_of_visits
|
|
|
|
|
+ };
|
|
|
|
|
+ }
|
|
|
|
|
+ return item;
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ setNmRegions(updatedNM);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- setNmRegions(updatedNM);
|
|
|
|
|
- return;
|
|
|
|
|
|
|
+ if (res.region) {
|
|
|
|
|
+ const updatedNM = {
|
|
|
|
|
+ ...userData,
|
|
|
|
|
+ first_visit_year: res.region.first_visited_in_year,
|
|
|
|
|
+ last_visit_year: res.region.last_visited_in_year,
|
|
|
|
|
+ best_visit_quality: res.region.best_visit_quality,
|
|
|
|
|
+ no_of_visits: res.region.no_of_visits,
|
|
|
|
|
+ visited: true
|
|
|
|
|
+ };
|
|
|
|
|
+ setUserData(updatedNM);
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ onError: (err) => {
|
|
|
|
|
+ console.log('err', err);
|
|
|
}
|
|
}
|
|
|
|
|
+ }
|
|
|
|
|
+ );
|
|
|
|
|
+ },
|
|
|
|
|
+ onError: (error) => {
|
|
|
|
|
+ console.log('updateVisitAsync error', error);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ );
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- if (res.region) {
|
|
|
|
|
- const updatedNM = {
|
|
|
|
|
- ...userData,
|
|
|
|
|
- first_visit_year: res.region.first_visited_in_year,
|
|
|
|
|
- last_visit_year: res.region.last_visited_in_year,
|
|
|
|
|
- best_visit_quality: res.region.best_visit_quality,
|
|
|
|
|
- no_of_visits: res.region.no_of_visits,
|
|
|
|
|
- visited: true
|
|
|
|
|
- };
|
|
|
|
|
- setUserData(updatedNM);
|
|
|
|
|
|
|
+ if (newVisits.length) {
|
|
|
|
|
+ newVisits.forEach(async (v) => {
|
|
|
|
|
+ await addVisit(
|
|
|
|
|
+ {
|
|
|
|
|
+ token,
|
|
|
|
|
+ region: id,
|
|
|
|
|
+ quality: v.quality.id,
|
|
|
|
|
+ year_from: v.startDate?.year || null,
|
|
|
|
|
+ month_from: v.startDate?.month || null,
|
|
|
|
|
+ day_from: v.startDate?.day || null,
|
|
|
|
|
+ year_to: v.endDate?.year || null,
|
|
|
|
|
+ month_to: v.endDate?.month || null,
|
|
|
|
|
+ day_to: v.endDate?.day || null,
|
|
|
|
|
+ hidden: 0
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ onSuccess: async (data) => {
|
|
|
|
|
+ await getRegion(
|
|
|
|
|
+ { token, id },
|
|
|
|
|
+ {
|
|
|
|
|
+ onSuccess: (res) => {
|
|
|
|
|
+ if (isFromRegionsList && res.region) {
|
|
|
|
|
+ const updatedNM = nmRegions.map((item: NmRegion) => {
|
|
|
|
|
+ if (item.id === id) {
|
|
|
|
|
+ return {
|
|
|
|
|
+ ...item,
|
|
|
|
|
+ year: res.region?.first_visited_in_year,
|
|
|
|
|
+ last: res.region?.last_visited_in_year,
|
|
|
|
|
+ quality: res.region?.best_visit_quality,
|
|
|
|
|
+ visits: res.region?.no_of_visits
|
|
|
|
|
+ };
|
|
|
|
|
+ }
|
|
|
|
|
+ return item;
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ setNmRegions(updatedNM);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (res.region) {
|
|
|
|
|
+ const updatedNM = {
|
|
|
|
|
+ ...userData,
|
|
|
|
|
+ first_visit_year: res.region.first_visited_in_year,
|
|
|
|
|
+ last_visit_year: res.region.last_visited_in_year,
|
|
|
|
|
+ best_visit_quality: res.region.best_visit_quality,
|
|
|
|
|
+ no_of_visits: res.region.no_of_visits,
|
|
|
|
|
+ visited: true
|
|
|
|
|
+ };
|
|
|
|
|
+ setUserData(updatedNM);
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ onError: (err) => {
|
|
|
|
|
+ console.log('err', err);
|
|
|
}
|
|
}
|
|
|
- },
|
|
|
|
|
- onError: (err) => {
|
|
|
|
|
- console.log('err', err);
|
|
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
- );
|
|
|
|
|
- },
|
|
|
|
|
- onError: (error) => {
|
|
|
|
|
- console.log('addVisit error', error);
|
|
|
|
|
|
|
+ );
|
|
|
|
|
+ },
|
|
|
|
|
+ onError: (error) => {
|
|
|
|
|
+ console.log('addVisit error', error);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
- );
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ );
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
Alert.alert('Success', 'Visits saved successfully!', [
|
|
Alert.alert('Success', 'Visits saved successfully!', [
|
|
|
{ text: 'OK', onPress: () => navigation.goBack() }
|
|
{ text: 'OK', onPress: () => navigation.goBack() }
|