public Event Get(string participantId) { var id = GuidUtil.ToGuid(participantId); var dbParticipant = new ParticipantRepository(_dbContext).Single(id); var dbEvent = new EventRepository(_dbContext).Single(dbParticipant.EventID); var eventIsActive = dbEvent.PNR == null; // als vluchten zijn geprikt, hoeven overige vluchten niet meer geladen te worden var evn = EntityMapper.Map(dbEvent, includeParticipants: false, includeFlights: eventIsActive, includeAvailability: eventIsActive); new FlightSearchService(_dbContext).AddStationNames(evn); // don't add other participant data evn.Participants.Add(EntityMapper.Map(dbParticipant)); if (eventIsActive) { bool participantHasAvailability = dbParticipant.Availabilities.Any(); if (!participantHasAvailability) { // first visit, create if not exist yet (first time participant visits the event) foreach (var dbFlight in dbEvent.OutboundFlightSearch.Flights) { _repository.Create(dbParticipant, dbFlight); } foreach (var dbFlight in dbEvent.InboundFlightSearch.Flights) { _repository.Create(dbParticipant, dbFlight); } _dbContext.Current.SaveChanges(); } CopyParticipantAvailability(participantId, evn.OutboundFlightSearch); CopyParticipantAvailability(participantId, evn.InboundFlightSearch); } // remove personal data return(evn); }
public void Complete(Event evn) { var dbEvent = _repository.Single(GuidUtil.ToGuid(evn.Id)); // update event details dbEvent.Title = evn.Title; dbEvent.Description = evn.Description; dbEvent.OrganizerName = evn.OrganizerName; dbEvent.OrganizerEmail = evn.OrganizerEmail; // add selected flights dbEvent.OutboundFlightSearch = AddFlightSearch(evn.OutboundFlights, evn.Origin, evn.Destination, evn.BeginDate, evn.EndDate, evn.DaysOfWeek, evn.MaxPrice); dbEvent.InboundFlightSearch = AddFlightSearch(evn.InboundFlights, evn.Destination, evn.Origin, evn.BeginDate, evn.EndDate, evn.DaysOfWeek, evn.MaxPrice); // create avaiablities for all participants var availabilityRepository = new AvailabilityRepository(_dbContext); foreach (var dbParticipant in dbEvent.Participants) { bool isOrganizer = dbParticipant.Email.Equals(dbEvent.OrganizerEmail); short?value = isOrganizer ? (short?)100 : null; foreach (var dbFlight in dbEvent.OutboundFlightSearch.Flights) { availabilityRepository.Create(dbParticipant, dbFlight, value); } foreach (var dbFlight in dbEvent.InboundFlightSearch.Flights) { availabilityRepository.Create(dbParticipant, dbFlight, value); } if (isOrganizer) { dbParticipant.AvailabilityConfirmed = true; } } dbEvent.StatusID = EventStatusEnum.NewCompleted; _dbContext.Current.SaveChanges(); // send confirmation email _mailService.SendEventConfirmation(dbEvent); }