コード例 #1
0
 public void CloseSession(InspectionsSyncSession session)
 {
     session.Sync(() =>
     {
         try
         {
             m_database.Sql().Call("inspfw_closeSession")
             .WithParam("@projectId", m_session.Project.Id)
             .WithParam("@sessionId", session.SessionId)
             .NonQuery();
         }
         catch (Exception e)
         {
             m_log.Error($"Cannot close inspection session", e);
         }
     });
 }
コード例 #2
0
        public void RunInspection(InspectionsSyncSession session, string procedureName)
        {
            session.Sync(() =>
            {
                try
                {
                    // @spName VARCHAR(300), @projectId INT, @sessionId INT, @retryIssueId INT = null

                    m_database.Sql().Call("inspfw_runInspection")
                    .WithParam("@sessionId", session.SessionId)
                    .WithParam("@projectId", m_session.Project.Id)
                    .WithParam("@spName", procedureName)
                    .NonQuery();
                }
                catch (Exception ex)
                {
                    m_log.Error($"Inspection failed sp={procedureName}, sessionId={session.SessionId}", ex);
                }
            });
        }
コード例 #3
0
        public void RunInspectionAndCloseSession(InspectionsSyncSession session, int issueId)
        {
            session.Sync(() =>
            {
                using (var tx = m_database.OpenTransaction())
                {
                    try
                    {
                        m_database.Sql().Call("inspfw_runInspection")
                        .WithParam("@sessionId", session.SessionId)
                        .WithParam("@projectId", m_session.Project.Id)
                        .WithParam("@retryIssueId", issueId)
                        .NonQuery();
                    }
                    catch (Exception ex)
                    {
                        m_log.Error($"Inspection failed sessionId={session.SessionId}, issueId={issueId}", ex);

                        try
                        {
                            CloseSession(session);
                        }
                        catch (Exception e)
                        {
                            m_log.Error($"Cannot close session sessionId={session.SessionId}, issueId={issueId}", e);
                        }

                        throw;
                    }

                    m_database.Sql().Call("inspfw_closeSession")
                    .WithParam("@projectId", m_session.Project.Id)
                    .WithParam("@sessionId", session.SessionId)
                    .WithParam("@forIssueId", issueId)
                    .NonQuery();

                    tx.Commit();
                }
            });
        }
コード例 #4
0
        public InspectionsSyncSession OpenSession()
        {
            var sync = new InspectionsSyncSession();

            try
            {
                using (var tx = m_database.OpenTransaction())
                {
                    var sid = m_database.Sql().Call("inspfw_openSession")
                              .WithParam("@projectId", m_session.Project.Id)
                              .Scalar <int>();

                    if (sid < 0)
                    {
                        throw new InvalidOperationException(
                                  "Inspektor je právě zaneprázdněn, nebo mimo provoz. Zkuste to později");
                    }

                    tx.Commit();
                    sync.SessionId = sid;
                }
            }
            catch
            {
                try
                {
                    sync.Dispose();
                }
                catch
                {
                }

                throw;
            }

            return(sync);
        }