private async void PART_Stepper_ContinueNavigation(object sender, MaterialDesignExtensions.Controls.StepperNavigationEventArgs args) { // 发送申请 DonationMaterialListViewModel selected = (DonationMaterialListViewModel)MaterialSelectListBox.SelectedItem; if (selected == null) { MainWindow.SetSnackBarContentAndPopup("请选择要捐赠的物资"); args.Cancel = true; return; } else if (QuantityInputBox.Value == null || QuantityInputBox.Value <= 0) { MainWindow.SetSnackBarContentAndPopup("不合法的数目"); args.Cancel = true; return; } NewDonationResponse response = await NetworkHelper.GetAsync(new NewDonationRequest() { MaterialId = selected.OriginItem.Id, Quantity = (int)QuantityInputBox.Value, Address = UserInfo.HomeAddress }).Progress(ParentWindow.PART_ProgressBar); DonationViewModel = new DonationListViewModel(response.Item); DonationDetailViewModel = new DonationDetailViewModel(await NetworkHelper.GetAsync(new GetDonationDetailRequest() { UserId = UserInfo.Id, DonationId = DonationViewModel.OriginalItem.ID }).Progress(ParentWindow.PART_ProgressBar)); RefreshApplicationCardView(); }
public void donationUpdate(object sender, NewDonationResponse response) { IEnumerable <Donor> donors = response.Donors; IEnumerable <Case> cases = response.Cases; dataGridViewDonor.BeginInvoke(new upgradeDonorsDelegate(upgradeDonors), donors); dataGridViewCase.BeginInvoke(new upgradeCasesDelegate(upgradeCases), cases); }
public void donationDone(IEnumerable <Donor> donors, IEnumerable <Case> cases) { NewDonationResponse response = new NewDonationResponse(donors, cases); if (updateEvent == null) { return; } else { updateEvent(this, response); } }
public NewDonationResponse HandleNewDonationRequest(NewDonationRequest request) { NewDonationResponse ret; SqlCommand com = new SqlCommand( $"select MaterialID, MaterialName, MaterialQuantity " + $"from Materials " + $"where " + $"MaterialId = {request.MaterialId}", Connect.Connection); SqlDataAdapter da = new SqlDataAdapter(com); DataSet ds = new DataSet(); int n = da.Fill(ds, "Materials"); if (n != 0) { DateTime now = DateTime.Now; com.CommandText = $"INSERT INTO Tranc (UserId, Address, MaterialId, MaterialQuantity, TransactionState, TransactionType, StartTime, AdminId) " + $"OUTPUT INSERTED.TransactionId values ({UserId}, '{request.Address}', {request.MaterialId}, {request.Quantity}, " + $"{(int)ApplicationState.Applying}, {(int)TransactionType.DONATION}, '{now}', -1)"; // https://stackoverflow.com/questions/18373461/execute-insert-command-and-return-inserted-id-in-sql int modified = Convert.ToInt32(com.ExecuteScalar()); ret = new NewDonationResponse() { Item = new GetDonationListResponse.Item() { ID = modified, Name = ds.Tables[0].Rows[0]["MaterialName"].ToString(), Quantity = request.Quantity, State = DonationState.Applying, StartTime = now } }; } else { Console.WriteLine($"DEBUG: material {request.MaterialId} doesn't exist"); ret = new NewDonationResponse() { }; } return(ret); }
private void handleUpdate(UpdateResponse update) { if (update is NewDonationResponse) { NewDonationResponse newDonationResponse = (NewDonationResponse)update; Console.WriteLine("New donation update..."); try { IEnumerable <Donor> donors = newDonationResponse.Donors; IEnumerable <Case> cases = newDonationResponse.Cases; client.donationDone(donors, cases); } catch (TeledonException e) { Console.WriteLine(e.StackTrace); } } }