Beispiel #1
0
        public TransactionInfoQueryResult Handle(TransactionInfoQuery query)
        {
            var             transaction            = AutoMapper.Mapper.Map <Contracts.Models.Transaction>(_transactionRepository.GetByTransactionAltId(query.TransactionAltId));
            TransactionType transactionType        = TransactionType.Regular;
            var             transactionModel       = AutoMapper.Mapper.Map <FIL.Contracts.Models.Transaction>(transaction);
            var             transactionDetails     = _transactionDetailsRepository.GetByTransactionId(transactionModel.Id);
            var             transactionDetailModel = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.TransactionDetail> >(transactionDetails);

            if (transactionDetails.FirstOrDefault().TransactionType == TransactionType.QRCode)
            {
                transactionType = TransactionType.QRCode;
            }
            var eventTicketAttributeDetails = AutoMapper.Mapper.Map <List <Contracts.Models.EventTicketAttribute> >(_eventTicketAttributeRepository.GetByEventTicketAttributeIds(transactionDetails.Select(s => s.EventTicketAttributeId)));

            var eventTicketDetails = _eventTicketDetailRepository.GetByEventTicketDetailIds(eventTicketAttributeDetails.Select(s => s.EventTicketDetailId));

            var eventDetails = _eventDetailRepository.GetByEventDetailIds(eventTicketDetails.Select(s => s.EventDetailId).Distinct());

            IEnumerable <FIL.Contracts.DataModels.Event> events = new List <FIL.Contracts.DataModels.Event>();

            events = _eventRepository.GetByAllTypeEventIds(eventDetails.Select(s => s.EventId).Distinct());

            var currency = _currencyType.Get(transaction.CurrencyId);

            return(new TransactionInfoQueryResult
            {
                Transaction = transaction,
                CurrencyName = currency.Code,
                TransactionType = transactionType,
                Events = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.Event> >(events),
                EventTicketAttributes = eventTicketAttributeDetails,
                TransactionDetails = transactionDetailModel
            });
        }
Beispiel #2
0
        public GetDetailQueryResult Handle(GetDetailQuery query)
        {
            try
            {
                var transaction = _transactionRepository.GetSuccessfulTransactionDetails(query.TransactionId);
                if (transaction == null)
                {
                    return(new GetDetailQueryResult());
                }

                var transactionDetails    = _transactionDetailsRepository.GetByTransactionId(transaction.Id).ToList();
                var eventTicketAttributes = _eventTicketAttributeRepository.GetByEventTicketAttributeIds(transactionDetails.Select(s => s.EventTicketAttributeId).Distinct());
                var eventTicketDetails    = _eventTicketDetailRepository.GetByIds(eventTicketAttributes.Select(s => s.EventTicketDetailId).Distinct());
                var eventDetails          = _eventDetailRepository.GetByEventDetailIds(eventTicketDetails.Select(s => s.EventDetailId).Distinct());
                var events               = _eventRepository.GetByAllEventIds(eventDetails.Select(s => s.EventId).Distinct());
                var filteredEvents       = events.Where(s => s.CreatedBy == query.UserAltId);
                var filteredEventDetails = eventDetails
                                           .Where(x => filteredEvents.Any(y => y.Id == x.EventId));
                var filteredEventTicketDetails = eventTicketDetails
                                                 .Where(x => filteredEventDetails.Any(y => y.Id == x.EventDetailId));
                var ticketCategories             = _ticketCategoryRepository.GetAllTicketCategory(filteredEventTicketDetails.Select(s => s.TicketCategoryId));
                var filteredEventTicktAttributes = eventTicketAttributes
                                                   .Where(x => filteredEventTicketDetails.Any(y => y.Id == x.EventTicketDetailId));
                var filteredTransactionDetail = transactionDetails
                                                .Where(x => filteredEventTicktAttributes.Any(y => y.Id == x.EventTicketAttributeId));
                return(new GetDetailQueryResult
                {
                    EventDetail = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.EventDetail> >(filteredEventDetails),
                    EventTicketAttribute = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.EventTicketAttribute> >(filteredEventTicktAttributes),
                    TicketCategory = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.TicketCategory> >(ticketCategories),
                    EventTicketDetail = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.EventTicketDetail> >(eventTicketDetails),
                    TransactionDetail = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.TransactionDetail> >(filteredTransactionDetail)
                });
            }
            catch (Exception e)
            {
                _logger.Log(LogCategory.Error, new Exception("Failed to get Details", e));
                return(new GetDetailQueryResult());
            }
        }
Beispiel #3
0
 protected override async Task Handle(DisabledCitySightSeeingEventCommand command)
 {
     try
     {
         //for disabling eventdetails & events
         var getDisabledCitySightEventDetails = _citySightSeeingEventDetailMappingRepository.GetAllDisabledDetails();
         var getDisabledEventDetails          = _eventDetailRepository.GetByEventDetailIds(getDisabledCitySightEventDetails.Select(s => s.EventDetailId));
         var getDisabledEventDetailsModel     = AutoMapper.Mapper.Map <IEnumerable <EventDetail> >(getDisabledEventDetails);
         foreach (var eventDetailData in getDisabledEventDetailsModel)
         {
             var disabledEventDetails = _eventDetailRepository.Get(eventDetailData.Id);
             disabledEventDetails.IsEnabled = false;
             _eventDetailRepository.Save(disabledEventDetails);
             var disabledEvent = _eventRepository.Get(disabledEventDetails.EventId);
             disabledEvent.IsEnabled = false;
             _eventRepository.Save(disabledEvent);
         }
     }
     catch (Exception e)
     {
         _logger.Log(LogCategory.Error, new Exception("Failed to Disable Event HOHO Data", e));
     }
 }
Beispiel #4
0
        public ReviewsAndRatingQueryResult Handle(ReviewsAndRatingQuery query)
        {
            var  userDataModel = _userRepository.GetByAltId(query.UserAltId);
            bool isPurchased   = false;

            if (userDataModel.Email.Contains("feelaplace"))
            {
                isPurchased = true;
            }
            var transactionModel = _transactionRepository.GetByUserAltId(query.UserAltId);

            var transactionDetailmodel = _transactionDetailRepository.GetByTransactionIds(transactionModel.Select(s => s.Id));
            var transDetailModel       = AutoMapper.Mapper.Map <IEnumerable <Contracts.Models.TransactionDetail> >(transactionDetailmodel);

            var eventTicketAttributeModel = _eventTicketAttributeRepository.GetByEventTicketAttributeIds(transactionDetailmodel.Select(s => s.EventTicketAttributeId));
            var eventAttributeTicketModel = AutoMapper.Mapper.Map <IEnumerable <Contracts.Models.EventTicketAttribute> >(eventTicketAttributeModel);

            var eventticketDetailModel  = _eventTicketDetailRepository.GetByEventTicketDetailIds(eventTicketAttributeModel.Select(s => s.EventTicketDetailId));
            var eventticketDetailModels = AutoMapper.Mapper.Map <IEnumerable <Contracts.Models.EventTicketDetail> >(eventticketDetailModel);

            var ticketCategorymodel  = _ticketCategoryRepository.GetByTicketCategoryIds(eventticketDetailModel.Select(s => s.TicketCategoryId));
            var ticketCategorymodel1 = AutoMapper.Mapper.Map <IEnumerable <Contracts.Models.TicketCategory> >(ticketCategorymodel);

            var eventDetailModel = _eventDetailRepository.GetByEventDetailIds(eventticketDetailModel.Select(s => s.EventDetailId));

            var eventmodel  = _eventRepository.GetByEventIds(eventDetailModel.Select(s => s.EventId));
            var eventmodel1 = AutoMapper.Mapper.Map <IEnumerable <Contracts.Models.Event> >(eventmodel);

            if (transactionModel.ToList().Count > 0)
            {
                isPurchased = true;
            }
            return(new ReviewsAndRatingQueryResult
            {
                IsPurchase = isPurchased
            });
        }
Beispiel #5
0
        public TicketAlertQueryResult Handle(TicketAlertQuery query)
        {
            var eventDataModel = _eventRepository.GetByAltId(query.altId);
            var eventModel     = AutoMapper.Mapper.Map <FIL.Contracts.Models.Event>(eventDataModel);

            if (eventModel != null)
            {
                var ticketAlertEventMappingDataModel = _ticketAlertEventMappingRepository.GetByEventId(eventModel.Id);
                var ticketAlertEventMappingModel     = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.TicketAlertEventMapping> >(ticketAlertEventMappingDataModel);

                var eventDetailDataModel = _eventDetailRepository.GetByEventDetailIds(ticketAlertEventMappingModel.Select(s => s.EventDetailId));
                var eventDetailModel     = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.EventDetail> >(eventDetailDataModel);

                var countriesDataModel = _countryRepository.GetByCountryIds(ticketAlertEventMappingModel.Select(s => s.CountryId));
                var countriesModel     = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.Country> >(countriesDataModel);

                var AllCountries      = _countryRepository.GetAll().OrderBy(o => o.Name);
                var allCountriesModel = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.Country> >(AllCountries);

                return(new TicketAlertQueryResult
                {
                    Event = eventModel,
                    Countries = countriesModel,
                    AllCountries = allCountriesModel,
                    EventDetails = eventDetailModel,
                    ticketAlertEventMappings = ticketAlertEventMappingModel
                });
            }
            else
            {
                return(new TicketAlertQueryResult
                {
                    Event = eventModel
                });
            }
        }
Beispiel #6
0
        public GetMultipleSubEventsQueryResult Handle(GetMultipleSubEventsQuery query)
        {
            List <FIL.Contracts.Models.EventDetail> subEventList = new List <FIL.Contracts.Models.EventDetail>();
            List <EventDetail> subEventFinalList = new List <EventDetail>();
            var userDetail = _userRepository.GetByAltId(query.UserAltId);

            var eventDetail = _eventRepository.GetByAltIds(query.EventAltIds);
            var eventIds    = "";

            foreach (var currentEvent in eventDetail)
            {
                eventIds = eventIds + currentEvent.Id + ",";
            }
            eventIds = eventIds.TrimEnd(',');
            var currencyDetail = _currencyTypeRepository.GetByCurrencyIdsByEventIds(eventIds);

            var assignedEvents = _eventsUserMappingRepository.GetByUserIdAndEventIds(userDetail.Id, eventDetail.Select(s => s.Id).ToList());

            List <FIL.Contracts.Models.EventDetail> subEvents = new List <FIL.Contracts.Models.EventDetail>();

            if (userDetail.RolesId != 1)
            {
                subEvents = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.EventDetail> >(_eventDetailRepository.GetByEventDetailIds(assignedEvents.Select(s => s.EventDetailId)));
            }
            else
            {
                subEvents = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.EventDetail> >(_eventDetailRepository.GetByEventIds(eventDetail.Select(s => s.Id).ToList()));
            }

            for (int k = 0; k < subEvents.Count; k = k + 2000)
            {
                var eventDetailBatcher = subEvents.Skip(k).Take(2000);
                var Guid = new Guid("E6B318DB-0945-4F96-841A-F58AED54EFCB");
                if (query.EventAltIds.Contains(Guid))
                {
                    var venues = _venueRepository.GetByVenueIds(eventDetailBatcher.Select(s => s.VenueId).Distinct());
                    foreach (var item in venues)
                    {
                        subEventList.Add(new FIL.Contracts.Models.EventDetail
                        {
                            Id   = item.Id,
                            Name = item.Name
                        });
                    }
                }
                else
                {
                    subEventList = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.EventDetail> >(eventDetailBatcher.OrderBy(o => o.StartDateTime));
                }

                subEventFinalList = subEventFinalList.Concat(AutoMapper.Mapper.Map <List <FIL.Contracts.Models.EventDetail> >(subEventList)).ToList();
            }
            return(new GetMultipleSubEventsQueryResult
            {
                SubEvents = subEventFinalList,
                CurrencyTypes = currencyDetail
            });
        }
Beispiel #7
0
        public CheckoutCommandResult CheckTicketLimit(CheckoutCommand checkoutCommand)
        {
            try
            {
                FIL.Contracts.Models.EventDetail eventDetail = new Contracts.Models.EventDetail();
                bool isPurchase = false;
                List <FIL.Contracts.DataModels.Transaction> transactionByData = new List <Contracts.DataModels.Transaction>();
                if (checkoutCommand.GuestUser != null && checkoutCommand.GuestUser.Email != null && checkoutCommand.GuestUser.PhoneNumber != null)
                {
                    transactionByData = _transactionRepository.GetSuccessFullTransactionByEmailOrPhoneNumber(checkoutCommand.GuestUser.Email, checkoutCommand.GuestUser.PhoneNumber).Where(s => s.ChannelId == Channels.Website).ToList();
                }
                if (transactionByData.Count() > 0 && !(bool)checkoutCommand.IsASI)
                {
                    IEnumerable <TransactionDetail> transactionDetails = _transactionDetailRepository.GetByTransactionIds(transactionByData.Select(s => s.Id).Distinct());
                    IEnumerable <Contracts.DataModels.EventTicketAttribute> eventTicketAttributeDetails = _eventTicketAttributeRepository.GetByEventTicketAttributeIds(transactionDetails.Select(s => s.EventTicketAttributeId).Distinct());
                    IEnumerable <Contracts.DataModels.EventTicketDetail>    eventTicketDetails          = _eventTicketDetailRepository.GetByEventTicketDetailIds(eventTicketAttributeDetails.Select(s => s.EventTicketDetailId));
                    IEnumerable <EventDetail> eventDetails = _eventDetailRepository.GetByEventDetailIds(eventTicketDetails.Select(s => s.EventDetailId).Distinct());

                    foreach (FIL.Contracts.DataModels.EventDetail itemEventDetail in eventDetails)
                    {
                        var filteredOrderEventTicketAttribute = checkoutCommand.EventTicketAttributeList.Where(s => s.EventDetailId == itemEventDetail.Id);
                        if (filteredOrderEventTicketAttribute.Any())
                        {
                            var tEventTicketDetails = eventTicketDetails.Where(w => w.EventDetailId == itemEventDetail.Id).Distinct();
                            var tETD = eventTicketDetails.Where(s => s.EventDetailId == itemEventDetail.Id);
                            var tETA = eventTicketAttributeDetails.Where(w => tETD.Select(s => s.Id).Contains(w.EventTicketDetailId));
                            int transactionTotalTickets        = transactionDetails.Where(w => tETA.Select(s => s.Id).Contains(w.EventTicketAttributeId)).Distinct().Select(s => s.TotalTickets).Sum(item => item);
                            int commanEventTicketAttributesSum = filteredOrderEventTicketAttribute.Select(s => s.TotalTickets).Sum(item => item);
                            int ticketLimit = 10;
                            if (itemEventDetail.TicketLimit != null)
                            {
                                ticketLimit = (int)itemEventDetail.TicketLimit;
                            }
                            if ((commanEventTicketAttributesSum + transactionTotalTickets) > ticketLimit)
                            {
                                eventDetail = AutoMapper.Mapper.Map <FIL.Contracts.Models.EventDetail>(itemEventDetail);
                                isPurchase  = true;
                                break;
                            }
                        }
                    }
                }
                if (isPurchase && !checkoutCommand.ISRasv)
                {
                    return(new CheckoutCommandResult
                    {
                        Id = 0,
                        Success = false,
                        EventName = eventDetail.Name,
                        IsTransactionLimitExceed = true,
                        IsTicketCategorySoldOut = false
                    });
                }
                else
                {
                    return(new CheckoutCommandResult
                    {
                        Success = true
                    });
                }
            }
            catch (Exception e)
            {
                _logger.Log(Logging.Enums.LogCategory.Error, e);
                return(new CheckoutCommandResult
                {
                    Success = true
                });
            }
        }
Beispiel #8
0
        public ReportSubEventsQueryResult Handle(ReportSubEventsQuery query)
        {
            List <FIL.Contracts.Models.EventDetail> subEventList = new List <FIL.Contracts.Models.EventDetail>();
            List <EventDetail> subEventFinalList = new List <EventDetail>();
            var userDetail     = _userRepository.GetByAltId(query.UserAltId);
            var eventDetail    = _eventRepository.GetByAltId(query.EventAltId);
            var assignedEvents = _eventsUserMappingRepository.GetByUserIdAndEventId(userDetail.Id, eventDetail.Id);
            List <FIL.Contracts.Models.EventDetail> subEvents = new List <FIL.Contracts.Models.EventDetail>();

            if (userDetail.RolesId != 1)
            {
                subEvents = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.EventDetail> >(_eventDetailRepository.GetByEventDetailIds(assignedEvents.Select(s => s.EventDetailId)));
            }
            else
            {
                subEvents = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.EventDetail> >(_eventDetailRepository.GetAllByEventId(eventDetail.Id));
            }
            for (int k = 0; k < subEvents.Count; k = k + 2000)
            {
                var eventDetailBatcher = subEvents.Skip(k).Take(2000);
                if (query.EventAltId.ToString().ToUpper() == "E6B318DB-0945-4F96-841A-F58AED54EFCB")
                {
                    var venues = _venueRepository.GetByVenueIds(eventDetailBatcher.Select(s => s.VenueId).Distinct());
                    foreach (var item in venues)
                    {
                        subEventList.Add(new FIL.Contracts.Models.EventDetail
                        {
                            Id   = item.Id,
                            Name = item.Name
                        });
                    }
                }
                else
                {
                    subEventList = AutoMapper.Mapper.Map <List <FIL.Contracts.Models.EventDetail> >(eventDetailBatcher.OrderBy(o => o.StartDateTime));
                }

                subEventFinalList = subEventFinalList.Concat(AutoMapper.Mapper.Map <List <FIL.Contracts.Models.EventDetail> >(subEventList)).ToList();
            }
            return(new ReportSubEventsQueryResult
            {
                SubEvents = subEventFinalList
            });
        }
Beispiel #9
0
        public CurrentOrderDataQueryResult Handle(CurrentOrderDataQuery query)
        {
            var transaction = _transactionRepository.GetByAltId(query.TransactionAltId);

            if (transaction == null)
            {
                return(new CurrentOrderDataQueryResult
                {
                });
            }

            var transactionDetails     = _transactionDetailRepository.GetByTransactionId(transaction.Id);
            var transactionDetailModel = AutoMapper.Mapper.Map <List <Contracts.Models.TransactionDetail> >(transactionDetails);

            var eventTicketAttributeDetails = _eventTicketAttributeRepository.GetByEventTicketAttributeIds(transactionDetails.Select(s => s.EventTicketAttributeId));

            var eventTicketDetails     = _eventTicketDetailRepository.GetByEventTicketDetailIds(eventTicketAttributeDetails.Select(s => s.EventTicketDetailId));
            var eventTicketDetailModel = AutoMapper.Mapper.Map <List <Contracts.Models.EventTicketDetail> >(eventTicketDetails);

            var ticketCategories = _ticketCategoryRepository.GetByTicketCategoryIds(eventTicketDetails.Select(s => s.TicketCategoryId));
            var eventDetails     = _eventDetailRepository.GetByEventDetailIds(eventTicketDetails.Select(s => s.EventDetailId).Distinct());
            var eventAttribute   = _eventAttributeRepository.GetByEventDetailIds(eventTicketDetails.Select(s => s.EventDetailId).Distinct());

            var eventDetailModel = AutoMapper.Mapper.Map <List <Contracts.Models.EventDetail> >(eventDetails);
            var venues           = _venueRepository.GetByVenueIds(eventDetailModel.Select(s => s.VenueId));
            var city             = _cityRepository.GetByCityIds(venues.Select(s => s.CityId));
            var state            = _stateRepository.GetByStateIds(city.Select(s => s.StateId));
            var country          = _countryRepository.GetByCountryIds(state.Select(s => s.CountryId));

            List <FIL.Contracts.DataModels.Event> events = events = _eventRepository.GetByAllEventIds(eventDetails.Select(s => s.EventId).Distinct()).ToList();

            var currencyDetail = _currencyTypeRepository.GetByCurrencyId(transaction.CurrencyId);
            var orderConfirmationSubContainer = events.Select(eId =>
            {
                var tEvent            = events.Where(s => s.Id == eId.Id).FirstOrDefault();
                var tEventDetail      = _eventDetailRepository.GetByEventIdAndEventDetailId(eId.Id, eventDetails.Select(edId => edId.Id)).OrderBy(s => s.StartDateTime).OrderByDescending(od => od.Id);
                var subEventContainer = tEventDetail.Select(edetail =>
                {
                    var teventCategory        = new FIL.Contracts.DataModels.EventCategory();
                    var eventCategotyMappings = _eventCategoryMappingRepository.GetByEventId(tEvent.Id).FirstOrDefault();
                    if (eventCategotyMappings != null)
                    {
                        teventCategory = _eventCategoryRepository.Get(eventCategotyMappings.EventCategoryId);
                    }
                    var tEventDetails              = eventDetails.Where(s => s.Id == edetail.Id).FirstOrDefault();
                    var tEventAttributes           = eventAttribute.Where(s => s.EventDetailId == tEventDetails.Id).FirstOrDefault();
                    var tVenue                     = venues.Where(s => s.Id == edetail.VenueId).FirstOrDefault();
                    var tCity                      = city.Where(s => s.Id == tVenue.CityId).FirstOrDefault();
                    var tState                     = state.Where(s => s.Id == tCity.StateId).FirstOrDefault();
                    var tCountry                   = country.Where(s => s.Id == tState.CountryId).FirstOrDefault();
                    var tEventTicketDetail         = _eventTicketDetailRepository.GetByEventDetailIdsAndIds(tEventDetail.Where(w => w.Id == edetail.Id).Select(s => s.Id), eventTicketDetailModel.Select(s => s.Id));
                    var tEventTicketAttribute      = eventTicketAttributeDetails.Where(x => tEventTicketDetail.Any(y => y.Id == x.EventTicketDetailId));
                    var tTicketCategory            = ticketCategories.Where(x => tEventTicketDetail.Any(y => y.TicketCategoryId == x.Id));
                    var tTransactionDetail         = transactionDetails.Where(x => tEventTicketAttribute.Any(y => y.Id == x.EventTicketAttributeId)).ToList();
                    var tEventDeliveryTypeDetail   = _eventDeliveryTypeDetailRepository.GetByEventDetailIds(tEventDetail.Select(s => s.Id));
                    var tTransactionDeliveryDetail = _transactionDeliveryDetailRepository.GetByTransactionDetailIds(tTransactionDetail.Select(s => s.Id));
                    var tUser                      = _userRepository.GetByAltId(transaction.CreatedBy);
                    var tUserAddress               = (dynamic)null;
                    if (tUser != null)
                    {
                        tUserAddress = _userAddressDetailRepository.GetByUserId(tUser.Id).LastOrDefault();
                    }
                    var tZipCode = (dynamic)null;
                    if (tUserAddress != null)
                    {
                        tZipCode = _zipcodeRepository.Get(tUserAddress.Zipcode);
                    }

                    return(new SubEventContainer
                    {
                        Event = AutoMapper.Mapper.Map <Contracts.Models.Event>(tEvent),
                        EventCategory = AutoMapper.Mapper.Map <Contracts.Models.EventCategory>(teventCategory),
                        EventAttribute = AutoMapper.Mapper.Map <Contracts.Models.EventAttribute>(tEventAttributes),
                        EventDetail = AutoMapper.Mapper.Map <Contracts.Models.EventDetail>(tEventDetails),
                        Venue = AutoMapper.Mapper.Map <Contracts.Models.Venue>(tVenue),
                        City = AutoMapper.Mapper.Map <Contracts.Models.City>(tCity),
                        State = AutoMapper.Mapper.Map <Contracts.Models.State>(tState),
                        Country = AutoMapper.Mapper.Map <Contracts.Models.Country>(tCountry),
                        Zipcode = AutoMapper.Mapper.Map <Contracts.Models.Zipcode>(tZipCode),
                        EventTicketDetail = AutoMapper.Mapper.Map <IEnumerable <Contracts.Models.EventTicketDetail> >(tEventTicketDetail),
                        EventTicketAttribute = AutoMapper.Mapper.Map <IEnumerable <Contracts.Models.EventTicketAttribute> >(tEventTicketAttribute),
                        EventDeliveryTypeDetail = AutoMapper.Mapper.Map <IEnumerable <Contracts.Models.EventDeliveryTypeDetail> >(tEventDeliveryTypeDetail),
                        TicketCategory = AutoMapper.Mapper.Map <IEnumerable <FIL.Contracts.Models.TicketCategory> >(tTicketCategory),
                        TransactionDetail = AutoMapper.Mapper.Map <IEnumerable <Contracts.Models.TransactionDetail> >(tTransactionDetail),
                        TransactionDeliveryDetail = AutoMapper.Mapper.Map <IEnumerable <Contracts.Models.TransactionDeliveryDetail> >(tTransactionDeliveryDetail),
                    });
                });

                return(new OrderConfirmationSubContainer
                {
                    Event = AutoMapper.Mapper.Map <Contracts.Models.Event>(tEvent),
                    subEventContainer = subEventContainer.ToList()
                });
            });

            return(new CurrentOrderDataQueryResult
            {
                Transaction = AutoMapper.Mapper.Map <Contracts.Models.Transaction>(transaction),
                CurrencyType = AutoMapper.Mapper.Map <FIL.Contracts.Models.CurrencyType>(currencyDetail),
                orderConfirmationSubContainer = orderConfirmationSubContainer.ToList(),
                TicketQuantity = eventTicketAttributeDetails.ToArray().Length,
            });
        }
        public OrderConfirmationQueryResult Get(
            long transactionId,
            bool isConfirmationFromMyOrders,
            FIL.Contracts.Enums.Channels channel)
        {
            var transactionScheduleDetails = new List <FIL.Contracts.DataModels.TransactionScheduleDetail>();
            var scheduleDetails            = new List <FIL.Contracts.DataModels.ScheduleDetail>();
            var transaction = _transactionRepository.GetSuccessfulTransactionDetails(transactionId);
            var transactionModel = AutoMapper.Mapper.Map <FIL.Contracts.Models.Transaction>(transaction);
            var IsASI = false; var IsHoho = false;

            if (transactionModel == null)
            {
                return(new OrderConfirmationQueryResult());
            }

            var transactionDetails     = _transactionDetailsRepository.GetByTransactionId(transactionModel.Id);
            var transactionDetailModel = AutoMapper.Mapper.Map <List <TransactionDetail> >(transactionDetails);

            var eventTicketAttributeDetails = _eventTicketAttributeRepository.GetByEventTicketAttributeIds(transactionDetails.Select(s => s.EventTicketAttributeId));

            var eventTicketDetails     = _eventTicketDetailRepository.GetByEventTicketDetailIds(eventTicketAttributeDetails.Select(s => s.EventTicketDetailId));
            var eventTicketDetailModel = AutoMapper.Mapper.Map <List <EventTicketDetail> >(eventTicketDetails);

            var ticketCategories = _ticketCategoryRepository.GetByTicketCategoryIds(eventTicketDetails.Select(s => s.TicketCategoryId));
            var eventDetails     = _eventDetailRepository.GetByEventDetailIds(eventTicketDetails.Select(s => s.EventDetailId).Distinct());
            var eventAttribute   = _eventAttributeRepository.GetByEventDetailIds(eventTicketDetails.Select(s => s.EventDetailId).Distinct());

            var eventDetailModel = AutoMapper.Mapper.Map <List <EventDetail> >(eventDetails);
            var venues           = _venueRepository.GetByVenueIds(eventDetailModel.Select(s => s.VenueId));
            var city             = _cityRepository.GetByCityIds(venues.Select(s => s.CityId));
            var state            = _stateRepository.GetByStateIds(city.Select(s => s.StateId));
            var country          = _countryRepository.GetByCountryIds(state.Select(s => s.CountryId));

            if (channel == Contracts.Enums.Channels.Feel && eventDetailModel.FirstOrDefault().EventFrequencyType == Contracts.Enums.EventFrequencyType.Recurring)
            {
                transactionScheduleDetails = _transactionScheduleDetail.GetAllByTransactionDetails(transactionDetailModel.Select(s => s.Id).ToList()).ToList();
                scheduleDetails            = _scheduleDetailRepository.GetAllByIds(transactionScheduleDetails.Select(s => s.ScheduleDetailId).ToList()).ToList();
            }
            List <FIL.Contracts.DataModels.Event> events = new List <FIL.Contracts.DataModels.Event>();

            if (isConfirmationFromMyOrders == true)
            {
                events = _eventRepository.GetByAllEventIds(eventDetails.Select(s => s.EventId).Distinct()).ToList();
            }
            else
            {
                events = _eventRepository.GetByAllTypeEventIds(eventDetails.Select(s => s.EventId).Distinct()).ToList();
            }

            var transactionPaymentDetails = _transactionPaymentDetailRepository.GetAllByTransactionId(transactionId);
            var transactionPaymentDetail  = transactionPaymentDetails.Where(s => s.UserCardDetailId != null).FirstOrDefault();
            var currencyDetail            = _currencyTypeRepository.GetByCurrencyId(transactionModel.CurrencyId);
            var paymentOption             = (dynamic)null;
            var userCardDetail            = (dynamic)null;

            if (transactionPaymentDetail != null)
            {
                paymentOption  = transactionPaymentDetail.PaymentOptionId.ToString();
                userCardDetail = _userCardDetailRepository.GetByUserCardDetailId(transactionPaymentDetail.UserCardDetailId);
            }
            var cardTypes = (dynamic)null;

            if (userCardDetail != null)
            {
                cardTypes = userCardDetail.CardTypeId.ToString();
            }

            var orderConfirmationSubContainer = events.Select(eId =>
            {
                var tEvent       = events.Where(s => s.Id == eId.Id).FirstOrDefault();
                var tEventDetail = _eventDetailRepository.GetByEventIdAndEventDetailId(eId.Id, eventDetails.Select(edId => edId.Id)).OrderBy(s => s.StartDateTime).OrderByDescending(od => od.Id);

                var subEventContainer = tEventDetail.Select(edetail =>
                {
                    var teventCategory = new FIL.Contracts.DataModels.EventCategory();
                    if (channel == FIL.Contracts.Enums.Channels.Feel)
                    {
                        var eventCategotyMappings = _eventCategoryMappingRepository.GetByEventId(tEvent.Id).FirstOrDefault();
                        if (eventCategotyMappings != null)
                        {
                            teventCategory = _eventCategoryRepository.Get(eventCategotyMappings.EventCategoryId);
                        }
                    }
                    else
                    {
                        teventCategory = _eventCategoryRepository.Get(tEvent.EventCategoryId);
                    }
                    var tEventDetails    = eventDetails.Where(s => s.Id == edetail.Id).FirstOrDefault();
                    var tEventAttributes = eventAttribute.Where(s => s.EventDetailId == tEventDetails.Id).FirstOrDefault();
                    var tVenue           = venues.Where(s => s.Id == edetail.VenueId).FirstOrDefault();
                    var tCity            = city.Where(s => s.Id == tVenue.CityId).FirstOrDefault();
                    var tState           = state.Where(s => s.Id == tCity.StateId).FirstOrDefault();
                    var tCountry         = country.Where(s => s.Id == tState.CountryId).FirstOrDefault();

                    var tEventTicketDetail = _eventTicketDetailRepository.GetByEventDetailIdsAndIds(tEventDetail.Where(w => w.Id == edetail.Id).Select(s => s.Id), eventTicketDetailModel.Select(s => s.Id));

                    var tEventTicketAttribute = eventTicketAttributeDetails.Where(x => tEventTicketDetail.Any(y => y.Id == x.EventTicketDetailId));

                    var tTicketCategory = ticketCategories.Where(x => tEventTicketDetail.Any(y => y.TicketCategoryId == x.Id));

                    var tTransactionDetail = transactionDetails.Where(x => tEventTicketAttribute.Any(y => y.Id == x.EventTicketAttributeId)).ToList();
                    List <MatchLayoutSectionSeat> tMatchLayoutSectionSeats = new List <MatchLayoutSectionSeat>();
                    List <FIL.Contracts.DataModels.MatchLayoutCompanionSeatMapping> tMatchLayoutCompanionSeatMapping = new List <FIL.Contracts.DataModels.MatchLayoutCompanionSeatMapping>();

                    var tMatchSeatTicketDetails = _matchSeatTicketDetailRepository.GetByTransactionIdAndTicketDetailIds(tTransactionDetail.Select(w => w.TransactionId).FirstOrDefault(), tEventTicketDetail.Select(w => w.Id));
                    if (tMatchSeatTicketDetails.Any())
                    {
                        var matchSeatTicketDetails = tMatchSeatTicketDetails.Where(w => w.MatchLayoutSectionSeatId != null).FirstOrDefault();
                        if (matchSeatTicketDetails != null)
                        {
                            tMatchLayoutSectionSeats         = AutoMapper.Mapper.Map <List <MatchLayoutSectionSeat> >(_matchLayoutSectionSeatRepository.GetByIds(tMatchSeatTicketDetails.Select(s => (long)s.MatchLayoutSectionSeatId).Distinct()));
                            tMatchLayoutCompanionSeatMapping = AutoMapper.Mapper.Map <List <FIL.Contracts.DataModels.MatchLayoutCompanionSeatMapping> >(_matchLayoutCompanionSeatMappingRepository.GetByWheelChairSeatIds(tMatchLayoutSectionSeats.Select(s => s.Id).Distinct()));
                        }
                    }

                    var taSITransactionDetailTimeSlotIdMapping = _aSITransactionDetailTimeSlotIdMappingRepository.GetByTransactionDetailIds(tTransactionDetail.Select(s => s.Id));
                    var tGuestDetails = _guestDetailRepository.GetByTransactionDetailIds(tTransactionDetail.Select(s => s.Id));
                    var taSIPaymentResponseDetailTicketMappings = _aSIPaymentResponseDetailTicketMappingRepository.GetByVisitorIds(tGuestDetails.Select(s => (long)s.Id).ToList());
                    var teventTimeSlotMapping = _eventTimeSlotMappingRepository.GetByIds(taSITransactionDetailTimeSlotIdMapping.Select(s => s.EventTimeSlotMappingId));
                    if (tEvent.EventSourceId == Contracts.Enums.EventSource.ASI)
                    {
                        IsASI = true;
                        foreach (FIL.Contracts.DataModels.TransactionDetail currentTransacitionDetail in tTransactionDetail)
                        {
                            var visitDate = (DateTime)currentTransacitionDetail.VisitDate;
                            currentTransacitionDetail.VisitDate = visitDate.AddHours(5).AddMinutes(30);
                        }
                    }

                    if (tEvent.EventSourceId == Contracts.Enums.EventSource.CitySightSeeing)
                    {
                        IsHoho = true;
                    }
                    var tEventDeliveryTypeDetail = _eventDeliveryTypeDetailRepository.GetByEventDetailIds(tEventDetail.Select(s => s.Id));

                    var tTransactionDeliveryDetail = _transactionDeliveryDetailRepository.GetByTransactionDetailIds(tTransactionDetail.Select(s => s.Id));

                    var tUser        = _userRepository.GetByAltId(transaction.CreatedBy);
                    var tUserAddress = (dynamic)null;
                    if (tUser != null)
                    {
                        tUserAddress = _userAddressDetailRepository.GetByUserId(tUser.Id).LastOrDefault();
                    }
                    var tZipCode = (dynamic)null;
                    if (tUserAddress != null)
                    {
                        tZipCode = _zipcodeRepository.Get(tUserAddress.Zipcode);
                    }
                    var transctionScheduleDetails = transactionScheduleDetails.Where(s => tTransactionDetail.Any(x => x.Id == s.TransactionDetailId)).ToList();
                    var scheduleDetail            = scheduleDetails.Where(s => transctionScheduleDetails.Any(x => x.ScheduleDetailId == s.Id)).ToList();
                    return(new SubEventContainer
                    {
                        Event = AutoMapper.Mapper.Map <Event>(tEvent),
                        EventCategory = AutoMapper.Mapper.Map <EventCategory>(teventCategory),
                        EventAttribute = AutoMapper.Mapper.Map <EventAttribute>(tEventAttributes),
                        EventDetail = AutoMapper.Mapper.Map <EventDetail>(tEventDetails),
                        Venue = AutoMapper.Mapper.Map <Venue>(tVenue),
                        City = AutoMapper.Mapper.Map <City>(tCity),
                        State = AutoMapper.Mapper.Map <State>(tState),
                        Country = AutoMapper.Mapper.Map <Country>(tCountry),
                        Zipcode = AutoMapper.Mapper.Map <Zipcode>(tZipCode),
                        EventTicketDetail = AutoMapper.Mapper.Map <IEnumerable <EventTicketDetail> >(tEventTicketDetail),
                        EventTicketAttribute = AutoMapper.Mapper.Map <IEnumerable <EventTicketAttribute> >(tEventTicketAttribute),
                        EventDeliveryTypeDetail = AutoMapper.Mapper.Map <IEnumerable <EventDeliveryTypeDetail> >(tEventDeliveryTypeDetail),
                        TicketCategory = AutoMapper.Mapper.Map <IEnumerable <FIL.Contracts.Models.TicketCategory> >(tTicketCategory),
                        TransactionDetail = AutoMapper.Mapper.Map <IEnumerable <TransactionDetail> >(tTransactionDetail),
                        MatchSeatTicketDetail = AutoMapper.Mapper.Map <IEnumerable <MatchSeatTicketDetail> >(tMatchSeatTicketDetails),
                        MatchLayoutSectionSeat = AutoMapper.Mapper.Map <IEnumerable <MatchLayoutSectionSeat> >(tMatchLayoutSectionSeats),
                        MatchLayoutCompanionSeatMappings = AutoMapper.Mapper.Map <IEnumerable <FIL.Contracts.DataModels.MatchLayoutCompanionSeatMapping> >(tMatchLayoutCompanionSeatMapping),
                        TransactionDeliveryDetail = AutoMapper.Mapper.Map <IEnumerable <TransactionDeliveryDetail> >(tTransactionDeliveryDetail),
                        EventTimeSlotMappings = AutoMapper.Mapper.Map <IEnumerable <FIL.Contracts.Models.ASI.EventTimeSlotMapping> >(teventTimeSlotMapping),
                        ASITransactionDetailTimeSlotIdMappings = AutoMapper.Mapper.Map <IEnumerable <FIL.Contracts.Models.ASI.ASITransactionDetailTimeSlotIdMapping> >(taSITransactionDetailTimeSlotIdMapping),
                        ASIPaymentResponseDetailTicketMappings = AutoMapper.Mapper.Map <IEnumerable <FIL.Contracts.Models.ASI.ASIPaymentResponseDetailTicketMapping> >(taSIPaymentResponseDetailTicketMappings),
                        TransactionScheduleDetails = transctionScheduleDetails,
                        ScheduleDetails = scheduleDetail
                    });
                });

                return(new OrderConfirmationSubContainer
                {
                    Event = AutoMapper.Mapper.Map <Event>(tEvent),
                    subEventContainer = subEventContainer.ToList()
                });
            });

            decimal TotalGst      = 0;
            decimal GST           = 0;
            decimal AdditionalGST = 0;

            try
            {
                if (transactionModel != null)
                {
                    if (orderConfirmationSubContainer.Any() && orderConfirmationSubContainer.ToList().ElementAt(0).Event.AltId.ToString().ToUpper() == "1F0257FA-EEA6-4469-A7BC-B878A215C8A9") //RASV Email
                    {
                        TotalGst = (decimal)transactionModel.ConvenienceCharges / 11;
                    }
                }
            }
            catch (Exception e)
            {
            }

            return(new OrderConfirmationQueryResult
            {
                Transaction = transactionModel,
                TransactionPaymentDetail = AutoMapper.Mapper.Map <FIL.Contracts.Models.TransactionPaymentDetail>(transactionPaymentDetail),
                UserCardDetail = AutoMapper.Mapper.Map <FIL.Contracts.Models.UserCardDetail>(userCardDetail),
                CurrencyType = AutoMapper.Mapper.Map <FIL.Contracts.Models.CurrencyType>(currencyDetail),
                PaymentOption = paymentOption,
                GoodsAndServiceTax = TotalGst,
                cardTypes = cardTypes,
                orderConfirmationSubContainer = orderConfirmationSubContainer.ToList(),
                TicketQuantity = eventTicketAttributeDetails.ToArray().Length,
                IsASI = IsASI,
                IsHoho = IsHoho
            });
        }