/// <summary> /// This method determines which basket to give the order to. /// /// Test Case: Req-8, Req-9, Req-11 /// </summary> /// <param name="delivery_location">Object containing the delivery location</param> /// <param name="order_id">The related order id</param> /// <returns>KeyValuePair: basket_id, distance to customer</returns> private KeyValuePair <int, int> FindAvailableBasket(LocationCoordinates delivery_location, int order_id) { int basket_id = 0; int min_distance = 9999; // KeyValuePair - Key = bsaket_id; Value = location_cell_id var basketList = new List <KeyValuePair <int, int> >(); var basket = new BasketDAL(); var locationDAL = new LocationDAL(); basketList = basket.BasketHasStock(order_id); // get basket that is closest to delivery location foreach (KeyValuePair <int, int> kvp in basketList) { var basket_location = locationDAL.GetLocationCell(kvp.Value); int basket_distance = locationDAL.CalculateDistanceToCustomer(delivery_location.x, delivery_location.y, basket_location.x_coord, basket_location.y_coord); if (basket_distance < min_distance) { min_distance = basket_distance; basket_id = kvp.Key; } } return(new KeyValuePair <int, int>(basket_id, min_distance)); }
/// <summary> /// This method returns the list of orders for the basket that have not yet been delivered /// /// Test Case: Req-9 /// </summary> /// <param name="basket_id">The basket id requesting list</param> /// <returns>List of undelivered CustOrder(s)</returns> public List <CustOrder> GetUndeliveredBasketOrders(int basket_id) { List <CustOrder> orderList = new List <CustOrder>(); var locDAL = new LocationDAL(); using (SqlConnection conn = new SqlConnection(defaultConnection)) { string query = "select co.order_id, co.customer_id, co.location_id, l.bay, l.row_no, l.seat_no, co.total_price, co.basket_id, " + "co.expected_delivery_time, co.actual_delivery_time, co.submit_ts, co.vendor_accepted_ts, " + "co.delivered_ts, co.order_notes, co.feedback_stars, co.feedback_notes, co.vendor_notes " + "from cust_order co inner join Location l on co.location_id = l.location_id " + "where co.basket_id = @basket_id and co.delivered_ts is null"; using (SqlCommand myCmd = new SqlCommand(query, conn)) { SqlDataReader dr = null; conn.Open(); myCmd.Parameters.AddWithValue("@basket_id", basket_id); dr = myCmd.ExecuteReader(); while (dr.Read()) { CustOrder cust_order = new CustOrder(); if (util.IsNumeric(dr["order_id"].ToString().Trim())) { cust_order.order_id = int.Parse(dr["order_id"].ToString().Trim()); } if (util.IsNumeric(dr["customer_id"].ToString().Trim())) { cust_order.customer_id = int.Parse(dr["customer_id"].ToString().Trim()); cust_order.customer = GetCustomerName(int.Parse(dr["customer_id"].ToString().Trim())); } if (util.IsNumeric(dr["location_id"].ToString().Trim())) { cust_order.location_id = int.Parse(dr["location_id"].ToString().Trim()); } cust_order.bay = dr["bay"].ToString().Trim(); cust_order.row_no = dr["row_no"].ToString().Trim(); cust_order.seat_no = dr["seat_no"].ToString().Trim(); if (util.IsNumeric(dr["total_price"].ToString().Trim())) { cust_order.total_price = decimal.Parse(dr["total_price"].ToString().Trim()); } if (util.IsNumeric(dr["basket_id"].ToString().Trim())) { cust_order.basket_id = int.Parse(dr["basket_id"].ToString().Trim()); } if (util.IsNumeric(dr["expected_delivery_time"].ToString().Trim())) { cust_order.expected_delivery_time = int.Parse(dr["expected_delivery_time"].ToString().Trim()); } if (util.IsNumeric(dr["actual_delivery_time"].ToString().Trim())) { cust_order.actual_delivery_time = int.Parse(dr["actual_delivery_time"].ToString().Trim()); } if (util.IsDate(dr["submit_ts"].ToString().Trim())) { cust_order.submit_ts = DateTime.Parse(dr["submit_ts"].ToString().Trim()); } if (util.IsDate(dr["vendor_accepted_ts"].ToString().Trim())) { cust_order.vendor_accepted_ts = DateTime.Parse(dr["vendor_accepted_ts"].ToString().Trim()); } if (util.IsDate(dr["delivered_ts"].ToString().Trim())) { cust_order.delivered_ts = DateTime.Parse(dr["delivered_ts"].ToString().Trim()); } if (util.IsNumeric(dr["feedback_stars"].ToString().Trim())) { cust_order.feedback_stars = int.Parse(dr["feedback_stars"].ToString().Trim()); } cust_order.order_notes = dr["order_notes"].ToString().Trim(); cust_order.feedback_notes = dr["feedback_notes"].ToString().Trim(); cust_order.vendor_notes = dr["vendor_notes"].ToString().Trim(); cust_order.order_items = GetOrderItems(cust_order.order_id); orderList.Add(cust_order); } return(orderList); } } }