private async Task <List <BuilderParticipant> > AddPersonParticipantsWithOidsAsync( Invitation invitation, List <BuilderParticipant> meetingParticipants, List <ParticipantsForCommand> personParticipantsWithOids) { var personsAdded = new List <ParticipantsForCommand>(); foreach (var participant in personParticipantsWithOids) { if (InvitationHelper.ParticipantIsSigningParticipant(participant)) { meetingParticipants = await AddSigner( invitation, meetingParticipants, participant.InvitedPerson, participant.SortKey, participant.Organization); personsAdded.Add(participant); } } personParticipantsWithOids.RemoveAll(p => personsAdded.Contains(p)); var oids = personParticipantsWithOids.Where(p => p.SortKey > 1).Select(p => p.InvitedPerson.AzureOid.ToString()).ToList(); var persons = oids.Count > 0 ? await _personApiService.GetPersonsByOidsAsync(_plantProvider.Plant, oids) : new List <ProCoSysPerson>(); if (persons.Any()) { foreach (var participant in personParticipantsWithOids) { var person = persons.SingleOrDefault(p => p.AzureOid == participant.InvitedPerson.AzureOid.ToString()); if (person != null) { invitation.AddParticipant(new Participant( _plantProvider.Plant, participant.Organization, IpoParticipantType.Person, null, person.FirstName, person.LastName, person.UserName, person.Email, new Guid(person.AzureOid), participant.SortKey)); meetingParticipants = InvitationHelper.AddPersonToOutlookParticipantList(person, meetingParticipants); } } } return(meetingParticipants); }