Пример #1
0
        public async Task <JArray> Execute(JObject data)
        {
            dynamic dataDto = data;
            bool    isQuery = dataDto.IsQuery;
            string  query   = dataDto.Code;

            if (string.IsNullOrEmpty(query.Trim()))
            {
                return(new JArray());
            }
            int connectionId = dataDto.ConnectionId;

            var connectionByPermission = await ContentManagementContext.MasterDataKeyValues
                                         .Where(md => (md.Id == connectionId && md.TypeId == (int)EntityIdentity.SqlServerConnections) ||
                                                (md.ForeignKey3 == connectionId && md.TypeId == (int)EntityIdentity.Permission)).ToListAsync();

            var connection = connectionByPermission.FirstOrDefault(con => con.Id == connectionId);

            if (connection == null)
            {
                throw new KhodkarInvalidException(LanguageManager.ToAsErrorMessage(ExceptionKey.NotFound, " Connection "));
            }

            var permission = connectionByPermission.FirstOrDefault(prm => prm.ForeignKey3 == connectionId &&
                                                                   prm.TypeId == (int)EntityIdentity.Permission);

            if (permission == null)
            {
                throw new KhodkarInvalidException(LanguageManager.ToAsErrorMessage(ExceptionKey.NotFound, " Permission "));
            }


            if (!AuthorizeManager.IsAuthorize(permission.ForeignKey2))
            {
                throw new UnauthorizedAccessException(LanguageManager.ToAsErrorMessage(ExceptionKey.InvalidGrant));
            }
            if (isQuery)
            {
                return(_dataBaseManager.ExecuteQuery(connection.SecondCode, query));
            }
            else
            {
                return(_dataBaseManager.ExecuteNonQuery(connection.SecondCode, query));
            }
        }