예제 #1
0
        /// <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);
        }
예제 #2
0
        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'>&nbsp;</div>

            <div class='form-group'><strong><label>入住日期</label>:{2}</strong></div>

            <div class='form-group'><strong><label>退房日期</label>:{3}&nbsp;共 <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'>&nbsp;</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'>&nbsp;</footer>
            </section>
            </td>
            </tr>
            </tbody>
            </table>

            <p>&nbsp;</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);
        }
예제 #3
0
        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;
        }