private OrderSimpleViewModel PrepareOrderSimpleViewModel(Order order) { OrderSimpleViewModel result = Mapper.Map <OrderSimpleViewModel>(order); result.UserId = order.AspNetUser.Id; result.UserName = order.AspNetUser.UserName; result.FullName = order.AspNetUser.FullName; result.PhoneNumber = order.AspNetUser.PhoneNumber; result.FieldName = order.Field.Name; result.PlaceId = order.Field.PlaceId; result.PlaceName = order.Field.Place.Name; result.CreateDateString = result.CreateDate.ToString("dd/MM/yyyy HH:mm:ss"); result.StartTimeString = result.StartTime.ToString("dd/MM/yyyy HH:mm:ss"); result.EndTimeString = result.EndTime.ToString("dd/MM/yyyy HH:mm:ss"); result.StatusString = Utils.GetEnumDescription((OrderStatus)result.Status); result.PaidTypeString = Utils.GetEnumDescription((OrderPaidType)result.PaidType); return(result); }
public ActionResult ConfirmPayment(int id) { var service = this.Service <IOrderService>(); ResponseModel <OrderSimpleViewModel> response = null; try { Order order = service.ConfirmPayment(id); OrderSimpleViewModel result = PrepareOrderSimpleViewModel(order); response = new ResponseModel <OrderSimpleViewModel>(true, "Đơn đặt sân đã được thanh toán", null, result); } catch (Exception) { response = ResponseModel <OrderSimpleViewModel> .CreateErrorResponse("Đơn đặt sân chưa được thanh toán", systemError); } return(Json(response)); }
public ActionResult CancelOrder(int id) { ResponseModel <OrderSimpleViewModel> response = null; var service = this.Service <IOrderService>(); Order order = null; try { order = service.ChangeOrderStatus(id, (int)OrderStatus.Cancel); OrderSimpleViewModel result = PrepareOrderSimpleViewModel(order); response = new ResponseModel <OrderSimpleViewModel>(true, "Đơn đặt sân đã được hủy", null, result); } catch (Exception) { response = ResponseModel <OrderSimpleViewModel> .CreateErrorResponse("Hủy đơn đặt sân thất bại", systemError); } return(Json(response)); }
public ActionResult ChangeOrderStatus(int id, int status) { ResponseModel <OrderSimpleViewModel> response = null; var service = this.Service <IOrderService>(); Order order = null; try { order = service.ChangeOrderStatus(id, status); OrderSimpleViewModel result = PrepareOrderSimpleViewModel(order); response = new ResponseModel <OrderSimpleViewModel>(true, "Trạng thái đơn đặt sân đã thay đổi thành công", null, result); } catch (Exception) { response = ResponseModel <OrderSimpleViewModel> .CreateErrorResponse("Thay đổi trạng thái đơn đặt sân thất bại", systemError); } return(Json(response)); }
public ActionResult ShowOrderDetail(int id) { ResponseModel <OrderSimpleViewModel> response = null; var service = this.Service <IOrderService>(); try { Order order = service.GetOrderById(id); OrderSimpleViewModel result = PrepareOrderSimpleViewModel(order); response = new ResponseModel <OrderSimpleViewModel>(true, "Thông tin đặt sân:", null, result); } catch (Exception) { response = ResponseModel <OrderSimpleViewModel> .CreateErrorResponse("Không thể tải thông tin đặt sân", systemError); } return(Json(response)); }
public ActionResult CheckInOrder(String orderCode) { var service = this.Service <IOrderService>(); ResponseModel <OrderSimpleViewModel> response = null; try { Order order = service.FindOrderByCode(orderCode); if (order != null) { if (order.Status == int.Parse(OrderStatus.Approved.ToString("d"))) { service.ChangeOrderStatus(order.Id, int.Parse(OrderStatus.CheckedIn.ToString("d"))); OrderSimpleViewModel result = PrepareOrderSimpleViewModel(order); response = new ResponseModel <OrderSimpleViewModel>(true, "Đơn đặt sân đã được checkin", null, result); } else if (order.Status == int.Parse(OrderStatus.Cancel.ToString("d"))) { OrderSimpleViewModel result = PrepareOrderSimpleViewModel(order); response = new ResponseModel <OrderSimpleViewModel>(false, "Đơn đặt sân chưa được checkin", new List <string> { "Đơn đặt sân đã bị hủy" }, result); } else if (order.Status == int.Parse(OrderStatus.Unapproved.ToString("d"))) { OrderSimpleViewModel result = PrepareOrderSimpleViewModel(order); response = new ResponseModel <OrderSimpleViewModel>(false, "Đơn đặt sân chưa được checkin", new List <string> { "Đơn đặt sân đã bị từ chối" }, result); } else if (order.Status == int.Parse(OrderStatus.CheckedIn.ToString("d"))) { OrderSimpleViewModel result = PrepareOrderSimpleViewModel(order); response = new ResponseModel <OrderSimpleViewModel>(true, "Đơn đặt sân đã được checkin", null, result); } else { OrderSimpleViewModel result = PrepareOrderSimpleViewModel(order); response = new ResponseModel <OrderSimpleViewModel>(false, "Đơn đặt sân chưa được checkin", new List <string> { "Đơn đặt sân chưa được chấp nhận" }, result); } } else { response = ResponseModel <OrderSimpleViewModel> .CreateErrorResponse("Đơn đặt sân chưa được checkin", "Code không hợp lệ"); } } catch (Exception) { response = ResponseModel <OrderSimpleViewModel> .CreateErrorResponse("Đơn đặt sân chưa được checkin", systemError); } return(Json(response)); }
public ActionResult CreateOrder(CreateOrderViewModel model) { ResponseModel <OrderSimpleViewModel> response = null; var orderService = this.Service <IOrderService>(); var fieldService = this.Service <IFieldService>(); var userService = this.Service <IAspNetUserService>(); DateTime startTime = new DateTime(); DateTime endTime = new DateTime(); DateTime playDate = new DateTime(); try { startTime = DateTime.ParseExact(model.StartTime, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture); endTime = DateTime.ParseExact(model.EndTime, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture); playDate = DateTime.ParseExact(model.PlayDate, "dd/MM/yyyy", CultureInfo.InvariantCulture); } catch (Exception) { response = ResponseModel <OrderSimpleViewModel> .CreateErrorResponse("Đặt sân thất bại", "Lỗi định dạng thời gian"); return(Json(response)); } if (!CheckTimeValid(model.FieldId, startTime.TimeOfDay, endTime.TimeOfDay)) { response = ResponseModel <OrderSimpleViewModel> .CreateErrorResponse("Đặt sân thất bại", "Thời gian không nằm trong các khung giờ"); return(Json(response)); } else if (!CheckOrderTime(model.FieldId, startTime.TimeOfDay, endTime.TimeOfDay, playDate, playDate)) { response = ResponseModel <OrderSimpleViewModel> .CreateErrorResponse("Đặt sân thất bại", "Sân đặt được đặt vào thời gian này"); return(Json(response)); } double price = CalculatePrice(model.FieldId, startTime.TimeOfDay, endTime.TimeOfDay); try { //Get current user info var user = userService.FindUser(model.UserId); //Create order info String orderCode = DateTime.Now.ToString("yyyyMMddHHmmss"); Order order = new Order(); order.FieldId = model.FieldId; order.UserId = model.UserId; order.StartTime = startTime; order.EndTime = endTime; order.CreateDate = DateTime.Now; order.Price = price; order.Note = model.Note; order.PayerName = model.PayerName; order.PayerEmail = model.PayerEmail; order.PayerPhone = model.PayerPhone; order.Status = (int)OrderStatus.Pending; order.OrderCode = orderCode; order.QRCodeUrl = Utils.GenerateQRCode(orderCode, QRCodeGenerator.ECCLevel.Q); var transdate = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); order.TransactionTime = DateTime.Parse(transdate); if (model.PaidType == (int)OrderPaidType.ChosePayOnline) { order.PaidType = (int)OrderPaidType.ChosePayOnline; } if (model.PaidType == (int)OrderPaidType.ChosePayByCash) { order.PaidType = (int)OrderPaidType.ChosePayByCash; } //Create Noti var field = fieldService.FirstOrDefaultActive(p => p.Id == order.FieldId); var noti = new Notification(); noti.UserId = field.Place.UserId; noti.Message = user.UserName + " đã đặt sân tại " + field.Name; noti.Title = "Đơn hàng mới"; noti.Type = (int)NotificationType.Order; noti.Active = true; order.Notifications.Add(noti); //Save Order order = orderService.CreateOrder(order); //Send Email string subject = "[SSN] - Thông tin đặt sân"; string body = "Hi <strong>" + user.UserName + "</strong>" + ",<br/><br/>Bạn đã đặt sân: " + field.Name + "<br/> Thời gian: " + order.StartTime.ToString("HH:mm") + " - " + order.EndTime.ToString("HH:mm") + ", ngày " + order.StartTime.ToString("dd/MM/yyyy") + "<br/> Giá tiền : " + order.Price + " đồng" + "<br/> <strong>Mã đặt sân của bạn : " + order.OrderCode + "</strong>" + "<br/><img src='" + Utils.GetHostName() + order.QRCodeUrl + "'>" + "<br/> Cảm ơn bạn đã sử dụng dịch vụ của SSN. Chúc bạn có những giờ phút thoải mái chơi thể thao!"; EmailSender.Send(Setting.CREDENTIAL_EMAIL, new string[] { user.Email }, null, null, subject, body, true); OrderSimpleViewModel result = PrepareOrderSimpleViewModel(order); response = new ResponseModel <OrderSimpleViewModel>(true, "Đặt sân thành công", null, result); //Fire base noti List <string> registrationIds = GetToken(noti.UserId); //registrationIds.Add("dgizAK4sGBs:APA91bGtyQTwOiAgNHE_mIYCZhP0pIqLCUvDzuf29otcT214jdtN2e9D6iUPg3cbYvljKbbRJj5z7uaTLEn1WeUam3cnFqzU1E74AAZ7V82JUlvUbS77mM42xHZJ5DifojXEv3JPNEXQ"); NotificationModel Amodel = Mapper.Map <NotificationModel>(PrepareNotificationCustomViewModel(noti)); if (registrationIds != null && registrationIds.Count != 0) { Android.Notify(registrationIds, null, Amodel); } //SignalR Noti var notiService = this.Service <INotificationService>(); NotificationFullInfoViewModel notiModelR = notiService.PrepareNoti(Mapper.Map <NotificationFullInfoViewModel>(noti)); // Get the context for the Pusher hub IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext <RealTimeHub>(); // Notify clients in the group hubContext.Clients.User(notiModelR.UserId).send(notiModelR); } catch (Exception) { response = ResponseModel <OrderSimpleViewModel> .CreateErrorResponse("Đặt sân thất bại", systemError); } return(Json(response)); }