IEnumerable <TicketRelationshipDto> GetRelationships(Ticket ticket,
                                                      IGetsRelationshipSummary summaryProvider,
                                                      ResolutionContext ctx)
 {
     return(GetRelationships(ticket.PrimaryRelationships, RelationshipParticipant.Primary, summaryProvider, ctx)
            .Union(GetRelationships(ticket.SecondaryRelationships, RelationshipParticipant.Secondary, summaryProvider, ctx)));
 }
 IEnumerable <TicketRelationshipDto> GetRelationships(IEnumerable <TicketRelationship> relationships,
                                                      RelationshipParticipant participant,
                                                      IGetsRelationshipSummary summaryProvider,
                                                      ResolutionContext ctx)
 {
     return(relationships
            .Where(x => x != null)
            .Select(x => GetRelationship(x, participant, summaryProvider, ctx))
            .ToArray());
 }
        TicketRelationshipDto GetRelationship(TicketRelationship relationship,
                                              RelationshipParticipant participant,
                                              IGetsRelationshipSummary summaryProvider,
                                              ResolutionContext ctx)
        {
            Ticket relatedTicket;

            if (participant == RelationshipParticipant.Primary)
            {
                relatedTicket = relationship.SecondaryTicket;
            }
            else
            {
                relatedTicket = relationship.PrimaryTicket;
            }

            return(new TicketRelationshipDto {
                Id = relationship.GetIdentity(),
                RelationshipId = relationship.Relationship?.GetIdentity(),
                Summary = summaryProvider.GetSummary(relationship.Relationship, participant),
                Participant = participant,
                RelatedTicket = ctx.Mapper.Map <TicketSummaryDto>(relatedTicket),
            });
        }