예제 #1
0
        public T Load(IEnumerable <EntityKeyMember> keyMembers)
        {
            ObjectParameter[] parameters;
            string            query = QueryUtil.BuildKeyQuery(keyMembers, out parameters);

            return(ObjectQuery.Where(query, parameters).FirstOrDefault());
        }
예제 #2
0
        public void DynamicParamsComplex()
        {
            var criteria = new { Name = "Adam", Address = "21 Brandt" };
            var result   = QueryUtil.GetDynamicParameters(criteria, "SELECT * FROM whatever WHERE Name LIKE @name AND Address LIKE @address");

            Assert.IsTrue(result.ParameterNames.Count() == 2);
        }
예제 #3
0
        private ICriterion GetCollectionContainsCriteria(CollectionAccessExpression arg, Expression containsExpression)
        {
            EntityExpression rootEntity = EntityExpressionVisitor.FirstEntity(arg);

            var rootEntityType = rootEntity.Type;

            if (rootEntity.MetaData.HasProxy)
            {
                rootEntityType = rootEntity.MetaData.GetMappedClass(EntityMode.Poco);
            }

            DetachedCriteria query = DetachedCriteria.For(rootEntityType)
                                     .SetProjection(Projections.Id());

            var visitor = new MemberNameVisitor(query.Adapt(session), true);

            visitor.Visit(arg);

            //TODO: this won't work for collections of values
            var containedEntity          = QueryUtil.GetExpressionValue(containsExpression);
            var collectionIdPropertyName = visitor.MemberName + "." + arg.ElementExpression.MetaData.IdentifierPropertyName;
            var idValue = arg.ElementExpression.MetaData.GetIdentifier(containedEntity, EntityMode.Poco);

            query.Add(Restrictions.Eq(collectionIdPropertyName, idValue));

            string identifierName = rootEntity.MetaData.IdentifierPropertyName;

            return(Subqueries.PropertyIn(identifierName, query));
        }
예제 #4
0
        public async Task UpsertCharactersInVideos(List <VideoCharacterActorExportDto> characters, Dictionary <string, long> ids)
        {
            using (var db = DataAccessUtil.CreateSqlConnection()) {
                db.Open();

                using (var txn = db.BeginTransaction()) {
                    foreach (var c in characters)
                    {
                        if (c.CharacterId == null || c.VideoId == null)
                        {
                            continue;
                        }

                        var charId  = ids[c.CharacterId];
                        var videoId = ids[c.VideoId];
                        var actorId = c.ActorId == null ? DatabaseConstants.DEFAULT_ID : ids[c.ActorId];

                        var command = new SqliteCommand($"UPDATE actor_for_video_character SET creator_id = @ActorId WHERE character_id = {charId} AND video_id = {videoId}", db, txn);
                        command.Parameters.AddWithValue("@ActorId", QueryUtil.GetNullableIdForStorage(actorId));
                        command.ExecuteNonQuery();

                        command = new SqliteCommand($"INSERT OR IGNORE INTO actor_for_video_character(character_id, video_id, creator_id) VALUES({charId}, {videoId}, @ActorId)", db, txn);
                        command.Parameters.AddWithValue("@ActorId", QueryUtil.GetNullableIdForStorage(actorId));
                        command.ExecuteNonQuery();
                    }

                    txn.Commit();
                }
            }
        }
예제 #5
0
        private SqliteCommand GetCreateVideoCommand(SqliteConnection db, CreateVideoDto dto, string guid, bool ignoreDuplicates)
        {
            var ignoreClause = ignoreDuplicates ? "OR IGNORE" : "";

            var command = new SqliteCommand();

            command.Connection = db;

            command.CommandText = $"INSERT {ignoreClause} INTO video(title, duration_in_seconds, external_rating, user_rating, description, notes, source_url, site_url, series_id, watch_status, publisher_id, library_id, deleted, deletion_due_to_cascade, times_watched, release_date, timeline_date, cover_image, unique_id) VALUES(@Title, @Duration, @ExternalRating, @UserRating, @Description, @Notes, @SourceURL, @SiteURL, @SeriesId, @WatchStatus, @PublisherId, @LibraryId, false, false, @TimesWatched, @ReleaseDate, @TimelineDate, @CoverImage, @UniqueId)";
            command.Parameters.AddWithValue("@Title", dto.Title);
            command.Parameters.AddWithValue("@Duration", QueryUtil.GetNullableValueForStorage(dto.DurationInSeconds));
            command.Parameters.AddWithValue("@ExternalRating", dto.ExternalRating);
            command.Parameters.AddWithValue("@UserRating", dto.UserRating);
            command.Parameters.AddWithValue("@Description", dto.Description);
            command.Parameters.AddWithValue("@Notes", dto.Notes);
            command.Parameters.AddWithValue("@SourceURL", dto.SourceURL);
            command.Parameters.AddWithValue("@SiteURL", dto.SiteURL);
            command.Parameters.AddWithValue("@SeriesId", QueryUtil.GetNullableIdForStorage(dto.SeriesId));
            command.Parameters.AddWithValue("@WatchStatus", dto.WatchStatus);
            command.Parameters.AddWithValue("@PublisherId", QueryUtil.GetNullableIdForStorage(dto.PublisherId));
            command.Parameters.AddWithValue("@LibraryId", dto.LibraryId);
            command.Parameters.AddWithValue("@ReleaseDate", QueryUtil.GetNullableValueForStorage(dto.ReleaseDate));
            command.Parameters.AddWithValue("@TimelineDate", QueryUtil.GetNullableValueForStorage(dto.TimelineDate));
            command.Parameters.AddWithValue("@CoverImage", QueryUtil.GetNullableIdForStorage(dto.CoverFileId));
            command.Parameters.AddWithValue("@UniqueId", guid);
            command.Parameters.AddWithValue("@TimesWatched", dto.TimesWatched);
            return(command);
        }
예제 #6
0
        private SqliteCommand GetUpdateVideoCommand(SqliteConnection db, Video video, string idColumn, object idValue)
        {
            var command = new SqliteCommand();

            command.Connection  = db;
            command.CommandText = $@"
                    UPDATE video SET title = @Title, times_watched = @TimesWatched, last_watch_date = @LastWatchDate,
                        duration_in_seconds = @Duration, external_rating = @ExternalRating, user_rating = @UserRating,
                        description = @Description, notes = @Notes, source_url = @SourceURL, site_url = @SiteURL,
                        series_id = @SeriesId, watch_status = @WatchStatus, publisher_id = @PublisherId, library_id = @LibraryId,
                        release_date = @ReleaseDate, timeline_date = @TimelineDate, cover_image = @CoverImage
                    WHERE {idColumn} = @VideoId";

            command.Parameters.AddWithValue("@Title", video.Title);
            command.Parameters.AddWithValue("@TimesWatched", video.TimesWatched);
            command.Parameters.AddWithValue("@LastWatchDate", QueryUtil.GetNullableValueForStorage(video.LastWatchDate));
            command.Parameters.AddWithValue("@Duration", QueryUtil.GetNullableValueForStorage(video.DurationInSeconds));
            command.Parameters.AddWithValue("@ExternalRating", video.ExternalRating);
            command.Parameters.AddWithValue("@UserRating", video.UserRating);
            command.Parameters.AddWithValue("@Description", video.Description);
            command.Parameters.AddWithValue("@Notes", video.Notes);
            command.Parameters.AddWithValue("@SourceURL", video.SourceURL);
            command.Parameters.AddWithValue("@SiteURL", video.SiteURL);
            command.Parameters.AddWithValue("@SeriesId", QueryUtil.GetNullableIdForStorage(video.SeriesId));
            command.Parameters.AddWithValue("@WatchStatus", video.WatchStatus);
            command.Parameters.AddWithValue("@PublisherId", QueryUtil.GetNullableIdForStorage(video.PublisherId));
            command.Parameters.AddWithValue("@LibraryId", video.LibraryId);
            command.Parameters.AddWithValue("@VideoId", idValue);
            command.Parameters.AddWithValue("@ReleaseDate", QueryUtil.GetNullableValueForStorage(video.ReleaseDate));
            command.Parameters.AddWithValue("@TimelineDate", QueryUtil.GetNullableValueForStorage(video.TimelineDate));
            command.Parameters.AddWithValue("@CoverImage", QueryUtil.GetNullableIdForStorage(video.CoverFileId));
            return(command);
        }
예제 #7
0
        private List <CreatorOfVideoFullDto> GetVideosCharacterIsInWithoutActors(long characterId, SqliteConnection db, string characterIdColumn)
        {
            var firstQuery  = $"SELECT {SELECT_BASE_COLUMNS_STRING}, c.creator_id, 'Actor' as role FROM video v, actor_for_video_character c WHERE c.{characterIdColumn} = {characterId} AND c.video_id = v.video_id AND v.deleted = false";
            var secondQuery = "";

            if (characterIdColumn == "creator_id")
            {
                secondQuery = $"UNION SELECT {SELECT_BASE_COLUMNS_STRING}, vc.creator_id, vc.role FROM video v, video_creator vc WHERE v.deleted = false AND vc.video_id = v.video_id AND vc.creator_id = {characterId}";
            }

            var command      = new SqliteCommand($"{firstQuery} {secondQuery}", db);
            var query        = command.ExecuteReader();
            var list         = new List <CreatorOfVideoFullDto>();
            var characterIds = new Dictionary <long, CreatorOfVideoFullDto>();

            while (query.Read())
            {
                var role = query.GetString(22);
                var dto  = new CreatorOfVideoFullDto(ParseVideo(query), QueryUtil.GetNullableId(query, 21), "", role);

                var key = dto.Video.VideoId;
                if (characterIds.ContainsKey(key))
                {
                    var existingDto = characterIds[key];
                    existingDto.Role += $", {dto.Role}";
                }
                else
                {
                    list.Add(dto);
                    characterIds[key] = dto;
                }
            }

            return(list);
        }
예제 #8
0
 public async Task Triage(string buildQuery)
 {
     foreach (var build in await QueryUtil.ListBuildsAsync(buildQuery))
     {
         await Triage(build).ConfigureAwait(false);
     }
 }
예제 #9
0
        public void ResolveSqlNoCriteria()
        {
            string query  = "SELECT * FROM [Whatever] {where} ORDER BY [Nothing]";
            string result = QueryUtil.ResolveSql(query);

            Assert.IsTrue(result.Equals("SELECT * FROM [Whatever]  ORDER BY [Nothing]"));
        }
예제 #10
0
        public void ResolveSqlNoParams()
        {
            var    query = new ActiveEmployees();
            string sql   = QueryUtil.ResolveSql(query.Sql, query);

            Assert.IsTrue(sql.Equals("SELECT * FROM [Employee] WHERE [IsActive]=@isActive  ORDER BY [Nothing]"));
        }
예제 #11
0
        protected long CreateVideoSequence(CreateVideoSequenceDto dto, SqliteConnection db, SqliteTransaction txn)
        {
            var sequenceId = CreateVideoSequence(db, txn, dto);

            var columnNames = new List <string>()
            {
                "sequence_id", GetParentColumnName()
            };

            columnNames.AddRange(GetChildTableAdditionalColumns());

            var columnValues = new List <string>()
            {
                sequenceId.ToString(), "@ParentColumnValue"
            };

            columnValues.AddRange(GetChildTableAdditionalValues(dto));

            var command = new SqliteCommand($"INSERT INTO {GetChildTableName()}({string.Join(",", columnNames)}) VALUES ({string.Join(",", columnValues)})", db, txn);

            command.Parameters.AddWithValue("@ParentColumnValue", QueryUtil.GetNullableIdForStorage(GetParentColumnValue(dto)));
            command.ExecuteNonQuery();

            return(sequenceId);
        }
예제 #12
0
        public ServiceResult <object> AutocompleteViewParent(BusinessParam bp)
        {
            var methodName = $".{new StackTrace().GetFrame(1).GetMethod().Name}";

            try
            {
                var tableName   = Util.GetSqlServerTableName <DataLayer.Model.Core.ComboVal.ComboVal>();
                var queryString =
                    $"SELECT * FROM(SELECT e1.EntityId AS entityId,e1.Name AS name,e1.Value AS value,e1.code AS code,e2.Name AS parentName,e2.code AS parentCode,e1.Deleted,e1.FullTitle AS fullTitle,e1.AccessKey,e1.CreateBy FROM {tableName} e1 LEFT JOIN {tableName} e2 on e1.ParentId = e2.EntityId where e1.Deleted = 0 and e2.Deleted = 0) e" +
                    QueryUtil.GetWhereClause(bp.Clause,
                                             QueryUtil.GetConstraintForNativeQuery(bp, ClassDetails[0].Clazz, false, false, true)) +
                    QueryUtil.GetOrderByClause(bp.Clause);
                using (var unitOfWork = new UnitOfWork())
                {
                    var comboList = unitOfWork.ComboVal.CreateNativeQuery(queryString, x => new ComboValDto
                    {
                        EntityId = Convert.ToInt64(x[0].ToString()),
                        Name     = x[1]?.ToString(),
                        Value    = x[2]?.ToString(),
                        Code     = x[3]?.ToString()
                    });
                    return(comboList.Count == 0
                        ? new ServiceResult <object>(Enumerator.ErrorCode.NotFound, "رکوردی یافت نشد")
                        : new ServiceResult <object>(comboList, comboList.Count));
                }
            }
            catch (Exception ex)
            {
                return(ExceptionUtil.ExceptionHandler(ex, ClassDetails[0].Facade + methodName, bp.UserInfo));
            }
        }
        public ActionResult Show(string sitename, int querySetId, int revisionId, string slug)
        {
            Site site;

            if (!TryGetSite(sitename, out site))
            {
                return(site == null ? (ActionResult)PageNotFound() : RedirectPermanent(string.Format("/{0}/revision/{1}/{2}{3}{4}",
                                                                                                     site.TinyName.ToLower(), querySetId, revisionId, slug.HasValue() ? "/" + slug : "", Request.Url.Query
                                                                                                     )));
            }

            Site = site;
            var querySet = QueryUtil.GetFullQuerySet(querySetId);

            if (querySet == null)
            {
                return(PageNotFound());
            }

            var revision = querySet.Revisions.FirstOrDefault(r => r.Id == revisionId);

            if (revision == null)
            {
                return(PageNotFound());
            }

            return(ShowCommon(revision, slug, false));
        }
예제 #14
0
        public long CreateLibrary(CreateLibraryDto library, string guid = null)
        {
            if (guid == null)
            {
                guid = UniqueIdUtil.GenerateUniqueId();
            }

            using (var db = DataAccessUtil.CreateSqlConnection()) {
                db.Open();
                long createdLibraryId = -1;

                using (var txn = db.BeginTransaction()) {
                    var command = new SqliteCommand();
                    command.Connection  = db;
                    command.CommandText = "INSERT INTO library VALUES(NULL, @Name, @BackgroundId, false, @UniqueId)";
                    command.Parameters.AddWithValue("@Name", library.Name);
                    command.Parameters.AddWithValue("@BackgroundId", QueryUtil.GetNullableIdForStorage(library.BackgroundImageId));
                    command.Parameters.AddWithValue("@UniqueId", guid);
                    command.Transaction = txn;
                    command.ExecuteNonQuery();
                    createdLibraryId = QueryUtil.GetLastInsertedPrimaryKey(db, txn);

                    foreach (var setting in LibrarySettings.DEFAULT_SETTINGS)
                    {
                        var createSettingsCommand = new SqliteCommand($"INSERT INTO library_setting VALUES({createdLibraryId}, '{setting.Key}', '{setting.Value}')", db, txn);
                        createSettingsCommand.ExecuteNonQuery();
                    }

                    txn.Commit();
                }

                return(createdLibraryId);
            }
        }
예제 #15
0
        public ServiceResult <object> AutocompleteView(BusinessParam bp)
        {
            var methodName = $".{new StackTrace().GetFrame(1).GetMethod().Name}";

            try
            {
                var tableName   = Util.GetSqlServerTableName <DataLayer.Model.Core.UseCase.UseCase>();
                var queryString =
                    $"select * from (select EntityId as entityId,UseCaseName as useCaseName,Clazz as clazz,TableName as tableName,FullTitle as fullTitle,CreateBy as createBy,AccessKey as accessKey,Deleted as deleted from {tableName}) e" +
                    QueryUtil.GetWhereClause(bp.Clause,
                                             QueryUtil.GetConstraintForNativeQuery(bp, ClassDetails[0].Clazz, false, false, true)) +
                    QueryUtil.GetOrderByClause(bp.Clause);
                using (var unitOfWork = new UnitOfWork())
                {
                    var useCaseList = unitOfWork.UseCase.CreateNativeQuery(queryString, x => new UseCaseDto
                    {
                        EntityId    = Convert.ToInt64(x[0].ToString()),
                        UseCaseName = x[1]?.ToString(),
                        Clazz       = x[2]?.ToString(),
                        TableName   = x[3]?.ToString(),
                        FullTitle   = x[4]?.ToString()
                    });
                    return(useCaseList.Count == 0
                        ? new ServiceResult <object>(Enumerator.ErrorCode.NotFound, "رکوردی یافت نشد")
                        : new ServiceResult <object>(useCaseList, useCaseList.Count));
                }
            }
            catch (Exception ex)
            {
                return(ExceptionUtil.ExceptionHandler(ex, ClassDetails[0].Facade + methodName, bp.UserInfo));
            }
        }
예제 #16
0
        /// <summary>
        /// createdUserIdが作成したRefListを返します。
        /// </summary>
        public async Task <PagedRefLists> GetRefListsAsync(GetRefListsRequest req)
        {
            var query = _refsContext.RefLists.Include("Author").Include("TagUses.Tag").Include("Statistics").AsNoTracking();

            query = AppendQueryForAuthorId(query, req.AuthorId);
            query = AppendQueryForAuthorUserName(query, req.AuthorUserName);
            query = AppendQueryForTagUseId(query, req.TagUseId);
            query = AppendQueryForTagName(query, req.TagName, req.TagUseId);
            query = AppendQueryForFromDate(query, req.FromDate);
            query = AppendQueryForSearchText(query, req.TitleSearch);
            query = AppendQueryForPublishingStatus(query, req.PublishingStatusCondition);

            var storedRefListCount = await query.CountAsync();

            query = QueryUtil.AppendQueryForRefListSort(query, req.Sort);

            query = query.Skip(req.PageIndex * req.PageSize);
            query = query.Take(req.PageSize);

            var storedLists = await query.ToArrayAsync();

            var ret = new PagedRefLists()
            {
                PageIndex       = req.PageIndex,
                PageCount       = IndexUtil.GetPageCount(storedRefListCount, req.PageSize),
                AllRefListCount = storedRefListCount,
                RefLists        = storedLists,
            };

            return(ret);
        }
예제 #17
0
        public ActionResult ShowPlan(string sitename, int revisionId)
        {
            Query query = QueryUtil.GetQueryForRevision(revisionId);

            if (query == null)
            {
                return(PageNotFound());
            }

            var parsedQuery = new ParsedQuery(query.QueryBody, Request.Params);

            if (!parsedQuery.IsExecutionReady)
            {
                return(PageBadRequest());
            }

            CachedResult cache = QueryUtil.GetCachedResults(
                parsedQuery,
                Site.Id
                );

            if (cache == null || cache.ExecutionPlan == null)
            {
                return(PageNotFound());
            }

            return(new QueryPlanResult(cache.ExecutionPlan));
        }
        /// <summary>
        /// Private routine to import a sheet of contentType into a workspace
        /// </summary>
        /// <param name="workspaceId"></param>
        /// <param name="file"></param>
        /// <param name="sheetName"></param>
        /// <param name="headerRowIndex"></param>
        /// <param name="primaryColumnIndex"></param>
        /// <param name="contentType"></param>
        /// <returns> the created sheet </returns>
        private Sheet ImportSheet(long workspaceId, string file, string sheetName, int?headerRowIndex, int?primaryColumnIndex, string contentType)
        {
            Utility.Utility.ThrowIfNull(file);

            IDictionary <string, string> parameters = new Dictionary <string, string>();

            if (sheetName == null)
            {
                FileInfo fi = new FileInfo(file);
                parameters.Add("sheetName", fi.Name);
            }
            else
            {
                parameters.Add("sheetName", sheetName);
            }
            if (headerRowIndex != null)
            {
                parameters.Add("headerRowIndex", headerRowIndex.ToString());
            }
            if (primaryColumnIndex != null)
            {
                parameters.Add("primaryColumnIndex", primaryColumnIndex.ToString());
            }
            string path = "workspaces/" + workspaceId + "/sheets/import" + QueryUtil.GenerateUrl(null, parameters);

            return(this.ImportFile <Sheet>(path, file, contentType));
        }
예제 #19
0
        public ServiceResult <object> AutocompleteView(BusinessParam bp)
        {
            var methodName = $".{new StackTrace().GetFrame(1).GetMethod().Name}";

            try
            {
                var tableName   = Util.GetSqlServerTableName <DataLayer.Model.Core.Person.Person>();
                var queryString =
                    $"select * from (select EntityId as entityId,FirstName as firstName,LastName as lastName,FullTitle as fullTitle,Deleted as deleted,AccessKey as accessKey,CreateBy as createBy from {tableName}) e" +
                    QueryUtil.GetWhereClause(bp.Clause,
                                             QueryUtil.GetConstraintForNativeQuery(bp, ClassDetails[0].Clazz, true, false, true)) +
                    QueryUtil.GetOrderByClause(bp.Clause);
                using (var unitOfWork = new UnitOfWork())
                {
                    var personList = unitOfWork.Person.CreateNativeQuery(queryString, x =>
                                                                         new Dictionary <string, object>
                    {
                        { "entityId", Convert.ToInt64(x[0].ToString()) },
                        { "fullName", $"{x[1]} {x[2]}" },
                        { "firstName", $"{x[1]}" },
                        { "lastName", $"{x[2]}" },
                        { "fullTitle", x[3]?.ToString() }
                    });
                    return(personList.Count == 0
                        ? new ServiceResult <object>(Enumerator.ErrorCode.NotFound, "رکوردی یافت نشد")
                        : new ServiceResult <object>(personList, personList.Count));
                }
            }
            catch (Exception ex)
            {
                return(ExceptionUtil.ExceptionHandler(ex, ClassDetails[0].Facade + methodName, bp.UserInfo));
            }
        }
예제 #20
0
        public ActionResult Edit(string sitename, int querySetId)
        {
            bool foundSite = SetCommonQueryViewData(sitename);

            if (!foundSite)
            {
                return(PageNotFound());
            }

            SetHeader("Editing Query");

            QuerySet querySet = QueryUtil.GetFullQuerySet(querySetId);

            if (querySet == null)
            {
                return(PageNotFound());
            }

            ViewData["query_action"] = "save/" + Site.Id + "/" + querySetId;
            ViewData["HelperTables"] = HelperTableCache.GetCacheAsJson(Site);

            return(View("Editor", new ViewModel.QuerySetViewModel
            {
                Site = Site,
                Revisions = querySet.Revisions,
                CurrentRevision = querySet.CurrentRevision,
                QuerySet = querySet
            }));
        }
예제 #21
0
        public ServiceResult <object> AutocompleteView(BusinessParam bp)
        {
            var methodName = $".{new StackTrace().GetFrame(1).GetMethod().Name}";

            try
            {
                var tableName   = Util.GetSqlServerTableName <DataLayer.Model.Core.AccessGroup.AccessGroup>();
                var queryString =
                    "select * from (select EntityId,Name,FullTitle,code,CreateBy,AccessKey,Deleted from " +
                    tableName + "  where code <> 'ADMIN') e" +
                    QueryUtil.GetWhereClause(bp.Clause,
                                             QueryUtil.GetConstraintForNativeQuery(bp, ClassDetails[0].Clazz, false, false, true)) +
                    QueryUtil.GetOrderByClause(bp.Clause);
                using (var unitOfWork = new UnitOfWork())
                {
                    var accessGroupList = unitOfWork.AccessGroup.CreateNativeQuery(queryString, x =>
                                                                                   new Dictionary <string, object>
                    {
                        { "entityId", Convert.ToInt64(x[0].ToString()) },
                        { "name", Convert.ToInt64(x[1].ToString()) },
                        { "fullTitle", Convert.ToInt64(x[2].ToString()) }
                    });
                    return(accessGroupList.Count == 0
                        ? new ServiceResult <object>(Enumerator.ErrorCode.NotFound, "رکوردی یافت نشد")
                        : new ServiceResult <object>(accessGroupList, accessGroupList.Count));
                }
            }
            catch (Exception ex)
            {
                return(ExceptionUtil.ExceptionHandler(ex, ClassDetails[0].Facade + methodName, bp.UserInfo));
            }
        }
        public ActionResult Edit(string sitename, string operation, int querySetId, string slug)
        {
            Site site;

            if (!TryGetSite(sitename, out site))
            {
                return(site == null ? (ActionResult)PageNotFound() : RedirectPermanent(string.Format("/{0}/query/{1}/{2}{3}",
                                                                                                     site.TinyName.ToLower(), operation, querySetId, slug.HasValue() ? "/" + slug : ""
                                                                                                     )));
            }

            SetCommonQueryViewData(site, "Editing Query");

            QuerySet querySet = QueryUtil.GetFullQuerySet(querySetId);

            if (querySet == null)
            {
                return(PageNotFound());
            }

            ViewData["query_action"] = "save/" + Site.Id + "/" + querySetId;
            ViewData["HelperTables"] = HelperTableCache.GetCacheAsJson(Site);

            return(View("Editor", new ViewModel.QuerySetViewModel
            {
                Site = Site,
                Revisions = querySet.Revisions,
                CurrentRevision = querySet.CurrentRevision,
                QuerySet = querySet
            }));
        }
        /// <summary>
        /// <para>Get a sheet.</para>
        ///
        /// <para>It mirrors To the following Smartsheet REST API method: GET /sheets/{sheetId}</para>
        /// </summary>
        /// <param name="sheetId"> the Id of the sheet </param>
        /// <param name="includes"> used To specify the optional objects To include. </param>
        /// <param name="excludes"> used To specify the optional objects To include. </param>
        /// <param name="rowIds"> used To specify the optional objects To include. </param>
        /// <param name="rowNumbers"> used To specify the optional objects To include. </param>
        /// <param name="columnIds"> used To specify the optional objects To include. </param>
        /// <param name="pageSize"> used To specify the optional objects To include. </param>
        /// <param name="page"> used To specify the optional objects To include. </param>
        /// <returns> the sheet resource (note that if there is no such resource, this method will throw
        /// ResourceNotFoundException rather than returning null). </returns>
        /// <exception cref="System.InvalidOperationException"> if any argument is null or empty string </exception>
        /// <exception cref="InvalidRequestException"> if there is any problem with the REST API request </exception>
        /// <exception cref="AuthorizationException"> if there is any problem with  the REST API authorization (access token) </exception>
        /// <exception cref="ResourceNotFoundException"> if the resource cannot be found </exception>
        /// <exception cref="ServiceUnavailableException"> if the REST API service is not available (possibly due To rate limiting) </exception>
        /// <exception cref="SmartsheetException"> if there is any other error during the operation </exception>
        public virtual Sheet GetSheet(long sheetId, IEnumerable <SheetLevelInclusion> includes, IEnumerable <SheetLevelExclusion> excludes, IEnumerable <long> rowIds, IEnumerable <int> rowNumbers, IEnumerable <long> columnIds, long?pageSize, long?page)
        {
            IDictionary <string, string> parameters = new Dictionary <string, string>();

            if (includes != null)
            {
                parameters.Add("include", QueryUtil.GenerateCommaSeparatedList(includes));
            }
            if (excludes != null)
            {
                parameters.Add("exclude", QueryUtil.GenerateCommaSeparatedList(excludes));
            }
            if (rowIds != null)
            {
                parameters.Add("rowIds", QueryUtil.GenerateCommaSeparatedList(rowIds));
            }
            if (rowNumbers != null)
            {
                parameters.Add("rowNumbers", QueryUtil.GenerateCommaSeparatedList(rowNumbers));
            }
            if (columnIds != null)
            {
                parameters.Add("columnIds", QueryUtil.GenerateCommaSeparatedList(columnIds));
            }
            if (pageSize != null)
            {
                parameters.Add("pageSize", pageSize.ToString());
            }
            if (page != null)
            {
                parameters.Add("page", page.ToString());
            }

            return(this.GetResource <Sheet>("sheets/" + sheetId + QueryUtil.GenerateUrl(null, parameters), typeof(Sheet)));
        }
예제 #24
0
        public virtual bool OpenTableFromSql(DataTable table, string sql, string paramvalue, string pageinfo, string dsname, string alias, bool autotran)
        {
            if (QueryUtil.OpenTableFromSql(table, sql, paramvalue, pageinfo, dsname, alias))
            {
                //table.TableNewRow -= new DataTableNewRowEventHandler(DoTableNewRow);
                //table.TableNewRow += new DataTableNewRowEventHandler(DoTableNewRow);

                //table.ColumnChanged -= new DataColumnChangeEventHandler(DoColumnChanged);
                //table.ColumnChanged += new DataColumnChangeEventHandler(DoColumnChanged);

                PageManager pm = TableUtil.GetPageManager(table);
                if (pm != null)
                {
                    pm.OnPageChangedEvent -= new PageChangedEventHandle(OnPageChanged);
                    pm.OnPageChangedEvent += new PageChangedEventHandle(OnPageChanged);
                }

                BindingSource bs = DataUIUtil.GetBindingSource(table);
                if (bs != null)
                {
                    bs.ListChanged -= new ListChangedEventHandler(TableListChanged);
                    bs.ListChanged += new ListChangedEventHandler(TableListChanged);
                }

                if (autotran)
                {
                    AddTable(table);
                }

                return(true);
            }
            return(false);
        }
예제 #25
0
        public ServiceResult <object> GridView(BusinessParam bp)
        {
            var methodName = $".{new StackTrace().GetFrame(1).GetMethod().Name}";

            try
            {
                var tableName   = Util.GetSqlServerTableName <DataLayer.Model.Core.File.File>();
                var queryString = $"select * from (SELECT * FROM {tableName}) e" +
                                  QueryUtil.GetWhereClause(bp.Clause,
                                                           QueryUtil.GetConstraintForNativeQuery(bp, ClassDetails[0].Clazz, false, false,
                                                                                                 true)) +
                                  QueryUtil.GetOrderByClause(bp.Clause);

                using (var content = new ParsiContext())
                {
                    var files = content.File.FromSqlRaw(queryString).OrderBy(x => x.Extension)
                                .ThenByDescending(x => x.Created).IgnoreQueryFilters().ToList();
                    var lstData = files.Select(file => Copier.GetDto(file)).ToList();
                    return(lstData.Count <= 0
                        ? new ServiceResult <object>(new List <FileDto>(), 0)
                        : new ServiceResult <object>(lstData, lstData.Count));
                }
            }
            catch (Exception e)
            {
                return(ExceptionUtil.ExceptionHandler(e, ClassDetails[0].Facade + methodName, bp.UserInfo));
            }
        }
예제 #26
0
        internal async Task PrintBuildResults(IEnumerable <string> args)
        {
            int count     = 5;
            var optionSet = new OptionSet()
            {
                { "c|count=", "count of builds to return", (int c) => count = c }
            };

            ParseAll(optionSet, args);

            var data = DotNetUtil.BuildDefinitions
                       .AsParallel()
                       .AsOrdered()
                       .Select(async t => (t.BuildName, t.DefinitionId, await QueryUtil.ListBuildsAsync(count, t.Project, new[] { t.DefinitionId })));

            foreach (var task in data)
            {
                var(name, definitionId, builds) = await task;
                Console.Write($"{name,-20}");
                var percent = (builds.Count(x => x.Result == BuildResult.Succeeded) / (double)count) * 100;
                Console.Write($"{percent,4:G3}%  ");
                foreach (var build in builds)
                {
                    var c = build.Result == BuildResult.Succeeded ? 'Y' : 'N';
                    Console.Write(c);
                }

                Console.WriteLine();
            }
        }
예제 #27
0
        private long CreateVideoSequence(SqliteConnection db, SqliteTransaction txn, CreateVideoSequenceDto dto)
        {
            var command = GetCreateVideoSequenceCommand(db, dto);

            command.Transaction = txn;
            command.ExecuteNonQuery();

            return(QueryUtil.GetLastInsertedPrimaryKey(db, txn));
        }
예제 #28
0
 public void UpdateCharacterInVideo(CreatorOfVideoFullDto dto, long characterId)
 {
     using (var db = DataAccessUtil.CreateSqlConnection()) {
         db.Open();
         var clearCommand = new SqliteCommand($"UPDATE actor_for_video_character SET video_id = {dto.Video.VideoId}, character_id = {characterId}, creator_id = @ActorId WHERE video_id = {dto.Video.VideoId} AND character_id = {characterId}", db);
         clearCommand.Parameters.AddWithValue("@ActorId", QueryUtil.GetNullableIdForStorage(dto.ActorId));
         clearCommand.ExecuteNonQuery();
     }
 }
예제 #29
0
        public async Task <IEnumerable <Tag> > GetAllTagsAsync(TagSortKind sort)
        {
            var query = _refsContext.Tags.Include("Statistics").AsNoTracking();

            query = QueryUtil.AppendQueryForTagSort(query, sort);
            var storedTags = await query.ToArrayAsync();

            return(storedTags);
        }
예제 #30
0
        /// <summary>
        /// 获取本人的站内信列表
        /// </summary>
        /// <param name="name">标题</param>
        /// <param name="detail">详情</param>
        /// <param name="unread">只显示未读</param>
        /// <param name="type">类型</param>
        /// <param name="createStart">创建起始时间</param>
        /// <param name="createEnd">创建结束时间</param>
        /// <param name="pageIndex">当前页</param>
        /// <param name="pageSize">每页个数</param>
        /// <returns></returns>
        public async Task <PagedData <PushMessageDTO> > GetMyMessageAsync(
            string name,
            string detail,
            bool unread          = false,
            EnumMessageType?type = null,
            DateTime?createStart = null,
            DateTime?createEnd   = null,
            int pageIndex        = 1,
            int pageSize         = 10)
        {
            var user = await _uidClient.GetLoginUser().ConfigureAwait(false);

            Expression <Func <Message, bool> > exp = o => o.ToUser == user.Account;

            if (unread)
            {
                exp = exp.And(o => o.ReadTime == null);
            }
            if (!string.IsNullOrEmpty(name))
            {
                exp = exp.And(o => o.Name.Contains(name));
            }
            if (!string.IsNullOrEmpty(detail))
            {
                exp = exp.And(o => o.Detail.Contains(detail));
            }
            if (type != null)
            {
                exp = exp.And(o => o.Type == type.Value.ToString());
            }
            if (createStart != null)
            {
                exp.And(o => o.CreateTime >= createStart.Value);
            }
            if (createEnd != null)
            {
                exp.And(o => o.CreateTime < createEnd.Value);
            }

            return(await QueryUtil.FindPageObjectList(
                       exp,
                       o => o.Id,
                       true,
                       pageIndex,
                       pageSize,
                       o => new PushMessageDTO
            {
                Id = o.Id,
                CreateTime = o.CreateTime,
                Detail = o.Detail,
                Name = o.Name,
                ToUser = o.ToUser,
                Type = o.Type,
                ReadTime = o.ReadTime
            }
                       ));
        }