package
com.example.testproject
import
android.annotation.SuppressLint
import
android.content.Context
import
android.os.Bundle
import
android.util.Log
import
android.widget.Toast
import
androidx.activity.ComponentActivity
import
androidx.activity.compose.setContent
import
androidx.compose.foundation.layout.*
import
androidx.compose.material.*
import
androidx.compose.runtime.Composable
import
androidx.compose.runtime.MutableState
import
androidx.compose.runtime.mutableStateOf
import
androidx.compose.runtime.remember
import
androidx.compose.ui.Alignment
import
androidx.compose.ui.Modifier
import
androidx.compose.ui.graphics.Color
import
androidx.compose.ui.platform.LocalContext
import
androidx.compose.ui.text.TextStyle
import
androidx.compose.ui.text.font.FontWeight
import
androidx.compose.ui.text.input.TextFieldValue
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.tooling.preview.Preview
import
androidx.compose.ui.unit.dp
import
androidx.compose.ui.unit.sp
import
androidx.core.content.ContextCompat.startActivity
import
com.android.volley.Request
import
com.android.volley.RequestQueue
import
com.android.volley.toolbox.JsonObjectRequest
import
com.android.volley.toolbox.Volley
import
com.example.testproject.ui.theme.TestProjectTheme
import
com.example.testproject.ui.theme.greenColor
class
MainActivity : ComponentActivity() {
@SuppressLint
(
"UnusedMaterialScaffoldPaddingParameter"
)
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
setContent {
TestProjectTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colors.background
) {
Scaffold(
topBar = {
TopAppBar(backgroundColor = greenColor,
title = {
Text(
text =
"GFG"
,
color = Color.White,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
)
}
)
}
) {
getPinCodeDetails()
}
}
}
}
}
}
@Composable
fun getPinCodeDetails() {
val pinCode = remember {
mutableStateOf(TextFieldValue())
}
val pinCodeDetails = remember {
mutableStateOf(
""
)
}
val ctx = LocalContext.current
Column(
modifier = Modifier
.fillMaxSize()
.fillMaxHeight()
.fillMaxWidth()
.padding(
5
.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
TextField(
value = pinCode.value,
onValueChange = { pinCode.value = it },
placeholder = { Text(text =
"Enter Pin Code"
) },
modifier = Modifier
.padding(
16
.dp)
.fillMaxWidth(),
textStyle = TextStyle(color = Color.Black, fontSize =
15
.sp),
singleLine =
true
,
)
Spacer(modifier = Modifier.height(
10
.dp))
Button(onClick = {
getBankDetailsFromIFSC(pinCode.value.text, pinCodeDetails, ctx)
}) {
Text(
text =
"Get Pin Code Details"
,
modifier = Modifier.padding(
10
.dp),
color = Color.White,
fontSize =
15
.sp
)
}
Spacer(modifier = Modifier.height(
25
.dp))
Text(pinCodeDetails.value, fontSize =
15
.sp, color = greenColor, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center)
}
}
fun getBankDetailsFromIFSC(ifscCode: String, pinCodeDetails: MutableState<String>, ctx: Context) {
val queue: RequestQueue = Volley.newRequestQueue(ctx)
val request = JsonObjectRequest(Request.Method.GET, url,
null
, { response ->
try
{
val cityName: String = response.getJSONArray(
"PostOffice"
).getJSONObject(
0
).getString(
"District"
)
val stateName: String = response.getJSONArray(
"PostOffice"
).getJSONObject(
0
).getString(
"State"
)
pinCodeDetails.value =
"City Name : "
+ cityName +
"\n"
+
"State : "
+ stateName
}
catch
(e: Exception) {
e.printStackTrace()
}
}, { error ->
Log.e(
"tag"
,
"error is "
+error)
Toast.makeText(ctx,
"Fail to get response"
+error, Toast.LENGTH_SHORT)
.show()
})
queue.add(request)
}