/// <summary> /// 線上訂房 /// </summary> /// <returns></returns> public ActionResult Reservation() { var model = new RoomBookingOrderViewModel { //OrderDateForm = DateTime.Now.Date, //OrderDateTo = DateTime.Now.AddDays(1).Date, TbRoomsList = roomRepository.Find<TB_Room>(find => find.IsDelete == false), RoomBookingOrder = new TB_RoomBookingOrder() { OrderDateForm = DateTime.Now.Date, OrderDateTo = DateTime.Now.AddDays(1).Date, AdultNum = 1, RoomNum = 1, TotalAmount = 0, RoomId = 1, CustomeSex = "先生/小姐" } }; return View(model); }
public ActionResult Reservation(RoomBookingOrderViewModel postViewModel) { postViewModel.RoomBookingOrder.CreateDateTime = DateTime.Now; postViewModel.RoomBookingOrder.OrderNo = DateTime.Now.ToFileTimeUtc().ToString(); postViewModel.TbRoomsList = roomRepository.Find<TB_Room>(find => find.IsDelete == false); if (postViewModel.RoomBookingOrder.OrderDateForm.Date < DateTime.Now.Date && postViewModel.RoomBookingOrder.OrderDateTo.Date < DateTime.Now.Date) { this.ViewBag.Message = "訂房開始、結束日期,不可小於今日!"; return View(postViewModel); } if (postViewModel.RoomBookingOrder.OrderDateTo < postViewModel.RoomBookingOrder.OrderDateForm) { this.ViewBag.Message = "訂房結束日期不可小於開始日期!"; return View(postViewModel); } // 訂房不可預約超過22晚, if (postViewModel.RoomBookingOrder.OrderDateTo.Date > postViewModel.RoomBookingOrder.OrderDateForm.AddDays(22).Date) { this.ViewBag.Message = "訂房不可預約超過22晚!"; return View(postViewModel); } if (!ModelState.IsValid) { return View(postViewModel); } if (roomRepository.Find<TB_RoomBookingOrder>(find => find.IsDelete == false && find.RoomId == postViewModel.RoomBookingOrder.RoomId && ( (postViewModel.RoomBookingOrder.OrderDateForm >= find.OrderDateForm && postViewModel.RoomBookingOrder.OrderDateForm < find.OrderDateTo) || ( postViewModel.RoomBookingOrder.OrderDateTo > find.OrderDateForm && postViewModel.RoomBookingOrder.OrderDateTo <= find.OrderDateTo))).Any()) { ViewBag.Message = "訂房失敗! 該房型已被預訂!"; return View(postViewModel); } if (postViewModel.InputCode == null) { ViewBag.Message = "請輸入驗證碼!"; return View(postViewModel); } if (!postViewModel.InputCode.Trim().ToLower().Equals(Session["ValidateCode"].ToString().ToLower())) { ViewBag.Message = "驗證碼,驗證失敗!"; return View(postViewModel); } postViewModel.RoomBookingOrder.TotalAmount = this.GetMoney(postViewModel); postViewModel.RoomBookingOrder.CustomeSex = "先生/小姐"; var isSuccess = roomRepository.AddOrUpdate(postViewModel.RoomBookingOrder); this.ViewBag.Message = isSuccess ? "訂房成功!" : "訂房失敗!"; if (this.ViewBag.Message.Equals("訂房成功!")) { var roomObject = roomRepository.Find<TB_Room>(find => find.ID == postViewModel.RoomBookingOrder.RoomId && find.IsDelete == false).FirstOrDefault(); postViewModel.RoomBookingOrder.TB_Room = roomObject; SendMail(postViewModel.RoomBookingOrder.CustomeEmail, "波克夏民宿-恭喜您訂房成功!", "<html><body>" + string.Format(@"<div style='font-family: arial, sans-serif; font-size: 14px;'><span style='font-size:12px;'><span style='font-family:times new roman,times,serif;'><small><font color='#003366'>Dear {0} 先生/小姐 您好!</font></small></span></span></div> <div style='font-family: arial, sans-serif; font-size: 14px;'><span style='font-size:12px;'><span style='font-family:times new roman,times,serif;'><small><font color='#003366'>恭喜您已經成功地訂房,</font><span style='color: rgb(93, 93, 93); line-height: 25.6666679382324px; white-space: pre-wrap;'>線上訂房程序完成。</span></small></span></span></div> <div style='font-family: arial, sans-serif; font-size: 14px;'><span style='font-size:12px;'><span style='font-family:times new roman,times,serif;'><small><span style='color: rgb(93, 93, 93); line-height: 25.6666679382324px; white-space: pre-wrap;'>請於</span><span style='color:#ff0000;'><span style='line-height: 25.6666679382324px; white-space: pre-wrap;'>三日內</span></span><span style='color: rgb(93, 93, 93); line-height: 25.6666679382324px; white-space: pre-wrap;'>以匯款或轉帳方式繳付房費,方可保留客房。若三日內未完成匯款,則視為無效訂房,房間將重新開放預訂。</span></small></span></span></div> <div style='font-family: arial, sans-serif; font-size: 14px;'>※連續假日及特殊節日,以旺季價位計算,價差就現場收費</div> <table border='1' cellpadding='1' cellspacing='1' style='width: 500px;' summary='您的訂房資料'> <tbody> <tr> <td valign='top'> <section class='box'> <header> <h3><strong>您的訂房資料</strong></h3> </header> <form action='/Rooms/Reservation' method='post'> <div> <div class='form-group'><strong><label>訂房單號</label></strong><strong>:{1}</strong></div> <div class='form-group'> </div> <div class='form-group'><strong><label>入住日期</label>:{2}</strong></div> <div class='form-group'><strong><label>退房日期</label>:{3} 共 <span class='live-num'>{4}</span> 晚</strong></div> <div class='form-group'><strong><label>房型</label>:{5}</strong></div> <div class='form-group'><strong><label>大人人數</label> {6} 位</strong></div> <div class='form-group'><strong><label>小孩人數</label> {7} 位</strong></div> <div class='form-group'><strong><label>加床數 </label> {8} 位</strong></div> <div class='form-group'><strong><label>訂房人姓名</label>:{9}</strong></div> <div class='form-group'><strong><label>訂房人Email</label>:{10}</strong></div> <div class='form-group'><strong><label>訂房人電話</label>:{11}</strong></div> <div class='form-group'><strong><label>住宿金額</label>:{12}</strong></div> </div> <footer class='actions'> </footer> </form> </section> </td> <td valign='top'> <section class='box'> <header> <h3><strong>波克夏民宿「銀行匯款資訊」</strong></h3> </header> <div> <div class='form-group'><strong><label>銀行名稱</label>:郵局-七美分局</strong></div> <div class='form-group'><strong><label>銀行代碼</label>:700</strong></div> <div class='form-group'><strong><label>帳戶名稱</label>:夏陳秀梅</strong></div> <div class='form-group'><strong><label>銀行帳號:</label>0241-041-004-2331</strong></div> </div> <footer class='actions'> </footer> </section> </td> </tr> </tbody> </table> <p> </p> ", postViewModel.RoomBookingOrder.CustomeName, postViewModel.RoomBookingOrder.OrderNo, postViewModel.RoomBookingOrder.OrderDateForm.ToString("yyyy/MM/dd"), postViewModel.RoomBookingOrder.OrderDateTo.ToString("yyyy/MM/dd"), EachDay(postViewModel.RoomBookingOrder.OrderDateForm, postViewModel.RoomBookingOrder.OrderDateTo).Count(), postViewModel.RoomBookingOrder.TB_Room.Name, postViewModel.RoomBookingOrder.AdultNum, postViewModel.RoomBookingOrder.ChildNum, postViewModel.RoomBookingOrder.ExtraBadNum, postViewModel.RoomBookingOrder.CustomeName, postViewModel.RoomBookingOrder.CustomeEmail, postViewModel.RoomBookingOrder.CustomeTel, postViewModel.RoomBookingOrder.TotalAmount.ToString("C0")) + "</body></html>"); return View("partial_BookingSuccess", postViewModel.RoomBookingOrder); } return View(postViewModel); }
public int GetMoney(RoomBookingOrderViewModel postViewModel) { var roomid = postViewModel.RoomBookingOrder.RoomId; var roomCharge = roomRepository.Find<TB_RoomCharge>(w => w.RoomId == roomid).First(); bool IsHolidays = false; bool IsHighSeason = false; int TotalAmount = 0; foreach ( DateTime day in EachDay(postViewModel.RoomBookingOrder.OrderDateForm, postViewModel.RoomBookingOrder.OrderDateTo)) { IsHolidays = GetIsHolidays(day); IsHighSeason = GetIsHighSeason(day); if (IsHighSeason && IsHolidays) { TotalAmount += roomCharge.HighSeasonHoliday; } else if (IsHighSeason && !IsHolidays) { TotalAmount += roomCharge.HighSeasonWeekday; } else if (!IsHighSeason && IsHolidays) { TotalAmount += roomCharge.LowSeasonHoliday; } else if (!IsHighSeason && !IsHolidays) { TotalAmount += roomCharge.LowSeasonWeekday; } if (postViewModel.RoomBookingOrder.IsExtraBed) { TotalAmount += roomCharge.ExtraBedCharge * postViewModel.RoomBookingOrder.ExtraBadNum; } } return TotalAmount; }