protected override async Task Handle(SaveOrderCommand command) { try { //check if there is discount component available for that variant var citySightSeeingTicketTypeDetails = _citySightSeeingTicketTypeDetailRepository.GetAllByTicketId(command.TicketId).Where(s => s.UnitDiscount != "0.00").ToList(); if (citySightSeeingTicketTypeDetails.Count() > 0) { var trasactionDetail = _transactionDetailRepository.GetByTransactionId(command.TransactionId); var eventTicketAttributes = _eventTicketAttributeRepository.GetByEventTicketAttributeIds(trasactionDetail.Select(s => s.EventTicketAttributeId)); var eventTicketDetails = _eventTicketDetailRepository.GetAllByEventTicketDetailIds(eventTicketAttributes.Select(s => s.EventTicketDetailId)); var ticketCategories = _ticketCategoryRepository.GetAllTicketCategory(eventTicketDetails.Select(s => s.TicketCategoryId)); decimal totalDiscountAmount = 0; foreach (var currentCitySightSeeingTicketType in citySightSeeingTicketTypeDetails) { var currentTicketCat = ticketCategories.Where(s => s.Name == currentCitySightSeeingTicketType.TicketType).FirstOrDefault(); var currentEventTicketDetail = eventTicketDetails.Where(s => s.TicketCategoryId == currentTicketCat.Id).FirstOrDefault(); var currentEventTicketAttribute = eventTicketAttributes.Where(s => s.EventTicketDetailId == currentEventTicketDetail.Id).FirstOrDefault(); var currentTransactionDetail = trasactionDetail.Where(s => s.EventTicketAttributeId == currentEventTicketAttribute.Id).FirstOrDefault(); currentTransactionDetail.DiscountAmount = (Convert.ToInt16(currentCitySightSeeingTicketType.UnitDiscount) * currentTransactionDetail.TotalTickets); _transactionDetailRepository.Save(currentTransactionDetail); totalDiscountAmount = totalDiscountAmount + (Convert.ToInt16(currentCitySightSeeingTicketType.UnitDiscount) * currentTransactionDetail.TotalTickets); } var transaction = _transactionRepository.Get(command.TransactionId); transaction.DiscountAmount = totalDiscountAmount; transaction.NetTicketAmount = transaction.GrossTicketAmount - totalDiscountAmount; _transactionRepository.Save(transaction); } var citySightSeeingTransactionData = new CitySightSeeingTransactionDetail { AltId = Guid.NewGuid(), FromDateTime = command.FromTime, EndDateTime = command.EndTime, HasTimeSlot = true, ReservationDistributorReference = command.Distributor_reference, TicketId = command.TicketId, TransactionId = command.TransactionId, ReservationValidUntil = command.Reservation_valid_until.ToString(), ReservationReference = command.Reservation_reference, TimeSlot = command.TimeSlot, ModifiedBy = command.ModifiedBy }; var citySightSeeingTransaction = _citySightSeeingTransactionDetailRepository.Save(citySightSeeingTransactionData); } catch (Exception e) { _logger.Log(LogCategory.Error, new Exception("Failed to Disable Event HOHO Data", e)); } }
protected override async Task <ICommandResult> Handle(CreateBookingCommand command) { CreateBookingCommandResult results = new CreateBookingCommandResult(); var transaction = _transactionRepository.Get(command.TransactionId); var transactionDetail = _transactionDetailRepository.GetByTransactionId(command.TransactionId); RootObject rootObject = new RootObject(); if (transaction != null) { IDictionary <string, long> ticketCategoryValues = new Dictionary <string, long>(); var feelBarcodemapping = _feelBarcodeMappingRepository.GetByTransactionDetailIds(transactionDetail.Select(s => s.Id)).ToList(); if (feelBarcodemapping.Count() == 0) { var transactionDetailModel = AutoMapper.Mapper.Map <IEnumerable <TransactionDetail> >(transactionDetail); GetBarcodeResponseViewModel getBarcodeResponseViewModel = new GetBarcodeResponseViewModel(); FIL.Contracts.Models.FeelBarcode.Data data = new FIL.Contracts.Models.FeelBarcode.Data(); Address address = new Address(); Contact contact = new Contact(); BookingType bookingType = new BookingType(); List <FIL.Contracts.Models.FeelBarcode.BookingDetail> bookingDetails = new List <FIL.Contracts.Models.FeelBarcode.BookingDetail>(); foreach (var transactiondetail in transactionDetailModel) { var eventTicketAttributes = _eventTicketAttributeRepository.Get(transactiondetail.EventTicketAttributeId); var eventTicketDetails = _eventTicketDetailRepository.Get(eventTicketAttributes.EventTicketDetailId); var eventDetails = _eventDetailRepository.Get(eventTicketDetails.EventDetailId); var currentTransaction = _transactionRepository.Get(transaction.Id); var currentTransactionDetail = _transactionDetailRepository.Get(transactiondetail.Id); var currentEventTicketAttributes = _eventTicketAttributeRepository.Get((int)currentTransactionDetail.EventTicketAttributeId); var currentEventTicketDetail = _eventTicketDetailRepository.Get(currentEventTicketAttributes.EventTicketDetailId); var currentTicketCategory = _ticketCategoryRepository.Get((int)currentEventTicketDetail.TicketCategoryId); var currentEventDetails = _eventDetailRepository.Get(currentEventTicketDetail.EventDetailId); var curretVenue = _venueRepository.Get(currentEventDetails.VenueId); var currentCity = _cityRepository.Get(curretVenue.CityId); var currentstate = _stateRepository.Get(currentCity.StateId); var currentcountry = _countryRepository.Get(currentstate.CountryId); var currentEvent = _eventRepository.Get(currentEventDetails.EventId); var currentCurrencyType = _currencyTypeRepository.Get(currentEventTicketAttributes.CurrencyId); if (currentEvent.EventSourceId == EventSource.CitySightSeeing) { ticketCategoryValues.Add(currentTicketCategory.Name.ToLower(), transactiondetail.Id); var fromDate = Convert.ToDateTime(transactiondetail.VisitDate).ToUniversalTime(); DateTime localTime1 = fromDate; DateTime endDate = DateTime.Now; localTime1 = DateTime.SpecifyKind(localTime1, DateTimeKind.Local); DateTimeOffset localTime2 = localTime1; var mystring = localTime2.ToString(); var offset = mystring.Substring(mystring.Length - 6); var citySightSeeingEventDetailMapping = _citySightSeeingEventDetailMappingRepository.GetByEventDetailId(currentEventDetails.Id); var citySightSeeingtickets = _citySightSeeingTicketRepository.Get(citySightSeeingEventDetailMapping.CitySightSeeingTicketId); FIL.Contracts.Models.FeelBarcode.BookingDetail bookingDetail = new FIL.Contracts.Models.FeelBarcode.BookingDetail(); var citySightSeeingTicketDetails = _citySightSeeingTicketDetailRepository.GetByTicketId(citySightSeeingtickets.TicketId); var bookingDistributorReference = RandomDigits(10); var citySightSeeingTransactionDetail = new CitySightSeeingTransactionDetail(); if (citySightSeeingTicketDetails.TicketClass != 1) { citySightSeeingTransactionDetail = _citySightSeeingTransactionDetailRepository.GetByTransactionId(transactiondetail.TransactionId); bookingType.from_date_time = citySightSeeingTransactionDetail.FromDateTime; bookingType.to_date_time = citySightSeeingTransactionDetail.EndDateTime; data.reservation_reference = citySightSeeingTransactionDetail.ReservationReference; } var citySightSeeingLocations = _citySightSeeingLocationRepository.Get(citySightSeeingtickets.CitySightSeeingLocationId); var locationDetail = await _googleMapApi.GetLatLongFromAddress(citySightSeeingLocations.Name); string tz = ""; DateTime fromDateTime = DateTime.Now;; var offsetTime = ""; var duration = citySightSeeingTicketDetails.Duration; double lat = Convert.ToDouble(locationDetail.Result.lat); double lng = Convert.ToDouble(locationDetail.Result.lng); tz = TimeZoneLookup.GetTimeZone(lat, lng).Result; TimeZoneInfo tzi = TZConvert.GetTimeZoneInfo(tz); var visitDateTime = Convert.ToDateTime(transactiondetail.VisitDate); var timeSlot = citySightSeeingTicketDetails.TicketClass == 1 ? "00:00" : citySightSeeingTransactionDetail.TimeSlot; var utcOffset = tzi.BaseUtcOffset.ToString().Split(":")[0]; if (utcOffset.Contains("-")) { offset = utcOffset; } else { offset = "+" + utcOffset; } var formattedDateTime = visitDateTime.Year + "-" + visitDateTime.Month + "-" + visitDateTime.Day + "T" + timeSlot; fromDate = Convert.ToDateTime(formattedDateTime); if (duration.Contains("day")) { string[] day = duration.Split("day"); endDate = fromDate.AddDays(Convert.ToDouble(day[0])); } if (duration.Contains("hour")) { string[] hour = duration.Split("hour"); endDate = fromDate.AddHours(Convert.ToDouble(hour[0])); } var formattedEndDate = endDate.Year + "-" + endDate.Month + "-" + endDate.Day + "T" + endDate.TimeOfDay.ToString(); bookingType.from_date_time = formattedDateTime + offset; bookingType.to_date_time = formattedEndDate + offset; bookingDetail.ticket_type = (currentTicketCategory.Name).ToUpper(); bookingDetail.count = currentTransactionDetail.TotalTickets; bookingDetail.extra_options = null; bookingDetails.Add(bookingDetail); bookingType.ticket_id = citySightSeeingTicketDetails.TicketId; address.street = curretVenue.Name; address.postal_code = "432243"; address.city = currentCity.Name; contact.address = address; contact.phonenumber = currentTransaction.PhoneNumber; data.currency = currentCurrencyType.Code; bookingType.booking_details = bookingDetails; data.distributor_id = _settings.GetConfigSetting <string>(SettingKeys.Integration.CitySightSeeing.DistributorId); data.booking_type = bookingType; data.booking_name = transaction.FirstName; data.booking_email = transaction.EmailId; data.contact = contact; data.notes = null; data.product_language = "en"; data.distributor_reference = bookingDistributorReference; rootObject.request_type = "booking"; rootObject.data = data; var responeBooking = await GetBarcodeAsync(rootObject, transaction.Id, ticketCategoryValues); if (responeBooking.data != null) { if (citySightSeeingTicketDetails.TicketClass != 1) { citySightSeeingTransactionDetail.BookingReference = responeBooking.data.booking_reference; citySightSeeingTransactionDetail.BookingDistributorReference = responeBooking.data.distributor_reference; citySightSeeingTransactionDetail.IsOrderConfirmed = true; _citySightSeeingTransactionDetailRepository.Save(citySightSeeingTransactionDetail); } else { _citySightSeeingTransactionDetailRepository.Save(new CitySightSeeingTransactionDetail { AltId = Guid.NewGuid(), FromDateTime = fromDate.ToString() + offset, EndDateTime = endDate.ToString() + offset, HasTimeSlot = false, BookingReference = responeBooking.data.booking_reference, BookingDistributorReference = bookingDistributorReference, TicketId = citySightSeeingtickets.TicketId, TransactionId = command.TransactionId, IsOrderConfirmed = true, ModifiedBy = command.ModifiedBy }); } results.Success = true; return(results); } else { results.Success = false; return(results); } } } } else { results.IsExists = true; return(results); } } else { results.Success = false; return(results); } return(results); }