Пример #1
0
        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));
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
        }
Пример #6
0
        public object addTransaction(TransactionAddDto transactionAdd)
        {
            object response = transactionService.addTransaction(transactionAdd);

            return(response);
        }
Пример #7
0
        /// <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);
            }
        }
Пример #8
0
        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();
        }