public EventDetail SaveToEventDetails(Event @event, EventVenueMapping eventVenueMapping) { try { var eventDetail = _eventDetailRepository.GetSubeventByEventId(eventVenueMapping.EventId).FirstOrDefault(); if (eventDetail == null) { eventDetail = _eventDetailRepository.Save(new EventDetail { Name = @event.Name, EventId = eventVenueMapping.EventId, VenueId = eventVenueMapping.VenueId, StartDateTime = DateTime.UtcNow, EndDateTime = DateTime.UtcNow.AddYears(1), GroupId = 1, AltId = Guid.NewGuid(), TicketLimit = 4, ModifiedBy = eventVenueMapping.ModifiedBy, IsEnabled = true, MetaDetails = "", HideEventDateTime = false, CustomDateTimeMessage = "", }); } var eventDeliveryType = _eventDeliveryTypeDetailRepository.GetByEventDetailId(eventDetail.Id).FirstOrDefault(); if (eventDeliveryType == null) { _eventDeliveryTypeDetailRepository.Save(new EventDeliveryTypeDetail { EventDetailId = eventDetail.Id, DeliveryTypeId = DeliveryTypes.MTicket, Notes = "<table><tr><td valign=''top''>1. </td><td valign=''top''>Ticket pickup location and timing will be announced in the “Customer Update” sectionof our website closer to the event. Please check that regularly.</td></tr><tr><td valign=''top''>2. </td><td valign=''top''>The following documents are compulsory for ticket pickup:<br /><table><tr> <td valign=''top''> a. </td> <td colspan=''2'' valign=''top''> The card / bank account owner’s original Govt. issued photo ID, along with a clean, fully legible, photocopy of the same ID </td></tr><tr> <td valign=''top''> b. </td> <td colspan=''2'' valign=''top''> When a debit or credit card has been used for purchase, we also need the original debit/credit card, along with a clean, fully legible, photocopy of the same card </td></tr><tr> <td valign=''top''> c. </td> <td colspan=''2'' valign=''top''> If sending someone else on behalf of the card holder / bank account owner, then we need numbers 2.a. and 2.b above (originals and photocopies as mentioned) along with the following below. This is required even if the representative’s name has been entered into the system when buying: </td></tr><tr> <td valign=''top''> </td> <td valign=''top''> i. </td> <td> An authorization letter with the name of the representative, signed by the card holder/bank account owner </td></tr><tr> <td valign=''top''> </td> <td valign=''top''> ii. </td> <td> A Govt issued photo ID of the representative, along with a clean and legible photocopy of the same photo identification </td></tr></table></td></tr><tr><td valign=''top''>3. </td><td valign=''top''>Please note, absence of any one of the documents above can result in the ticketsbeing refused at the ticket pickup window</td></tr> </table>", EndDate = DateTime.UtcNow.AddYears(2), RefundPolicy = 1, ModifiedBy = eventVenueMapping.ModifiedBy, IsEnabled = true }); } return(eventDetail); } catch (Exception ex) { _logger.Log(LogCategory.Error, ex); return(new EventDetail()); } }
protected override async Task Handle(SaveEventScheduleCommand command) { foreach (var eventDetail in command.SubEventList) { var eventDetailData = new EventDetail(); if (eventDetail.id == 0) // check for create or edit insert if 0 { eventDetailData = new FIL.Contracts.DataModels.EventDetail { Name = eventDetail.name, EventId = eventDetail.eventId, AltId = Guid.NewGuid(), VenueId = eventDetail.venueId, MetaDetails = null, Description = eventDetail.Description, GroupId = 1, StartDateTime = DateTime.Parse(eventDetail.startDateTime), EndDateTime = DateTime.Parse(eventDetail.endDateTime), IsEnabled = false, CreatedUtc = DateTime.UtcNow, ModifiedBy = command.userAltId }; _eventDetailRepository.Save(eventDetailData); } else // update sub event { eventDetailData = _eventDetailRepository.Get(eventDetail.id); eventDetailData.Name = eventDetail.name; eventDetailData.EventId = eventDetail.eventId; eventDetailData.VenueId = eventDetail.venueId; eventDetailData.Description = eventDetail.Description; eventDetailData.StartDateTime = DateTime.Parse(eventDetail.startDateTime); eventDetailData.EndDateTime = DateTime.Parse(eventDetail.endDateTime); eventDetailData.ModifiedBy = command.userAltId; _eventDetailRepository.Save(eventDetailData); } //check for existing delivery type details var deliveryTypeData = _eventDeliveryTypeDetailRepository.GetByEventDetailId(eventDetailData.Id); if (deliveryTypeData.Count() > 0) { foreach (var newDeliveryType in deliveryTypeData) { //update existing delivery type details if (Convert.ToInt16(newDeliveryType.DeliveryTypeId) != command.DeliveryValue) { var deliveryValue = _eventDeliveryTypeDetailRepository.Get(newDeliveryType.Id); deliveryValue.DeliveryTypeId = (DeliveryTypes)command.DeliveryValue; _eventDeliveryTypeDetailRepository.Save(deliveryValue); } } } else // insert new deliveryType { var deliveryType = new FIL.Contracts.DataModels.EventDeliveryTypeDetail { EventDetailId = eventDetailData.Id, DeliveryTypeId = (DeliveryTypes)command.DeliveryValue, Notes = "<p><strong>Delivery<br /></strong>Ticket packages are shipped to your preferred address (signature upon receival required), or are arranged for a secure pickup location at or near the circuit.</p>", EndDate = DateTime.UtcNow, IsEnabled = true, CreatedUtc = DateTime.UtcNow, ModifiedBy = command.userAltId, }; _eventDeliveryTypeDetailRepository.Save(deliveryType); } var matchAttributeData = _matchAttributeRepository.GetByEventDetailId(eventDetail.id); if (matchAttributeData.Count() > 0) { foreach (var oldMatchAttribute in matchAttributeData) { foreach (var newMatchAttribute in eventDetail.matches) { if (oldMatchAttribute.Id == newMatchAttribute.id) { var updatedMatchAttribute = _matchAttributeRepository.Get(newMatchAttribute.id); updatedMatchAttribute.TeamA = newMatchAttribute.teamA; updatedMatchAttribute.TeamB = newMatchAttribute.teamB; updatedMatchAttribute.MatchNo = newMatchAttribute.matchNo; updatedMatchAttribute.MatchDay = newMatchAttribute.matchDay; updatedMatchAttribute.MatchStartTime = DateTime.Parse(newMatchAttribute.startDateTime); _matchAttributeRepository.Save(updatedMatchAttribute); } } } } else { //check for not null if (eventDetail.matches.Count > 0) { foreach (var match in eventDetail.matches) { //check for if team is exits if not insert new var teamA = match.teamA != 0 ? _teamRepository.Get(match.teamA) : _teamRepository.Save( new Team { Name = match.teamAName, AltId = Guid.NewGuid(), IsEnabled = true, Description = "", CreatedUtc = DateTime.UtcNow, UpdatedUtc = DateTime.UtcNow, CreatedBy = command.userAltId, UpdatedBy = command.userAltId } ); var teamB = match.teamB != 0 ? _teamRepository.Get(match.teamB) : _teamRepository.Save( new Team { Name = match.teamBName, AltId = Guid.NewGuid(), IsEnabled = true, Description = "", CreatedUtc = DateTime.UtcNow, UpdatedUtc = DateTime.UtcNow, CreatedBy = command.userAltId, UpdatedBy = command.userAltId } ); var matchAttribute = new FIL.Contracts.DataModels.MatchAttribute { EventDetailId = eventDetailData.Id, TeamA = teamA.Id, TeamB = teamB.Id, MatchNo = match.matchNo, MatchDay = match.matchDay, IsEnabled = true, MatchStartTime = DateTime.Parse(match.startDateTime), CreatedUtc = DateTime.UtcNow, CreatedBy = command.userAltId, ModifiedBy = command.userAltId }; _matchAttributeRepository.Save(matchAttribute); } } } var TicketDetailData = _eventTicketDetailRepository.GetByEventDetailId(eventDetail.id); if (TicketDetailData.Count() > 0) { foreach (var oldTicketCategory in TicketDetailData) { var newEventTicketDetail = eventDetail.ticketCategories.Where(s => s.id == oldTicketCategory.Id).FirstOrDefault(); if (newEventTicketDetail != null) { //update existing eventTicketDetail var updatedEventTicketDetail = _eventTicketDetailRepository.Get(newEventTicketDetail.id); updatedEventTicketDetail.TicketCategoryId = newEventTicketDetail.ticketCategoryId; _eventTicketDetailRepository.Save(updatedEventTicketDetail); //update event ticket attributes var updatedTicketAttibutesData = _eventTicketAttributeRepository.GetByEventTicketDetailId(updatedEventTicketDetail.Id); updatedTicketAttibutesData.AvailableTicketForSale = newEventTicketDetail.capacity; updatedTicketAttibutesData.RemainingTicketForSale = newEventTicketDetail.capacity; updatedTicketAttibutesData.Price = newEventTicketDetail.price; updatedTicketAttibutesData.LocalPrice = newEventTicketDetail.price; updatedTicketAttibutesData.CurrencyId = newEventTicketDetail.currencyId; updatedTicketAttibutesData.LocalCurrencyId = newEventTicketDetail.currencyId; _eventTicketAttributeRepository.Save(updatedTicketAttibutesData); //get exisiting ticket fee details var oldticketFeeDetailData = _ticketFeeDetailRepository.GetAllByEventTicketAttributeId(updatedTicketAttibutesData.Id).ToList(); foreach (var feeType in command.FeeTypes) { if (feeType.id == 0) { var ticketFeeDetailData = new FIL.Contracts.DataModels.TicketFeeDetail { EventTicketAttributeId = updatedTicketAttibutesData.Id, FeeId = (Int16)feeType.feeId, DisplayName = feeType.displayName, ValueTypeId = (Int16)feeType.valueTypeId, Value = feeType.value, IsEnabled = true, CreatedUtc = DateTime.UtcNow, CreatedBy = command.userAltId }; _ticketFeeDetailRepository.Save(ticketFeeDetailData); } } if (oldticketFeeDetailData.Count() > 0) { foreach (var oldTicketFeeDetail in oldticketFeeDetailData) { var newTicketFeeDetail = command.FeeTypes.Where(s => s.id == oldTicketFeeDetail.Id).FirstOrDefault(); if (newTicketFeeDetail != null) { var updatedTicketFeeDetail = _ticketFeeDetailRepository.Get(oldTicketFeeDetail.Id); updatedTicketFeeDetail.FeeId = Convert.ToInt16(newTicketFeeDetail.feeId); updatedTicketFeeDetail.ValueTypeId = Convert.ToInt16(newTicketFeeDetail.valueTypeId); updatedTicketFeeDetail.Value = newTicketFeeDetail.value; _ticketFeeDetailRepository.Save(updatedTicketFeeDetail); } else { var updatedTicketFeeDetail = _ticketFeeDetailRepository.Get(oldTicketFeeDetail.Id); updatedTicketFeeDetail.IsEnabled = false; _ticketFeeDetailRepository.Save(updatedTicketFeeDetail); } } } } else { var updatedEventTicketDetail = _eventTicketDetailRepository.Get(oldTicketCategory.Id); updatedEventTicketDetail.IsEnabled = false; _eventTicketDetailRepository.Save(updatedEventTicketDetail); } } } if (eventDetail.ticketCategories.Count > 0) { foreach (var eventTicketDetail in eventDetail.ticketCategories) { if (eventTicketDetail.id == 0) // insert new category { //check for if ticket category is exits if not insert new var ticketCategory = eventTicketDetail.ticketCategoryId != 0 ? _ticketCategoryRepository.Get(eventTicketDetail.ticketCategoryId) : _ticketCategoryRepository.Save( new TicketCategory { Name = eventTicketDetail.ticketCategoryName, IsEnabled = true, CreatedUtc = DateTime.UtcNow, UpdatedUtc = DateTime.UtcNow, CreatedBy = command.userAltId, UpdatedBy = command.userAltId } ); //insert new ticket detail data var eventTicketDetailData = new FIL.Contracts.DataModels.EventTicketDetail { EventDetailId = eventDetailData.Id, TicketCategoryId = ticketCategory.Id, IsEnabled = true, CreatedUtc = DateTime.UtcNow, CreatedBy = command.userAltId, ModifiedBy = command.userAltId, IsBOEnabled = false }; _eventTicketDetailRepository.Save(eventTicketDetailData); //save event ticket attributes var eventTicketAttibutesData = new FIL.Contracts.DataModels.EventTicketAttribute { EventTicketDetailId = eventTicketDetailData.Id, CurrencyId = eventTicketDetail.currencyId, TicketTypeId = FIL.Contracts.Enums.TicketType.Adult, ChannelId = FIL.Contracts.Enums.Channels.Website, AvailableTicketForSale = eventTicketDetail.capacity, RemainingTicketForSale = eventTicketDetail.capacity, Price = eventTicketDetail.price, LocalPrice = eventTicketDetail.price, CreatedUtc = DateTime.UtcNow, CreatedBy = command.userAltId, IsEnabled = true, IsEMIApplicable = false, IsInternationalCardAllowed = false, IsSeatSelection = false, ViewFromStand = "", TicketCategoryDescription = "", LocalCurrencyId = eventTicketDetail.currencyId, SalesStartDateTime = DateTime.UtcNow, SalesEndDatetime = DateTime.UtcNow, }; _eventTicketAttributeRepository.Save(eventTicketAttibutesData); if (command.FeeTypes.Count > 0) { foreach (var feeType in command.FeeTypes) { //save ticket fee details var ticketFeeDetailData = new FIL.Contracts.DataModels.TicketFeeDetail { EventTicketAttributeId = eventTicketAttibutesData.Id, FeeId = (Int16)feeType.feeId, DisplayName = feeType.displayName, ValueTypeId = (Int16)feeType.valueTypeId, Value = feeType.value, IsEnabled = true, CreatedUtc = DateTime.UtcNow, CreatedBy = command.userAltId }; _ticketFeeDetailRepository.Save(ticketFeeDetailData); } } } } } } }
protected override async Task <ICommandResult> Handle(UpdateProductCommand command) { UpdateProductCommandResult updateCommandResult = new UpdateProductCommandResult(); try { List <string> imageLinks = new List <string>(); var tiqetProduct = _tiqetProductRepository.GetByProductId(command.productId); var checkoutDetails = await SaveCheckoutDetails(command); var countryandvenuedetails = await UpdateCountryAndVenueDetails(tiqetProduct.GeoLocationLatitude, tiqetProduct.GeoLocationLongitude, tiqetProduct.VenueName, tiqetProduct.VenueAddress, command.ModifiedBy, tiqetProduct.CountryName, tiqetProduct.CityName); bool isImageUpload = false; // Saving/Updating Details to our Tables var events = _eventRepository.GetByEventName(tiqetProduct.Tittle); var formattedSlug = FormatSlug(tiqetProduct.Tittle); if (events == null) { events = _eventRepository.Save(new Event { AltId = Guid.NewGuid(), Name = tiqetProduct.Tittle, EventCategoryId = 29, EventTypeId = EventType.Perennial, Description = null, ClientPointOfContactId = 1, FbEventId = null, MetaDetails = null, IsFeel = true, EventSourceId = EventSource.Tiqets, TermsAndConditions = "", IsPublishedOnSite = true, PublishedDateTime = DateTime.Now, PublishedBy = null, TestedBy = null, Slug = formattedSlug, ModifiedBy = command.ModifiedBy, IsEnabled = true }); isImageUpload = true; } else { events.IsEnabled = true; events.Description = tiqetProduct.Summary; events.Slug = formattedSlug; _eventRepository.Save(events); } if (isImageUpload || command.IsImageUpload) { var productImages = _tiqetProductImageRepository.GetByProductId(tiqetProduct.ProductId); foreach (var currentImage in productImages) { imageLinks.Add(currentImage.Large); } } var last = _eventSiteIdMappingRepository.GetAll().OrderByDescending(p => p.CreatedUtc).FirstOrDefault(); var eventSiteIdMapping = _eventSiteIdMappingRepository.GetByEventId(events.Id); if (eventSiteIdMapping == null) { _eventSiteIdMappingRepository.Save(new Contracts.DataModels.EventSiteIdMapping { EventId = events.Id, SortOrder = Convert.ToInt16(last.SortOrder + 1), SiteId = Site.feelaplaceSite, ModifiedBy = command.ModifiedBy, IsEnabled = true }); } var getEventCategoryId = await GetCategoryId(tiqetProduct.ProductId); foreach (var categoryId in getEventCategoryId) { var eventCategoryMapping = _eventCategoryMappingRepository.GetByEventIdAndEventCategoryId(events.Id, categoryId); if (eventCategoryMapping == null) { _eventCategoryMappingRepository.Save(new Contracts.DataModels.EventCategoryMapping { EventId = events.Id, EventCategoryId = categoryId, ModifiedBy = command.ModifiedBy, IsEnabled = true }); } else { eventCategoryMapping.EventCategoryId = categoryId; _eventCategoryMappingRepository.Save(eventCategoryMapping); } } var eventDetail = _eventDetailRepository.GetByNameAndVenueId(tiqetProduct.Tittle, countryandvenuedetails.venueId); if (eventDetail == null) { eventDetail = _eventDetailRepository.Save(new EventDetail { Name = tiqetProduct.Tittle, EventId = events.Id, VenueId = countryandvenuedetails.venueId, StartDateTime = DateTime.UtcNow, EndDateTime = DateTime.UtcNow.AddYears(1), GroupId = 1, AltId = Guid.NewGuid(), TicketLimit = 10, ModifiedBy = command.ModifiedBy, IsEnabled = true, MetaDetails = "", HideEventDateTime = false, CustomDateTimeMessage = "", CreatedUtc = DateTime.UtcNow, CreatedBy = command.ModifiedBy }); } else { eventDetail.IsEnabled = true; eventDetail.StartDateTime = DateTime.UtcNow; eventDetail.EndDateTime = DateTime.UtcNow.AddYears(1); eventDetail.ModifiedBy = command.ModifiedBy; _eventDetailRepository.Save(eventDetail); } var eventDeliveryType = _eventDeliveryTypeDetailRepository.GetByEventDetailId(eventDetail.Id).ToList(); if (eventDeliveryType.Count() == 0) { _eventDeliveryTypeDetailRepository.Save(new EventDeliveryTypeDetail { EventDetailId = eventDetail.Id, DeliveryTypeId = DeliveryTypes.MTicket, Notes = "<table><tr><td valign=''top''>1. </td><td valign=''top''>Ticket pickup location and timing will be announced in the “Customer Update” sectionof our website closer to the event. Please check that regularly.</td></tr><tr><td valign=''top''>2. </td><td valign=''top''>The following documents are compulsory for ticket pickup:<br /><table><tr> <td valign=''top''> a. </td> <td colspan=''2'' valign=''top''> The card / bank account owner’s original Govt. issued photo ID, along with a clean, fully legible, photocopy of the same ID </td></tr><tr> <td valign=''top''> b. </td> <td colspan=''2'' valign=''top''> When a debit or credit card has been used for purchase, we also need the original debit/credit card, along with a clean, fully legible, photocopy of the same card </td></tr><tr> <td valign=''top''> c. </td> <td colspan=''2'' valign=''top''> If sending someone else on behalf of the card holder / bank account owner, then we need numbers 2.a. and 2.b above (originals and photocopies as mentioned) along with the following below. This is required even if the representative’s name has been entered into the system when buying: </td></tr><tr> <td valign=''top''> </td> <td valign=''top''> i. </td> <td> An authorization letter with the name of the representative, signed by the card holder/bank account owner </td></tr><tr> <td valign=''top''> </td> <td valign=''top''> ii. </td> <td> A Govt issued photo ID of the representative, along with a clean and legible photocopy of the same photo identification </td></tr></table></td></tr><tr><td valign=''top''>3. </td><td valign=''top''>Please note, absence of any one of the documents above can result in the tickets being refused at the ticket pickup window</td></tr> </table>", EndDate = DateTime.UtcNow.AddYears(1), ModifiedBy = command.ModifiedBy, IsEnabled = true, CreatedUtc = DateTime.UtcNow }); } await GetVariantDetails(tiqetProduct.ProductId); await DisableAllEventTicketDetailMappings(tiqetProduct.ProductId); var variantdetails = _tiqetVariantDetailRepository.GetAllByProductId(tiqetProduct.ProductId); //if variants are not available at the moment disable it. if (variantdetails.Count() == 0) { events.IsEnabled = false; _eventRepository.Save(events); eventDetail.IsEnabled = false; _eventDetailRepository.Save(eventDetail); updateCommandResult.success = false; return(updateCommandResult); } foreach (var variantdetail in variantdetails) { //eventTicketDetails and TicketCategories goes here var ticketCategory = _ticketCategoryRepository.GetByName(variantdetail.Label); if (ticketCategory == null) { ticketCategory = _ticketCategoryRepository.Save(new TicketCategory { Name = variantdetail.Label, ModifiedBy = command.ModifiedBy, IsEnabled = true }); } var eventTicketDetail = _eventTicketDetailRepository.GetByTicketCategoryIdAndEventDetailId(ticketCategory.Id, eventDetail.Id); if (eventTicketDetail == null) { eventTicketDetail = _eventTicketDetailRepository.Save(new EventTicketDetail { EventDetailId = eventDetail.Id, TicketCategoryId = ticketCategory.Id, ModifiedBy = command.ModifiedBy, IsEnabled = true }); } else { eventTicketDetail.IsEnabled = true; _eventTicketDetailRepository.Save(eventTicketDetail); } var eventTicketDetailMapping = await SaveToTiqetsEventTicketDetailMapping(variantdetail.Id, eventTicketDetail.Id, command); var eventTicketAttribute = _eventTicketAttributeRepository.GetByEventTicketDetailId(eventTicketDetail.Id); if (eventTicketAttribute == null) { eventTicketAttribute = _eventTicketAttributeRepository.Save(new EventTicketAttribute { EventTicketDetailId = eventTicketDetail.Id, SalesStartDateTime = DateTime.UtcNow, SalesEndDatetime = DateTime.UtcNow.AddYears(1), TicketTypeId = TicketType.Regular, ChannelId = Channels.Feel, CurrencyId = TiqetsConstant.CurrencyCode, SharedInventoryGroupId = null, TicketCategoryDescription = "", ViewFromStand = "", IsSeatSelection = false, AvailableTicketForSale = Convert.ToInt32(variantdetail.MaxTicketsPerOrder), RemainingTicketForSale = Convert.ToInt32(variantdetail.MaxTicketsPerOrder), Price = variantdetail.TotalRetailPriceInclVat, IsInternationalCardAllowed = false, IsEMIApplicable = false, ModifiedBy = command.ModifiedBy, IsEnabled = true }); } else { eventTicketAttribute.SalesStartDateTime = DateTime.UtcNow; eventTicketAttribute.SalesEndDatetime = DateTime.UtcNow.AddYears(1); eventTicketAttribute.AvailableTicketForSale = Convert.ToInt32(variantdetail.MaxTicketsPerOrder); eventTicketAttribute.RemainingTicketForSale = Convert.ToInt32(variantdetail.MaxTicketsPerOrder); eventTicketAttribute.Price = variantdetail.TotalRetailPriceInclVat; _eventTicketAttributeRepository.Save(eventTicketAttribute); } var ticketFeeDetail = _ticketFeeDetailRepository.GetByEventTicketAttributeIdAndFeedId(eventTicketAttribute.Id, (int)FeeType.ConvenienceCharge); if (ticketFeeDetail == null) { ticketFeeDetail = _ticketFeeDetailRepository.Save(new TicketFeeDetail { EventTicketAttributeId = eventTicketAttribute.Id, FeeId = (int)FeeType.ConvenienceCharge, DisplayName = "Convienence Charge", ValueTypeId = (int)ValueTypes.Percentage, Value = 5, ModifiedBy = command.ModifiedBy, IsEnabled = true }); } } await DisableEventTicketDeails(tiqetProduct.ProductId); await SaveToEventDetailMapping(tiqetProduct.ProductId, eventDetail.Id); await SyncDaysAvailabilityAsync(command, eventDetail.Id, events.Id); updateCommandResult.IsImageUpload = imageLinks.Count() > 0 ? true : false; updateCommandResult.success = true; updateCommandResult.ImageLinks = imageLinks; updateCommandResult.EventAltId = events.AltId; return(updateCommandResult); } catch (Exception e) { updateCommandResult.success = false; updateCommandResult.IsImageUpload = false; _logger.Log(LogCategory.Error, new Exception("Failed to update Product Details", e)); return(updateCommandResult); } }