private void FeedbackDataBind() { IList <OrderFeedbackInfo> list = OrderFeedback.GetList(DataConverter.CLng(this.OrderId)); IList <OrderFeedbackInfo> list2 = new List <OrderFeedbackInfo>(); foreach (OrderFeedbackInfo info in list) { string replyName = info.ReplyName; info.ReplyName = string.Empty; list2.Add(info); if (!string.IsNullOrEmpty(info.ReplyContent)) { OrderFeedbackInfo item = new OrderFeedbackInfo(); item.Content = "管理员回复:" + info.ReplyContent; item.ReplyName = replyName; item.WriteTime = info.ReplyTime; item.ReplyContent = info.ReplyContent; item.Id = info.Id; list2.Add(item); } } this.EgvFeedback.DataSource = list2; this.EgvFeedback.DataBind(); if (this.ShowOptions == 1) { this.EgvFeedback.Columns[2].Visible = false; this.EgvFeedback.Columns[3].Visible = false; } }
protected void EgvFeedback_RowCommand(object sender, CommandEventArgs e) { string commandName = e.CommandName; if (commandName != null) { if (!(commandName == "Del")) { if (!(commandName == "DelReply")) { if (commandName == "ReplyContent") { BaseUserControl.ResponseRedirect("OrderFeedbackModify.aspx?Action=ReplyContent&ID=" + e.CommandArgument.ToString()); } return; } } else { if (OrderFeedback.Delete(e.CommandArgument.ToString())) { BaseUserControl.WriteSuccessMsg("删除反馈信息成功", "OrderManage.aspx?OrderID=" + this.OrderId); return; } BaseUserControl.WriteErrMsg("删除反馈信息失败"); return; } OrderFeedbackInfo orderFeedbackById = OrderFeedback.GetOrderFeedbackById(DataConverter.CLng(e.CommandArgument)); if (!orderFeedbackById.IsNull) { orderFeedbackById.ReplyContent = string.Empty; orderFeedbackById.ReplyName = string.Empty; } if (OrderFeedback.Update(orderFeedbackById)) { BaseUserControl.WriteSuccessMsg("删除回复信息成功!", "OrderManage.aspx?OrderID=" + this.OrderId); } else { BaseUserControl.WriteErrMsg("删除回复信息失败!"); } } }
//--------------------------------- Finalize Order ------------------------------------------------// public async Task <ApiResponse <string> > FinalizeOrder(int orderId) { ApiResponse <string> result = new ApiResponse <string>(); try { var orderToFetch = await unitOfWork.OrdersManager.GetAsync(o => o.Id == orderId, includeProperties : "OrderServices"); var order = orderToFetch.FirstOrDefault(); var orderToFinalize = new Order(); var orderToExcelExtract = order; float totalAmountToExtract = 0; var SMS = new SmsService(unitOfWork, config); SendSMSDTO sendSMS = new SendSMSDTO(); sendSMS.CustomerNumber = order.CustomerMobile; sendSMS.orderId = orderId; if (sendSMS.CustomerNumber != null) { // var SendSMS = await SMS.SendSMS(sendSMS); } if (order != null) { CompleteOrder completeOrder = new CompleteOrder(); completeOrder.OrderServicesList = ""; orderToFinalize.OrderServices = order.OrderServices.Where(o => o.IsConfirmed == true).ToList(); // Filter confirmed services. //Fetch customer and barber from order. var customer = await unitOfWork.CustomersManager.GetByIdAsync(order.CustomerId); var barberQueue = await unitOfWork.BarbersQueuesManager.GetByIdAsync(order.BarberQueueId); var barber = await unitOfWork.BarbersManager.GetByIdAsync(barberQueue.BarberId); //Create complete Order completeOrder.OrderTotalAmount = 0; for (int i = 0; i < orderToFinalize.OrderServices.Count; i++) { completeOrder.OrderTotalAmount += orderToFinalize.OrderServices[i].Price; } totalAmountToExtract = (float)completeOrder.OrderTotalAmount; completeOrder.OrderTotalAmount = completeOrder.OrderTotalAmount - (completeOrder.OrderTotalAmount * (order.DiscountRate / 100)); completeOrder.BarberId = barber.Id; completeOrder.OrderDateTime = order.OrderDate; completeOrder.OrderFinishTime = order.FinishTime; completeOrder.CustomerId = customer.Id; completeOrder.CustomerNameEN = customer.Name; completeOrder.CustomerNameAR = customer.Name; completeOrder.BarberNameAR = barber.NameAR; completeOrder.BarberNameEN = barber.NameEN; completeOrder.CustomerWaitingTimeInMinutes = order.WaitingTimeInMinutes; completeOrder.Status = "Finalized"; completeOrder.TotalTimeSpent = order.TotalServicesWaitingTime; //Fill complete order services list List <OrderService> orderServicesHistory = new List <OrderService>(); orderServicesHistory = orderToFinalize.OrderServices; List <ServicesToRecord> GoogleSheetServiceList = new List <ServicesToRecord>(); for (int i = 0; i < order.OrderServices.Count; i++) { completeOrder.OrderServicesList = completeOrder.OrderServicesList + order.OrderServices[i].ServiceId + ","; } //construct the list of the excel for (int i = 0; i < orderToExcelExtract.OrderServices.Count; i++) { ServicesToRecord GoogleSheetServiceItem = new ServicesToRecord(); GoogleSheetServiceItem.ServiceNameAR = orderToExcelExtract.OrderServices[i].NameAR; GoogleSheetServiceItem.ServiceNameEN = orderToExcelExtract.OrderServices[i].NameEN; GoogleSheetServiceItem.ServiceTime = orderToExcelExtract.OrderServices[i].Time; GoogleSheetServiceItem.ServicePrice = orderToExcelExtract.OrderServices[i].Price; GoogleSheetServiceItem.ServiceStatus = orderToExcelExtract.OrderServices[i].IsConfirmed; GoogleSheetServiceList.Add(GoogleSheetServiceItem); } //Create complete order var completeOrderCreationResult = await unitOfWork.CompleteOrdersManager.CreateAsync(completeOrder); barber.NumberOfCustomersHandled++; // Increase barber # of customers handled counter await unitOfWork.OrdersManager.RemoveAsync(order); // Remove order record. await unitOfWork.SaveChangesAsync(); // Update upcoming orders var queueResult = await unitOfWork.BarbersQueuesManager.GetAsync(q => q.Id == order.BarberQueueId, includeProperties : "Orders"); var queue = queueResult.FirstOrDefault(); for (int i = 0; i < queue.Orders.Count; i++) { if (i == 0) { queue.Orders[i].OrderDate = DateTime.Now; queue.Orders[i].FinishTime = queue.Orders[i].OrderDate.Value.AddMinutes(Convert.ToDouble(queue.Orders[i].TotalServicesWaitingTime)); } else { queue.Orders[i].OrderDate = queue.Orders[i - 1].FinishTime; queue.Orders[i].FinishTime = queue.Orders[i].OrderDate.Value.AddMinutes(Convert.ToDouble(queue.Orders[i].TotalServicesWaitingTime)); } } await unitOfWork.SaveChangesAsync(); //Create order feedback OrderFeedback orderFeedback = new OrderFeedback(); orderFeedback.IsSubmitted = false; orderFeedback.CompleteOrderId = completeOrderCreationResult.Id; var orderFeedbackCreationResult = await unitOfWork.OrderFeedBacksManager.CreateAsync(orderFeedback); await unitOfWork.SaveChangesAsync(); //Create Orderfeedback questions for (int i = 0; i < orderServicesHistory.Count; i++) { var serviceFeedbackQuestionsResult = await unitOfWork.ServiceFeedBackQuestionsManager.GetAsync(s => s.ServiceId == orderServicesHistory[i].ServiceId); var serviceFeedbackQuestionsList = serviceFeedbackQuestionsResult.ToList(); for (int j = 0; j < serviceFeedbackQuestionsList.Count; j++) { OrderFeedbackQuestion orderFeedbackQuestionToCreate = new OrderFeedbackQuestion(); orderFeedbackQuestionToCreate.OrderFeedbackId = orderFeedbackCreationResult.Id; orderFeedbackQuestionToCreate.QuestionAR = serviceFeedbackQuestionsList[j].QuestionAR; orderFeedbackQuestionToCreate.QuestionEN = serviceFeedbackQuestionsList[j].QuestionEN; orderFeedbackQuestionToCreate.Rating = 0; var FeedbackQuestionCreationResult = await unitOfWork.OrderFeedBackQuestionsManager.CreateAsync(orderFeedbackQuestionToCreate); await unitOfWork.SaveChangesAsync(); } } //gets the egypt time to get the final time var info = TimeZoneInfo.FindSystemTimeZoneById("Egypt Standard Time"); DateTimeOffset localServerTime = DateTimeOffset.Now; DateTimeOffset localTime = TimeZoneInfo.ConvertTime(localServerTime, info); //var googleSheetsRecordResult = await AddOrderToGoogleSheets(completeOrder); OrderToRecord GoogleSheetOrder = new OrderToRecord(); GoogleSheetOrder.BarberNameAR = completeOrder.BarberNameAR; GoogleSheetOrder.BarberNameEN = completeOrder.BarberNameEN; GoogleSheetOrder.CustomerNameAR = completeOrder.CustomerNameAR; GoogleSheetOrder.CustomerNameEN = completeOrder.CustomerNameEN; GoogleSheetOrder.DiscountRate = orderToExcelExtract.DiscountRate; GoogleSheetOrder.OrderTotalAmount = totalAmountToExtract; GoogleSheetOrder.OrderEndTime = localTime.DateTime; GoogleSheetOrder.OrderStartTime = orderToExcelExtract.OrderDate; GoogleSheetOrder.DiscountPrice = totalAmountToExtract - completeOrder.OrderTotalAmount; GoogleSheetOrder.Services = GoogleSheetServiceList; AddOrderToGoogleSheets(GoogleSheetOrder); // Save order history in google spreadsheet result.Succeeded = true; result.Data = "Finalized successfully"; return(result); } else { result.Errors.Add("Failed to fetch order"); result.Succeeded = false; return(result); } } catch (Exception ex) { result.Succeeded = false; result.Errors.Add(ex.Message); return(result); } }