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); } }
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" }); }
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); }
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); }