/* * 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; } } }