public override async Task <bool> SendExecutionLogToCentralDBAsync(LiteDB.ObjectId runsetId, Guid executionId, eDeleteLocalDataOnPublish deleteLocalData)
        {
            //Get the latest execution details from LiteDB
            LiteDbManager dbManager      = new LiteDbManager(new ExecutionLoggerHelper().GetLoggerDirectory(WorkSpace.Instance.Solution.LoggerConfigurations.CalculatedLoggerFolder));
            LiteDbRunSet  liteDbRunSet   = dbManager.GetLatestExecutionRunsetData(runsetId?.ToString());
            List <string> screenshotList = PopulateMissingFieldsAndGetScreenshotsList(liteDbRunSet, executionId);

            CentralExecutionLoggerHelper centralExecutionLogger = new CentralExecutionLoggerHelper(WorkSpace.Instance.Solution.LoggerConfigurations.CentralLoggerEndPointUrl);

            //Map the data to AccountReportRunset Object
            AccountReportRunSet accountReportRunSet = centralExecutionLogger.MapDataToAccountReportObject(liteDbRunSet);

            accountReportRunSet.ExecutionId = executionId;


            //Publish the Data and screenshots to Central DB
            await centralExecutionLogger.SendRunsetExecutionDataToCentralDBAsync(accountReportRunSet);

            await centralExecutionLogger.SendScreenShotsToCentralDBAsync(executionId, screenshotList);


            //Delete local data if configured
            if (deleteLocalData == eDeleteLocalDataOnPublish.Yes)
            {
                try
                {
                    dbManager.DeleteDocumentByLiteDbRunSet(liteDbRunSet);
                }
                catch (Exception ex)
                {
                    Reporter.ToLog(eLogLevel.ERROR, "Error when deleting local LiteDB data after Publis", ex);
                }


                foreach (string screenshot in screenshotList)
                {
                    try
                    {
                        File.Delete(screenshot);
                    }
                    catch (Exception ex)
                    {
                        Reporter.ToLog(eLogLevel.DEBUG, "Deleting screenshots after published to central db", ex);
                    }
                }
            }


            return(true);
        }
Exemple #2
0
        public override string CalculateExecutionJsonData(LiteDbRunSet liteDbRunSet, HTMLReportConfiguration reportTemplate)
        {
            CentralExecutionLoggerHelper centralExecutionLogger = new CentralExecutionLoggerHelper();
            AccountReportRunSet          accountReportRunSet    = centralExecutionLogger.MapDataToAccountReportObject(liteDbRunSet);
            string json = JsonConvert.SerializeObject(accountReportRunSet, Formatting.Indented);

            JObject runSetObject = JObject.Parse(json);

            #region Generate JSON

            //Remove Fields from json which are not selected
            foreach (HTMLReportConfigFieldToSelect runsetFieldToRemove in reportTemplate.RunSetSourceFieldsToSelect.Where(x => !x.IsSelected))
            {
                runSetObject.Property(GetFieldToRemove(runsetFieldToRemove.FieldKey)).Remove();
            }

            //RunnersCollection
            HTMLReportConfigFieldToSelect runnerField = reportTemplate.RunSetSourceFieldsToSelect.Where(x => x.IsSelected && x.FieldKey == "RunnersColl").FirstOrDefault();
            if (runnerField != null)
            {
                if (reportTemplate.GingerRunnerSourceFieldsToSelect.Select(x => x.IsSelected).ToList().Count > 0)
                {
                    JArray runnerArray = (JArray)runSetObject[runnerField.FieldKey];
                    foreach (JObject jRunnerObject in runnerArray)
                    {
                        foreach (HTMLReportConfigFieldToSelect runnerFieldToRemove in reportTemplate.GingerRunnerSourceFieldsToSelect.Where(x => !x.IsSelected))
                        {
                            jRunnerObject.Property(GetFieldToRemove(runnerFieldToRemove.FieldKey)).Remove();
                        }
                        //BusinessFlowsCollection
                        HTMLReportConfigFieldToSelect bfField = reportTemplate.GingerRunnerSourceFieldsToSelect.Where(x => x.IsSelected && x.FieldKey == "BusinessFlowsColl").FirstOrDefault();
                        if (bfField != null)
                        {
                            if (reportTemplate.BusinessFlowSourceFieldsToSelect.Select(x => x.IsSelected).ToList().Count > 0)
                            {
                                JArray bfArray = (JArray)jRunnerObject[bfField.FieldKey];
                                foreach (JObject jBFObject in bfArray)
                                {
                                    foreach (HTMLReportConfigFieldToSelect bfFieldToRemove in reportTemplate.BusinessFlowSourceFieldsToSelect.Where(x => !x.IsSelected))
                                    {
                                        jBFObject.Property(GetFieldToRemove(bfFieldToRemove.FieldKey)).Remove();
                                    }
                                    //ActivityGroupsCollection
                                    HTMLReportConfigFieldToSelect activityGroupField = reportTemplate.BusinessFlowSourceFieldsToSelect.Where(x => x.IsSelected && x.FieldKey == "ActivitiesGroupsColl").FirstOrDefault();
                                    if (activityGroupField != null)
                                    {
                                        if (reportTemplate.ActivityGroupSourceFieldsToSelect.Select(x => x.IsSelected).ToList().Count > 0)
                                        {
                                            JArray activityGroupArray = (JArray)jBFObject[activityGroupField.FieldKey];
                                            foreach (JObject jActivityGroupObject in activityGroupArray)
                                            {
                                                foreach (HTMLReportConfigFieldToSelect activityGroupFieldToRemove in reportTemplate.ActivityGroupSourceFieldsToSelect.Where(x => !x.IsSelected))
                                                {
                                                    jActivityGroupObject.Property(GetFieldToRemove(activityGroupFieldToRemove.FieldKey)).Remove();
                                                }
                                                //ActivitiesCollection
                                                HTMLReportConfigFieldToSelect activityFieldCheck = reportTemplate.ActivityGroupSourceFieldsToSelect.Where(x => x.IsSelected && x.FieldKey == "ActivitiesColl").FirstOrDefault();
                                                if (activityFieldCheck != null)
                                                {
                                                    if (reportTemplate.ActivitySourceFieldsToSelect.Select(x => x.IsSelected).ToList().Count > 0)
                                                    {
                                                        JArray activityArray = (JArray)jActivityGroupObject[activityFieldCheck.FieldKey];
                                                        foreach (JObject jActivityObject in activityArray)
                                                        {
                                                            //Calculate ErrorDetails And add it to Activity Level
                                                            StringBuilder errorDetailsNew = new StringBuilder();
                                                            string        errorDetails    = null;
                                                            JArray        actionsArray    = (JArray)jActivityObject["ActionsColl"];
                                                            foreach (JObject jActionObject in actionsArray)
                                                            {
                                                                if (!string.IsNullOrEmpty(jActionObject.Property("Error").Value.ToString()) && !string.IsNullOrEmpty(errorDetailsNew.ToString()))
                                                                {
                                                                    errorDetailsNew.Append(",");
                                                                    errorDetailsNew.Append(jActionObject.Property("Error").Value.ToString());
                                                                }
                                                                else
                                                                {
                                                                    errorDetailsNew.Append(jActionObject.Property("Error").Value.ToString());
                                                                }
                                                            }
                                                            if (string.IsNullOrEmpty(errorDetailsNew.ToString()))
                                                            {
                                                                errorDetails = "NA";
                                                            }
                                                            else
                                                            {
                                                                errorDetails = errorDetailsNew.ToString();
                                                            }
                                                            jActivityObject.Add("ErrorDetails", errorDetails);

                                                            foreach (HTMLReportConfigFieldToSelect activityFieldToRemove in reportTemplate.ActivitySourceFieldsToSelect.Where(x => !x.IsSelected))
                                                            {
                                                                jActivityObject.Property(GetFieldToRemove(activityFieldToRemove.FieldKey)).Remove();
                                                            }
                                                            //ActionsColl
                                                            HTMLReportConfigFieldToSelect actionField = reportTemplate.ActivitySourceFieldsToSelect.Where(x => x.IsSelected && x.FieldKey == "ActionsColl").FirstOrDefault();
                                                            if (actionField != null)
                                                            {
                                                                if (reportTemplate.ActionSourceFieldsToSelect.Select(x => x.IsSelected).ToList().Count > 0)
                                                                {
                                                                    JArray actionArray = (JArray)jActivityObject[actionField.FieldKey];
                                                                    foreach (JObject jActionObject in actionArray)
                                                                    {
                                                                        foreach (HTMLReportConfigFieldToSelect actionFieldToRemove in reportTemplate.ActionSourceFieldsToSelect.Where(x => !x.IsSelected))
                                                                        {
                                                                            jActionObject.Property(GetFieldToRemove(actionFieldToRemove.FieldKey)).Remove();
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            #endregion
            return(runSetObject.ToString(Formatting.Indented));
        }