@@ -5,18 +5,23 @@ import android.view.LayoutInflater
55import android.view.View
66import android.view.ViewGroup
77import androidx.fragment.app.Fragment
8+ import androidx.preference.PreferenceManager
9+ import com.pennapps.labs.pennmobile.MainActivity
10+ import com.pennapps.labs.pennmobile.R
811import com.pennapps.labs.pennmobile.databinding.FragmentGsrReservationDetailBinding
12+ import com.squareup.picasso.Picasso
13+ import org.joda.time.format.DateTimeFormat
914
1015
1116class GsrReservationDetailFragment : Fragment () {
1217
1318 companion object {
14- private const val ARG_BOOKING_ID = " booking_id "
19+ private const val ARG_SHARE_CODE = " share_code "
1520
16- fun newInstance (bookingId : String ): GsrReservationDetailFragment {
21+ fun newInstance (shareCode : String ): GsrReservationDetailFragment {
1722 return GsrReservationDetailFragment ().apply {
1823 arguments = Bundle ().apply {
19- putString(ARG_BOOKING_ID , bookingId )
24+ putString(ARG_SHARE_CODE , shareCode )
2025 }
2126 }
2227 }
@@ -27,11 +32,41 @@ class GsrReservationDetailFragment : Fragment() {
2732 savedInstanceState : Bundle ?
2833 ): View {
2934 val binding = FragmentGsrReservationDetailBinding .inflate(inflater, container, false )
30- val bookingId = arguments?.getString(ARG_BOOKING_ID )
3135
32- // need to fetch full reservation details from API using bookingId
33- // right now, just show booking id
34- binding.gsrDetailBookingIdTv.text = " Booking ID: $bookingId "
36+ val shareCode = arguments?.getString(ARG_SHARE_CODE )
37+ ? : activity?.intent?.data?.getQueryParameter(" data" )
38+
39+ if (shareCode == null ) {
40+ binding.gsrDetailBookingIdTv.text = " Invalid reservation link."
41+ return binding.root
42+ }
43+
44+ val sp = PreferenceManager .getDefaultSharedPreferences(requireContext())
45+ val bearerToken = " Bearer " + sp.getString(getString(R .string.access_token), " " )
46+
47+ MainActivity .studentLifeInstance
48+ .getReservationFromShareCode(bearerToken, shareCode)
49+ .subscribeOn(rx.schedulers.Schedulers .io())
50+ .observeOn(rx.android.schedulers.AndroidSchedulers .mainThread())
51+ .subscribe({ reservation ->
52+ val formatter = DateTimeFormat .forPattern(" yyyy-MM-dd'T'HH:mm:ssZZ" )
53+ val from = formatter.parseDateTime(reservation.start)
54+ val to = formatter.parseDateTime(reservation.end)
55+
56+ binding.gsrDetailLocationTv.text = " ${reservation.gsr.name} - ${reservation.roomName} "
57+ binding.gsrDetailDateTv.text =
58+ from.toString(" EEEE, MMMM d" ) + " \n " +
59+ from.toString(" h:mm a" ) + " - " +
60+ to.toString(" h:mm a" )
61+ binding.gsrDetailBookingIdTv.text = reservation.ownerName
62+
63+ Picasso .get().load(reservation.gsr.imageUrl).fit().centerCrop().into(binding.gsrDetailIv)
64+
65+ }, { error ->
66+ error.printStackTrace()
67+ android.util.Log .e(" GSRDetail" , " Error loading reservation: ${error.message} " )
68+ binding.gsrDetailBookingIdTv.text = " Failed to load reservation."
69+ })
3570
3671 return binding.root
3772 }
0 commit comments