diff --git a/ios/PerformicsStoreDNA.xcodeproj/project.pbxproj b/ios/PerformicsStoreDNA.xcodeproj/project.pbxproj index f85f1c1..65fb6a5 100644 --- a/ios/PerformicsStoreDNA.xcodeproj/project.pbxproj +++ b/ios/PerformicsStoreDNA.xcodeproj/project.pbxproj @@ -263,7 +263,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 7; + CURRENT_PROJECT_VERSION = 8; DEVELOPMENT_TEAM = JGDHGNH9XY; ENABLE_BITCODE = NO; INFOPLIST_FILE = PerformicsStoreDNA/Info.plist; @@ -272,7 +272,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.7; + MARKETING_VERSION = 1.8; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -292,7 +292,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 7; + CURRENT_PROJECT_VERSION = 8; DEVELOPMENT_TEAM = JGDHGNH9XY; INFOPLIST_FILE = PerformicsStoreDNA/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.1; @@ -300,7 +300,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.7; + MARKETING_VERSION = 1.8; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", diff --git a/src/api/ApiConstant.js b/src/api/ApiConstant.js index d7d02f8..10ab37f 100644 --- a/src/api/ApiConstant.js +++ b/src/api/ApiConstant.js @@ -2,11 +2,10 @@ export const BASE_URL = 'https://dax.parinaam.in/execute/dabur'; export const ApiURL = { - // login: `${BASE_URL}/api/v1/auth/login`, - pssscoreApi: `${BASE_URL}/mtd/pssscore`, getotpApi: `https://api1.parinaam.in/api/dabur/SendOTP`, verifyotpApi: `https://api1.parinaam.in/api/dabur/AuthenticateOTP`, storeDNAfilter:`https://api1.parinaam.in/api/dabur/StoreDNAfilter`, storeSearch :`https://api1.parinaam.in/api/dabur/StoreDNAstoreSearch`, + storeInfo :`https://api1.parinaam.in/api/dabur/StoreDNAstoreInfo`, }; diff --git a/src/assets/Images/PerformicsLogo.png b/src/assets/Images/PerformicsLogo.png new file mode 100644 index 0000000..1d072e2 Binary files /dev/null and b/src/assets/Images/PerformicsLogo.png differ diff --git a/src/assets/Images/projectId.png b/src/assets/Images/projectId.png new file mode 100644 index 0000000..1a061c2 Binary files /dev/null and b/src/assets/Images/projectId.png differ diff --git a/src/constants/Images.js b/src/constants/Images.js index 5e7fdac..32f17c4 100644 --- a/src/constants/Images.js +++ b/src/constants/Images.js @@ -25,6 +25,8 @@ const IMAGES = { AuthTopBG: require('../assets/Images/logintopBG.png'), AuthTopBGNew: require('../assets/Images/appLogoNew.png'), AuthBottomBG: require('../assets/Images/loginbottomBG.png'), + projectIdImg: require('../assets/Images/projectId.png'), + PerformicsLogo: require('../assets/Images/PerformicsLogo.png'), dotsIcon: require('../assets/Icons/dots.png'), pending: require('../assets/Icons/wall-clock.png'), alert: require('../assets/Icons/question-mark.png'), diff --git a/src/navigation/Routes.js b/src/navigation/Routes.js index 610578c..b613111 100644 --- a/src/navigation/Routes.js +++ b/src/navigation/Routes.js @@ -2,7 +2,7 @@ import React from 'react'; import { NavigationContainer } from '@react-navigation/native'; import { createNativeStackNavigator } from '@react-navigation/native-stack'; import Splash from '../screens/AuthScreen/Splash'; -import Login from '../screens/AuthScreen/Login'; +import Login from '../screens/AuthScreen/Login/Login'; import VerifyOTP from '../screens/AuthScreen/VerifyOTP'; import { ToastComponent } from '../constants/Toast'; import StoreInfo from '../screens/MainScreen/StoreInfo'; @@ -13,6 +13,7 @@ import FeedbackCategories from '../screens/MainScreen/Feedback/FeedbackCategorie import { Platform, StatusBar, View } from 'react-native'; import Welcome from '../screens/MainScreen/WelcomePage'; import Details from '../screens/MainScreen/Dashboard/Details'; +import Project from '../screens/AuthScreen/Project/Project'; const Stack = createNativeStackNavigator(); @@ -40,6 +41,7 @@ const Routes = () => { + diff --git a/src/screens/AuthScreen/Login/index.js b/src/screens/AuthScreen/Login/Login.js similarity index 100% rename from src/screens/AuthScreen/Login/index.js rename to src/screens/AuthScreen/Login/Login.js diff --git a/src/screens/AuthScreen/Project/Project.js b/src/screens/AuthScreen/Project/Project.js new file mode 100644 index 0000000..413b890 --- /dev/null +++ b/src/screens/AuthScreen/Project/Project.js @@ -0,0 +1,103 @@ + +import React, { useEffect, useState } from 'react'; +import { View, Text, Image, Platform, ImageBackground, TextInput } from 'react-native'; +import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'; +import IMAGES from '../../../constants/Images'; +import { styles } from './style'; +import { useDispatch } from 'react-redux'; +import CustomButton from '../../../components/CustomButton'; +import Loader from '../../../constants/Loader'; +import { ApiURL } from '../../../api/ApiConstant'; +import { toastError, toastSuccess } from '../../../constants/Toast'; +import axios from 'axios'; +import { SafeAreaView } from 'react-native-safe-area-context'; +import { GlobalTheme } from '../../../theme'; +import Geolocation from '@react-native-community/geolocation'; + + +const Project = ({ navigation }) => { + const [loading, setLoading] = useState(false); + const dispatch = useDispatch(); + const [username, setUsername] = useState(''); + + + // geo loc + useEffect(() => { + Geolocation.getCurrentPosition(info => console.log("Location infoooo====>", JSON.stringify(info))); + }, []) + // end geo loc + + + const onSubmit = () => { + // setLoading(true); + // getOTP(); + navigation.navigate("Login") + }; + + const getOTP = async () => { + try { + const params = { + "UserId": username + }; + + const config = { + method: 'post', + url: ApiURL.getotpApi, + headers: { + 'api_key': '9a1f056fecb84eaf8eb4152dda22ab0501955c4f9bbe7daa8780740459fdde7a', + 'Content-Type': 'application/json' + }, + data: params + }; + + const response = await axios.request(config); + const res = response.data || []; + console.log('OTP is ===> ', res?.SendOTP); + if (res?.SendOTP[0].OTP === '0' || res?.SendOTP[0].OTP === 0) { + setLoading(false); + toastError("Alert", "Invalid User"); + } else { + toastSuccess("Alert", res?.SendOTP[0]?.Messages); + navigation.navigate('VerifyOTP', { username: username }); + setLoading(false); + } + // console.log('getotpApi res==>', JSON.stringify(res?.SendOTP[0])); + } catch (error) { + console.log("❌ OTP API error:", error); + setLoading(false); + } + }; + return ( + + + {/* */} + + + + + Hey There + Enter Your Project Id + + + + + + + onSubmit()} title={'Next'} style={styles.btnbg} textstyle={styles.btntext} /> + + Copyright CPM India - 2025 + + + + + + ); +}; + +export default Project; + diff --git a/src/screens/AuthScreen/Project/style.js b/src/screens/AuthScreen/Project/style.js new file mode 100644 index 0000000..a62ecde --- /dev/null +++ b/src/screens/AuthScreen/Project/style.js @@ -0,0 +1,87 @@ +import { StyleSheet, Dimensions } from 'react-native'; +import { GlobalTheme } from '../../../theme'; +import { normalize } from '../../../utilis/responsive'; +const { width, height } = Dimensions.get('window'); + +export const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + }, + logoContainer: { + width: '100%', + }, + appLogo: { + height: normalize(180), + width: '100%', + resizeMode: 'contain', + marginTop: 30, + }, + performicsLogo: { + height: normalize(50), + width: '55%', + resizeMode: 'contain', + alignSelf: 'center', + marginTop:10, + }, + titleContainer: { + alignSelf: 'center', + marginBottom: normalize(10), + }, + titleText: { + fontSize: normalize(20), + fontWeight: 'bold', + color: GlobalTheme.colors.black, + }, + card: { + padding: normalize(25), + width: width, + alignSelf: 'center', + // marginTop: normalize(30), + shadowColor: '#000', + shadowOpacity: 0.05, + shadowOffset: { width: 0, height: 4 }, + shadowRadius: 8, + // elevation: 4, + flex: 1, + }, + btnbg: { + backgroundColor: GlobalTheme.colors.secondary, + borderRadius: GlobalTheme.borderRadius.md, + marginTop: normalize(30), + paddingVertical: normalize(12), + alignItems: 'center', + }, + btntext: { + color: GlobalTheme.colors.white, + fontSize: normalize(GlobalTheme.typography.fontSize.small), + fontWeight: GlobalTheme.typography.fontWeight.regular, + }, + footer: { + marginTop: normalize(60), + alignItems: 'center', + }, + footerImage: { + width: '100%', + height: normalize(80), + resizeMode: 'contain', + marginTop: normalize(160), + }, + AuthBottomBG: { + width: '100%', + resizeMode: 'contain', + height: normalize(210), + justifyContent: 'center', + }, + loginTitle: { + color: GlobalTheme.colors.black, + fontSize: normalize(GlobalTheme.typography.fontSize.small), + fontWeight: GlobalTheme.typography.fontWeight.medium, + textAlign: 'center', + marginBottom: normalize(20), + }, + mainContainer: { + flex: 1, + backgroundColor: '#EAF0FF', + }, +}); diff --git a/src/screens/AuthScreen/Splash/index.js b/src/screens/AuthScreen/Splash/index.js index 5ccb0f7..20cfc54 100644 --- a/src/screens/AuthScreen/Splash/index.js +++ b/src/screens/AuthScreen/Splash/index.js @@ -29,7 +29,7 @@ const SplashScreen = ({ navigation }) => { setTimeout(() => { navigation.reset({ index: 0, - routes: [{ name: 'Login' }], + routes: [{ name: 'Project' }], }); }, 1000); } diff --git a/src/screens/MainScreen/Dashboard/Details.js b/src/screens/MainScreen/Dashboard/Details.js index 9cd6cfd..12be6f0 100644 --- a/src/screens/MainScreen/Dashboard/Details.js +++ b/src/screens/MainScreen/Dashboard/Details.js @@ -84,6 +84,8 @@ const Details = () => { } const isOSATab = selectedDetails.some(item => item.GraphTitle === "OSA - Category"); + console.log('isOSATab----',isOSATab); + return ( @@ -300,13 +302,16 @@ const Details = () => { } }} style={{ width: '20%', }}> - - {presentKey ? ( - typeof row[presentKey] === 'string' && ['Yes', 'No'].includes(row[presentKey]) ? row[presentKey] : - typeof row[presentKey] === 'boolean' ? (row[presentKey] ? 'Yes' : 'No') : - typeof row[presentKey] === 'number' ? row[presentKey].toFixed(2) : row[presentKey] || '-' - ) : '-'} - + + + {presentKey ? ( + typeof row[presentKey] === 'string' && ['Yes', 'No'].includes(row[presentKey]) ? row[presentKey] : + typeof row[presentKey] === 'boolean' ? (row[presentKey] ? 'Yes' : 'No') : + typeof row[presentKey] === 'number' ? row[presentKey].toFixed(2) : row[presentKey] || '-' + ) : '-'} + + { isOSATab && row[presentKey] != 100 || isOSATab && row[presentKey] != '100'? :null} + ); @@ -321,7 +326,7 @@ const Details = () => { ); } - }) : + }) : } diff --git a/src/screens/MainScreen/StoreInfo/index.js b/src/screens/MainScreen/StoreInfo/index.js index 9a2f465..52a47b2 100644 --- a/src/screens/MainScreen/StoreInfo/index.js +++ b/src/screens/MainScreen/StoreInfo/index.js @@ -7,6 +7,7 @@ import IMAGES from '../../../constants/Images'; import axios from 'axios'; import Loader from '../../../constants/Loader'; import { SafeAreaView } from 'react-native-safe-area-context'; +import { ApiURL } from '../../../api/ApiConstant'; const storeinfodata = [ { @@ -154,14 +155,7 @@ const SectionListView = ({ listData }) => { {/* */} )} - - {/* ✅ Only show title if not hidden */} - - - {/* {item.section} - */} - - {/* Shared horizontal scroll view for header + rows */} + { const params = { StoreId: storeData?.StoreId || "723" }; const config = { method: 'post', - url: 'https://api1.parinaam.in/api/dabur/StoreDNAstoreInfo', + url: ApiURL.storeInfo, headers: { 'api_key': '9a1f056fecb84eaf8eb4152dda22ab0501955c4f9bbe7daa8780740459fdde7a', 'Content-Type': 'application/json' diff --git a/src/screens/MainScreen/StoreInfo/style.js b/src/screens/MainScreen/StoreInfo/style.js index 3febc0e..3e51670 100644 --- a/src/screens/MainScreen/StoreInfo/style.js +++ b/src/screens/MainScreen/StoreInfo/style.js @@ -60,8 +60,8 @@ export const styles = StyleSheet.create({ elevation: 2, width: Screen.screenWidth * 0.92, marginVertical: 5, - borderWidth: 1, - borderColor: '#113F8C', + borderWidth: 0.5, + borderColor: 'gray', marginBottom:15, marginTop:10, // ...shadow,