public async Task <IActionResult> AddTransaction(TransactionAddDto newTransaction) { ServiceResponse <List <TransactionGetDto> > response = await _transactionService.AddTransaction(newTransaction); if (response.Data == null) { return(NotFound(response)); } return(Ok(response)); }
public object addTransaction(TransactionAddDto transactionAddDto) { MySqlCommand insertCommand = new MySqlCommand("insert into Transaction(transactionName, transactionAmount, transactionDate, categoryId, transactionNote, entityId) values(@transactionName, @transactionAmount, @transactionDate, @categoryId, @transactionNote, @entityId)"); insertCommand.Parameters.AddWithValue("@transactionName", transactionAddDto.transactionName); insertCommand.Parameters.AddWithValue("@transactionAmount", transactionAddDto.transactionAmount); insertCommand.Parameters.AddWithValue("@transactionDate", transactionAddDto.transactionDate); insertCommand.Parameters.AddWithValue("@categoryId", transactionAddDto.categoryId); insertCommand.Parameters.AddWithValue("@transactionNote", transactionAddDto.transactionNote); insertCommand.Parameters.AddWithValue("@entityId", transactionAddDto.entityId); int row = dBAccess.executeQuery(insertCommand); if (row < 0) { throw new Exception(); } else { SuccessResponse successResponse = new SuccessResponse(); return(successResponse); } }
public ActionResult <TransactionReadDto> AddTransaction(TransactionAddDto transactionAddDto) { Book book = _repo.GetBookById(transactionAddDto.BookId); if (book == null) { return(NotFound()); } if (book.IsAvaible == false) { return(Forbid()); } var usrId = Int32.Parse(User.Claims.First(p => p.Type == "id").Value); if (book.UserId == usrId) { return(Forbid()); } var transactionModel = _mapper.Map <Transaction>(transactionAddDto); transactionModel.DateTimeStart = DateTime.Now; transactionModel.DateTimeEnd = DateTime.Now.AddDays(transactionAddDto.DaysOfRentalTime); transactionModel.Status = TransactionStatus.Pending; transactionModel.RoomId = Guid.NewGuid().ToString(); transactionModel.CustomerId = Int32.Parse(User.Claims.First(p => p.Type == "id").Value); _repo.AddTransaction(transactionModel); book.IsAvaible = false; _repo.SaveChanges(); var tReadDto = _mapper.Map <TransactionReadDto>(transactionModel); tReadDto.Customer = _repo.GetUserById(usrId); return(Ok(tReadDto)); }
private void button2_Click(object sender, EventArgs e) { if (transactionCount < 1) { MessageBox.Show("Please Add Transactions"); return; } for (int i = 0; i < transactionCount; i++) { string NametextBox = "textBox" + i.ToString(); Control ctl = this.Controls.Find(NametextBox, true).FirstOrDefault(); TextBox tb = (TextBox)ctl; if (string.IsNullOrEmpty(tb.Text)) { MessageBox.Show("You are missing field <Transaction Name> for a particular Transaction"); return; } string transactionName = tb.Text; string categoryBox = "categoryComboBox" + i.ToString(); string entityBox = "entityComboBox" + i.ToString(); string amountTextBox = "amountTextBox" + i.ToString(); string picker = "picker" + i.ToString(); Control categoryControl = this.Controls.Find(categoryBox, true).FirstOrDefault(); ComboBox categoryCombo = (ComboBox)categoryControl; if (categoryCombo.SelectedIndex == -1) { MessageBox.Show("You are missing field <Category> for a particular Transaction"); return; } KeyValuePair <string, int> CategoryKeyValue = (KeyValuePair <string, int>)categoryCombo.SelectedItem; int category = CategoryKeyValue.Value; Control entityControl = this.Controls.Find(entityBox, true).FirstOrDefault(); ComboBox entityCombo = (ComboBox)entityControl; if (entityCombo.SelectedIndex == -1) { MessageBox.Show("You are missing field <Entity> for a particular Transaction"); return; } KeyValuePair <string, int> EntityKeyValue = (KeyValuePair <string, int>)entityCombo.SelectedItem; int entity = EntityKeyValue.Value; Control amountControl = this.Controls.Find(amountTextBox, true).FirstOrDefault(); TextBox amountText = (TextBox)amountControl; if (string.IsNullOrEmpty(amountText.Text)) { MessageBox.Show("You are missing field <Amount> for a particular Transaction"); return; } if (!amountText.Text.All(char.IsDigit)) { MessageBox.Show("You have provided Non-Numeric value for field <Amount> for a particular Transaction"); return; } double amount = double.Parse(amountText.Text); Control timeControl = this.Controls.Find(picker, true).FirstOrDefault(); DateTimePicker timePicker = (DateTimePicker)timeControl; DateTime transactionDate = timePicker.Value; string note = "Bulk Transaction Add"; TransactionAddDto transactionAdd = new TransactionAddDto(); transactionAdd.transactionName = transactionName; transactionAdd.transactionNote = note; transactionAdd.transactionAmount = amount; transactionAdd.transactionDate = transactionDate; transactionAdd.categoryId = category; transactionAdd.entityId = entity; object response = transactionController.addTransaction(transactionAdd); } MessageBox.Show("Bulk Transactions Added Successfully"); this.refreshTransactionList(); this.Hide(); }
public async Task <ServiceResponse <List <TransactionGetDto> > > AddTransaction(TransactionAddDto newTransaction) { ServiceResponse <List <TransactionGetDto> > serviceResponse = new ServiceResponse <List <TransactionGetDto> >(); Transaction transaction = _mapper.Map <Transaction>(newTransaction); try { await _context.Transactions.AddAsync(transaction); await _context.SaveChangesAsync(); serviceResponse.Data = (_context.Transactions.Select(u => _mapper.Map <TransactionGetDto>(u))).ToList(); } catch (Exception ex) { serviceResponse.Success = false; serviceResponse.Message = ex.Message; } return(serviceResponse); }
public object addTransaction(TransactionAddDto transactionAdd) { object response = transactionService.addTransaction(transactionAdd); return(response); }
/// <summary> /// Создание новой транзакции /// </summary> /// <param name="transaction">Данные транзакции</param> /// <param name="balanceService">Менеджер балансов</param> /// <returns>int</returns> public async Task <(bool, string, int)> CreateTransaction(TransactionAddDto transaction, IBalanceDtoManager balanceService) { try { //получить баланс отправителя var balanceSender = await balanceService.GetByUserIdAsync(transaction.UserId); if (!balanceSender.Item1) { return(false, balanceSender.Item2, 400); } //проверить соотношение баланса отправителя и размер транзакции if (balanceSender.Item3.Value < transaction.Value) { return(false, "Баланс отправителя меньше размера транзакции", 400); } if (transaction.Value <= 0) { return(false, "Размер транзакции невозможен для исполнения (ноль или отрицательный)", 400); } //получить баланс получателя var balanceRecepient = await balanceService.GetByUserIdAsync(transaction.RecepientId); if (!balanceRecepient.Item1) { return(false, balanceRecepient.Item2, 500); } //сформировать новую транзакцию на основе входящих данных var newT = new TransactionDto() { ExecutionDate = DateTime.Now, Value = transaction.Value, BalanceStorages = new List <BalanceStorageDto>() }; //сформировать список истории балансов для новой транзакции //1. Баланс отправителя до транзакции newT.BalanceStorages.Add(new BalanceStorageDto() { UserId = transaction.UserId, IsSender = true, IsBefore = true, Value = balanceSender.Item3.Value }); //2. Баланс отправителя после транзакции newT.BalanceStorages.Add(new BalanceStorageDto() { UserId = transaction.UserId, IsSender = true, IsBefore = false, Value = balanceSender.Item3.Value - transaction.Value }); //3. Баланс получателя до транзакции newT.BalanceStorages.Add(new BalanceStorageDto() { UserId = transaction.RecepientId, IsSender = false, IsBefore = true, Value = balanceRecepient.Item3.Value }); //4. Баланс получателя после транзакции newT.BalanceStorages.Add(new BalanceStorageDto() { UserId = transaction.RecepientId, IsSender = false, IsBefore = false, Value = balanceRecepient.Item3.Value + transaction.Value }); // добавить транзакцию var rezult = await AddAsync(newT); if (!rezult.Item1) { return(false, rezult.Item2, 500); } // установить текущий баланс отправителю balanceSender.Item3.Value = balanceSender.Item3.Value - transaction.Value; var updatedEntity = Mapper.Map <BalanceDto>(balanceSender.Item3); var rezultUpdateSender = await balanceService.UpdateAsync(updatedEntity); if (!rezultUpdateSender.Item1) { return(false, rezultUpdateSender.Item2, 500); } // установить текущий баланс получателю balanceRecepient.Item3.Value = balanceRecepient.Item3.Value + transaction.Value; var rezultUpdateRecepient = await balanceService.UpdateAsync(balanceRecepient.Item3); if (!rezultUpdateRecepient.Item1) { return(false, rezultUpdateRecepient.Item2, 500); } // сохранить изменения var rezultSave = await SaveChangesAsync(); return(true, string.Empty, 200); } catch (Exception e) { return(false, e.Message, 500); } }
private void submit_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(transactionName.Text)) { MessageBox.Show("Please Enter Transaction Name"); return; } if (string.IsNullOrEmpty(amount.Text)) { MessageBox.Show("Please Enter Transaction Amount"); return; } if (!amount.Text.All(char.IsDigit)) { MessageBox.Show("Please Enter Numeric Amount"); return; } if (string.IsNullOrEmpty(notes.Text)) { MessageBox.Show("Please Enter a Transaction Note"); return; } if (this.comboBox2.SelectedIndex == -1) { MessageBox.Show("Please Select a Category"); return; } if (this.entityComboBox.SelectedIndex == -1) { MessageBox.Show("Please Select an Entity"); return; } string transaction_Name = transactionName.Text; double transaction_Amount = double.Parse(amount.Text); string transaction_notes = notes.Text; DateTime tansaction_date = dateTimePicker1.Value; TransactionAddDto transactionAdd = new TransactionAddDto(); transactionAdd.transactionName = transaction_Name; transactionAdd.transactionNote = transaction_notes; transactionAdd.transactionAmount = transaction_Amount; transactionAdd.transactionDate = tansaction_date; KeyValuePair <string, int> keyValueCategory = (KeyValuePair <string, int>)comboBox2.SelectedItem; KeyValuePair <string, int> keyValueEntity = (KeyValuePair <string, int>)entityComboBox.SelectedItem; int categoryValue = keyValueCategory.Value; int EntityValue = keyValueEntity.Value; transactionAdd.categoryId = categoryValue; transactionAdd.entityId = EntityValue; object response = transactionController.addTransaction(transactionAdd); if (response is Exception) { MessageBox.Show("Error Adding Category"); } else { MessageBox.Show("Transaction Added Successfully"); } this.refreshTransactionList(); this.Hide(); }