private static CRPMTimeActivity CreateActivity(ProcessTranscript graph, ContactMaint contMaint,
                                                       TransScriptDetail transScriptDetail, CRPMTimeActivity activityData, string meetingText = null)
        {
            int minsConsumed = 0;

            if (string.IsNullOrEmpty(meetingText))
            {
                activityData.Body = GetTranscriptInfo(transScriptDetail, graph, out minsConsumed);
            }
            else
            {
                activityData.Body = meetingText;
            }

            activityData.TrackTime  = true;
            activityData.IsBillable = false;
            activityData.Summary    = transScriptDetail.Title;
            activityData.Subject    = transScriptDetail.Title;
            activityData.TimeSpent  = minsConsumed == 0 ? 1 : minsConsumed;
            activityData            = contMaint.Activities.Update(activityData);
            activityData.ProjectID  = 0;
            activityData            = contMaint.Activities.Update(activityData);

            contMaint.Persist();
            return(activityData);
        }
        public static string GetTranscriptInfo(TransScriptDetail detail, ProcessTranscript graph, out int minutesConsumed)

        {
            minutesConsumed = 0;
            StringBuilder   sb = new StringBuilder();
            FirefliesConfig firefliesConfig = graph.config.Select();
            string          userid          = string.Empty;

            if (firefliesConfig != null && (!string.IsNullOrEmpty(firefliesConfig.APIEndPoint) &&
                                            !string.IsNullOrEmpty(firefliesConfig.Apikey)))
            {
                var variables = new { id = detail.Id };

                var flAuthTranRqu = new GraphQLRequest
                {
                    Query     = @"query ($id: String!)
                                        {
                                               transcript (id: $id){
                                               id
                                               title
                                                user{
                                                  minutes_consumed
                                                 
                                                }

                                               sentences
                                               {
                                                  index
                                                  text
                                                  raw_text
                                                  start_time
                                                  end_time
                                                  speaker_id
                                                }
                                           }
                                        }
                                      ",
                    Variables = variables
                };
                var graphQLClient = new GraphQLClient(firefliesConfig.APIEndPoint);
                graphQLClient.DefaultRequestHeaders.Add("Authorization", String.Format("Bearer {0}", firefliesConfig.Apikey));
                var graphQLTranResponse = graphQLClient.PostAsync(flAuthTranRqu).Result;
                var transcript          = graphQLTranResponse.GetDataFieldAs <Transcript>("transcript");

                var sentences = transcript.sentences;

                foreach (Sentence sentence in sentences)
                {
                    sb.Append("- Speaker(" + sentence.speaker_id + "):");
                    sb.Append(sentence.text + "." + "<br>");
                }

                minutesConsumed = transcript.user.minutes_consumed;
            }

            return(sb.ToString());
        }
        private static string CreateMTActivity(ProcessTranscript graph, ContactMaint contMaint, string emailContact,
                                               TransScriptDetail transScriptDetail)
        {
            contMaint.Clear();

            contMaint.Contact.Current = PXSelect <Contact,
                                                  Where <Contact.eMail, Equal <Required <Contact.eMail> > > > .Select(contMaint, emailContact);

            var activityData = contMaint.Activities.Insert();

            activityData.Type = "MT";

            activityData = CreateActivity(graph, contMaint, transScriptDetail, activityData);

            return(activityData.Body);
        }
        protected virtual IEnumerable tranScriptDetail()
        {
            int i = 0;

            foreach (var row in transcriptdetail.Cache.Cached)
            {
                i++;
                yield return(row);
            }
            if (i == 0)
            {
                FirefliesConfig firefliesConfig = config.Select();
                string          userid          = string.Empty;
                if (firefliesConfig != null && (!string.IsNullOrEmpty(firefliesConfig.APIEndPoint) && !string.IsNullOrEmpty(firefliesConfig.Apikey)))
                {
                    var flAuthRequest = new GraphQLRequest
                    {
                        Query = @"
                     {
                          user {
                            user_id
                            email
                            recent_transcript
                          }
                        }
                      "
                    };
                    var graphQLClient = new GraphQLClient(firefliesConfig.APIEndPoint);
                    graphQLClient.DefaultRequestHeaders.Add("Authorization", String.Format("Bearer {0}", firefliesConfig.Apikey));
                    var graphQLResponse = graphQLClient.PostAsync(flAuthRequest).Result;
                    if (graphQLResponse.Errors == null)
                    {
                        var oUser = graphQLResponse.GetDataFieldAs <User>("user");
                        if (!string.IsNullOrEmpty(oUser.user_id))
                        {
                            var variables     = new { login = oUser.user_id };
                            var flAuthTranRqu = new GraphQLRequest
                            {
                                Query     = @"query ($login: String!)
                                    {
                                           transcripts (user_id: $login){
                                           id
                                           title
                                           date
                                           transcript_url
                                           participants
                                       }
                                    }
                                  ",
                                Variables = variables
                            };
                            var graphQLTranResponse = graphQLClient.PostAsync(flAuthTranRqu).Result;
                            var transcripts         = graphQLTranResponse.GetDataFieldAs <Transcript[]>("transcripts");
                            foreach (Transcript transcript in transcripts)
                            {
                                var    sentences    = transcript.sentences;
                                string participants = String.Join(",", transcript.participants);

                                TransScriptDetail row = new TransScriptDetail();
                                row.Id            = transcript.id;
                                row.Title         = transcript.title;
                                row.Date          = Epoch2UTCNow(transcript.date);
                                row.Transcripturl = transcript.transcript_url;
                                row.Participants  = participants;
                                transcriptdetail.Cache.Insert(row);
                                yield return(row);
                            }
                        }
                    }
                }
            }
        }