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();
        }
Example #2
0
        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);
         }
     }
 }