@@ -85,83 +85,29 @@ class TeamCalendarFragment : BaseTeamFragment() {
8585 private fun showMeetupAlert () {
8686 if (addMeetupDialog?.isShowing == true ) return
8787 val addMeetupBinding = AddMeetupBinding .inflate(layoutInflater)
88- setDatePickerListener(addMeetupBinding.tvStartDate, start, end)
89- setDatePickerListener(addMeetupBinding.tvEndDate, end, null )
90- setTimePicker(addMeetupBinding.tvStartTime)
91- setTimePicker(addMeetupBinding.tvEndTime)
88+ setupMeetupDialogPickers(addMeetupBinding)
89+
9290 if (! ::clickedCalendar.isInitialized) {
9391 clickedCalendar = Calendar .getInstance()
9492 }
9593 addMeetupDialog = AlertDialog .Builder (requireActivity()).setView(addMeetupBinding.root).create()
96- addMeetupBinding.btnSave.setOnClickListener {
97- val title = " ${addMeetupBinding.etTitle.text.trim()} "
98- val link = " ${addMeetupBinding.etLink.text.trim()} "
99- val description = " ${addMeetupBinding.etDescription.text.trim()} "
100- val location = " ${addMeetupBinding.etLocation.text.trim()} "
101- if (title.isEmpty()) {
102- Utilities .toast(activity, getString(R .string.title_is_required))
103- } else if (description.isEmpty()) {
104- Utilities .toast(activity, getString(R .string.description_is_required))
105- } else if (! link.isValidWebLink() && link.isNotEmpty()) {
106- Utilities .toast(activity, getString(R .string.invalid_url))
107- } else {
108- val defaultPlaceholder = getString(R .string.click_here_to_pick_time)
109- val startTimeText = " ${addMeetupBinding.tvStartTime.text} "
110- val endTimeText = " ${addMeetupBinding.tvEndTime.text} "
111- val recurringId = addMeetupBinding.rgRecuring.checkedRadioButtonId
112- val rb = addMeetupBinding.rgRecuring.findViewById<RadioButton >(recurringId)
113- val recurringText = rb?.text?.toString()
114- val teamPlanetCode = team?.teamPlanetCode
115- val userName = user?.name
116- val startMillis = start.timeInMillis
117- val endMillis = end.timeInMillis
118- val currentTeamId = teamId
11994
120- lifecycleScope.launch {
121- val meetup = RealmMeetup ().apply {
122- id = " ${UUID .randomUUID()} "
123- this .title = title
124- meetupLink = link
125- this .description = description
126- meetupLocation = location
127- creator = userName
128- startDate = startMillis
129- endDate = endMillis
130- if (startTimeText == defaultPlaceholder) {
131- startTime = " "
132- } else {
133- startTime = startTimeText
134- }
135- if (endTimeText == defaultPlaceholder) {
136- endTime = " "
137- } else {
138- endTime = endTimeText
139- }
140- createdDate = System .currentTimeMillis()
141- sourcePlanet = teamPlanetCode
142- val jo = JsonObject ()
143- jo.addProperty(" type" , " local" )
144- jo.addProperty(" planetCode" , teamPlanetCode)
145- sync = Gson ().toJson(jo)
146- if (recurringText != null ) {
147- recurring = recurringText
148- }
149- val ob = JsonObject ()
150- ob.addProperty(" teams" , currentTeamId)
151- this .link = Gson ().toJson(ob)
152- this .teamId = currentTeamId
153- }
154- val success = eventsRepository.createMeetup(meetup)
155- if (success) {
156- Utilities .toast(activity, getString(R .string.meetup_added))
157- addMeetupDialog?.dismiss()
158- refreshCalendarView()
159- refreshMeetupDialog()
160- } else {
161- Utilities .toast(activity, getString(R .string.meetup_not_added))
162- }
163- }
164- }
95+ setupMeetupDialogButtons(addMeetupBinding)
96+
97+ addMeetupDialog?.show()
98+ addMeetupDialog?.window?.setBackgroundDrawableResource(R .color.card_bg)
99+ }
100+
101+ private fun setupMeetupDialogPickers (addMeetupBinding : AddMeetupBinding ) {
102+ setDatePickerListener(addMeetupBinding.tvStartDate, start, end)
103+ setDatePickerListener(addMeetupBinding.tvEndDate, end, null )
104+ setTimePicker(addMeetupBinding.tvStartTime)
105+ setTimePicker(addMeetupBinding.tvEndTime)
106+ }
107+
108+ private fun setupMeetupDialogButtons (addMeetupBinding : AddMeetupBinding ) {
109+ addMeetupBinding.btnSave.setOnClickListener {
110+ handleMeetupSave(addMeetupBinding)
165111 }
166112
167113 addMeetupBinding.btnCancel.setOnClickListener {
@@ -174,8 +120,88 @@ class TeamCalendarFragment : BaseTeamFragment() {
174120 refreshCalendarView()
175121 }
176122 }
177- addMeetupDialog?.show()
178- addMeetupDialog?.window?.setBackgroundDrawableResource(R .color.card_bg)
123+ }
124+
125+ private fun handleMeetupSave (addMeetupBinding : AddMeetupBinding ) {
126+ val title = " ${addMeetupBinding.etTitle.text.trim()} "
127+ val link = " ${addMeetupBinding.etLink.text.trim()} "
128+ val description = " ${addMeetupBinding.etDescription.text.trim()} "
129+ val location = " ${addMeetupBinding.etLocation.text.trim()} "
130+
131+ if (title.isEmpty()) {
132+ Utilities .toast(activity, getString(R .string.title_is_required))
133+ } else if (description.isEmpty()) {
134+ Utilities .toast(activity, getString(R .string.description_is_required))
135+ } else if (! link.isValidWebLink() && link.isNotEmpty()) {
136+ Utilities .toast(activity, getString(R .string.invalid_url))
137+ } else {
138+ saveMeetupToDatabase(addMeetupBinding, title, link, description, location)
139+ }
140+ }
141+
142+ private fun saveMeetupToDatabase (
143+ addMeetupBinding : AddMeetupBinding ,
144+ title : String ,
145+ link : String ,
146+ description : String ,
147+ location : String
148+ ) {
149+ val defaultPlaceholder = getString(R .string.click_here_to_pick_time)
150+ val startTimeText = " ${addMeetupBinding.tvStartTime.text} "
151+ val endTimeText = " ${addMeetupBinding.tvEndTime.text} "
152+ val recurringId = addMeetupBinding.rgRecuring.checkedRadioButtonId
153+ val rb = addMeetupBinding.rgRecuring.findViewById<RadioButton >(recurringId)
154+ val recurringText = rb?.text?.toString()
155+ val teamPlanetCode = team?.teamPlanetCode
156+ val userName = user?.name
157+ val startMillis = start.timeInMillis
158+ val endMillis = end.timeInMillis
159+ val currentTeamId = teamId
160+
161+ lifecycleScope.launch {
162+ val meetup = RealmMeetup ().apply {
163+ id = " ${UUID .randomUUID()} "
164+ this .title = title
165+ meetupLink = link
166+ this .description = description
167+ meetupLocation = location
168+ creator = userName
169+ startDate = startMillis
170+ endDate = endMillis
171+ if (startTimeText == defaultPlaceholder) {
172+ startTime = " "
173+ } else {
174+ startTime = startTimeText
175+ }
176+ if (endTimeText == defaultPlaceholder) {
177+ endTime = " "
178+ } else {
179+ endTime = endTimeText
180+ }
181+ createdDate = System .currentTimeMillis()
182+ sourcePlanet = teamPlanetCode
183+ val jo = JsonObject ()
184+ jo.addProperty(" type" , " local" )
185+ jo.addProperty(" planetCode" , teamPlanetCode)
186+ sync = Gson ().toJson(jo)
187+ if (recurringText != null ) {
188+ recurring = recurringText
189+ }
190+ val ob = JsonObject ()
191+ ob.addProperty(" teams" , currentTeamId)
192+ this .link = Gson ().toJson(ob)
193+ this .teamId = currentTeamId
194+ }
195+ val success = eventsRepository.createMeetup(meetup)
196+ if (success) {
197+ Utilities .toast(activity, getString(R .string.meetup_added))
198+ addMeetupDialog?.dismiss()
199+ refreshCalendarView()
200+ refreshMeetupDialog()
201+ } else {
202+ Utilities .toast(activity, getString(R .string.meetup_not_added))
203+ }
204+ }
179205 }
180206
181207 private fun setDatePickerListener (view : TextView , date : Calendar ? , endDate : Calendar ? ) {
@@ -319,6 +345,10 @@ class TeamCalendarFragment : BaseTeamFragment() {
319345 meetupDialog?.setOnDismissListener {
320346 eventDates.add(clickedCalendar)
321347 lifecycleScope.launch {
348+ val calendarDays = eventDates.map { CalendarDay (it).apply {
349+ imageResource = R .drawable.ic_calendar
350+ } }
351+ binding.calendarView.setCalendarDays(calendarDays)
322352 binding.calendarView.selectedDates = emptyList()
323353 binding.calendarView.selectedDates = eventDates.toList()
324354 }
@@ -342,6 +372,10 @@ class TeamCalendarFragment : BaseTeamFragment() {
342372 if (isAdded && activity != null ) {
343373 eventDates.clear()
344374 eventDates.addAll(newDates)
375+ val calendarDays = newDates.map { CalendarDay (it).apply {
376+ imageResource = R .drawable.ic_calendar
377+ } }
378+ binding.calendarView.setCalendarDays(calendarDays)
345379 binding.calendarView.selectedDates = ArrayList (newDates)
346380 }
347381 }
0 commit comments