diff --git a/app/src/GetAllRates.kt b/app/src/GetAllRates.kt new file mode 100644 index 0000000..ab3a97d --- /dev/null +++ b/app/src/GetAllRates.kt @@ -0,0 +1,3 @@ +data class GetAllRates( + val Response: Response +) \ No newline at end of file diff --git a/app/src/ROIDatalist.kt b/app/src/ROIDatalist.kt new file mode 100644 index 0000000..aaec798 --- /dev/null +++ b/app/src/ROIDatalist.kt @@ -0,0 +1,7 @@ +data class ROIDatalist( + val Frequency: String, + val Provider: String, + val ROI: Double, + val Tenure: String, + val Type: String +) \ No newline at end of file diff --git a/app/src/Response.kt b/app/src/Response.kt new file mode 100644 index 0000000..7d59270 --- /dev/null +++ b/app/src/Response.kt @@ -0,0 +1,7 @@ +data class Response( + val Errors: List, + val Message: String, + val ROIDatalist: List, + val Status: String, + val StatusCode: Int +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/api/ApiClient.kt b/app/src/main/java/com/nivesh/production/bajajfd/api/ApiClient.kt index 72f55f3..d89586a 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/api/ApiClient.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/api/ApiClient.kt @@ -1,6 +1,6 @@ package com.nivesh.production.bajajfd.api -import com.nivesh.production.bajajfd.`interface`.ApiInterface +import com.nivesh.production.bajajfd.interfaces.ApiInterface import com.nivesh.production.bajajfd.util.Constants.Companion.BASE_URL import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor @@ -26,7 +26,7 @@ class ApiClient { .client(client) .build() } - private val getApiClient by lazy { + val getApiClient by lazy { client.create(ApiInterface::class.java) } } diff --git a/app/src/main/java/com/nivesh/production/bajajfd/interface/ApiInterface.kt b/app/src/main/java/com/nivesh/production/bajajfd/interface/ApiInterface.kt deleted file mode 100644 index c707383..0000000 --- a/app/src/main/java/com/nivesh/production/bajajfd/interface/ApiInterface.kt +++ /dev/null @@ -1,36 +0,0 @@ -package com.nivesh.production.bajajfd.`interface` - -import okhttp3.RequestBody -import retrofit2.http.Body -import retrofit2.http.POST - -interface ApiInterface { - - @POST("GetRates") - suspend fun getRates(@Body requestBody: RequestBody) - - @POST("CheckFDCKYC") - suspend fun checkFDKYC(@Body requestBody: RequestBody) - - @POST("CreateFDApplication") - suspend fun createFDApp(@Body requestBody: RequestBody) - - @POST("DocumentsUpload") - suspend fun documentsUpload(@Body requestBody: RequestBody) - - @POST("SaveFDOtherData") - suspend fun saveFDOtherData(@Body requestBody: RequestBody) - - @POST("GetFDDetails") - suspend fun getFDDetails(@Body requestBody: RequestBody) - - @POST("UpdateFDPaymentStatus") - suspend fun updateFDPaymentStatus(@Body requestBody: RequestBody) - - @POST("FinaliseFD") - suspend fun finaliseFD(@Body requestBody: RequestBody) - - @POST("FinaliseKYC") - suspend fun finaliseKYC(@Body requestBody: RequestBody) - -} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt new file mode 100644 index 0000000..efe23ae --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt @@ -0,0 +1,45 @@ +package com.nivesh.production.bajajfd.interfaces + +import GetRatesResponse +import com.nivesh.production.bajajfd.model.GetRatesRequest +import okhttp3.RequestBody +import retrofit2.Response +import retrofit2.http.Body +import retrofit2.http.POST + +interface ApiInterface { + + @POST("GetRates") + suspend fun getRates(@Body getRatesRequest: GetRatesRequest): Response + + @POST("CheckFDCKYC") + suspend fun checkFDKYC(@Body requestBody: RequestBody) : Response + + @POST("CreateFDApplication") + suspend fun createFDApp(@Body requestBody: RequestBody): Response + + @POST("DocumentsUpload") + suspend fun documentsUpload(@Body requestBody: RequestBody): Response + + @POST("SaveFDOtherData") + suspend fun saveFDOtherData(@Body requestBody: RequestBody): Response + + @POST("GetFDDetails") + suspend fun getFDDetails(@Body requestBody: RequestBody): Response + + @POST("UpdateFDPaymentStatus") + suspend fun updateFDPaymentStatus(@Body requestBody: RequestBody): Response + + @POST("FinaliseFD") + suspend fun finaliseFD(@Body requestBody: RequestBody): Response + + @POST("FinaliseKYC") + suspend fun finaliseKYC(@Body requestBody: RequestBody): Response + + @POST("PaymentRequery") + suspend fun paymentReQuery(@Body requestBody: RequestBody): Response + + @POST("GetCodes") + suspend fun getCodes(@Body requestBody: RequestBody): Response + +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/interface/BajajFDInterface.kt b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt similarity index 76% rename from app/src/main/java/com/nivesh/production/bajajfd/interface/BajajFDInterface.kt rename to app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt index 17ee9fa..92c09ba 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/interface/BajajFDInterface.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt @@ -1,4 +1,4 @@ -package com.nivesh.production.bajajfd.`interface` +package com.nivesh.production.bajajfd.interfaces interface BajajFDInterface { fun stepOneApi(data: String?) diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/GetRatesRequest.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/GetRatesRequest.kt new file mode 100644 index 0000000..6553a5e --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/GetRatesRequest.kt @@ -0,0 +1,9 @@ +package com.nivesh.production.bajajfd.model + +import com.google.gson.annotations.SerializedName + +data class GetRatesRequest( + @SerializedName("FDProvider") var fdProvider: String? = null, + @SerializedName("Frequency") var frequency: String? = null, + @SerializedName("Type") var type: String? = null +) diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/GetRatesResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/GetRatesResponse.kt new file mode 100644 index 0000000..2db5422 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/GetRatesResponse.kt @@ -0,0 +1,3 @@ +data class GetRatesResponse( + val Response: Response +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ROIDataList.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ROIDataList.kt new file mode 100644 index 0000000..aaec798 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ROIDataList.kt @@ -0,0 +1,7 @@ +data class ROIDatalist( + val Frequency: String, + val Provider: String, + val ROI: Double, + val Tenure: String, + val Type: String +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/Response.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/Response.kt new file mode 100644 index 0000000..7d59270 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/Response.kt @@ -0,0 +1,7 @@ +data class Response( + val Errors: List, + val Message: String, + val ROIDatalist: List, + val Status: String, + val StatusCode: Int +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt b/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt new file mode 100644 index 0000000..01ce01d --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt @@ -0,0 +1,9 @@ +package com.nivesh.production.bajajfd.repositories + +import com.nivesh.production.bajajfd.interfaces.ApiInterface +import com.nivesh.production.bajajfd.model.GetRatesRequest + +class MainRepository constructor(private val apiInterface: ApiInterface) { + suspend fun getAllRatesResponse(getRatesRequest: GetRatesRequest) = + apiInterface.getRates(getRatesRequest) +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt index db6de24..89b21d9 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt @@ -3,28 +3,41 @@ package com.nivesh.production.bajajfd.ui.activity import android.graphics.Color import android.graphics.drawable.Drawable import android.graphics.drawable.GradientDrawable -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager -import com.nivesh.production.bajajfd.`interface`.BajajFDInterface import com.nivesh.production.bajajfd.adapter.SectionsPagerAdapter +import com.nivesh.production.bajajfd.api.ApiClient import com.nivesh.production.bajajfd.databinding.ActivityBajajFdBinding +import com.nivesh.production.bajajfd.interfaces.BajajFDInterface +import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.ui.fragment.* +import com.nivesh.production.bajajfd.ui.providerfactory.GetRatesModelProviderFactory import com.nivesh.production.bajajfd.util.Colors +import com.nivesh.production.bajajfd.viewModel.StepOneViewModel -class BajajFdMainActivity : AppCompatActivity(),BajajFDInterface { +class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { private lateinit var binding: ActivityBajajFdBinding + lateinit var viewModel: StepOneViewModel + + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) init() } - private fun init(){ + private fun init() { + binding = ActivityBajajFdBinding.inflate(layoutInflater) setContentView(binding.root) + //start Repository + val viewModelProviderFactory = GetRatesModelProviderFactory(MainRepository(ApiClient.getApiClient)) + viewModel = ViewModelProvider(this, viewModelProviderFactory)[StepOneViewModel::class.java] + binding.imgBack.setOnClickListener { finish() } @@ -33,7 +46,8 @@ class BajajFdMainActivity : AppCompatActivity(),BajajFDInterface { setBackground(selectedShape(), defaultShape(), defaultShape(), defaultShape()) // set viewPager - val sectionsPagerAdapter = SectionsPagerAdapter(this@BajajFdMainActivity, supportFragmentManager) + val sectionsPagerAdapter = + SectionsPagerAdapter(this@BajajFdMainActivity, supportFragmentManager) val viewPager: ViewPager = binding.viewPager sectionsPagerAdapter.addFragment(StepOneBajajFDFragment.getInstance(this@BajajFdMainActivity)) sectionsPagerAdapter.addFragment(StepTwoBajajFDFragment.getInstance(this@BajajFdMainActivity)) @@ -86,7 +100,7 @@ class BajajFdMainActivity : AppCompatActivity(),BajajFDInterface { defaultShape() ) } - 4 ->{ + 4 -> { setBackground( selectedShape(), selectedShape(), diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt index 0c24fb4..e3af653 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt @@ -6,7 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider -import com.nivesh.production.bajajfd.`interface`.BajajFDInterface +import com.nivesh.production.bajajfd.interfaces.BajajFDInterface import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFiveBinding import com.nivesh.production.bajajfd.viewModel.StepFiveViewModel diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt index a680f6d..17f6323 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt @@ -6,7 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider -import com.nivesh.production.bajajfd.`interface`.BajajFDInterface +import com.nivesh.production.bajajfd.interfaces.BajajFDInterface import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFourBinding import com.nivesh.production.bajajfd.viewModel.StepFourViewModel diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt index 368e6d3..d3cddf0 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt @@ -1,13 +1,17 @@ package com.nivesh.production.bajajfd.ui.fragment -import androidx.lifecycle.ViewModelProvider +import GetRatesResponse import android.os.Bundle -import androidx.fragment.app.Fragment +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import com.nivesh.production.bajajfd.`interface`.BajajFDInterface +import androidx.fragment.app.Fragment import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepOneBinding +import com.nivesh.production.bajajfd.interfaces.BajajFDInterface +import com.nivesh.production.bajajfd.model.GetRatesRequest +import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity +import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.viewModel.StepOneViewModel class StepOneBajajFDFragment : Fragment() { @@ -18,7 +22,7 @@ class StepOneBajajFDFragment : Fragment() { private lateinit var bajajFDInterface: BajajFDInterface companion object { - fun getInstance(fdInterface: BajajFDInterface): StepOneBajajFDFragment{ + fun getInstance(fdInterface: BajajFDInterface): StepOneBajajFDFragment { val stepStartFragment = StepOneBajajFDFragment() stepStartFragment.setApi(fdInterface) return stepStartFragment @@ -29,20 +33,42 @@ class StepOneBajajFDFragment : Fragment() { bajajFDInterface = bajajFDInterfaces } - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - stepOneViewModel = ViewModelProvider(this)[StepOneViewModel::class.java].apply { - - } - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { - _binding = FragmentBajajfdStepOneBinding.inflate(inflater,container,false) + _binding = FragmentBajajfdStepOneBinding.inflate(inflater, container, false) val root = binding.root + val getRatesRequest = GetRatesRequest() + getRatesRequest.fdProvider = "" + getRatesRequest.frequency = "" + getRatesRequest.type = "" + stepOneViewModel.getAllRates(getRatesRequest) + stepOneViewModel = (activity as BajajFdMainActivity).viewModel + stepOneViewModel.getRatesMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + response.data?.Response?.StatusCode?.let { code -> + when (code) { + 200 -> getRatesData(response.data) + 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + // binding.txtInterestTenure.setOnClickListener { // // } @@ -54,6 +80,16 @@ class StepOneBajajFDFragment : Fragment() { return root } + private fun refreshToken() { + + + } + + private fun getRatesData(getRatesResponse: GetRatesResponse) { + + + } + override fun onDestroyView() { super.onDestroyView() _binding = null diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt index d1763b4..e1ff364 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt @@ -6,7 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider -import com.nivesh.production.bajajfd.`interface`.BajajFDInterface +import com.nivesh.production.bajajfd.interfaces.BajajFDInterface import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepThreeBinding import com.nivesh.production.bajajfd.viewModel.StepThreeViewModel diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt index 846b62f..de4f984 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt @@ -6,7 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider -import com.nivesh.production.bajajfd.`interface`.BajajFDInterface +import com.nivesh.production.bajajfd.interfaces.BajajFDInterface import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepTwoBinding import com.nivesh.production.bajajfd.viewModel.StepTwoViewModel diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/GetRatesModelProviderFactory.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/GetRatesModelProviderFactory.kt new file mode 100644 index 0000000..a26b5a9 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/GetRatesModelProviderFactory.kt @@ -0,0 +1,15 @@ +package com.nivesh.production.bajajfd.ui.providerfactory + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import com.nivesh.production.bajajfd.repositories.MainRepository +import com.nivesh.production.bajajfd.viewModel.StepOneViewModel + +class GetRatesModelProviderFactory (val mainRepository: MainRepository) : ViewModelProvider.Factory { + // @Override fun create(modelClass: Class): T { +// return StepOneViewModel(mainRepository) as T +// } + override fun create(modelClass: Class): T { + return StepOneViewModel(mainRepository) as T + } +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt b/app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt index 1ba9162..a05ff84 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt @@ -52,21 +52,7 @@ class Constants() { } return false } - //phone number - private fun checkValidPhoneNumber(phoneText: String?): String? { - if (phoneText != null) { - if(!phoneText.matches(".*[0-9].*".toRegex())){ - return "Must be all Digits" - } - } - if (phoneText != null) { - if(phoneText.length != 10){ - return "Must be 10 Digits" - } - } - return null - } //valid email check private fun isValidEmail(emailText:String?): String? { @@ -117,5 +103,6 @@ class Constants() { //returns a boolean value return match.matches() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneViewModel.kt index 63e7664..cb793b3 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneViewModel.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneViewModel.kt @@ -1,7 +1,34 @@ package com.nivesh.production.bajajfd.viewModel +import GetRatesResponse +import Response +import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.nivesh.production.bajajfd.model.GetRatesRequest +import com.nivesh.production.bajajfd.repositories.MainRepository +import com.nivesh.production.bajajfd.util.Resource +import kotlinx.coroutines.launch -class StepOneViewModel : ViewModel() { +class StepOneViewModel(private val mainRepository: MainRepository) : ViewModel() { // TODO: Implement the ViewModel + // var getRateResponse: GetRatesResponse? = null + val getRatesMutableData: MutableLiveData> = MutableLiveData() + + fun getAllRates(getRatesRequest: GetRatesRequest) = viewModelScope.launch { + getRatesMutableData.postValue(Resource.Loading()) + val response = mainRepository.getAllRatesResponse(getRatesRequest) + getRatesMutableData.postValue(handleRatesResponse(response)) + } + + private fun handleRatesResponse(response: retrofit2.Response): Resource { + if (response.isSuccessful) { + response.body()?.let { resultResponse -> + return Resource.Success(resultResponse) + } + } + return Resource.Error(response.message()) + + } + } \ No newline at end of file