/*
         * 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));
            }
        }
Exemplo n.º 2
0
        /*
         * 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");
            }
        }
Exemplo n.º 3
0
        /*
         * 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();
        }
Exemplo n.º 4
0
 /*
  * 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");
     }
 }
Exemplo n.º 5
0
        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;
                }
            }
        }