コード例 #1
0
        public ActionResult DeletePhoto(int personId, int photoId)
        {
            var person = DatabaseSession.Get <Person>(personId);
            var result = PhotosController.Delete(this, photoId);

            if (DatabaseSession.Transaction.IsActive)
            {
                // reassign photo if we just deleted it
                if (person.Photo == null || person.Photo.PhotoId == photoId || person.Photo.IsDefaultNoPic())
                {
                    person.Photo = DatabaseSession.Query <PersonPhoto>()
                                   .Where(x => x.Person == person && x.Photo.PhotoId != photoId)
                                   .Take(1)
                                   .ToList()
                                   .Select(x => x.Photo)
                                   .FirstOrDefault()
                                   ?? DatabaseSession.Load <Photo>(Photo.NoPic);
                }
            }
            if (result != null)
            {
                return(result);
            }
            return(new ViewModelResult(new HttpApiResult
            {
                HttpStatusCode = HttpStatusCode.OK,
                Message = "Photo Deleted",
                RedirectToURL = this.GetURL(c => c.ListPersonPhotos(personId, null)),
            }));
        }
コード例 #2
0
        public ActionResult DeleteAward(int awardId)
        {
            var award = DatabaseSession.Get <Award>(awardId);

            DatabaseSession.Delete(award);
            return(this.RedirectToAction(x => x.ByYear(award.Year)));
        }
コード例 #3
0
        public ActionResult Admin()
        {
            var awardTypes = DatabaseSession.Query <AwardType>().ToList();


            return(new ViewModelResult(new AwardTypesViewModel(awardTypes, this.Url)));
        }
コード例 #4
0
        public ActionResult EditAwardType(int awardTypeId)
        {
            var awardType = DatabaseSession.Get <AwardType>(awardTypeId);
            var viewModel = new AwardTypeViewModel(awardType, this.Url);

            return(PartialView(viewModel));
        }
コード例 #5
0
ファイル: UserAppService.cs プロジェクト: radtek/Fms
        public byte[] ExportUserBytes(UserSearchInput input)
        {
            using (var session = DatabaseSession.OpenSession())
            {
                var sql = @"SELECT A.""Id"" 标识,
                               A.""UserName"" 工号,
                              ""Name"" 姓名,
                               C.GROUP_NAME 地区,
                               B.NAME 部门,
                               CASE
                                  WHEN A.""IsDeleted"" = 1 THEN '注销'
                                  WHEN A.""IsActive"" = 0 THEN '锁定'
                                  ELSE '正常'
                               END
                                  状态,
                               a.""CreationTime"" 创建时间,
                               a.""LastLoginTime"" 最后登录时间
                          FROM ""AbpDepartment"" B,
                              ""AbpUsers"" A
                               LEFT JOIN ""AbpDistrict"" C ON A.""GroupId"" = C.ID
                         WHERE ""TenantId"" = {0} AND A.""DepartmentId"" = B.ID".FormatWith(AbpSession.TenantId);

                const string whereString = "";
                var          orderString = input.Order != null
                    ? @" ORDER BY A.""{0}"" {1}".FormatWith(input.Order.Name, input.Order.Type)
                    : "";

                var reader = session.ExecuteReader(new DataCommandDefinition(sql + whereString + orderString));

                return(_exportProvider.ExportBig(reader, ExportFileType.Excel));
            }
        }
コード例 #6
0
        //根据code判断功能权限接口
        public bool Checkin(string code)
        {
            long Id = CurrentUser.Id;

            using (var session = DatabaseSession.OpenSession())
            {
                var sql = @"SELECT DISTINCT E.CODE
                            FROM ""AbpUsers"" A
                                   INNER JOIN ""AbpUserRoles"" B
                                      ON A.""Id"" = B.""UserId""
                                   INNER JOIN ""AbpRoles"" C
                                      ON B.""RoleId"" = C.""Id""
                                   LEFT JOIN ""AbpFunctionRole"" D
                                      ON D.""ROLE_ID"" = C.""Id""
                                   INNER JOIN ""AbpFunction"" E
                                      ON D.""FUNCTION_ID"" = E.""ID""
                            WHERE A.""Id""= {0}";

                var resultL = session.Query <string>(sql.FormatWith(Id));
                if (resultL.ToList().Contains(code))
                {
                    return(true);
                }
            }
            return(false);
        }
コード例 #7
0
        public ActionResult POSTEditUser(int userId, UserAccountViewModel postModel)
        {
            var user = DatabaseSession.Get <UserAccount>(userId);

            if (user == null)
            {
                return(new HttpNotFoundResult());
            }

            if (this.User.IsInRole(RoleNames.Admin) && ((ClaimsPrincipal)this.User).GetUserAccountId() == userId)
            {
                // do not allow admin to remove self from admin role
                postModel.IsAdmin = true;
            }

            user.IsContributor = postModel.IsContributor;
            user.IsArchivist   = postModel.IsArchivist;
            user.IsAdmin       = postModel.IsAdmin;

            if (Request.IsAjaxRequest())
            {
                return(Json("OK"));
            }

            return(this.RedirectToAction(c => c.List()));
        }
コード例 #8
0
        /// <summary>
        /// Bonus wirtualnych zetonow za zalogowanie sie
        /// </summary>
        /// <param name="user"></param>
        private void DailyVirtualBonus(UserModel user)
        {
            if (user.IsOnline())
            {
                var wallet = user.GetWallet(Enums.CurrencyType.VIRTUAL);

                using (ISession session = DatabaseSession.Open())
                {
                    var transferList = session.QueryOver <WalletModel>().
                                       Where(w => w.ID == wallet.ID).
                                       SingleOrDefault().
                                       TransferList;

                    if (!transferList.Any(c => c.Timestamp.Date == DateTime.Now.Date && c.Flag == "LOGIN_BONUS"))
                    {
                        Task.Factory.StartNew(() =>
                        {
                            System.Timers.Timer timer = new System.Timers.Timer(2000);
                            timer.Elapsed            += (o, e) =>
                            {
                                user.Deposit(
                                    Enums.CurrencyType.VIRTUAL,
                                    1000.00m,
                                    "Bonus wirtualny za zalogowanie się!",
                                    "LOGIN_BONUS"
                                    );
                            };
                            timer.AutoReset = false;
                            timer.Enabled   = true;
                        });
                    }
                }
            }
        }
コード例 #9
0
        public void TestAll()
        {
            DatabaseSession databaseSession = new DatabaseSession("Invalid Connection String;");

            databaseSession.OpenConnection();

            Accessor databaseSessionAccessor = ReflectionAccessor.Wrap(databaseSession);

            databaseSessionAccessor.Call("GetConnection", DBType.Oracle);
            databaseSessionAccessor.Call("GetConnection", DBType.MySql);

            databaseSessionAccessor.SetField("m_dbType", DBType.Oracle);
            databaseSession.GetParameterDelimiter();
            databaseSessionAccessor.SetField("m_dbType", DBType.MySql);
            databaseSession.GetParameterDelimiter();

            databaseSession.CheckDatabaseConnection();

            try
            {
                databaseSession.CommitTransaction(); //throw exception
            }
            catch (System.Exception ex)
            {
            }
            try
            {
                databaseSession.RollBackTransaction(); //throw exception
            }
            catch (System.Exception ex)
            {
            }
        }
コード例 #10
0
        public ActionResult GetPhotoDetail(int id)
        {
            var photos = DatabaseSession
                         .Query <Photo>()
                         .Select(x => new PhotoItemDto
            {
                PhotoId          = x.PhotoId,
                InsertedDateTime = x.InsertedDateTime,
            })
                         .ToList().OrderBy(x => x.PhotoId).ToList();


            var index      = photos.IndexOf(photos.Single(x => x.PhotoId == id));
            var previousId = index > 0 ? photos[index - 1].PhotoId : (int?)null;
            var nextId     = index < photos.Count - 1 ? photos[index + 1].PhotoId : (int?)null;

            var viewModel = new PhotoDetailViewModel();

            viewModel.PhotoUploadLinkURL   = "";
            viewModel.PreviousPhotoLinkURL = this.GetURL(c => c.GetPhotoDetail(id));
            viewModel.NextPhotoLinkURL     = this.GetURL(c => c.GetPhotoDetail(id));
            if (previousId.HasValue)
            {
                viewModel.HasPreviousPhotoLinkURL = true;
                viewModel.PreviousPhotoLinkURL    = this.GetURL(c => c.GetPhotoDetail(previousId.Value));
            }
            if (nextId.HasValue)
            {
                viewModel.HasNextPhotoLinkURL = true;
                viewModel.NextPhotoLinkURL    = this.GetURL(c => c.GetPhotoDetail(nextId.Value));
            }

            viewModel.PhotoViewModel = new PhotoViewModel(DatabaseSession.Get <Photo>(id), "", this);
            return(View(viewModel));
        }
コード例 #11
0
        public ActionResult SaveEdit(int personId, SaveEditParameters param)
        {
            if (string.IsNullOrWhiteSpace(param.FirstName) ||
                string.IsNullOrWhiteSpace(param.LastName))
            {
                throw new Exception("Name is required");
            }

            var person = DatabaseSession.Get <Person>(personId);

            person.FirstName  = (param.FirstName ?? string.Empty).Trim();
            person.LastName   = (param.LastName ?? string.Empty).Trim();
            person.MiddleName = (param.MiddleName ?? string.Empty).Trim();
            person.Honorific  = (param.Honorific ?? string.Empty).Trim();
            person.Suffix     = (param.Suffix ?? string.Empty).Trim();
            person.Nickname   = (param.Nickname ?? string.Empty).Trim();
            person.Biography  = (param.Biography ?? string.Empty).Trim();
            if (DatabaseSession.IsDirtyEntity(person))
            {
                // TODO: build in auditing
                person.LastModifiedDateTime = DateTime.UtcNow;
            }

            return(this.RedirectToAction(x => x.PersonDetails(personId)));
        }
コード例 #12
0
        public ActionResult SaveAddPerson(SaveEditParameters param)
        {
            if (string.IsNullOrWhiteSpace(param.FirstName) ||
                string.IsNullOrWhiteSpace(param.LastName))
            {
                throw new Exception("Name is required");
            }

            var person = new Person();

            person.FirstName  = (param.FirstName ?? string.Empty).Trim();
            person.LastName   = (param.LastName ?? string.Empty).Trim();
            person.MiddleName = (param.MiddleName ?? string.Empty).Trim();
            person.Honorific  = (param.Honorific ?? string.Empty).Trim();
            person.Suffix     = (param.Suffix ?? string.Empty).Trim();
            person.Nickname   = (param.Nickname ?? string.Empty).Trim();
            person.Biography  = (param.Biography ?? string.Empty).Trim();
            person.Photo      = DatabaseSession.Load <Photo>(Photo.NoPic);
            // TODO: build in auditing
            person.InsertedDateTime     = DateTime.UtcNow;
            person.LastModifiedDateTime = DateTime.UtcNow;
            DatabaseSession.Save(person);
            DatabaseSession.Flush();

            return(this.RedirectToAction(x => x.PersonDetails(person.PersonId)));
        }
コード例 #13
0
        public ActionResult EditPerson(int personId)
        {
            if (!Request.IsAjaxRequest())
            {
                return(this.RedirectToAction(x => x.PersonDetails(personId)));
            }

            var person = DatabaseSession.Get <Person>(personId);
            var photos = DatabaseSession.Query <PersonPhoto>().Where(x => x.Person == person).Fetch(x => x.Photo).ToList();

            var viewModel = new EditPersonViewModel();

            viewModel.POSTUrl        = Url.Action("SaveEdit");
            viewModel.PersonId       = personId;
            viewModel.FirstName      = person.FirstName;
            viewModel.LastName       = person.LastName;
            viewModel.MiddleName     = person.MiddleName;
            viewModel.Honorific      = person.Honorific;
            viewModel.Suffix         = person.Suffix;
            viewModel.Nickname       = person.Nickname;
            viewModel.Biography      = person.Biography;
            viewModel.DefaultPhotoId = person.Photo.PhotoId;
            viewModel.Photos         = photos.OrderBy(x => x.Photo.InsertedDateTime).ThenBy(x => x.Photo.PhotoId).Select(x => new EditPersonViewModel.Photo
            {
                PhotoItemId       = x.Photo.PhotoId,
                PhotoTinyURL      = x.Photo.GetTinyFileURL(),
                PhotoThumbnailURL = x.Photo.GetThumbnailFileURL(),
            }).ToList();

            return(PartialView(viewModel));
        }
コード例 #14
0
        public ActionResult List()
        {
            var photos = DatabaseSession
                         .Query <Photo>()
                         .ToList();

            var recentlyUploaded = photos.OrderByDescending(x => x.InsertedDateTime).ThenByDescending(x => x.PhotoId).Take(10).ToList();
            var ran        = new Random();
            var randomSet  = new HashSet <Photo>();
            var randomList = new List <Photo>(photos);

            while (randomSet.Count < 10)
            {
                var nextIndex = ran.Next(randomList.Count);
                var item      = randomList[nextIndex];
                randomList.Remove(item);
                randomSet.Add(item);
            }

            var viewModel = new ListPhotosViewModel();

            viewModel.RecentlyUploaded = recentlyUploaded.Select(x => new ListPhotosViewModel.Photo
            {
                PhotoLinkURL      = this.GetURL(c => c.GetPhotoDetail(x.PhotoId)),
                PhotoThumbnailURL = x.GetThumbnailFileURL(),
            }).ToList();
            viewModel.RandomPic = randomSet.Select(x => new ListPhotosViewModel.Photo
            {
                PhotoLinkURL      = this.GetURL(c => c.GetPhotoDetail(x.PhotoId)),
                PhotoThumbnailURL = x.GetThumbnailFileURL()
            }).ToList();
            return(new ViewModelResult(viewModel));
        }
コード例 #15
0
        public ActionResult EditUser(int userId)
        {
            var user          = DatabaseSession.Get <UserAccount>(userId);
            var userViewModel = new UserAccountViewModel(user, this.Url);

            return(PartialView(userViewModel));
        }
コード例 #16
0
        // do not use at home
        // sql injection
        public IActionResult Get(string query)
        {
            DatabaseSession session = null;

            try
            {
                session = new DatabaseSession();
                var repo = new Repository(session.Connection);

                var values = repo.Get(query);

                var result = new QueryResult
                {
                    Query  = query,
                    Values = values
                };

                return(View(result));
            }
            catch (SqlException)
            {
                return(View(new QueryResult {
                    IsCorrect = false
                }));
            }
            finally
            {
                ((IDisposable)session)?.Dispose();
            }
        }
コード例 #17
0
        public ActionResult ByYear(short?year)
        {
            if (!year.HasValue || year > DateTime.Now.Year)
            {
                return(this.RedirectToAction(c => c.ByYear(GetMostRecentYear())));
            }
            var awards = DatabaseSession.Query <Award>().Where(x => x.Year == year).Fetch(x => x.Show).Fetch(x => x.Person).Fetch(x => x.AwardType).ToList();

            var viewModel = new ByYearViewModel();

            viewModel.Year = year.Value;
            var nextYear = (short)(year.Value + 1);
            var prevYear = (short)(year.Value - 1);

            viewModel.NextYearURL     = this.GetURL(c => c.ByYear(nextYear));
            viewModel.PreviousYearURL = this.GetURL(c => c.ByYear(prevYear));

            viewModel.AwardsTable = new AwardsTableViewModel(
                this.Url
                , id => ""
                , awards)
            {
                CanEdit = false,
                //AddItemURL = this.GetURL(c => c.AddAward(personId)),
            };

            return(View(viewModel));
        }
コード例 #18
0
 /// <summary>
 /// 导入数据到目标表
 /// </summary>
 /// <param name="tableName">目标表名</param>
 /// <param name="filePath">数据文件流路径,支持xls、xlsx、csv文件</param>
 /// <param name="columnCont">字段数量</param>
 /// <param name="databaseSessionKey">数据库连接Key</param>
 /// <returns>成功行数</returns>
 public static int Import(string tableName, string filePath, int columnCont = 0, string databaseSessionKey = null)
 {
     using (var session = DatabaseSession.OpenSession(databaseSessionKey))
     {
         return(Import(session, tableName, filePath, columnCont));
     }
 }
コード例 #19
0
    public static T FetchObject(DatabaseSession dbSession, Int32 key)
    {
        DatabaseRecord record = dbSession.RetrieveRecord(FetchQuery, parameters);
        T obj = new T();

        obj.Initialize(row);
        return(obj);
    }
コード例 #20
0
 public void DeletePosition(string symbol)
 {
     using (var db = new DatabaseSession())
     {
         var position = db.Query <Position>().FirstOrDefault(p => p.Symbol == symbol);
         db.Remove(position);
     }
 }
コード例 #21
0
        public async Task Initialize(DatabaseSession databaseSession, CancellationToken cancellationToken)
        {
            databaseSession = databaseSession.Owner ?? databaseSession;
            var oracleSessionValues = (OracleSessionValues)databaseSession.ProviderValues;

            if (_oracleSessionValues != null && _oracleSessionValues.Instance == oracleSessionValues.Instance && _oracleSessionValues.Id == oracleSessionValues.Id && String.Equals(_oracleSessionValues.SqlId, oracleSessionValues.SqlId) && _oracleSessionValues.ExecutionId == oracleSessionValues.ExecutionId)
            {
                await Refresh(cancellationToken);

                return;
            }

            Shutdown();

            DatabaseSession = databaseSession;

            try
            {
                _oracleSessionValues = oracleSessionValues.Clone();

                if (!String.IsNullOrEmpty(_oracleSessionValues.SqlId) && _oracleSessionValues.ExecutionId.HasValue)
                {
                    var monitorDataProvider = new SqlMonitorDataProvider(_oracleSessionValues.Instance, _oracleSessionValues.Id, _oracleSessionValues.ExecutionStart.Value, _oracleSessionValues.ExecutionId.Value, _oracleSessionValues.SqlId, _oracleSessionValues.ChildNumber.Value);
                    await OracleDatabaseModel.UpdateModelAsync(OracleConnectionStringRepository.GetBackgroundConnectionString(_connectionString.ConnectionString), null, false, cancellationToken, monitorDataProvider);

                    _planItemCollection = monitorDataProvider.ItemCollection;
                    _planItemCollection.RefreshPeriod = DefaultRefreshPeriod;
                    //QueryCoordinatorLongOperations = _planItemCollection.QueryCoordinatorLongOperations;

                    if (_planItemCollection.RootItem != null)
                    {
                        ExecutionPlanTreeView.RootItem = _planItemCollection.RootItem;
                        SessionItems = _planItemCollection.SessionItems;
                        var collectionView = CollectionViewSource.GetDefaultView(SessionItems);
                        collectionView.SortDescriptions.Add(new SortDescription {
                            PropertyName = "SessionIdentifier.Instance"
                        });
                        collectionView.SortDescriptions.Add(new SortDescription {
                            PropertyName = "ParallelServerGroup"
                        });
                        collectionView.SortDescriptions.Add(new SortDescription {
                            PropertyName = "ParallelServerSet"
                        });
                        collectionView.SortDescriptions.Add(new SortDescription {
                            PropertyName = "ParallelServerNumber"
                        });

                        SummarySession.Inititalize(_planItemCollection);

                        await SafeRefresh();
                    }
                }
            }
            finally
            {
                AutoRefreshEnabled = true;
            }
        }
コード例 #22
0
        public ActionResult DeleteCrew(int personId, int showCrewId)
        {
            var entity = DatabaseSession.Get <ShowCrew>(showCrewId);

            DatabaseSession.Delete(entity);
            return(new ViewModelResult(new HttpApiResult
            {
                RedirectToURL = this.GetURL(c => c.PersonDetails(personId)),
            }));
        }
コード例 #23
0
        public ActionResult AddCrew(int personId, int showId, string position)
        {
            var entity = new ShowCrew(DatabaseSession.Load <Person>(personId), DatabaseSession.Load <Show>(showId), position);

            DatabaseSession.Save(entity);
            return(new ViewModelResult(new HttpApiResult
            {
                RedirectToURL = this.GetURL(c => c.PersonDetails(personId)),
            }));
        }
コード例 #24
0
        public ActionResult AddClubPosition(int personId, string position, short year)
        {
            var entity = new PersonClubPosition(DatabaseSession.Load <Person>(personId), position, year);

            DatabaseSession.Save(entity);
            return(new ViewModelResult(new HttpApiResult
            {
                RedirectToURL = this.GetURL(c => c.PersonDetails(personId)),
            }));
        }
コード例 #25
0
        public ActionResult DeleteCast(int showId, int showCastId)
        {
            var entity = DatabaseSession.Get <ShowCast>(showCastId);

            DatabaseSession.Delete(entity);
            return(new ViewModelResult(new HttpApiResult
            {
                RedirectToURL = this.GetURL(c => c.ShowDetails(showId)),
            }));
        }
コード例 #26
0
        public IEnumerable <Position> GetPositions()
        {
            using (var db = new DatabaseSession())
            {
                var positions = db.Query <Position>().OrderBy(p => p.Symbol).ToList();

                var portfolio = new Portfolio(positions);   //This calculates the asset allocation
                return(portfolio.Positions);
            }
        }
コード例 #27
0
        public ActionResult GetPhotoThumbnail(int id)
        {
            var photo = DatabaseSession.Get <Photo>(id);

            if (photo == null)
            {
                return(new HttpNotFoundResult());
            }
            return(new RedirectResult(photo.GetThumbnailFileURL()));
        }
コード例 #28
0
        public ActionResult List()
        {
            var users = DatabaseSession.Query <UserAccount>().ToList();

            var listViewModel = new ListViewModel();

            listViewModel.IsUserAdmin = this.User.IsInRole(RoleNames.Admin);
            listViewModel.Users       = users.Select(x => new UserAccountViewModel(x, this.Url)).ToList();
            return(View(listViewModel));
        }
コード例 #29
0
        public void TestSessionStoreConstructor01()
        {
            SessionStore    sessionStore = new SessionStore();
            DatabaseSession session      = new DatabaseSession(TestDBInit.localConnectionString2);

            sessionStore.Store(TestDBInit.localConnectionString2, session);
            sessionStore.Dispose("");
            DBConnectionStrings.ReleaseInstance();
            SimpleDatabase.ReleaseInstance();
        }
コード例 #30
0
        public ActionResult DeleteAward(int personId, int awardId)
        {
            var award = DatabaseSession.Get <Award>(awardId);

            DatabaseSession.Delete(award);
            return(new ViewModelResult(new HttpApiResult
            {
                Message = "Award Deleted",
                RedirectToURL = this.GetURL(c => c.PersonDetails(personId)),
            }));
        }
コード例 #31
0
		public async Task<DatabaseSessions> GetAllSessionDataAsync(CancellationToken cancellationToken)
		{
			var databaseSessions = new DatabaseSessions();

			using (var connection = new OracleConnection(BackgroundConnectionString))
			{
				using (var command = connection.CreateCommand())
				{
					command.CommandText = OracleDatabaseCommands.SelectBasicSessionInformationCommandText;

					await connection.OpenAsynchronous(cancellationToken);

					connection.ModuleName = "Database monitor";

					using (var reader = await command.ExecuteReaderAsynchronous(CommandBehavior.Default, cancellationToken))
					{
						databaseSessions.ColumnHeaders = DatabaseSessionColumnHeaders;

						var sessions = new Dictionary<int, DatabaseSession>();
						while (await reader.ReadAsynchronous(cancellationToken))
						{
							var oracleSession =
								new OracleSessionValues
								{
									Process = OracleReaderValueConvert.ToString(reader["PROCESS"]),
									ExecutionId = OracleReaderValueConvert.ToInt32(reader["SQL_EXEC_ID"]),
									Type = (string)reader["TYPE"],
									Id = Convert.ToInt32(reader["SID"]),
									ExecutionStart = OracleReaderValueConvert.ToDateTime(reader["SQL_EXEC_START"]),
									Action = OracleReaderValueConvert.ToString(reader["ACTION"]),
									State = (string)reader["STATE"],
									Status = (string)reader["STATUS"],
									AuditingSessionId = Convert.ToInt64(reader["AUDSID"]),
									ChildNumber = OracleReaderValueConvert.ToInt32(reader["SQL_CHILD_NUMBER"]),
									ClientInfo = OracleReaderValueConvert.ToString(reader["CLIENT_INFO"]),
									CurrentCommandText = OracleReaderValueConvert.ToString(await reader.GetValueAsynchronous(reader.GetOrdinal("CURRENT_COMMAND_TEXT"), cancellationToken)),
									Event = (string)reader["EVENT"],
									FailedOver = (string)reader["FAILED_OVER"],
									FailoverMethod = (string)reader["FAILOVER_METHOD"],
									FailoverType = (string)reader["FAILOVER_TYPE"],
									LockWait = OracleReaderValueConvert.ToString(reader["LOCKWAIT"]),
									LogonTime = (DateTime)reader["LOGON_TIME"],
									Machine = OracleReaderValueConvert.ToString(reader["MACHINE"]),
									Module = OracleReaderValueConvert.ToString(reader["MODULE"]),
									OperatingSystemUser = OracleReaderValueConvert.ToString(reader["OSUSER"]),
									ParallelDdlStatus = (string)reader["PDDL_STATUS"],
									ParallelDmlEnabled = (string)reader["PDML_ENABLED"],
									ParallelDmlStatus = (string)reader["PDML_STATUS"],
									ParallelQueryStatus = (string)reader["PQ_STATUS"],
									Parameter1 = Convert.ToDecimal(reader["P1"]),
									Parameter1Text = OracleReaderValueConvert.ToString(reader["P1TEXT"]),
									Parameter2 = Convert.ToDecimal(reader["P2"]),
									Parameter2Text = OracleReaderValueConvert.ToString(reader["P2TEXT"]),
									Parameter3 = Convert.ToDecimal(reader["P3"]),
									Parameter3Text = OracleReaderValueConvert.ToString(reader["P3TEXT"]),
									OwnerSessionId = OracleReaderValueConvert.ToInt32(reader["OWNER_SID"]),
									Port = OracleReaderValueConvert.ToInt32(reader["PORT"]),
									PrecedingChildNumber = OracleReaderValueConvert.ToInt32(reader["PREV_CHILD_NUMBER"]),
									PrecedingCommandText = OracleReaderValueConvert.ToString(await reader.GetValueAsynchronous(reader.GetOrdinal("PRECEDING_COMMAND_TEXT"), cancellationToken)),
									PrecedingExecutionId = OracleReaderValueConvert.ToInt32(reader["PREV_EXEC_ID"]),
									PrecedingExecutionStart = OracleReaderValueConvert.ToDateTime(reader["PREV_EXEC_START"]),
									PrecedingSqlId = OracleReaderValueConvert.ToString(reader["PREV_SQL_ID"]),
									ProcessAddress = (string)reader["PADDR"],
									Program = OracleReaderValueConvert.ToString(reader["PROGRAM"]),
									RemainingTimeMicroseconds = OracleReaderValueConvert.ToInt64(reader["TIME_REMAINING_MICRO"]),
									ResourceConsumeGroup = OracleReaderValueConvert.ToString(reader["RESOURCE_CONSUMER_GROUP"]),
									SchemaName = OracleReaderValueConvert.ToString(reader["SCHEMANAME"]),
									Serial = Convert.ToInt32(reader["SERIAL#"]),
									Server = (string)reader["SERVER"],
									ServiceName = OracleReaderValueConvert.ToString(reader["SERVICE_NAME"]),
									Instance = Convert.ToInt32(reader["INSTANCE_ID"]),
									SessionAddress = (string)reader["SADDR"],
									SqlId = OracleReaderValueConvert.ToString(reader["SQL_ID"]),
									SqlTrace = (string)reader["SQL_TRACE"],
									TimeSinceLastWaitMicroseconds = OracleReaderValueConvert.ToInt64(reader["TIME_SINCE_LAST_WAIT_MICRO"]),
									TransactionAddress = OracleReaderValueConvert.ToString(reader["TADDR"]),
									UserName = OracleReaderValueConvert.ToString(reader["USERNAME"]),
									WaitClass = (string)reader["WAIT_CLASS"],
									WaitTime = OracleReaderValueConvert.ToInt64(reader["WAIT_TIME"]),
									WaitTimeMicroseconds = OracleReaderValueConvert.ToInt64(reader["WAIT_TIME_MICRO"]),
									ProcessIdentifier = OracleReaderValueConvert.ToInt32(reader["PID"]),
									OperatingSystemIdentifier = OracleReaderValueConvert.ToInt32(reader["SOSID"]),
									OperatingSystemProcessIdentifier = OracleReaderValueConvert.ToInt32(reader["SPID"]),
									TraceId = OracleReaderValueConvert.ToString(reader["TRACEID"]),
									TraceFile = OracleReaderValueConvert.ToString(reader["TRACEFILE"]),
									ProgramGlobalAreaUsedMemoryBytes = OracleReaderValueConvert.ToInt64(reader["PGA_USED_MEM"]),
									ProgramGlobalAreaAllocatedMemoryBytes = OracleReaderValueConvert.ToInt64(reader["PGA_ALLOC_MEM"]),
									ProgramGlobalAreaFreeableMemoryBytes = OracleReaderValueConvert.ToInt64(reader["PGA_FREEABLE_MEM"]),
									ProgramGlobalAreaMaximumMemoryBytes = OracleReaderValueConvert.ToInt64(reader["PGA_MAX_MEM"])
								};

							var databaseSession =
								new DatabaseSession
								{
									Id = oracleSession.Id,
									ProviderValues = oracleSession,
									Type = String.Equals(oracleSession.Type, "User") ? SessionType.User : SessionType.System,
									IsActive = Convert.ToString(oracleSession.Status) == "Active"
								};

							sessions.Add(databaseSession.Id, databaseSession);
						}

						foreach (var session in sessions.Values)
						{
							DatabaseSession ownerSession;
							var ownerSid = ((OracleSessionValues)session.ProviderValues).OwnerSessionId;
							if (ownerSid.HasValue && sessions.TryGetValue(ownerSid.Value, out ownerSession))
							{
								session.Owner = ownerSession;
								ownerSession.ChildSessions.Add(session);
							}
						}

						databaseSessions.Rows = sessions.Values.ToArray();
					}
				}

				await connection.CloseAsynchronous(cancellationToken);
			}

			return databaseSessions;
		}
コード例 #32
0
		public IEnumerable<ContextAction> GetSessionContextActions(DatabaseSession databaseSession)
		{
			var sessionValues = (OracleSessionValues)databaseSession.ProviderValues;

			var executionHandler = new CommandExecutionHandler();
			string actionName;
			if (String.Equals(sessionValues.SqlTrace, "Disabled"))
			{
				actionName = "Enable trace";
				executionHandler.ExecutionHandlerAsync = (context, cancellationToken) => EnableSessionTracing(sessionValues, sessionValues.TraceId, true, true, cancellationToken);
			}
			else
			{
				actionName = "Disable trace";
				executionHandler.ExecutionHandlerAsync = (context, cancellationToken) => DisableSessionTracing(sessionValues, cancellationToken);
			}

			yield return new ContextAction(actionName, executionHandler, null, true);

			var remoteTraceDirectory = OracleConfiguration.Configuration.GetRemoteTraceDirectory(_connectionString.Name);
			var traceFileName = String.IsNullOrWhiteSpace(remoteTraceDirectory)
				? sessionValues.TraceFile
				: Path.Combine(remoteTraceDirectory, new FileInfo(sessionValues.TraceFile).Name);

			executionHandler =
				new CommandExecutionHandler
				{
					ExecutionHandler = context => OracleTraceViewer.NavigateToTraceFile(traceFileName)
				};

			yield return new ContextAction("Navigate to trace file", executionHandler, null);

			executionHandler =
				new CommandExecutionHandler
				{
					ExecutionHandlerAsync = (context, cancellationToken) => KillSession(sessionValues, cancellationToken)
				};

			yield return new ContextAction("Kill", executionHandler, null, true);
		}