private async Task <Result <CallRecordInfoDto> > GetParticipantRecordInfo( List <CallTimeInfoClientDto> participantCalls, AudioRecordClientDto participantRecord, AudioRecordClientDto fullRecord) { var participantCallInfo = participantCalls.FirstOrDefault(x => x.CallId == participantRecord.CallId); if (participantCallInfo == null) { _logger.Warning($"GenerateParticipantsList. Participant call not found. CallId: {participantRecord.CallId}"); return(Result.Failure <CallRecordInfoDto>(ErrorCodes.UnableToGetAudioRecords)); } var participant = await GetParticipant(participantCallInfo.ParticipantId.Value); var participantInfo = ParticipantInfoCreator.GetParticipantInfoDto(participant); FillParticipantTimeStamps(participantInfo, participantRecord, fullRecord); var participantRecordInfo = new CallRecordInfoDto { Id = participantRecord.Id, ParticipantInfo = participantInfo, IsEmercoreUser = participant is User, CallId = participantCallInfo.CallId, IsFullRecord = false }; return(Result.Success(participantRecordInfo)); }
private void FillParticipantTimeStamps( ParticipantInfoDto participantInfo, AudioRecordClientDto participantRecord, AudioRecordClientDto fullCallRecord) { var startFullRecordTime = fullCallRecord.RecordingStartTime; var endFullRecordTime = fullCallRecord.RecordingEndTime; var startRecordDateTime = participantRecord.RecordingStartTime < startFullRecordTime ? startFullRecordTime : participantRecord.RecordingStartTime; var endRecordDateTime = participantRecord.RecordingEndTime > endFullRecordTime ? endFullRecordTime : participantRecord.RecordingEndTime; var start = startRecordDateTime - startFullRecordTime; participantInfo.StartCallTime = FormatCallTime(start); var duration = endRecordDateTime - startRecordDateTime; var end = start + duration; participantInfo.EndCallTime = FormatCallTime(end); }