public async Task <Boolean> alreadyRegistered(String organ) { foreach (WaitingListItem item in UserController.Instance.LoggedInUser.waitingListItems) { if (item.organType.ToString() == OrganExtensions.ToOrgan(organ).ToString() && item.organDeregisteredDate == null) { await DisplayAlert("", "This user has already registered a " + organ, "OK"); return(true); } } return(false); }
/* * Starts a new transfer to the hospital closest to the given selectedRecipient but does not add a helicopter to the map */ public async Task NewTransferWithoutAddingHelicpoter(DonatableOrgan currentOrgan, User selectedRecipient, Position donorPosition) { await InitialiseHospitalsWithoutAddingToMap(); OrganTransfer newOrganTransfer = new OrganTransfer(); newOrganTransfer.id = currentOrgan.id; newOrganTransfer.receiverId = selectedRecipient.id; //Find the position of the donor newOrganTransfer.startLat = donorPosition.Latitude; newOrganTransfer.startLon = donorPosition.Longitude; Hospital receiverHospital = null; //await InitialiseHospitalsWithoutAddingToMap(); foreach (Hospital hospital in hospitals) { if (hospital.region.Equals(selectedRecipient.region)) { receiverHospital = hospital; } } //Find the nearest hospital newOrganTransfer.endLat = receiverHospital.latitude; newOrganTransfer.endLon = receiverHospital.longitude; newOrganTransfer.organType = OrganExtensions.ToOrgan(currentOrgan.organType); Position HospitalPosition = new Position(receiverHospital.latitude, receiverHospital.longitude); newOrganTransfer.arrivalTime = new CustomDateTime(DateTime.Now.AddSeconds(distance(donorPosition.Latitude, HospitalPosition.Latitude, donorPosition.Longitude, HospitalPosition.Longitude, 0, 0) / 70)); TransplantListAPI transplantListAPI = new TransplantListAPI(); await transplantListAPI.InsertTransfer(newOrganTransfer); await transplantListAPI.SetInTransfer(currentOrgan.id, 1); }
private async void SaveProcedureButton_OnClicked(object sender, EventArgs e) { string summaryInput = InputValidation.Trim(SummaryEntry.Text); string descriptionInput = InputValidation.Trim(DescriptionEntry.Text); if (!await CheckInputs(summaryInput, descriptionInput)) { return; } currentProcedure.summary = summaryInput; currentProcedure.description = descriptionInput; currentProcedure.date = new CustomDate(DateDueEntry.Date); List <Organ> organsTrulyAffected = new List <Organ>(); foreach (var organString in organsAffected) { organsTrulyAffected.Add(OrganExtensions.ToOrgan(organString)); } currentProcedure.organsAffected = organsTrulyAffected; UserController.Instance.LoggedInUser.previousProcedures.Remove(currentProcedure); UserController.Instance.LoggedInUser.pendingProcedures.Remove(currentProcedure); if (currentProcedure.date.ToDateTime() < DateTime.Today) { UserController.Instance.LoggedInUser.previousProcedures.Add(currentProcedure); proceduresPageController.refreshProcedures(1); } else { UserController.Instance.LoggedInUser.pendingProcedures.Add(currentProcedure); proceduresPageController.refreshProcedures(0); } await uploadUser(); }
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; } } }
/* * Starts a transfer to the hospital closest to the given selectedRecipient and adds the helicopter to the map */ public async Task NewTransfer(DonatableOrgan currentOrgan, User selectedRecipient, Position donorPosition) { OrganTransfer newOrganTransfer = new OrganTransfer(); newOrganTransfer.id = currentOrgan.id; newOrganTransfer.receiverId = selectedRecipient.id; //Find the position of the donor newOrganTransfer.startLat = donorPosition.Latitude; newOrganTransfer.startLon = donorPosition.Longitude; Hospital receiverHospital = null; //await InitialiseHospitalsWithoutAddingToMap(); foreach (Hospital hospital in hospitals) { if (hospital.region.Equals(selectedRecipient.region)) { receiverHospital = hospital; } } //Find the nearest hospital newOrganTransfer.endLat = receiverHospital.latitude; newOrganTransfer.endLon = receiverHospital.longitude; newOrganTransfer.organType = OrganExtensions.ToOrgan(currentOrgan.organType); Position HospitalPosition = new Position(receiverHospital.latitude, receiverHospital.longitude); newOrganTransfer.arrivalTime = new CustomDateTime(DateTime.Now.AddSeconds(distance(donorPosition.Latitude, HospitalPosition.Latitude, donorPosition.Longitude, HospitalPosition.Longitude, 0, 0) / 70)); TransplantListAPI transplantListAPI = new TransplantListAPI(); if (await transplantListAPI.InsertTransfer(newOrganTransfer) != HttpStatusCode.OK) { await DisplayAlert("", "Failed to start transfer (failed to insert transfer)", "OK"); return; } if (await transplantListAPI.SetInTransfer(currentOrgan.id, 1) != true) { await DisplayAlert("", "Failed to start transfer (failed to set in transfer)", "OK"); return; } int TTA = (int)newOrganTransfer.arrivalTime.ToDateTimeWithSeconds().Subtract(DateTime.Now).TotalSeconds; //int waitingListId = await transplantListAPI.GetWaitingListId((int)newOrganTransfer.receiverId, newOrganTransfer.organType); //if (waitingListId == 0) { // await DisplayAlert("", "Failed to start transfer (failed to get waiting list id)", "OK"); // return; //} int waitingListId = 0; foreach (WaitingListItem item in selectedRecipient.waitingListItems) { if (item.organType == OrganExtensions.ToOrgan(currentOrgan.organType)) { waitingListId = item.id; } } AddHelicopter(donorPosition, HospitalPosition, newOrganTransfer.organType, TTA, newOrganTransfer.receiverId, waitingListId, newOrganTransfer.id ); }
/* * When the page appears, the state of the controls are reset */ protected override async void OnAppearing() { List <DonatableOrgan> donatableOrgans = await GetOrgans(); foreach (Organ item in UserController.Instance.LoggedInUser.organs) { Console.WriteLine(item); switch (item) { case Organ.LIVER: LiverCell.On = true; foreach (DonatableOrgan organ in donatableOrgans) { if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired)) { LiverCell.IsEnabled = false; } } break; case Organ.KIDNEY: KidneyCell.On = true; foreach (DonatableOrgan organ in donatableOrgans) { if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired)) { KidneyCell.IsEnabled = false; } } break; case Organ.PANCREAS: PancreasCell.On = true; foreach (DonatableOrgan organ in donatableOrgans) { if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired)) { PancreasCell.IsEnabled = false; } } break; case Organ.HEART: HeartCell.On = true; foreach (DonatableOrgan organ in donatableOrgans) { if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired)) { HeartCell.IsEnabled = false; } } break; case Organ.LUNG: LungCell.On = true; foreach (DonatableOrgan organ in donatableOrgans) { if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired)) { LungCell.IsEnabled = false; } } break; case Organ.INTESTINE: IntestineCell.On = true; foreach (DonatableOrgan organ in donatableOrgans) { if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired)) { IntestineCell.IsEnabled = false; } } break; case Organ.CORNEA: CorneaCell.On = true; foreach (DonatableOrgan organ in donatableOrgans) { if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired)) { CorneaCell.IsEnabled = false; } } break; case Organ.EAR: MiddleEarCell.On = true; foreach (DonatableOrgan organ in donatableOrgans) { if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired)) { MiddleEarCell.IsEnabled = false; } } break; case Organ.SKIN: SkinCell.On = true; foreach (DonatableOrgan organ in donatableOrgans) { if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired)) { SkinCell.IsEnabled = false; } } break; case Organ.BONE: BoneMarrowCell.On = true; foreach (DonatableOrgan organ in donatableOrgans) { if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired)) { BoneMarrowCell.IsEnabled = false; } } break; case Organ.TISSUE: ConnectiveTissueCell.On = true; foreach (DonatableOrgan organ in donatableOrgans) { if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired)) { ConnectiveTissueCell.IsEnabled = false; } } break; } } }