public ActionResult Confirmation()
        {
            this.ShowPageMessage("Your payment has been submitted.");

            if (!Current.User.BookmarkReservationID.HasValue)
            {
                return(this.RedirectToAction <DefaultController>(c => c.Index())); // no bookmark id, go to default controller index
            }
            else
            {
                tblReservation Reservation = _ODB.tblReservations.Where(e => e.ID == Current.User.BookmarkReservationID.Value).SingleOrDefault();
                if (Reservation == null)
                {
                    return(this.RedirectToAction <DefaultController>(c => c.Index())); // couldn't find reservation, go to default controller index
                }
                else
                {
                    if (Reservation.tblInvitation.ENumber == Current.User.ENumber)
                    {
                        return(this.RedirectToAction <StudentController>(c => c.Payment(Current.User.BookmarkReservationID.Value))); // redirect student to student payment view
                    }
                    else if (Current.User.IsAdmin || Current.User.IsStaff)
                    {
                        return(this.RedirectToAction <InvitationsController>(c => c.Invitation(Reservation.tblInvitation.ID))); // redirect staff back to Invitation details
                    }
                    else
                    {
                        return(this.RedirectToAction <DefaultController>(c => c.Index())); // unknown role, go to default controller index
                    }
                }
            }
        }
Exemple #2
0
        public async Task <IActionResult> Edit(int id, [Bind("resId,carId,cusid,Pick_location,Pick_Date,Return_location,Return_Date,amount")] tblReservation tblReservation)
        {
            if (id != tblReservation.resId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    db.Update(tblReservation);
                    await db.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!tblReservationExists(tblReservation.resId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["carId"] = new SelectList(db.tblCars, "carId", "carId", tblReservation.carId);
            ViewData["cusid"] = new SelectList(db.tblCustomer, "cusid", "CNIC", tblReservation.cusid);
            return(View(tblReservation));
        }
        /// <summary>
        /// Creates placeholder credit card payment/transaction and sends the user to TouchNet to process the payment
        /// </summary>
        /// <param name="ID">Reservation ID</param>
        /// <returns>Redirect ActionResult</returns>
        public ActionResult CreditPayment(int ID)
        {
            tblReservation Reservation = _ODB.tblReservations.Where(e => e.ID == ID).SingleOrDefault();

            if (Reservation != null)
            {
                bool HasExistingPayments = Reservation.tblPayments.Where(e => e.Amount > 0).Count() > 0;
                bool IsStudentPayment    = Reservation.tblInvitation.ENumber == Current.User.ENumber;
                if (Reservation.tblInvitation.ENumber == Current.User.ENumber || Current.User.IsAdmin || Current.User.IsStaff)
                {
                    if (Reservation.CurrentAmountDue > 0)
                    {
                        if (Reservation.tblEventDate.HasOpenSlots || (Reservation.IsConfirmed && Reservation.CountUnpaidGuests > 0))
                        {
                            // create placeholder payment to store data on upay postback
                            tblPayment Payment = new tblPayment();
                            Payment.tblReservation = Reservation;
                            Payment.IsSupplemental = HasExistingPayments;
                            Payment.PaidBy         = IsStudentPayment ? "Student" : "Staff";
                            Payment.PaymentType    = DataConstants.PaymentTypes.CreditOrDebitCard;
                            Payment.Amount         = 0; // don't set amount until received
                            Payment.PaymentDate    = DateTime.Now;
                            _ODB.tblPayments.AddObject(Payment); _ODB.SaveChanges();

                            Current.User.BookmarkReservationID = Reservation.ID; // remember which reservation we're using so we can return the user to the correct page.

                            // Create a placeholder transaction to store credit card data
                            tblUPayTransaction transaction = Upay.CreateTouchnetTransaction(Payment);

                            SecureAccess.Utilities.Logging.Log(SecureAccess.Utilities.Logging.LogType.Audit, string.Format("Redirecting user {0} to {1} UPay site.", Current.User.Username, Reservation.tblInvitation.tblEvent.MarketplaceSite), SecureAccess.Utilities.Logging.Severity.Information);
                            Upay.PostToTouchnet(transaction, Reservation.CurrentAmountDue, HasExistingPayments, Payment.PaidBy);
                            return(null);
                        }
                        else
                        {
                            this.ShowPageError(string.Format("The selected event date '{0}' no longer has an open slot for event '{1}'. Please select another event date.", Reservation.tblEventDate.DateOfEvent.ToShortDateString(), Reservation.tblEventDate.tblEvent.Name));
                        }
                    }
                    else
                    {
                        this.ShowPageError(String.Format("You cannot submit a credit card payment. The Current Amount Due is {0}", Reservation.CurrentAmountDue));
                    }

                    return(this.RedirectToAction <StudentController>(c => c.Reservation(ID)));
                }
                else
                {
                    this.ShowPageError("You are not authorized to submit credit payments for this Reservation");
                }
            }
            else
            {
                this.ShowPageError("Could not find a reservation for the given ID");
            }

            return(this.RedirectToAction <StudentController>(c => c.Index()));
        }
        /// <summary>
        /// Creates a Reservation given a student's invitation ID and the selected Event Date ID
        /// </summary>
        /// <param name="ID">Invitation ID</param>
        /// <param name="EventDateID">Event Date ID</param>
        /// <returns>ActionResult</returns>
        public ActionResult CreateReservation(int ID, int EventDateID)
        {
            tblInvitation Invitation = _ODB.tblInvitations.Where(e => e.ID == ID).SingleOrDefault();
            tblEventDate  EventDate  = _ODB.tblEventDates.Where(e => e.ID == EventDateID).SingleOrDefault();

            if (Invitation != null && EventDate != null)
            {
                if (Invitation.ENumber == Current.User.ENumber || Current.User.IsAdmin || Current.User.IsStaff)
                {
                    tblReservation existingReservation = _ODB.tblReservations.Where(e => e.InvitationID == Invitation.ID).SingleOrDefault();
                    if (existingReservation == null)
                    {
                        if (EventDate.HasOpenSlots)
                        {
                            tblReservation Reservation = new tblReservation();
                            Reservation.tblEventDate  = EventDate;
                            Reservation.tblInvitation = Invitation;
                            Reservation.IsCancelled   = false;
                            Reservation.IsConfirmed   = false;
                            _ODB.tblReservations.AddObject(Reservation);
                            _ODB.SaveChanges();
                            Logging.Log(Logging.LogType.Audit, string.Format("User {0} created a Reservation with ID {1} for Invitation {2} for EventDate {3}", Current.User.Username, Reservation.ID, Invitation.ID, EventDate.ID));
                            this.ShowPageMessage("Your event reservation was successfully created!");
                            return(this.RedirectToAction <StudentController>(c => c.Reservation(Reservation.ID)));
                        }
                        else
                        {
                            this.ShowPageError(string.Format("The selected event date '{0}' no longer has an open slot for event '{1}'. Please select another event date.", existingReservation.tblEventDate.DateOfEvent.ToShortDateString(), existingReservation.tblEventDate.tblEvent.Name));
                        }
                    }
                    else
                    {
                        this.ShowPageError("A reservation already exists for the selected Invitation. Please update the reservation to change event dates.");
                    }
                }
                else
                {
                    this.ShowPageError("You are not authorized to view create reservations for this Invitation");
                }
            }
            else
            {
                this.ShowPageError("Either the Invitation or the Event Date could not be retrieved given the specified IDs.");
            }

            if (Invitation != null)
            {
                return(this.RedirectToAction <StudentController>(c => c.Invitation(Invitation.ID)));
            }
            else
            {
                return(this.RedirectToAction <StudentController>(c => c.Index()));
            }
        }
        /// <summary>
        /// Change the event date for a given reservation and new event id
        /// </summary>
        /// <param name="ID">Reservation ID</param>
        /// <param name="EventDateID">Event Date ID</param>
        /// <returns>ActionResult</returns>
        public ActionResult ChangeReservation(int ID, int EventDateID)
        {
            tblReservation Reservation = _ODB.tblReservations.Where(e => e.ID == ID).SingleOrDefault();
            tblInvitation  Invitation  = Reservation != null ? Reservation.tblInvitation : null;
            tblEventDate   EventDate   = _ODB.tblEventDates.Where(e => e.ID == EventDateID).SingleOrDefault();

            if (Invitation != null && EventDate != null)
            {
                if (Invitation.ENumber == Current.User.ENumber || Current.User.IsAdmin || Current.User.IsStaff)
                {
                    if (Reservation != null)
                    {
                        if (EventDate.HasOpenSlots)
                        {
                            // delete unpaid guests to avoid conflicts with the number of allowed guests with different event dates, but yet preserve paid guests
                            List <tblGuest> GuestsToDelete = Reservation.tblGuests.Where(e => !e.HasPaid).ToList();
                            GuestsToDelete.ForEach(e => _ODB.tblGuests.DeleteObject(e));
                            Reservation.tblEventDate = EventDate;
                            _ODB.SaveChanges();
                            Logging.Log(Logging.LogType.Audit, string.Format("User {0} Changed the Event Date for Reservation with ID {1} for Invitation {2} for EventDate {3}", Current.User.Username, Reservation.ID, Invitation.ID, EventDate.ID));
                            this.ShowPageMessage("Your event date for your reservation was successfully changed!");
                            return(this.RedirectToAction <StudentController>(c => c.Reservation(Reservation.ID)));
                        }
                        else
                        {
                            this.ShowPageError(string.Format("The selected event date '{0}' no longer has an open slot for event '{1}'. Please select another event date.", Reservation.tblEventDate.DateOfEvent.ToShortDateString(), Reservation.tblEventDate.tblEvent.Name));
                            return(this.RedirectToAction <StudentController>(c => c.Reservation(Reservation.ID)));
                        }
                    }
                    else
                    {
                        this.ShowPageError("A reservation could not be found by the given ID.");
                    }
                }
                else
                {
                    this.ShowPageError("You are not authorized to view create reservations for this Invitation");
                }
            }
            else
            {
                this.ShowPageError("Either the Invitation or the Event Date could not be retrieved given the specified IDs.");
            }

            if (Invitation != null)
            {
                return(this.RedirectToAction <StudentController>(c => c.Invitation(Invitation.ID)));
            }
            else
            {
                return(this.RedirectToAction <StudentController>(c => c.Index()));
            }
        }
Exemple #6
0
        public async Task <IActionResult> Create([Bind("resId,carId,cusid,Pick_location,Pick_Date,Return_location,Return_Date,amount")] tblReservation tblReservation)
        {
            if (ModelState.IsValid)
            {
                db.Add(tblReservation);
                await db.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["carId"] = new SelectList(db.tblCars, "carId", "carId", tblReservation.carId);
            ViewData["cusid"] = new SelectList(db.tblCustomer, "cusid", "CNIC", tblReservation.cusid);
            return(View(tblReservation));
        }
        /// <summary>
        /// Student Payment Choice page, caclualtes and displays any pending charges for reservation. Allows student to select Payment Method
        /// </summary>
        /// <param name="ID">Reservation ID</param>
        /// <returns></returns>
        public ActionResult Payment(int ID)
        {
            tblReservation Reservation = _ODB.tblReservations.Where(e => e.ID == ID).SingleOrDefault();

            if (Reservation.tblInvitation.ENumber == Current.User.ENumber || Current.User.IsAdmin || Current.User.IsStaff)
            {
                ViewBag.MaxNumberGuests = Reservation.tblEventDate.MaxNumberGuests;
                Logging.Log(Logging.LogType.Audit, string.Format("User {1} with ENumber {0} is viewing Student Payment Page with Reservation ID {2} for event '{3}'", Current.User.ENumber, Current.User.Username, ID, Reservation.tblInvitation.tblEvent.Name));
                return(View(Reservation));
            }
            else
            {
                this.ShowPageError("You do not have permission to access that Payment");
                return(this.RedirectToAction <StudentController>(c => c.Index()));
            }
        }
Exemple #8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="entity"></param>
        public tblReservation saveReservation(bool isNewAdd, tblReservation entity)
        {
            if (dataCtx.Connection != null)
            {
                dataCtx.Connection.Open();
            }
            DbTransaction tran = dataCtx.Connection.BeginTransaction();

            dataCtx.Transaction = tran;

            try
            {
                if (isNewAdd == true)
                {
                    this.Reservations.InsertOnSubmit(entity);

                    this.dataCtx.SubmitChanges();
                    tran.Commit();
                    return(entity);
                }
                else
                {
                    var qry = from t in Reservations
                              where t.ReservationID == entity.ReservationID
                              select t;
                    var obj = qry.SingleOrDefault();
                    if (obj != null)
                    {
                        this.CopyEntity(obj, entity);
                    }

                    this.dataCtx.SubmitChanges();
                    tran.Commit();
                    return(obj);
                }
            }
            catch (Exception ex)
            {
                tran.Rollback();
                throw ex;
            }
            finally
            {
                dataCtx.Connection.Close();
            }
        }
        public PartialViewResult GuestList(int ID)
        {
            tblReservation Reservation = _ODB.tblReservations.Where(e => e.ID == ID).SingleOrDefault();

            if (Reservation != null)
            {
                if (Reservation.tblInvitation.ENumber == Current.User.ENumber || Current.User.IsAdmin || Current.User.IsStaff)
                {
                    ViewBag.MaxNumberGuests = Reservation.tblEventDate.MaxNumberGuests;
                    return(PartialView(Reservation.tblGuests.ToList()));
                }
                else
                {
                    Logging.Log(Logging.LogType.Audit, string.Format("User {0} does not have permission to access the guest list for Reservation with ID {1}", Current.User.Username, Reservation.ID));
                }
            }
            return(PartialView(new List <tblGuest>()));
        }
Exemple #10
0
        /// <summary>
        /// Displays Reservation Details to Student
        /// </summary>
        /// <param name="ID">Reservation ID</param>
        /// <returns>ActionResult</returns>
        public ActionResult Reservation(int ID)
        {
            tblReservation Reservation = _ODB.tblReservations.Where(e => e.ID == ID).SingleOrDefault();

            if (Reservation.tblInvitation.ENumber == Current.User.ENumber || Current.User.IsAdmin || Current.User.IsStaff)
            {
                ViewBag.MaxNumberGuests = Reservation.tblEventDate.MaxNumberGuests;
                Logging.Log(Logging.LogType.Audit, string.Format("User {1} with ENumber {0} is viewing Student Reservation with ID {2} for event '{3}'", Current.User.ENumber, Current.User.Username, ID, Reservation.tblInvitation.tblEvent.Name));
                BannerDB Banner     = new BannerDB();
                bool     IsBannerUp = Banner.Ping();
                if (IsBannerUp)
                {
                    ViewBag.IsBannerUp = IsBannerUp;
                    ViewBag.HasSelectiveServiceHold = Banner.HasSelectiveServiceHold(Reservation.tblInvitation.ENumber);
                    ViewBag.MustVerifyCitizenship   = Banner.MustVerifyCitizenship(Reservation.tblInvitation.ENumber);
                    ViewBag.FinAidRequirements      = Banner.GetFinAidChecklistRequirements(Reservation.tblInvitation.ENumber);
                    ViewBag.FAFSAAidYear            = Banner.GetFAFSAAidYear(Reservation.tblInvitation.ENumber);
                    ViewBag.ImmunizationList        = Banner.GetImmunizationsChecklist(Reservation.tblInvitation.ENumber);
                    List <TestScore> TestScores = Banner.GetTestScores(Reservation.tblInvitation.ENumber).AsEnumerable().Select(e => new TestScore(e)).ToList();
                    TestScore        DSPR       = TestScores.Where(e => e.Code == "DSPR").OrderByDescending(e => e.Date).FirstOrDefault();
                    TestScore        DSPW       = TestScores.Where(e => e.Code == "DSPW").OrderByDescending(e => e.Date).FirstOrDefault();
                    TestScore        DSPM       = TestScores.Where(e => e.Code == "DSPM").OrderByDescending(e => e.Date).FirstOrDefault();
                    if (DSPR == null || DSPW == null || DSPM == null || DSPR.Score.Trim() != "4" || DSPW.Score.Trim() != "4" || DSPM.Score.Trim() != "4")
                    {
                        ViewBag.HasLearningSupportRequirements = true;
                    }
                    else
                    {
                        ViewBag.HasLearningSupportRequirements = false;
                    }
                }
                return(View(Reservation));
            }
            else
            {
                this.ShowPageError("You do not have permission to access that Reservation");
                return(this.RedirectToAction <StudentController>(c => c.Index()));
            }
        }
Exemple #11
0
        protected void btnSave_Click(object sender, EventArgs e)
        {
            tblReservation r        = new tblReservation();
            bool           isAddnew = false;

            //弹出窗口发送了sms之后,保存时,sendsms=true
            if (HidSms.Value == "1")
            {
                r.SendSMS = true;
            }

            r.employeeNum = FixedJsString(ddlEmployee.SelectedItem.Value);
            //r.eventStart = DateTime.Parse(HidEventStart.Value);
            //r.eventEnd = DateTime.Parse(HidEventEnd.Value);
            r.eventStart = DateTime.Parse(System.Convert.ToDateTime(dtEventDate.DateValue).ToString("yyyy-MM-dd") + " " + eventStart.TimeValue.Value.ToShortTimeString());
            r.eventEnd   = DateTime.Parse(System.Convert.ToDateTime(dtEventDate.DateValue).ToString("yyyy-MM-dd") + " " + eventEnd.TimeValue.Value.ToShortTimeString());

            //daypilot control won't display if eventend < eventstart, so please check this...
            if (r.eventEnd < r.eventStart)
            {   //swap value
                DateTime tmp = r.eventStart;
                r.eventStart = r.eventEnd;
                r.eventEnd   = tmp;
            }

            //r.memberNum = FixedJsString(HidMemberNum.Value);
            r.memberNum = FixedJsString(txtMemberNum.Text);

            if (txtPackage.Text.Trim() != "")
            {
                r.PackageDesc = FixedJsString(txtPackage.Text);
            }
            else
            {
                r.PackageDesc = null;
            }

            r.serviceNum = FixedJsString(txtServiceNum.Text);
            r.SeviceDesc = FixedJsString(txtServiceName.Text);
            if (Request["id"] == "0")
            {
                r.reservationID = 0;
                isAddnew        = true;
            }
            else
            {
                r.reservationID = long.Parse(Request["id"]);
                //if can't input bill(btnInputBill.enabled=false),r.IsInput=true
                //r.IsInput = ! btnInputBill.Enabled;
                //客人已到达时,才可以入单
                if (hidIsInput.Value == "1")
                {
                    r.IsInput = true;
                }
                else
                {
                    r.IsInput = false;
                }
            }
            r.logOnUser = this.LogOnUserID.Trim();
            //store these info for non-member reservation
            r.CustomerName = txtSharePersonEngName.Text;
            r.CustomerTel  = txtMobile.Text;
            r.CanChange    = chkCanChange.Checked;
            r.IsArrived    = chkIsArrived.Checked;
            r.IsCancel     = chkCancel.Checked;
            r.Remark       = txtRemark.Text.Trim();
            //增加其他格子顔色選項
            if (chkColor.Checked)
            {
                r.OtherColor = ddlColor.SelectedValue;
            }
            else
            {
                r.OtherColor = null;
            }

            if (chkConfirmOK.Checked)
            {
                r.IsConfirm = "OK";
            }
            else if (chkConfirmVM.Checked)
            {
                r.IsConfirm = "VM";
            }
            else
            {
                r.IsConfirm = null;
            }

            //---------check conflict------------
            string ErrMsg = "";

            if (false == resvh.checkConflict(r.reservationID, r.employeeNum, r.eventStart, r.eventEnd, ref ErrMsg))
            {
                this.ShowMessage(ErrMsg);
                return;
            }

            r = resvh.saveReservation(isAddnew, r);

            //---write log ----
            //change log to database
            // string strEmpoyeeName = this.getEmployeeNameByNum(r.employeeNum);
            string msg = "職員:" + LogOnUserName + "保存了" + r.reservationID.ToString() + "號預約 客戶:" + r.CustomerName + " 電話:" + r.CustomerTel;

            msg += " 預約師傅:" + ddlEmployee.SelectedItem.Text + (r.CanChange? " (指定)":"");
            msg += " 時間:" + r.eventStart + " 至" + eventEnd.TimeValue.Value.ToShortTimeString();

            if (txtRemark.Text.Trim() != "")
            {
                msg += " 備註:" + txtRemark.Text.Trim();
            }

            msg += " 服務:" + txtServiceName.Text + (r.IsArrived?" 已到達":"") + (r.IsCancel?" 已取消":"");
            msg += " 修改時間:" + DateTime.Now.ToString();

            LogInfo log = new LogInfo();

            log.op        = LogOnUserName;
            log.opDate    = DateTime.Now;
            log.eventDate = r.eventStart;
            log.client    = r.CustomerName;
            log.tel       = r.CustomerTel;
            log.employee  = ddlEmployee.SelectedItem.Text;
            log.logInfo   = msg;
            resvh.WriteLog(log);
            //CommonUtil.WriteLog(msg);

            Page.ClientScript.RegisterStartupScript(typeof(string), "cls", "<script>window.close();window.opener.document.getElementById('btnRefresh').click();</script>");

            //this.CloseWindow();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="entity"></param>
        public tblReservation saveReservation(bool isNewAdd, tblReservation entity)
        {
            if (dataCtx.Connection != null) dataCtx.Connection.Open();
            DbTransaction tran = dataCtx.Connection.BeginTransaction();
            dataCtx.Transaction = tran;

            try
            {
                if (isNewAdd == true)
                {
                    this.Reservations.InsertOnSubmit(entity);

                    this.dataCtx.SubmitChanges();
                    tran.Commit();
                    return entity;
                }
                else
                {
                    var qry = from t in Reservations
                              where t.ReservationID == entity.ReservationID
                              select t;
                    var obj = qry.SingleOrDefault();
                    if (obj != null)
                        this.CopyEntity(obj, entity);

                    this.dataCtx.SubmitChanges();
                    tran.Commit();
                    return obj;
                }
            }
            catch (Exception ex)
            {
                tran.Rollback();
                throw ex;

            }
            finally
            {
                dataCtx.Connection.Close();
            }
        }
Exemple #13
0
        /// <summary>
        /// Adds a guest to a student event reservation
        /// </summary>
        /// <param name="Model">Guest View Model</param>
        /// <returns>ActionResult</returns>
        public ActionResult AddGuest(GuestViewModel Model)
        {
            tblReservation Reservation = _ODB.tblReservations.Where(e => e.ID == Model.ReservationID).SingleOrDefault();

            if (Reservation != null)
            {
                if (Reservation.tblInvitation.ENumber == Current.User.ENumber || Current.User.IsAdmin || Current.User.IsStaff)
                {
                    if (ModelState.IsValid)
                    {
                        if (Reservation.tblGuests.Count < Reservation.tblEventDate.MaxNumberGuests)
                        {
                            if (Reservation.tblEventDate.AllowGuestRegistration)
                            {
                                tblGuest existingGuest = Reservation.tblGuests.Where(e => e.EmailAddress.ToUpper() == Model.EmailAddress.ToUpper()).FirstOrDefault();
                                if (existingGuest == null)
                                {
                                    tblGuest newGuest = Model.As_tblGuest();
                                    newGuest.tblReservation = Reservation;
                                    _ODB.tblGuests.AddObject(newGuest);
                                    _ODB.SaveChanges();
                                    Logging.Log(Logging.LogType.Audit, string.Format("User {0} has added new guest with email '{1}', Guest ID={2} to reservation with ID {3}", Current.User.Username, newGuest.EmailAddress, newGuest.ID, Reservation.ID));
                                    if (Reservation.IsConfirmed)
                                    {
                                        this.ShowPageMessage(string.Format("Successfully added guest '{0}, {1} {2}' with email '{3}' to reservation. Your reservation has already been confirmed.  Please be sure to pay any additional fees that may be related to the additional guests you have added.", newGuest.LastName, newGuest.FirstName, newGuest.MiddleName, newGuest.EmailAddress));
                                    }
                                    else
                                    {
                                        this.ShowPageMessage(string.Format("Successfully added guest '{0}, {1} {2}' with email '{3}' to reservation.", newGuest.LastName, newGuest.FirstName, newGuest.MiddleName, newGuest.EmailAddress));
                                    }

                                    return(this.RedirectToAction <StudentController>(c => c.Reservation(Reservation.ID)));
                                }
                                else
                                {
                                    this.ShowPageError(string.Format("A guest has already been added to this reservation with the provided email address: {0}.", Model.EmailAddress));
                                }
                            }
                            else
                            {
                                this.ShowPageError("The selected event date for this reservation does not allow guest registration.");
                            }
                        }
                        else
                        {
                            this.ShowPageError(string.Format("You have already added the maximum number of guests. Guest Count: {0}. Max Guests: {1}", Reservation.tblGuests.Count, Reservation.tblEventDate.MaxNumberGuests));
                        }
                    }
                    else
                    {
                        this.ShowPageError(DataConstants.ModelStateInvalidError);
                    }
                }
                else
                {
                    this.ShowPageError("You are not authorized to add guests to this reservation");
                }
            }
            else
            {
                this.ShowPageError("Reservation could not be found for the given ID. No guest was added.");
            }

            ViewBag.ExpandAddGuestSection = true;
            ViewBag.GuestModel            = Model;
            return(View("Reservation", Reservation));
        }
Exemple #14
0
        /// <summary>
        /// Confirms selected reservation if no payments are due
        /// </summary>
        /// <param name="ID">Reservation ID</param>
        /// <returns>ActionResult</returns>
        public ActionResult ConfirmReservation(int ID)
        {
            tblReservation Reservation = _ODB.tblReservations.Where(e => e.ID == ID).SingleOrDefault();

            if (Reservation != null)
            {
                bool HasExistingPayments = Reservation.tblPayments.Where(e => e.Amount > 0).Count() > 0;
                bool IsStudentPayment    = Reservation.tblInvitation.ENumber == Current.User.ENumber;
                if (Reservation.tblInvitation.ENumber == Current.User.ENumber || Current.User.IsAdmin || Current.User.IsStaff)
                {
                    if (Reservation.CurrentAmountDue <= 0)
                    {
                        if (Reservation.tblEventDate.HasOpenSlots)
                        {
                            Reservation.IsConfirmed   = true;                              // mark reservation as confirmed
                            Reservation.DateConfirmed = DateTime.Now;
                            Reservation.tblGuests.ToList().ForEach(e => e.HasPaid = true); // mark current guests as paid
                            _ODB.SaveChanges();

                            if (Reservation.tblEventDate.AutomaticallyClearSOHolds)
                            {
                                BannerDB Banner = new BannerDB();
                                if (Banner.Ping())
                                {
                                    Banner.ReleaseHold(Reservation.tblInvitation.ENumber, DataConstants.HoldTypes.StudentOrientation);
                                    Logging.Log(Logging.LogType.Audit, string.Format("User {0} Released Hold Code '{1}' for Student {2}", Current.User.Username, DataConstants.HoldTypes.StudentOrientation, Reservation.tblInvitation.ENumber));
                                }
                                else
                                {
                                    Logging.Log(Logging.LogType.Audit, String.Format("Could not connect to Banner to release SO Hold for student {0} for Reservation {1}", Reservation.tblInvitation.ENumber, Reservation.ID), "Holds", Logging.Severity.Warning);
                                }
                            }

                            if (Reservation.tblEventDate.UpdateSGBSTDN_ORSN)
                            {
                                try {
                                    (new BannerDB()).UpdateSGBSTDN_ORSN_Code(Reservation.tblInvitation.ENumber, Reservation.tblEventDate.EventDateType);
                                    Logging.Log(Logging.LogType.Audit, string.Format("Successfully updated SGBSTDN ORSN code '{0}' for Reservation ID {1}. Student E-Number {2}", Reservation.tblEventDate.EventDateType, Reservation.ID, Reservation.tblInvitation.ENumber));
                                }
                                catch (Exception ex) {
                                    Logging.LogException(Logging.LogType.Audit, string.Format("StudentController->ConfirmReservation(): An exception occurred while trying to update SGBSTDN ORSN code '{0}' for Reservation ID {1}. Student E-Number {2}", Reservation.tblEventDate.EventDateType, Reservation.ID, Reservation.tblInvitation.ENumber), ex);
                                }
                            }

                            // try to insert row for IDCard Extract
                            try {
                                (new BannerDB()).INSERT_IDCARD_FLAG(Reservation.tblInvitation.Pidm, Reservation.tblInvitation.tblEvent.Term, "Y");
                                Logging.Log(Logging.LogType.Audit, string.Format("Successfully inserted IDCard Extract Flag for Reservation ID {0}. Student E-Number {1}", Reservation.ID, Reservation.tblInvitation.ENumber));
                            }
                            catch (Exception ex) {
                                Logging.LogException(Logging.LogType.Audit, string.Format("StudentController->ConfirmReservation(): An exception occurred while trying to insert IDCard Extract Flag for Reservation ID {0}. Student E-Number {1}", Reservation.ID, Reservation.tblInvitation.ENumber), ex);
                            }

                            this.ShowPageMessage("Your Reservation has been confirmed");
                        }
                        else
                        {
                            this.ShowPageError(string.Format("The selected event date '{0}' no longer has an open slot for event '{1}'. Please select another event date.", Reservation.tblEventDate.DateOfEvent.ToShortDateString(), Reservation.tblEventDate.tblEvent.Name));
                        }
                    }
                    else
                    {
                        this.ShowPageError(String.Format("You must pay fees due before confirming registration. The Current Amount Due is {0}", Reservation.CurrentAmountDue));
                    }

                    return(this.RedirectToAction <StudentController>(c => c.Reservation(ID)));
                }
                else
                {
                    this.ShowPageError("You are not authorized to confirm this Reservation");
                }
            }
            else
            {
                this.ShowPageError("Could not find a reservation for the given ID");
            }

            return(this.RedirectToAction <StudentController>(c => c.Index()));
        }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            tblReservation r = new tblReservation();
            bool isAddnew =false;
            //弹出窗口发送了sms之后,保存时,sendsms=true
            if (HidSms.Value == "1")
                r.SendSMS = true;

            r.employeeNum = FixedJsString(ddlEmployee.SelectedItem.Value);
            //r.eventStart = DateTime.Parse(HidEventStart.Value);
            //r.eventEnd = DateTime.Parse(HidEventEnd.Value);
            r.eventStart = DateTime.Parse(System.Convert .ToDateTime(dtEventDate.DateValue).ToString("yyyy-MM-dd") + " " + eventStart.TimeValue.Value.ToShortTimeString());
            r.eventEnd = DateTime.Parse(System.Convert.ToDateTime(dtEventDate.DateValue).ToString("yyyy-MM-dd") + " " + eventEnd.TimeValue.Value.ToShortTimeString());

            //daypilot control won't display if eventend < eventstart, so please check this...
            if (r.eventEnd < r.eventStart)
            {   //swap value
                DateTime tmp = r.eventStart;
                r.eventStart = r.eventEnd;
                r.eventEnd = tmp;
            }

            //r.memberNum = FixedJsString(HidMemberNum.Value);
            r.memberNum = FixedJsString(txtMemberNum.Text);

            if (txtPackage.Text.Trim() != "")
                r.PackageDesc = FixedJsString(txtPackage.Text);
            else
                r.PackageDesc = null;

            r.serviceNum = FixedJsString(txtServiceNum.Text);
            r.SeviceDesc= FixedJsString(txtServiceName.Text);
            if (Request["id"] == "0")
            {
                r.reservationID = 0;
                isAddnew = true;
            }
            else
            {
                r.reservationID = long.Parse(Request["id"]);
                //if can't input bill(btnInputBill.enabled=false),r.IsInput=true
                //r.IsInput = ! btnInputBill.Enabled;
                //客人已到达时,才可以入单
                if (hidIsInput.Value == "1")
                    r.IsInput = true;
                else
                    r.IsInput = false;

            }
            r.logOnUser = this.LogOnUserID.Trim();
            //store these info for non-member reservation
            r.CustomerName = txtSharePersonEngName.Text;
            r.CustomerTel = txtMobile.Text;
            r.CanChange = chkCanChange.Checked;
            r.IsArrived = chkIsArrived.Checked;
            r.IsCancel = chkCancel.Checked;
            r.Remark = txtRemark.Text.Trim();
            //增加其他格子顔色選項
            if (chkColor.Checked)
                r.OtherColor = ddlColor.SelectedValue;
            else
                r.OtherColor = null;

            if (chkConfirmOK.Checked)
                r.IsConfirm = "OK";
            else if (chkConfirmVM.Checked)
                r.IsConfirm = "VM";
            else
                r.IsConfirm = null;

            //---------check conflict------------
            string ErrMsg = "";
            if (false == resvh.checkConflict(r.reservationID, r.employeeNum, r.eventStart, r.eventEnd, ref ErrMsg))
            {
                this.ShowMessage(ErrMsg);
                return;
            }

            r=resvh.saveReservation(isAddnew, r);

            //---write log ----
            //change log to database
               // string strEmpoyeeName = this.getEmployeeNameByNum(r.employeeNum);
            string msg =  "職員:" + LogOnUserName+"保存了"+ r.reservationID.ToString() + "號預約 客戶:" + r.CustomerName + " 電話:" + r.CustomerTel;
            msg += " 預約師傅:" + ddlEmployee.SelectedItem.Text+ (r.CanChange? " (指定)":"");
            msg += " 時間:" + r.eventStart + " 至" + eventEnd.TimeValue.Value.ToShortTimeString();

            if(txtRemark.Text.Trim()!="")
                msg += " 備註:" + txtRemark.Text.Trim();

            msg += " 服務:" + txtServiceName.Text + (r.IsArrived?" 已到達":"")+(r.IsCancel?" 已取消":"");
            msg += " 修改時間:" + DateTime.Now.ToString();

            LogInfo log = new LogInfo();
            log.op = LogOnUserName;
            log.opDate = DateTime.Now;
            log.eventDate = r.eventStart;
            log.client = r.CustomerName;
            log.tel = r.CustomerTel;
            log.employee = ddlEmployee.SelectedItem.Text;
            log.logInfo = msg;
            resvh.WriteLog(log);
            //CommonUtil.WriteLog(msg);

            Page.ClientScript.RegisterStartupScript(typeof(string), "cls", "<script>window.close();window.opener.document.getElementById('btnRefresh').click();</script>");

            //this.CloseWindow();
        }