/// <summary>
        /// Searching order by condition.
        /// </summary>
        /// <param name="where">Condition for searching.</param>
        /// <param name="isDelete">True if these orders of oder is deleted, false otherwise.</param>
        /// <returns>List object of order type.</returns>
        public List<Order> SearchOrder(String where, bool isDelete)
        {
            String query = "SELECT oos.OrderOfService_Id, oos.Company_Id,"
                           + " oos.Employee_Id, a.Account_UserName, c.Company_Name,"
                           + " oos.OrderOfService_Description,oos.OrderOfService_PaymentMethod,"
                           + " oos.OrderOfService_PaymentDate,oos.OrderOfService_BillDate,"
                           + " oos.OrderOfService_Status,oos.OrderOfService_IsDelete"
                           + " FROM Account a JOIN Employee e ON e.Employee_Id = a.Employee_Id"
                           + " JOIN OrderOfService oos ON oos.Employee_Id = e.Employee_Id"
                           + " JOIN Company c ON c.Company_Id = oos.Company_Id"
                           + " WHERE oos.OrderOfService_IsDelete = '{0}' {1}";

            query = String.Format(query, isDelete, where);
            DBHelper.Instance.OpenConnection();
            SqlDataReader reader = DBHelper.Instance.ExecuteReaderSQL(query);

            List<Order> list = new List<Order>();

            while (reader.Read())
            {
                Order order = new Order();
                order.OrderOfService_Id = reader.GetGuid(0);
                order.Company_Id = reader.GetGuid(1);
                order.Employee_Id = reader.GetGuid(2);
                order.Account_UserName = reader.GetString(3);
                order.Company_Name = reader.GetString(4);
                order.OrderOfService_Description = reader.GetString(5);
                order.OrderOfService_PaymentMethod = reader.GetString(6);
                order.OrderOfService_PaymentDate = reader.GetDateTime(7).ToShortDateString();
                order.OrderOfService_BillDate = reader.GetDateTime(8).ToShortDateString();
                switch (reader.GetInt32(9))
                {
                    case 0:
                        order.OrderOfService_Status = "Pending";
                        break;
                    case 99:
                        order.OrderOfService_Status = "In Progress";
                        break;
                    case 1:
                        order.OrderOfService_Status = "Resolved";
                        break;
                    default:
                        order.OrderOfService_Status = "";
                        break;
                }

                list.Add(order);
            }
            DBHelper.Instance.CloseConnection();

            return list;
        }
        private void FillDataToOrder(Order order, OrderOfService orderService)
        {
            order.OrderOfService_Id = orderService.OrderOfService_Id;
            order.Company_Id = orderService.Company_Id;
            order.Employee_Id = orderService.Employee_Id;
            order.OrderOfService_BillDate = orderService.OrderOfService_BillDate.ToShortDateString();
            order.OrderOfService_Description = orderService.OrderOfService_Description;
            order.OrderOfService_IsDelete = orderService.OrderOfService_IsDelete;
            order.OrderOfService_PaymentDate = orderService.OrderOfService_PaymentDate.ToShortDateString();
            order.OrderOfService_PaymentMethod = orderService.OrderOfService_PaymentMethod;
            switch (orderService.OrderOfService_Status)
            {
                case 0:
                    order.OrderOfService_Status = "Pending";
                    break;
                case 99:
                    order.OrderOfService_Status = "In Progress";
                    break;
                case 1:
                    order.OrderOfService_Status = "Resolved";
                    break;
                default: break;
            }

            CompanyBLL CB = new CompanyBLL();
            DataRow company = CB.Company_ShowOnewDisplay(orderService.Company_Id.ToString());
            order.Company_Name = company["Company_Name"].ToString();

            AccountBusiness AB = new AccountBusiness();
            Account account = AB.GetAccountOfEmployee(orderService.Employee_Id);
            order.Account_UserName = account.Account_UserName;

            CalculateServicesAndCharges(order, order.OrderOfService_IsDelete);
        }
 /// <summary>
 /// Get all orders in database by employee's id.
 /// </summary>
 /// <param name="isDelete">True if these oders is deleted, false otherwise.</param>
 /// <param name="id">Id of employee.</param>
 /// <returns>A list object of order type.</returns>
 public List<Order> GetOrdersByEmployeeId(Guid id, bool isDelete)
 {
     try
     {
         List<Order> listOrder = new List<Order>();
         List<OrderOfService> list = OD.GetOrders(id, "Employee", isDelete);
         if (list.Count > 0)
         {
             foreach (OrderOfService item in list)
             {
                 Order order = new Order();
                 FillDataToOrder(order, item);
                 listOrder.Add(order);
             }
         }
         return listOrder;
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
        private void CalculateServicesAndCharges(Order order, bool isDelete)
        {
            List<OrderOfServiceDetail> listOrderDetail = OD.GetOrderDetails(String.Format("OrderOfService_Id = '{0}' AND ", order.OrderOfService_Id.ToString()), isDelete);

            if (listOrderDetail.Count == 1)
                order.Total_Service = "1 service";
            else if (listOrderDetail.Count > 1)
                order.Total_Service = listOrderDetail.Count.ToString() + " services";

            double totalPrice = 0;
            ServiceBusiness SB = new ServiceBusiness();
            foreach (OrderOfServiceDetail item in listOrderDetail)
            {
                Service service = SB.GetService(item.Service_Id);
                double days = (item.OrderOfServiceDetail_ToDate - item.OrderOfServiceDetail_FromDate).TotalDays;
                double charge = Double.Parse(SecurityHelper.Instance.DecryptCryptography(service.Service_Charge, true));
                int employee = item.OrderOfServiceDetail_NumberOfEmployee;
                double price = days * charge * employee;

                totalPrice += price;
            }
            order.Total_Charge = totalPrice.ToString();
        }
        /// <summary>
        /// Get an order by order's id.
        /// </summary>
        /// <param name="id">Id of order.</param>
        /// <returns>An order object.</returns>
        public Order GetOrder(Guid id)
        {
            try
            {
                Order order = new Order();

                OrderOfService orderService = OD.GetOrder(id);
                FillDataToOrder(order, orderService);

                return order;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }