diff --git a/android/app/build.gradle b/android/app/build.gradle index 646f89e..c37431d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -130,7 +130,7 @@ android { compileSdkVersion rootProject.ext.compileSdkVersion compileSdkVersion rootProject.ext.compileSdkVersion - + // TODO: Switch from test to prod and vice versa defaultConfig { // applicationId "com.test_city.douala3" applicationId "com.test_city.douala3test" diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index e95fb8e..f2a2465 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,4 +1,5 @@ + Test SIM_ba mobile CAD3 diff --git a/app/screens/account/AddNetwork.js b/app/screens/account/AddNetwork.js index a2b4b5a..f867bbb 100644 --- a/app/screens/account/AddNetwork.js +++ b/app/screens/account/AddNetwork.js @@ -19,6 +19,7 @@ import {ProgressDialog} from "react-native-simple-dialogs"; import axios from "axios"; import {uploadImage} from "../../webservice/IlinkConstants"; import Dialog from "react-native-dialog"; +import FilteredList from "../login/FilteredList "; let theme = require('./../../utils/theme.json'); @@ -115,7 +116,10 @@ export default class AddNetwork extends Component { displayImage: false, loadingUpload: false, item: this.props.navigation.getParam("item", null), - password: null + password: null, + neighborhood: null, + building_value: [], + built: [false] } } @@ -219,6 +223,14 @@ export default class AddNetwork extends Component { } renderTaxesDropdown = (index) => { + const selectedNeighbourhood = this.state.result && this.state.result.neighborhoods + ? this.state.result.neighborhoods.find(n => n.name === this.state.neighborhood) + : null; + const mercurialValue = selectedNeighbourhood + ? (this.state.built[index] + ? selectedNeighbourhood.mercur_built_value + : selectedNeighbourhood.mercur_unbuilt_value) + : null; return ( <> @@ -348,6 +360,65 @@ export default class AddNetwork extends Component { : null } + { + !isNil(this.state.taxes_selected[index]) && + this.state.taxes_selected[index].name?.toLowerCase() === 'taxe sur la propriété' && ( + <> + + + { + const built = [...this.state.built]; + built[index] = value === 'Oui'; + this.setState({built}); + }} + /> + + + {mercurialValue != null && ( + + {`${I18n.t('MERCURIAL_VALUE')}: ${mercurialValue}`} + + )} + {this.state.built[index] && ( + + { + const building_value = [...this.state.building_value]; + building_value[index] = value; + this.setState({building_value}); + }} + /> + + )} + + ) + } { !isNil(this.state.taxes_selected[index]) ? this.state.taxes_selected[index].billing_period === 'jour' && @@ -408,6 +479,9 @@ export default class AddNetwork extends Component { render() { + const hasPropertyTax = this.state.taxes_selected.some( + t => t && t.name?.toLowerCase() === 'taxe sur la propriété' + ); return ( : <> {this.renderTaxesDropdown(0)} + {hasPropertyTax && ( + + { + this.setState({neighborhood: selectedItem.name}); + }} + /> + + )} { this.state.tabTaxe.map((element, index) => ( index > 0 && @@ -517,26 +602,38 @@ export default class AddNetwork extends Component { for (let i = 0; i < this.state.tabTaxe.length; i++) { if (this.state.taxes_selected[i].hasOwnProperty("id")) { if (this.state.taxes_selected[i].has_image_capture === "1") { - taxes_to_send.push({ + let taxe = { has_image_capture: this.state.taxes_selected[i].has_image_capture, image: this.state.taxes_selected[i].image, id_network_tax: this.state.taxes_selected[i].id, + name: this.state.taxes_selected[i].name, tax_units_count: isNil(this.state.tax_units_count[i]) ? null : this.state.tax_units_count[i], units_per_tax_unit_count: isNil(this.state.units_per_tax_unit_count[i]) ? null : this.state.units_per_tax_unit_count[i], number_of_days: isNil(this.state.number_of_days[i]) ? null : this.state.number_of_days[i], - }); + }; + if (this.state.taxes_selected[i].name?.toLowerCase() === 'taxe sur la propriété') { + taxe.building_value = isNil(this.state.building_value[i]) ? null : this.state.building_value[i]; + taxe.built = this.state.built[i]; + } + taxes_to_send.push(taxe); } else { - taxes_to_send.push({ + let taxe = { has_image_capture: this.state.taxes_selected[i].has_image_capture, id_network_tax: this.state.taxes_selected[i].id, + name: this.state.taxes_selected[i].name, tax_units_count: isNil(this.state.tax_units_count[i]) ? null : this.state.tax_units_count[i], units_per_tax_unit_count: isNil(this.state.units_per_tax_unit_count[i]) ? null : this.state.units_per_tax_unit_count[i], number_of_days: isNil(this.state.number_of_days[i]) ? null : this.state.number_of_days[i], - }); + }; + if (this.state.taxes_selected[i].name?.toLowerCase() === 'taxe sur la propriété') { + taxe.building_value = isNil(this.state.building_value[i]) ? null : this.state.building_value[i]; + taxe.built = this.state.built[i]; + } + taxes_to_send.push(taxe); } } } - let res = await AssignAgentGeo(validateCode, enterPhone, taxes_to_send, item.id_agent, password, item.id); + let res = await AssignAgentGeo(validateCode, enterPhone, taxes_to_send, item.id_agent, password, item.id, this.state.neighborhood); this.setState({isLoading: false}); if (res) { if (res['success'] !== undefined) { @@ -600,8 +697,8 @@ const style = StyleSheet.create({ marginTop: 20, borderColor: 'transparent', backgroundColor: theme.primaryDarkAdvanced, - height: responsiveHeight(8) - + height: responsiveHeight(8), + marginBottom: responsiveHeight(8) // espace ajouté en bas }, appContainer: { flexDirection: 'row', diff --git a/app/webservice/AuthApi.js b/app/webservice/AuthApi.js index a2fcdd5..b7aa03e 100644 --- a/app/webservice/AuthApi.js +++ b/app/webservice/AuthApi.js @@ -411,7 +411,7 @@ export const generateAgentGeo = async (newPhone) => { }, memberActionUrl) return items; } -export const AssignAgentGeo = async (codeValidation, phone, taxes, id_agent, password, id_tax_notice) => { +export const AssignAgentGeo = async (codeValidation, phone, taxes, id_agent, password, id_tax_notice, neighborhood) => { const user = await readUser(); const items = await queryData({ "type": "assignNetworkAgentToGeo", @@ -423,7 +423,8 @@ export const AssignAgentGeo = async (codeValidation, phone, taxes, id_agent, pas "lang": I18n.currentLocale(), agentId: id_agent, password, - id_tax_notice + id_tax_notice, + neighborhood }, memberActionUrl) return items; } diff --git a/app/webservice/IlinkConstants.js b/app/webservice/IlinkConstants.js index 6527b10..9b422dd 100644 --- a/app/webservice/IlinkConstants.js +++ b/app/webservice/IlinkConstants.js @@ -1,5 +1,7 @@ export const isDebugMode = false +// TODO: Switch from test to prod and vice versa + // PROD URL // export const baseUrl = "https://city-douala3.ilink-app.com:8080/mobilebackend"; // export const testBaseUrl= "https://city-douala3.ilink-app.com:8081";