private void GetSelectedRowUidumpData(TriageData tiageData, String folderPath)
        {
            try
            {
                if (!string.IsNullOrEmpty(folderPath))
                {
                    StringBuilder shooFile = new StringBuilder(Path.Combine(folderPath));
                    shooFile.Append("\\UiDump");
                    shooFile.Append(tiageData.SessionId);
                    shooFile.Append(tiageData.ActivityExecutionId.ToString());
                    shooFile.Append(".txt");

                    StreamWriter writer = new StreamWriter(shooFile.ToString());
                    writer.Write(tiageData.UIDumpData);
                    writer.Flush();
                    writer.Close();
                    MessageBox.Show("Saved:\r\n" + shooFile);
                }
            }
            catch (Exception ex)
            {
                log.Warn(ex);
                MessageBox.Show(ex.Message);
            }
        }
        private void btnSessionTriage_Click(object sender, EventArgs e)
        {
            string errMsg = string.Empty;

            try
            {
                string sessionId = cboSessionIds.Text;
                if (sessionId.Length == 8)
                {
                    rgvTriageData.Rows.Clear();
                    rgvPerformanceMarkers.Rows.Clear();

                    rtbErrorMessage.Text = string.Empty;
                    pbControlPanel.Image = null;
                    pbThumbnail.Image    = null;

                    DbAccess db = new DbAccess(GlobalSettings.Database);
                    using (DataLogContext dlContext = new DataLogContext(db.getConStrSQL()))
                    {
                        var myTriageData = TriageData.GetTriageDataBySessionId(dlContext, sessionId).ToList();
                        if (myTriageData.Any())
                        {
                            dtpStart.Value = myTriageData.First().TriageDateTime;
                            dtpEnd.Value   = myTriageData.Last().TriageDateTime;

                            triageDataListBindingSource.DataSource = myTriageData;
                            triageDataListBindingSource.ResetBindings(false);
                        }
                        else
                        {
                            errMsg = "TriageData does not contain data for the given session ID " + sessionId;
                        }
                    }
                    pbControlPanel.Image = null;
                    pbThumbnail.Image    = null;
                }
                else
                {
                    errMsg = "SessionId is not correctly formatted.";
                }
            }
            catch (Exception ex)
            {
                if (!string.IsNullOrEmpty(errMsg))
                {
                    log.Warn(errMsg);
                }
                else
                {
                    log.Warn(ex);
                    ShowErrorMessage(ex);
                }
            }
            if (!string.IsNullOrEmpty(errMsg))
            {
                MessageBox.Show(errMsg, @"Session ID", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        private void LoadSessionIds()
        {
            DbAccess db = new DbAccess(GlobalSettings.Database);

            using (DataLogContext td = new DataLogContext(db.getConStrSQL()))
            {
                _sessionIds = TriageData.SessionIds(td, dtpStart.Value.ToUniversalTime(), dtpEnd.Value.ToUniversalTime());
                cboSessionIds.DataSource = _sessionIds;
            }
        }
        private void RetrieveTriageData(string sessionId)
        {
            DbAccess db = new DbAccess(GlobalSettings.Database);

            using (DataLogContext dlContext = new DataLogContext(db.getConStrSQL()))
            {
                var myTriageData = TriageData.GetTriageDataBySessionId(dlContext, sessionId).ToList();
                _triageDataList = new TriageDataList();
                _triageDataList.AddRange(myTriageData);

                BindTriageDataGrid(_triageDataList);
                lblCountErrors.Text = $@"Error Count={myTriageData.Count}";
            }
            pbControlPanel.Image = null;
            pbThumbnail.Image    = null;
        }
 private void btnUIDump_Click(object sender, EventArgs e)
 {
     try
     {
         TriageData          tiageData           = (TriageData)rgvTriageData.CurrentRow.DataBoundItem;
         FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
         if (tiageData.UIDumpData != null)
         {
             folderBrowserDialog.ShowDialog();
             GetSelectedRowUidumpData(tiageData, folderBrowserDialog.SelectedPath);
         }
         else
         {
             MessageBox.Show("Selected Activity has no Android data for the JetAdvantageLink");
         }
     }
     catch (Exception ex)
     {
         log.Warn(ex);
         MessageBox.Show(ex.Message + "\r\n(If a row is not seleted, this exception can be occurred.)");
     }
 }
        private void pbThumbnail_DoubleClick(object sender, EventArgs e)
        {
            try
            {
                string triageDataId = rgvTriageData.SelectedRows[0].Cells["TriageDataId"].Value.ToString();
                Guid   tdId         = Guid.Parse(triageDataId);

                DbAccess db = new DbAccess(GlobalSettings.Database);
                using (DataLogContext dlc = new DataLogContext(db.getConStrSQL()))
                {
                    byte[] picture = TriageData.GetTriageDataById(dlc, tdId).ControlPanelImage;

                    SetImage(pbControlPanel, picture);
                    tabControlInfo.SelectedIndex = 1;
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
                ShowErrorMessage(ex);
            }
        }
        private static void Main(string[] args)
        {
            TriageDb.Init("TriageDbContext");

            List <Dump> dumps = new List <Dump>();

            foreach (var triagePath in Directory.EnumerateFiles(@"h:\temp\triagedata"))
            {
                Dump d = new Dump()
                {
                    DisplayName = Path.GetFileNameWithoutExtension(triagePath), DumpPath = triagePath, Origin = "TestData", DumpTime = DateTime.Now
                };

                dumps.Add(d);

                d.DumpId = TriageDb.AddDumpAsync(d).GetAwaiter().GetResult();
            }


            foreach (var d in dumps)
            {
                try
                {
                    Dictionary <string, string> dict = DeserializeTriageJson(d.DumpPath);

                    var triageData = TriageData.FromDictionary(dict);

                    TriageDb.UpdateDumpTriageInfo(d.DumpId, triageData).GetAwaiter().GetResult();
                }
                catch (Exception e)
                {
                    Console.WriteLine($"Dump {d.DisplayName} failed to update triage info.");
                    Console.WriteLine(e);
                }
            }
        }
        private void SetSelectedRow(GridViewRowInfo row)
        {
            TriageData td = (TriageData)rgvTriageData.CurrentRow.DataBoundItem;

            pbControlPanel.Image = null;
            if (td != null)
            {
                TriageDataInfo tdi = new TriageDataInfo();

                DbAccess db = new DbAccess(GlobalSettings.Database);
                using (DataLogContext dlc = new DataLogContext(db.getConStrSQL()))
                {
                    tdi.DeviceId = ActivityExecutionAssetUsage.GetByActivityExecutionId(dlc, td.ActivityExecutionId).AssetId;
                    ActivityExecution ae = ActivityExecution.GetById(dlc, td.ActivityExecutionId);
                    SessionDevice     sd = SessionDevice.GetBySessionDeviceId(dlc, cboSessionIds.Text, tdi.DeviceId);

                    tdi.ActivityType = ae.ActivityType;
                    tdi.ActivityName = ae.ActivityName;
                    tdi.UserName     = ae.UserName;

                    if (sd != null)
                    {
                        tdi.Firmware         = sd.FirmwareRevision;
                        tdi.FirmwareDatecode = sd.FirmwareDatecode;
                        tdi.Model            = sd.DeviceName;
                        tdi.IPAddress        = sd.IpAddress;
                        tdi.Product          = sd.ProductName;
                    }

                    var aepList = ActivityExecutionPerformance.GetByActivityExecutionId(dlc, td.ActivityExecutionId);
                    tdi.AddPerformanceMarkers(aepList);
                    SetPerformanceMarkers(tdi.PerformanceMarkers);

                    lblDeviceId.Text         = tdi.DeviceId;
                    lblIPAddress.Text        = tdi.IPAddress;
                    lblModelInfo.Text        = tdi.Model;
                    lblProduct.Text          = tdi.Product;
                    lblFirmwareDatecode.Text = tdi.FirmwareDatecode;
                    lblFirmwareRevision.Text = tdi.Firmware;
                    lblUserId.Text           = tdi.UserName;
                    lbActivityType.Text      = tdi.ActivityType;
                    lblActivityName.Text     = tdi.ActivityName;
                }

                byte[] thumbnail = (byte[])row.Cells["Thumbnail"].Value;
                if (row.Cells["ControlIds"].Value != null)
                {
                    string   regExp = @"[\n\r]+";
                    string[] temp   = Regex.Split(row.Cells["ControlIds"].Value.ToString(), regExp);
                    for (int ctr = 0; ctr < temp.Length; ctr++)
                    {
                        errMessageAndroid.Text += temp[ctr];
                    }
                }

                if (row.Cells["Reason"].Value != null)
                {
                    rtbErrorMessage.Text = row.Cells["Reason"].Value.ToString();
                }

                if (!string.IsNullOrEmpty(td.DeviceWarnings))
                {
                    rtbErrorMessage.Text += "\r\n\r\nDevice Warnings: " + td.DeviceWarnings;
                }

                tabControlInfo.SelectedIndex = 0;
                SetImage(pbThumbnail, thumbnail);
                pbControlPanel.Image = null;
            }
        }