@@ -51,7 +51,6 @@ import org.mifos.feature.groups.generated.resources.feature_groups_activate_add_
5151import org.mifos.feature.groups.generated.resources.feature_groups_activate_group_toggle
5252import org.mifos.feature.groups.generated.resources.feature_groups_activation_date_hint
5353import org.mifos.feature.groups.generated.resources.feature_groups_cancel
54- import org.mifos.feature.groups.generated.resources.feature_groups_create_group_button
5554import org.mifos.feature.groups.generated.resources.feature_groups_create_group_subtitle
5655import org.mifos.feature.groups.generated.resources.feature_groups_create_group_success_message
5756import org.mifos.feature.groups.generated.resources.feature_groups_create_group_success_title
@@ -68,10 +67,16 @@ import org.mifos.feature.groups.generated.resources.feature_groups_select_activa
6867import org.mifos.feature.groups.generated.resources.feature_groups_select_office_placeholder
6968import org.mifos.feature.groups.generated.resources.feature_groups_submitted_on_date_label
7069import org.mifos.feature.groups.generated.resources.feature_groups_submitted_on_date_placeholder
70+ import org.mifos.feature.groups.generated.resources.feature_groups_update_group
71+ import org.mifos.feature.groups.generated.resources.feature_groups_update_group_subtitle
72+ import org.mifos.feature.groups.generated.resources.feature_groups_update_group_success_message
73+ import org.mifos.feature.groups.generated.resources.feature_groups_update_group_success_title
7174
7275@Composable
7376fun CreateGroupScreen (
7477 onBackClick : () -> Unit ,
78+ onNavigateToGroupDashboardWithUpdateData : () -> Unit ,
79+ onNavigateToGroupDetailWithUpdateData : (Long ) -> Unit ,
7580 modifier : Modifier = Modifier ,
7681 viewModel : CreateGroupViewModel = koinViewModel(),
7782) {
@@ -80,13 +85,27 @@ fun CreateGroupScreen(
8085 EventsEffect (viewModel.eventFlow) { event ->
8186 when (event) {
8287 CreateGroupEvent .NavigateBack -> onBackClick()
88+ CreateGroupEvent .NavigateToGroupDashboardWithUpdateData ->
89+ onNavigateToGroupDashboardWithUpdateData()
90+ is CreateGroupEvent .NavigateToGroupDetailWithUpdateData ->
91+ onNavigateToGroupDetailWithUpdateData(event.groupId)
8392 }
8493 }
8594
8695 if (state.showSuccessDialog) {
96+ val title = if (state.groupId != null ) {
97+ stringResource(Res .string.feature_groups_update_group_success_title)
98+ } else {
99+ stringResource(Res .string.feature_groups_create_group_success_title)
100+ }
101+ val message = if (state.groupId != null ) {
102+ stringResource(Res .string.feature_groups_update_group_success_message)
103+ } else {
104+ stringResource(Res .string.feature_groups_create_group_success_message)
105+ }
87106 KptSuccessDialog (
88- title = stringResource( Res .string.feature_groups_create_group_success_title) ,
89- message = stringResource( Res .string.feature_groups_create_group_success_message) ,
107+ title = title ,
108+ message = message ,
90109 buttonText = stringResource(Res .string.feature_groups_ok),
91110 onConfirm = { viewModel.trySendAction(CreateGroupAction .DismissSuccessDialog ) },
92111 )
@@ -139,9 +158,14 @@ internal fun CreateGroupScreenContent(
139158 },
140159 bottomBar = {
141160 if (state.submitState is SubmitState .Idle || state.submitState is SubmitState .Submitting ) {
161+ val rightButtonText = if (state.groupId != null ) {
162+ stringResource(Res .string.feature_groups_update_group)
163+ } else {
164+ stringResource(Res .string.feature_groups_create_group_title)
165+ }
142166 KptDoubleButton (
143167 leftButtonText = stringResource(Res .string.feature_groups_cancel),
144- rightButtonText = stringResource( Res .string.feature_groups_create_group_button) ,
168+ rightButtonText = rightButtonText ,
145169 onRightButtonClick = { onAction(CreateGroupAction .CreateGroup ) },
146170 onLeftButtonClick = { onAction(CreateGroupAction .OnBackClick ) },
147171 enabledRight = state.isSubmitButtonEnabled,
@@ -197,8 +221,13 @@ private fun CreateGroupFormContent(
197221
198222 VerticalSpacer (KptTheme .spacing.xs)
199223
224+ val title = if (state.groupId != null ) {
225+ stringResource(Res .string.feature_groups_update_group)
226+ } else {
227+ stringResource(Res .string.feature_groups_create_group_title)
228+ }
200229 Text (
201- text = stringResource( Res .string.feature_groups_create_group_title) ,
230+ text = title ,
202231 style = KptTheme .typography.headlineLarge.copy(
203232 fontWeight = FontWeight .ExtraBold ,
204233 color = KptTheme .colorScheme.onSurface,
@@ -207,8 +236,13 @@ private fun CreateGroupFormContent(
207236
208237 VerticalSpacer (KptTheme .spacing.xs)
209238
239+ val subtitle = if (state.groupId != null ) {
240+ stringResource(Res .string.feature_groups_update_group_subtitle)
241+ } else {
242+ stringResource(Res .string.feature_groups_create_group_subtitle)
243+ }
210244 Text (
211- text = stringResource( Res .string.feature_groups_create_group_subtitle) ,
245+ text = subtitle ,
212246 style = KptTheme .typography.bodyLarge.copy(
213247 color = KptTheme .colorScheme.onSurfaceVariant,
214248 ),
@@ -227,10 +261,11 @@ private fun CreateGroupFormContent(
227261
228262 VerticalSpacer (KptTheme .spacing.md)
229263
230- // External Id*
264+ // External Id
231265 KptTextField (
232266 value = state.externalId,
233267 onValueChange = { onAction(CreateGroupAction .ExternalIdChanged (it)) },
268+ enabled = (state.groupId == null ),
234269 label = stringResource(Res .string.feature_groups_external_id_label),
235270 placeholder = stringResource(Res .string.feature_groups_external_id_placeholder),
236271 modifier = Modifier .fillMaxWidth(),
@@ -242,27 +277,63 @@ private fun CreateGroupFormContent(
242277 value = state.selectedOffice?.name.orEmpty(),
243278 onOptionSelected = { index, _ -> onAction(CreateGroupAction .OfficeSelected (index)) },
244279 options = state.officeOptions.map { it.name },
280+ enabled = (state.groupId == null ),
245281 label = stringResource(Res .string.feature_groups_office_label),
246282 placeholder = stringResource(Res .string.feature_groups_select_office_placeholder),
247283 modifier = Modifier .fillMaxWidth(),
248284 )
249285
250286 VerticalSpacer (KptTheme .spacing.sm)
251287
252- AddMembers (
253- state = state,
254- onAction = onAction,
255- )
288+ if (state.groupId == null ) {
289+ AddMembers (
290+ state = state,
291+ onAction = onAction,
292+ )
293+ } else if (state.selectedMembers.isNotEmpty()) {
294+ Column (
295+ verticalArrangement = Arrangement .spacedBy(KptTheme .spacing.xs),
296+ ) {
297+ Text (
298+ text = stringResource(Res .string.feature_groups_activate_add_members),
299+ style = KptTheme .typography.bodyMedium.copy(
300+ fontWeight = FontWeight .SemiBold ,
301+ color = KptTheme .colorScheme.onSurfaceVariant.copy(alpha = 0.38f ),
302+ ),
303+ modifier = Modifier .padding(bottom = KptTheme .spacing.xs),
304+ )
305+ state.selectedMembers.forEach { member ->
306+ val fullName = " ${member.firstname.orEmpty()} ${member.lastname.orEmpty()} "
307+ .trim()
308+ .ifBlank { member.displayName.orEmpty() }
309+
310+ KptSelectableItemCard (
311+ title = fullName,
312+ subtitle = member.accountNo.orEmpty(),
313+ leadingIcon = AppIcons .Person ,
314+ isSelected = false ,
315+ isInSelectionMode = false ,
316+ onClick = {},
317+ onLongClick = {},
318+ )
319+ }
320+ }
321+ }
256322
257323 VerticalSpacer (KptTheme .spacing.sm)
258324
259325 KptTextField (
260326 value = state.submittedOnDate,
261327 onValueChange = {},
262328 readOnly = true ,
329+ enabled = (state.groupId == null ),
263330 label = stringResource(Res .string.feature_groups_submitted_on_date_label),
264331 placeholder = stringResource(Res .string.feature_groups_submitted_on_date_placeholder),
265- onCalenderClick = { onAction(CreateGroupAction .SubmittedOnDatePickerToggle (true )) },
332+ onCalenderClick = if (state.groupId == null ) {
333+ { onAction(CreateGroupAction .SubmittedOnDatePickerToggle (true )) }
334+ } else {
335+ null
336+ },
266337 modifier = Modifier .fillMaxWidth(),
267338 )
268339
@@ -271,6 +342,7 @@ private fun CreateGroupFormContent(
271342 // Activate Group Radio Toggle
272343 KptRadioToggle (
273344 selected = state.isActiveGroup,
345+ enabled = (state.groupId == null ),
274346 onClick = {
275347 onAction(CreateGroupAction .ActivateGroupToggled (! state.isActiveGroup))
276348 },
@@ -285,9 +357,14 @@ private fun CreateGroupFormContent(
285357 value = state.activationDate,
286358 onValueChange = {},
287359 readOnly = true ,
360+ enabled = (state.groupId == null ),
288361 label = stringResource(Res .string.feature_groups_select_activation_date),
289362 placeholder = stringResource(Res .string.feature_groups_activation_date_hint),
290- onCalenderClick = { onAction(CreateGroupAction .ActivationDatePickerToggle (true )) },
363+ onCalenderClick = if (state.groupId == null ) {
364+ { onAction(CreateGroupAction .ActivationDatePickerToggle (true )) }
365+ } else {
366+ null
367+ },
291368 modifier = Modifier .fillMaxWidth(),
292369 )
293370 }
0 commit comments