private long Order(passengerList p, FareEnquiry_Response_Type3 Response, TransactionalTrainFareRequest Request, passengerList[] psngerArray)
        {
            IIDCardTypeRepository       _card         = new IDCardTypeRepository(_applicationDbContext);
            IQuotaRepository            _quota        = new QuotaRepository(_applicationDbContext);
            IUserRegistrationRepository _user         = new UserRegistrationRepository(_applicationDbContext);
            ITicketStatusRepository     _status       = new TicketStatusRepository(_applicationDbContext);
            IMerchantTypeRepository     _merchantType = new MerchantTypeRepository(_applicationDbContext);
            var Status       = _status.FindBy(x => x.fullName == "ORDERD").FirstOrDefault().Id;
            var QuotaId      = _quota.FindBy(x => x.shortName == Request.quota).FirstOrDefault().Id;
            var Icardno      = _card.FindBy(x => x.name == p.passengerCardType).FirstOrDefault().Id;
            var User         = _user.FindBy(x => x.merchantAccount == Request.loginAccountNo).SingleOrDefault();
            var merchantType = _merchantType.FindBy(x => x.merchantId == User.merchantId).SingleOrDefault();
            // Dynamic Pgcharges
            decimal PgCharge = merchantType.conditionalAmount >= Convert.ToDecimal(Response.totalFare) ?decimal.Divide(decimal.Multiply(Convert.ToDecimal(Response.totalFare), Convert.ToDecimal(merchantType.pgChargeUnderCondition)), 100)
            :decimal.Divide(decimal.Multiply(Convert.ToDecimal(Response.totalFare), Convert.ToDecimal(merchantType.pgChargeBeyondCondition)), 100);

            TicketOrders Order = _order.AddTicketOrder(new TicketOrders()
            {
                sourceStation = Request.trainFrom,
                destStation   = Request.trainTo,
                trainNumber   = Request.trainNo,
                trainName     = Response.trainName,
                Class         = Request.trainClass,
                reserveUpto   = Request.trainTo,
                bordingPoint  = Request.request.boardingStation,
                ticketAmt     = Convert.ToDecimal(Response.totalFare),
                totalAmt      = Convert.ToDecimal(Response.totalFare) + merchantType.oxigenServiceCharge - merchantType.merchantCommission, //from database from --
                //merchantConfigTable(totalfare+oxigenServiceCharge-MerchantCommission)
                journeyDay            = Convert.ToInt32(Request.journyDate.Substring(6)),
                journeyMonth          = Convert.ToInt32(Request.journyDate.Substring(4, 2)),
                journeyYear           = Convert.ToInt32(Request.journyDate.Substring(0, 4)),
                quota                 = Convert.ToInt32(QuotaId), //from data base based on quota id
                pmtGatewayName        = merchantType.pgName,
                pmtCardType           = Request.pmtCardType,
                accountNumber         = Request.accountNumber,
                irctcServiceCharge    = Convert.ToDecimal(Response.wpServiceCharge) + Convert.ToDecimal(Response.wpServiceTax),
                operatorCode          = Request.operatorCode,
                mobileNo              = Request.request.mobileNumber,
                idCardNumber          = p.passengerCardNumber,
                idCardType            = Convert.ToInt32(Icardno), //will get by p.passengerCardType from database
                ticketStatus          = Convert.ToInt32(Status),  //ticketstatus from database
                paymentGateway        = (long)(PgCharge),         //payment gateway charges from database in percent
                session               = Request.userSession,
                bookingDate           = DateTime.Now,
                oxigenServiceCharge   = merchantType.oxigenServiceCharge, //from database from merchantConfigTable
                email                 = Request.PassengerEmail,           //from database using login account no
                loginAccountNo        = Request.loginAccountNo,
                bookingSource         = HttpContext.Connection.RemoteIpAddress.ToString(),
                reservationChoice     = (Request.request.reservationChoice) == "FALSE" ? "N" : "Y",
                isTatkal              = Request.isTatkal,
                ticketVerificationKey = Request.loginAccountNo + ":" + Request.trainNo + ":" + Request.trainFrom + ":" + Request.trainTo + ":" + Request.userSession + ":" + Request.journyDate + ":" + Request.request.mobileNumber,
                psgAddress            = Request.psgAddress,
                irctcTxnNumber        = Request.request.clientTransactionId
            });

            _order.Commit();
            if (psngerArray != null)
            {
                foreach (passengerList p1 in psngerArray)
                {
                    long NewpsngrId = addPassenger(Icardno, Order.Id, p1, Response, Request);
                }
            }
            else
            {
                long NewpsngrId = addPassenger(Icardno, Order.Id, p, Response, Request);
            }
            return(Order.Id);
        }