Beispiel #1
0
        public TransactionQueryResult Handle(TransactionQuery query)
        {
            FIL.Contracts.DataModels.Transaction        transaction  = new FIL.Contracts.DataModels.Transaction();
            List <FIL.Contracts.DataModels.Transaction> transactions = new List <FIL.Contracts.DataModels.Transaction>();
            Dictionary <long, bool> transactionValue = new Dictionary <long, bool>();
            var isASITicketCreated = true;

            if (query.TransactionId != null && !query.IsASI)
            {
                transaction = _transactionRepository.Get((long)query.TransactionId);
            }
            else if (!string.IsNullOrWhiteSpace(query.Email) && !query.IsASI)
            {
                transaction = _transactionRepository.GetByEmail(query.Email);
            }
            else if (query.IsASI && query.PhoneNumber != null && query.PhoneNumber != "")
            {
                var transactionData = _transactionRepository.GetTransactionByPhoneNumber(query.PhoneNumber);
                transactions = transactionData.Where(s => s.CreatedUtc.Date == DateTime.UtcNow.Date).ToList();
                transaction  = transactions.FirstOrDefault();
                foreach (var currentTransaction in transactions)
                {
                    var transactionDetail = _transactionDetailRepository.GetByTransactionId(currentTransaction.Id).ToList();
                    var guestDetails      = _guestDetailRepository.GetByTransactionDetailIds(transactionDetail.Select(s => s.Id));
                    var asiTicket         = _aSIPaymentResponseDetailTicketMappingRepository.GetByVisitorIds(guestDetails.Select(s => (long)s.Id));
                    if (asiTicket.Count() == 0)
                    {
                        transactionValue.Add(currentTransaction.Id, false);
                    }
                    else
                    {
                        transactionValue.Add(currentTransaction.Id, true);
                    }
                }
            }
            if (transaction == null)
            {
                return(new TransactionQueryResult {
                    TransactionIds = transactionValue
                });
            }
            return(new TransactionQueryResult
            {
                TransactionId = transaction.Id,
                TransactionIds = transactionValue,
                AltId = transaction.AltId,
                CurrencyId = transaction.CurrencyId,
                GrossTicketAmount = transaction.GrossTicketAmount,
                DeliveryCharges = transaction.DeliveryCharges,
                ConvenienceCharges = transaction.ConvenienceCharges,
                ServiceCharge = transaction.ServiceCharge,
                DiscountAmount = transaction.DiscountAmount,
                NetTicketAmount = transaction.NetTicketAmount,
                IsASITicketsCreated = isASITicketCreated
            });
        }
        protected override async Task Handle(OrderConfirmationSuccessCommand command)
        {
            FIL.Contracts.DataModels.Transaction transaction = _transactionRepository.GetUnderPaymentTransactionDetails(command.TransactionId);

            if (transaction != null)
            {
                transaction.TransactionStatusId = TransactionStatus.Success;
                _transactionRepository.Save(transaction);
            }
        }
Beispiel #3
0
        private void UpdateTransactionStatus(FIL.Contracts.DataModels.Transaction transaction)
        {
            transaction.TransactionStatusId = Contracts.Enums.TransactionStatus.Success;
            transaction.UpdatedUtc          = DateTime.UtcNow;
            _transactionRepository.Save(transaction);

            _transactionPaymentDetailRepository.Save(new Contracts.DataModels.TransactionPaymentDetail
            {
                Amount           = transaction.NetTicketAmount.ToString(),
                CreatedBy        = Guid.NewGuid(),
                CreatedUtc       = DateTime.UtcNow,
                PayConfNumber    = "",
                PaymentDetail    = "FAP Live 0 price event",
                PaymentOptionId  = Contracts.Enums.PaymentOptions.CashCard,
                PaymentGatewayId = Contracts.Enums.PaymentGateway.Stripe,
                TransactionId    = transaction.Id,
                UserCardDetailId = 6,
                RequestType      = "Charge Received"
            });
        }
Beispiel #4
0
        public FIL.Contracts.DataModels.Transaction UpdateTransactionUpdates(FIL.Contracts.DataModels.Transaction transaction, string TargetCurrencyCode)
        {
            if (_IsGeoCurrencySelectionEnabled && transaction != null)
            {
                int TargetCurrencyID = GetCurrencyID(TargetCurrencyCode).Id;
                if (transaction.ConvenienceCharges.HasValue)
                {
                    transaction.ConvenienceCharges = _currencyConverter.Exchange(transaction.ConvenienceCharges.Value, GetCurrencyCode(transaction.CurrencyId).Code, TargetCurrencyCode);
                }

                if (transaction.DeliveryCharges.HasValue)
                {
                    transaction.DeliveryCharges = _currencyConverter.Exchange(transaction.DeliveryCharges.Value, GetCurrencyCode(transaction.CurrencyId).Code, TargetCurrencyCode);
                }

                if (transaction.DiscountAmount.HasValue)
                {
                    transaction.DiscountAmount = _currencyConverter.Exchange(transaction.DiscountAmount.Value, GetCurrencyCode(transaction.CurrencyId).Code, TargetCurrencyCode);
                }

                if (transaction.GrossTicketAmount.HasValue)
                {
                    transaction.GrossTicketAmount = _currencyConverter.Exchange(transaction.GrossTicketAmount.Value, GetCurrencyCode(transaction.CurrencyId).Code, TargetCurrencyCode);
                }

                if (transaction.NetTicketAmount.HasValue)
                {
                    transaction.NetTicketAmount = _currencyConverter.Exchange(transaction.NetTicketAmount.Value, GetCurrencyCode(transaction.CurrencyId).Code, TargetCurrencyCode);
                }

                if (transaction.ServiceCharge.HasValue)
                {
                    transaction.ServiceCharge = _currencyConverter.Exchange(transaction.ServiceCharge.Value, GetCurrencyCode(transaction.CurrencyId).Code, TargetCurrencyCode);
                }

                transaction.CurrencyId = TargetCurrencyID;
            }
            return(transaction);
        }
Beispiel #5
0
        public bool CreateMeeting(FIL.Contracts.DataModels.Transaction transaction, bool?isZeroPriceEvent = false)
        {
            try
            {
                var liveOnlineTransactionDetailModel = transaction.ChannelId == Channels.Feel ? _transactionRepository.GetFeelOnlineDetails(transaction.Id).Where(s => s.TransactionType == Contracts.Enums.TransactionType.LiveOnline).FirstOrDefault() : _transactionRepository.GetFeelOnlineDetails(transaction.Id).FirstOrDefault();

                if (liveOnlineTransactionDetailModel != null)
                {
                    //check if subcategory is LiveOnline
                    bool isLiveOnline = false;
                    if (liveOnlineTransactionDetailModel.Channel == Channels.Feel && liveOnlineTransactionDetailModel.EventcategoryId != 0)
                    {
                        var @event = _eventRepository.Get(liveOnlineTransactionDetailModel.EventId);
                        if (@event != null && @event.MasterEventTypeId == MasterEventType.Online)
                        {
                            isLiveOnline = true;
                        }
                    }
                    else if (liveOnlineTransactionDetailModel.Channel == Channels.Website)
                    {
                        var eventModel = _eventRepository.Get(liveOnlineTransactionDetailModel.EventId);
                        if (eventModel.EventCategoryId == 119)
                        {
                            isLiveOnline = true;
                        }
                    }

                    if (isLiveOnline)
                    {
                        //check if meeting is created for requested event
                        var zoomMeeting = _zoomMeetingRepository.GetByEventId(liveOnlineTransactionDetailModel.EventId);

                        // Update Zero Price Event Transaction Status to success
                        if (isZeroPriceEvent != null && (bool)isZeroPriceEvent)
                        {
                            UpdateTransactionStatus(transaction);
                        }

                        if (zoomMeeting == null)
                        {
                            var userModel     = _userRepository.GetByAltId(liveOnlineTransactionDetailModel.UserTransactionAltId);
                            var createMeeting = Create(liveOnlineTransactionDetailModel);

                            var insertUsers = InsertUsers(liveOnlineTransactionDetailModel);

                            var saveUser = SaveTransactedUser(userModel.Id, liveOnlineTransactionDetailModel, transaction.Id);
                        }
                        else
                        {
                            var userModel = _userRepository.GetByAltId(liveOnlineTransactionDetailModel.UserTransactionAltId);
                            var saveUser  = SaveTransactedUser(userModel.Id, liveOnlineTransactionDetailModel, transaction.Id);
                        }
                    }
                    else
                    {
                        return(true);
                    }
                }
                else
                {
                    return(true);
                }
            }
            catch (Exception e)
            {
                _logger.Log(LogCategory.Error, new Exception("Failed to create zoom meeting" + e.Message, e));
                return(false);
            }
            return(true);
        }