/* * Opens a new modal which displays an overview of the tapped WaitingListItem */ public async void Handle_ItemTapped(object sender, EventArgs args) { WaitingListItem tapped = (WaitingListItem)TransplantList.SelectedItem; if (tapped != null) { await Navigation.PushAsync(new SingleWaitingListItemPage(tapped, true)); } }
/* * Shows a dialog which allows a user to select a reason for de-registering * the selected WaitingListItem. */ public async void showDeregisteringOptions(WaitingListItem item) { var action = await DisplayActionSheet("Select the reason code: ", "Cancel", "", "1: Error while registering", "2: Disease Cured", "3: Receiver Deceased", "4: Successful Transplant"); if (action == "1: Error while registering") { await deregister(item, 1); await Navigation.PopAsync(); MessagingCenter.Send <ContentPage>(this, "REFRESH_WAITING_LIST_ITEMS"); } else if (action == "2: Disease Cured") { try { User user = await new UserAPI().getUser(item.userId, ClinicianController.Instance.AuthToken); if (user != null && user.currentDiseases.Count > 0) { await Navigation.PushModalAsync(new DiseaseCuredDeregisterPage(item, this)); } else { await DisplayAlert("Alert", "There are no un-cured diseases for this user", "OK"); } } catch (HttpRequestException) { await DisplayAlert("Connection Error", "Failed to reach the server", "OK"); } } else if (action == "3: Receiver Deceased") { await Navigation.PushModalAsync(new DeceasedDeregisterPage(item, this)); } else if (action == "4: Successful Transplant") { await deregister(item, 1); await Navigation.PopAsync(); MessagingCenter.Send <ContentPage>(this, "REFRESH_WAITING_LIST_ITEMS"); } }
/* * Constructor which initialises the entries of the waiting list items listview. */ public SingleWaitingListItemPage(WaitingListItem waitingListItem, Boolean showDeregisterButton) { InitializeComponent(); Title = "Waiting list item"; this.item = waitingListItem; OrganTypeEntry.Text = OrganExtensions.ToString(waitingListItem.organType); RegisteredDateEntry.Text = waitingListItem.organRegisteredDate.day + " of " + dateTimeFormat.GetAbbreviatedMonthName(waitingListItem.organRegisteredDate.month) + ", " + waitingListItem.organRegisteredDate.year; DeregisteredDateEntry.Text = waitingListItem.organDeregisteredDate != null ? waitingListItem.organDeregisteredDate.day + " of " + dateTimeFormat.GetAbbreviatedMonthName(waitingListItem.organDeregisteredDate.month) + ", " + waitingListItem.organDeregisteredDate.year : "N/A"; //DeregisterCodeEntry.Text = //waitingListItem.OrganDeregisteredCode != 0 ? waitingListItem.OrganDeregisteredCode.ToString() : "N/A"; DeregisterButton.IsVisible = showDeregisterButton; IDEntry.Text = waitingListItem.id.ToString(); }
/* * De-registers the given WaitingListItem and saves the changes * to the server. */ public async Task deregister(WaitingListItem item, int reasonCode) { try { item.organDeregisteredDate = new CustomDate(DateTime.Now); item.organDeregisteredCode = reasonCode; // HttpStatusCode code = await new TransplantListAPI().updateItem(item); if (code != HttpStatusCode.Created) { await DisplayAlert( "Failed to de-register item", "Server error", "OK"); } } catch (HttpRequestException) { await DisplayAlert("Connection Error", "Failed to reach the server", "OK"); } }
public async void Handle_RegisterClicked(object sender, EventArgs args) { String selectedOrgan = (String)OrganPicker.SelectedItem; if (selectedOrgan != null && !(await alreadyRegistered(selectedOrgan))) { User user = UserController.Instance.LoggedInUser; WaitingListItem newItem = new WaitingListItem(); String[] words = selectedOrgan.Split(' '); String organ = String.Join("-", words); organ = organ.ToLower(); newItem.organType = OrganExtensions.ToOrgan(organ); newItem.userId = user.id; newItem.organRegisteredDate = new CustomDate(DateTime.Today); UserController.Instance.LoggedInUser.waitingListItems.Add(newItem); UserAPI userAPI = new UserAPI(); HttpStatusCode code = await userAPI.UpdateUser(user, ClinicianController.Instance.AuthToken); switch (code) { case HttpStatusCode.Created: await DisplayAlert("", "User successfully updated", "OK"); NoDataLabel.IsVisible = false; WaitingListItemsList.IsVisible = true; SortingInput.IsVisible = true; await resetWaitingListItems(); await setupPage(); break; case HttpStatusCode.BadRequest: await DisplayAlert("", "User update failed (400)", "OK"); break; case HttpStatusCode.ServiceUnavailable: await DisplayAlert("", "Server unavailable, check connection", "OK"); break; case HttpStatusCode.InternalServerError: await DisplayAlert("", "Server error, please try again", "OK"); break; } } }