示例#1
0
        /// <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()));
        }
示例#2
0
        internal string ejecutaLlamada(trnRequestValues requestValues)
        {
            //_logger.Info("Karen -> ejecutaLlamada");

            Upay u = new Upay();
            availableOperatives operacion = new availableOperatives();

            bool exists = Enum.IsDefined(typeof(availableOperatives), requestValues.dcs_form);

            if (exists)
            {
                operacion = (availableOperatives)System.Enum.Parse(typeof(availableOperatives), requestValues.dcs_form);
            }
            else
            {
                operacion = availableOperatives.error;
            }

            string result = string.Empty;

            switch (operacion)
            {
            case availableOperatives.PRINT:
                #region reimpresion
                result = u.opspreimp(requestValues.trn_orig_id);
                break;

                #endregion
            case availableOperatives.INIKEY:
                #region inicializacion
                result = u.opcpiniciallave();
                break;

                #endregion
            case availableOperatives.T060S000:
                #region venta
                result = u.opcpventa(requestValues.trn_amount, requestValues.trn_qty_pay);
                break;

                #endregion
            case availableOperatives.T040S000:
                #region devolucion
                result = u.opcpdevolucion(requestValues.trn_orig_id, requestValues.trn_auth_code, requestValues.trn_amount);
                break;

                #endregion
            case availableOperatives.T120S001:
                #region ajuste
                result = u.opspajuste(requestValues.trn_orig_id, requestValues.trn_amount);
                break;

                #endregion
            case availableOperatives.T120S000:
                #region cancelación
                result = u.opspcancel(requestValues.trn_orig_id);
                break;

                #endregion
            case availableOperatives.SHOWCONF:
                #region showConflocal
                result = u.opspconf();
                break;

                #endregion
            case availableOperatives.UPDATECONF:
                #region updateConflocal
                result = u.opspupdateconf(requestValues.HOST, requestValues.PORT, requestValues.hostStunnel, requestValues.portStunnel, requestValues.TIMEOUT, requestValues.llave, requestValues.mer_id, requestValues.ter_id, requestValues.merUSD_id, requestValues.terUSD_id, requestValues.puertoCom);
                break;

                #endregion
            default:
                result = "|trn_internal_respcode=-2|trn_msg_host=Operativa No Existe|dcs_status=ERROR|";
                break;
            }
            result = "|Respuesta=" + result + "|dcs_form=" + operacion.ToString() + "|";
            return(result);
        }