public void ReturnItems(IList <PurchaseTransaction_Item> theItems, LoginSession theSession)
        {
            IList <ReturnTransactionItem> newItems = this.convertItemsToReturnItems(theItems);

            ReturnTransaction theTransaction = new ReturnTransaction
            {
                Employee_id = theSession.Id.ToString(),
                returnTime  = DateTime.Now
            };

            var id = this.returnRepo.AddOne(theTransaction);

            foreach (var returnTransactionItem in newItems)
            {
                returnTransactionItem.ReturnTransactionId = id;
            }

            try
            {
                this.returnItemRepo.AddList(newItems);
            }
            catch (Exception)
            {
                this.DeleteTransaction(newItems, id);
            }
        }
Пример #2
0
        /// <summary>
        /// This method updates a return transaction.
        /// </summary>
        /// <param name="transaction">A return transaction</param>

        internal void UpdateTransaction(ReturnTransaction transaction)
        {
            string updateStatement =
                @"Update [dbo].[ReturnTransaction] 
                SET [FineDueTotal] = @newFineDueTotal,
                [RefundDueTotal]=@newRefundDueTotal
                Where ReturnID = @returnID";

            using (SqlConnection connection = RentMeDBConnection.GetConnection())
            {
                connection.Open();
                using (SqlCommand cmd = new SqlCommand(updateStatement, connection))
                {
                    cmd.Parameters.AddWithValue("@newFineDueTotal", transaction.FineDueTotal);
                    cmd.Parameters.AddWithValue("@newRefundDueTotal", transaction.RefundDueTotal);
                    cmd.Parameters.AddWithValue("@returnID", transaction.ReturnID);
                    cmd.ExecuteNonQuery();
                    connection.Close();
                }
            }
        }
Пример #3
0
        /// <summary>
        /// Method that returns all the return transactions
        /// </summary>
        /// <returns>a list of return transactions</returns
        public List <ReturnTransaction> GetAllReturnTransactions(int customerId)
        {
            string sqlStatement = "Select return_transaction_id as ReturnTransactionID, " +
                                  "return_date as ReturnDate, checked_in_by as CheckedinBy, concat(first_name, ' ', last_name) as EmployeeName, " +
                                  "late_fee as LateFee, refund_amount as RefundAmount from return_transaction join employee on checked_in_by = employee_id " +
                                  "where customer_id=@CustomerId;";

            Console.WriteLine(sqlStatement);

            List <ReturnTransaction> transactionList = new List <ReturnTransaction>();

            using (SqlConnection connection = FurnitureRentalsDBConnection.GetConnection())
            {
                connection.Open();

                using (SqlCommand selectCommand = new SqlCommand(sqlStatement, connection))
                {
                    selectCommand.Parameters.AddWithValue("@CustomerID", customerId);

                    using (SqlDataReader reader = selectCommand.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            ReturnTransaction transaction = new ReturnTransaction();
                            transaction.ReturnTransactionID = (int)reader["ReturnTransactionID"];
                            transaction.ReturnDate          = (DateTime)reader["ReturnDate"];
                            transaction.CheckedinBy         = (int)reader["CheckedinBy"];
                            transaction.EmployeeName        = reader["EmployeeName"].ToString();
                            transaction.LateFee             = (decimal)reader["LateFee"];
                            transaction.RefundAmount        = (decimal)reader["RefundAmount"];

                            transactionList.Add(transaction);
                        }
                    }
                }
            }

            return(transactionList);
        }
Пример #4
0
        /// <summary>
        /// This method creates a return transaction.
        /// </summary>
        /// <param name="transaction">A return transaction</param>
        /// <returns>The return transaction ID</returns>
        public int CreateReturnTransaction(ReturnTransaction transaction)
        {
            string insertStatement =
                @"INSERT INTO dbo.ReturnTransaction
            (ReturnDate
             , FineDueTotal
             , RefundDueTotal
             , EmployeeID ) 
            VALUES
           (@returnDate
           ,@fineDueTotal
           ,@refundDueTotal
           ,@employeeID ); 
           SELECT SCOPE_IDENTITY()";



            using (SqlConnection connection = RentMeDBConnection.GetConnection())

            {
                connection.Open();

                using (SqlCommand cmd = new SqlCommand(insertStatement, connection))

                {
                    cmd.Parameters.AddWithValue("@returnDate", transaction.ReturnDate);
                    cmd.Parameters.AddWithValue("@fineDueTotal", 0);
                    cmd.Parameters.AddWithValue("@refundDueTotal", 0);
                    cmd.Parameters.AddWithValue("@employeeID", transaction.EmployeeID);
                    var idObject = cmd.ExecuteScalar();
                    var id       = int.Parse(idObject.ToString());
                    connection.Close();
                    return(id);
                }
            }
        }
Пример #5
0
        /// <summary>
        /// Method that posts the return transactions of a given customer
        /// </summary>
        /// <param name="returnTransaction">return transaction</param>
        /// <param name="transactionList">list of items</param>
        /// <returns>true if successfull otherwise false</returns>
        public bool PostReturnTransaction(ReturnTransaction returnTransaction, List <ReturnCart> ReturnItemList)
        {
            SqlTransaction sqlTransaction = null;

            using (SqlConnection connection = FurnitureRentalsDBConnection.GetConnection())
            {
                string sqlStatement = "INSERT INTO Return_Transaction (customer_id, return_date, " +
                                      "checked_in_by, late_fee, refund_amount) " +
                                      "VALUES (@CustomerID, @ReturnDate, @CheckedinBy, @LateFee, @RefundAmount); SELECT SCOPE_IDENTITY() ";

                connection.Open();
                sqlTransaction = connection.BeginTransaction();

                using (SqlCommand insertCommand = new SqlCommand(sqlStatement, connection, sqlTransaction))
                {
                    insertCommand.Connection = connection;
                    insertCommand.Parameters.AddWithValue("@CustomerID", returnTransaction.CustomerID);
                    insertCommand.Parameters.AddWithValue("@ReturnDate", returnTransaction.ReturnDate);
                    insertCommand.Parameters.AddWithValue("@CheckedinBy", returnTransaction.CheckedinBy);
                    insertCommand.Parameters.AddWithValue("@LateFee", returnTransaction.LateFee);
                    insertCommand.Parameters.AddWithValue("@RefundAmount", returnTransaction.RefundAmount);
                    returnTransaction.ReturnTransactionID = Convert.ToInt32(insertCommand.ExecuteScalar());

                    if (returnTransaction.ReturnTransactionID > 0)
                    {
                        this.InsertReturnItem(connection, returnTransaction.ReturnTransactionID, ReturnItemList, sqlTransaction);
                    }

                    var rentalIdList = new List <int>();
                    foreach (ReturnCart returnItem in ReturnItemList)
                    {
                        if (!rentalIdList.Contains(returnItem.RentalID))
                        {
                            rentalIdList.Add(returnItem.RentalID);
                        }
                        this.furnitureDBDAL.UpdateInventory(returnItem.FurnitureID, returnItem.Quantity, connection, sqlTransaction);
                    }


                    foreach (int rentalTransactionId in rentalIdList)
                    {
                        List <Furniture> furnitureList = this.rentalItemDBDAL.GetRentalItemByTransactionID(rentalTransactionId, connection, sqlTransaction);

                        bool isCloseTransaction    = true;
                        int  totalQuantityRented   = 0;
                        int  totalQuantityReturned = 0;
                        foreach (Furniture furniture in furnitureList)
                        {
                            totalQuantityRented   = furniture.QuantityOrdered;
                            totalQuantityReturned = this.GetQuantityReturned(furniture.RentalItemID, connection, sqlTransaction);
                            if (totalQuantityRented != totalQuantityReturned)
                            {
                                isCloseTransaction = false;
                            }
                        }

                        if (isCloseTransaction)
                        {
                            this.rentalTransactionDBDAL.CloseRentalTransaction(rentalTransactionId, connection, sqlTransaction);
                        }
                    }

                    sqlTransaction.Commit();
                    return(true);
                }
            }
        }
Пример #6
0
 /// <summary>
 ///     Deletes the transaction.
 /// </summary>
 /// <param name="entity">The entity.</param>
 public void DeleteTransaction(ReturnTransaction entity)
 {
     this.returnTransaction.Delete(entity);
 }
Пример #7
0
 /// <summary>
 ///     Adds the and return transaction.
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <returns></returns>
 public int AddAndReturnTransaction(ReturnTransaction entity)
 {
     return(this.returnTransaction.AddAndReturn(entity));
 }
 /// <summary>
 /// Method that posts the return transactions of a given customer
 /// </summary>
 /// <param name="returnTransaction">return transaction</param>
 /// <param name="transactionList">list of items</param>
 /// <returns>true if successfull otherwise false</returns>
 public bool PostReturnTransaction(ReturnTransaction returnTransaction, List <ReturnCart> transactionList)
 {
     return(this.returnTransactionDBDAL.PostReturnTransaction(returnTransaction, transactionList));
 }
Пример #9
0
 /// <summary>
 /// This method updates the transaction.
 /// </summary>
 /// <param name="transaction"></param>
 internal void UpdateTransaction(ReturnTransaction transaction)
 {
     this.returnDataSource.UpdateTransaction(transaction);
 }
Пример #10
0
 /// <summary>
 /// This method returns an int of return transaction.
 /// </summary>
 /// <param name="transaction"></param>
 /// <returns>An int of returnTransactionID</returns>
 internal int CreateReturnTransaction(ReturnTransaction transaction)
 {
     return(this.returnDataSource.CreateReturnTransaction(transaction));
 }
Пример #11
0
        /// <summary>
        /// This method submits a return when the button is clicked.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonReturn_Click(object sender, EventArgs e)
        {
            ReturnTransaction transaction = new ReturnTransaction();

            transaction.EmployeeID = employeeID;
            transaction.ReturnDate = DateTime.Now;
            int returnID = returnTransactionController.CreateReturnTransaction(transaction);

            transaction.ReturnID = returnID;
            decimal finalBalance = 0;

            foreach (var itemToReturn in itemsToReturn)
            {
                var returnItem = new ReturnItem();
                returnItem.ReturnID     = returnID;
                returnItem.RentalID     = itemToReturn.RentalID;
                returnItem.SerialNumber = itemToReturn.SerialNumber;
                returnItem.Quantity     = itemToReturn.Quantity;
                var furnitures          = furnitureController.GetFurnituresBySerialNumber(returnItem.SerialNumber);
                var itemScheduledReturn = rentalTransactionController.GetRentalTransactionByRentalID(returnItem.RentalID);

                var daysLate  = DayNum(DateTime.Now.Date.ToString(), itemScheduledReturn.ScheduledReturn.ToString()) + 1;
                var daysEarly = DayNum(itemScheduledReturn.ScheduledReturn.ToString(), DateTime.Now.Date.ToString()) - 1;

                if (furnitures.Count > 0)
                {
                    var furniture  = furnitures.FirstOrDefault();
                    int resultDiff = DateTime.Compare(DateTime.Now.Date, itemScheduledReturn.ScheduledReturn);
                    if (resultDiff < 0)
                    {
                        returnItem.RefundDue = Convert.ToDecimal(furniture.DailyRentalRate * daysEarly * returnItem.Quantity);
                        returnItem.FineDue   = 0;
                        finalBalance        += returnItem.RefundDue;
                    }
                    else if (resultDiff == 0)
                    {
                        returnItem.RefundDue = 0;
                        returnItem.FineDue   = 0;
                    }
                    else
                    {
                        returnItem.FineDue   = Convert.ToDecimal((furniture.FineRate + furniture.DailyRentalRate) * daysLate * returnItem.Quantity);
                        returnItem.RefundDue = 0;
                        finalBalance        -= returnItem.FineDue;
                    }
                }
                var result = returnController.CreateReturnItem(returnItem);
                if (!result)
                {
                    MessageBox.Show("Failed to Return Items.");
                    return;
                }
            }

            if (finalBalance > 0)
            {
                transaction.RefundDueTotal = finalBalance;
                transaction.FineDueTotal   = 0;
            }
            else
            {
                transaction.FineDueTotal   = Math.Abs(finalBalance);
                transaction.RefundDueTotal = 0;
            }
            returnTransactionController.UpdateTransaction(transaction);
            MessageBox.Show("Successfully Returned Furniture Items");
            buttonSearch_Click(sender, e);
            MessageBox.Show("Fine Due: " + "$ " + transaction.FineDueTotal.ToString() + "\n" + "Refund Due: " + "$ " + transaction.RefundDueTotal.ToString());
            this.Clear();
        }