Пример #1
0
        public static List <ProductModel> Products(string _id, ObjectId?sellerId, ObjectId?commentId)
        {
            IMongoQueryable <ProductModel> usageQuery;
            var liste = new List <ProductModel>();

            //Either gets all products or just 1, depending on if _id is defined
            if (sellerId != null && commentId != null)
            {
                usageQuery = from c in client.GetCollection <ProductModel>("products").AsQueryable()
                             where c.sellerId == sellerId && c.commentId == commentId
                             select c;
            }
            else if (_id == null)
            {
                usageQuery = from c in client.GetCollection <ProductModel>("products").AsQueryable()
                             select c;
            }
            else
            {
                usageQuery = from c in client.GetCollection <ProductModel>("products").AsQueryable()
                             where c._id == ObjectId.Parse(_id)
                             select c;
            }

            Encryptor _encrypter = new Encryptor(publicKey);

            foreach (var item in usageQuery)
            {
                // Decrypts user information to readable text
                var decryptedUsers = _encrypter.ProductObjectToEncryptDecrypt(item, item.salt, "Decrypt");
                liste.Add(decryptedUsers);
            }
            return(liste);
        }
        // This file is dedicated to init logic for FormBrowse revisiong grid control

        private void InitRevisionGrid(ObjectId?selectedId, ObjectId?firstId)
        {
            RevisionGrid.IndexWatcher.Changed += (_, args) =>
            {
                bool indexChanged = args.IsIndexChanged;
                this.InvokeAsync(
                    () =>
                {
                    RefreshButton.Image = indexChanged && AppSettings.UseFastChecks && Module.IsValidGitWorkingDir()
                                ? Images.ReloadRevisionsDirty
                                : Images.ReloadRevisions;
                })
                .FileAndForget();
            };
            RevisionGrid.MenuCommands.MenuChanged += (sender, e) => _formBrowseMenus.OnMenuCommandsPropertyChanged();
            RevisionGrid.FilterChanged            += (sender, e) =>
            {
                Text = _appTitleGenerator.Generate(Module.WorkingDir, Module.IsValidGitWorkingDir(), Module.GetSelectedBranch(), TranslatedStrings.NoBranch, e.PathFilter);

                // PathFilter is a free text field and may contain wildcards, quoting is optional.
                // This is will adjust the string at least for paths added from context menus.
                string?path = e.PathFilter;
                if (path is not null && path.Length > 1 && path[0] == '"' && path[path.Length - 1] == '"')
                {
                    path = path[1..(path.Length - 1)];
                }
        public void ConnectionFailed(ConnectionId connectionId, ObjectId?serviceId, Exception exception)
        {
            if (_failedEvent == null)
            {
                return;
            }

            var requestIds = _state.Keys;

            foreach (var requestId in requestIds)
            {
                CommandState state;
                if (_state.TryRemove(requestId, out state))
                {
                    state.Stopwatch.Stop();
                    var @event = new CommandFailedEvent(
                        state.CommandName,
                        exception,
                        state.OperationId,
                        requestId,
                        connectionId,
                        serviceId,
                        state.Stopwatch.Elapsed);

                    _failedEvent(@event);
                }
            }
        }
Пример #4
0
        public static ExtendedDocument GetById(Type type, ObjectId?Id)
        {
            var generic = GetGenericData(type);
            var result  = generic.GetByIdNullable(Id);

            return(result);
        }
Пример #5
0
        /// <summary>
        /// Adds a user to a role
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="systemRoleName"></param>
        /// <param name="roleId"></param>
        public void AddUserToRole(ObjectId userId, string systemRoleName = null, ObjectId?roleId = null)
        {
            if ((systemRoleName == null || systemRoleName.IsNullOrWhiteSpace()) && !roleId.HasValue)
            {
                return;
            }

            if (!roleId.HasValue)
            {
                var role = _userRoleCollection.FindOne(Query <UserRole> .EQ(x => x.SystemName, systemRoleName));
                if (role == null)
                {
                    throw new InvalidOperationException("The role " + systemRoleName + " doesn't exist.");
                }
                roleId = role.Id;
            }

            _userRoleMapCollection.Update(Query.And(Query <UserUserRoleMap> .EQ(x => x.UserId, userId), Query <UserUserRoleMap> .EQ(x => x.UserRoleId, roleId.Value)),
                                          Update <UserUserRoleMap> .Replace(new UserUserRoleMap
            {
                UserId     = userId,
                UserRoleId = roleId.Value
            }),
                                          UpdateFlags.Upsert);
        }
Пример #6
0
            private Result <ForumQuestion> CreateQuestion(Contract request)
            {
                var moduleId = ObjectId.Parse(request.ModuleId);
                var userId   = ObjectId.Parse(request.UserId);

                ObjectId?subjectId = null;

                if (!String.IsNullOrEmpty(request.SubjectId) && !String.IsNullOrEmpty(request.SubjectName))
                {
                    subjectId = ObjectId.Parse(request.SubjectId);
                }

                ObjectId?contentId = null;

                if (!String.IsNullOrEmpty(request.ContentId) && !String.IsNullOrEmpty(request.ContentName))
                {
                    contentId = ObjectId.Parse(request.ContentId);
                }

                return(ForumQuestion.Create(
                           moduleId, userId,
                           request.Title, request.Description, new List <string>(),
                           subjectId, request.SubjectName,
                           contentId, request.ContentName,
                           request.Position
                           ));
            }
Пример #7
0
        public async Task RefreshGroups()
        {
            //Set user
            currentUserId = user._id;

            //Clear current servers
            currentServers.Clear();

            //Look up the servers the user has a player profile in and add them
            var playerServers = await user.GetGameServersAsync(conn);

            foreach (var p in playerServers)
            {
                currentServers.TryAdd(p.Item1._id, p.Item2.tribe_id);
            }

            //Look up the servers the user is admin in and add them
            var adminServers = await user.GetAdminedServersAsync(conn);

            foreach (var p in playerServers)
            {
                currentServers.AddOrUpdate(p.Item1._id, (key) => null, (key, oldValue) => null);
            }

            //Tell the user that their groups have refreshed
            JObject msg = new JObject();

            msg["user_id"]      = user.id;
            msg["server_count"] = currentServers.Count;
            await SendMessage(OUT_OPCODE_GROUPREFRESH, msg);
        }
Пример #8
0
 public Folder(string name, ObjectId ownerId, ObjectId?parentId, bool isFavourite)
 {
     Name      = name;
     OwnerId   = ownerId;
     ParentId  = parentId;
     Favourite = isFavourite;
 }
Пример #9
0
 public CartLine(Article article, ObjectId?listePrix)
 {
     this.article          = article;
     this.aCuisinePosition = article.aCuisinePosition;
     ListePrix             = listePrix;
     PricUnitaire          = article.GetPrixFromList(listePrix);
 }
Пример #10
0
        private void GetProjectLeadReport()
        {
            ObjectId project = new ObjectId(Message["project"]);

            ObjectId?payrollPeriod = new ObjectId?();

            if (!string.IsNullOrEmpty(Message["payrollperiod"]))
            {
                payrollPeriod = new ObjectId(Message["payrollperiod"]);
            }

            ObjectId?user = new ObjectId?();

            if (Message.Contains("user"))
            {
                user = new ObjectId(Message["user"]);
            }

            ObjectId?userFilter = new ObjectId?();

            if (!string.IsNullOrEmpty(Message["userfilter"]))
            {
                userFilter = new ObjectId(Message["userfilter"]);
            }

            ObjectId?userList = new ObjectId?();

            if (!string.IsNullOrEmpty(Message["userlist"]))
            {
                userList = new ObjectId(Message["userlist"]);
            }

            DateTime?startDate = new DateTime?();

            if (!Message["startdate"].Empty)
            {
                startDate = (DateTime)Message["startdate"];
            }

            DateTime?endDate = new DateTime?();

            if (!Message["enddate"].Empty)
            {
                endDate = (DateTime)Message["enddate"];
            }

            var projectLeadReport = new ProjectLeadReport(
                logger,
                database,
                project,
                payrollPeriod,
                user,
                startDate,
                endDate,
                userFilter,
                userList);
            DataTree report = projectLeadReport.GenerateProjectLeadReport();

            Response["report"] = report;
        }
Пример #11
0
 void HandleFinishRace(RaceMessage.RaceFinished message)
 {
     Debug.Log("Race was won by " + message.Winner);
     ResetState();
     _winTime = Time.time;
     _winner  = message.Winner;
 }
Пример #12
0
 public static Result <ForumQuestion> Create(
     ObjectId moduleId, ObjectId userId,
     string title, string description, List <string> likedBy,
     ObjectId?subjectId = null, string subjectName = null,
     ObjectId?contentId = null, string contentName = null,
     string position    = ""
     )
 {
     return(Result.Ok(
                new ForumQuestion()
     {
         Id = ObjectId.GenerateNewId(),
         CreatedBy = userId,
         ModuleId = moduleId,
         SubjectId = subjectId,
         SubjectName = subjectName,
         ContentId = contentId,
         ContentName = contentName,
         Title = title,
         Description = description,
         LikedBy = likedBy,
         Position = position
     }
                ));
 }
Пример #13
0
        /// <summary>
        /// Validates if a key can be claimed. If claimer is set, it will be claimed by that user ID
        /// </summary>
        /// <param name="claimer"></param>
        /// <returns></returns>
        public async Task <bool> ValidateAndClaimBetaKey(string key, ObjectId?claimer = null)
        {
            //Search for key
            var filterBuilder = Builders <DbBetaKey> .Filter;
            var filter        = filterBuilder.Eq("key", key);
            var result        = await(await system_beta_keys.FindAsync(filter)).FirstOrDefaultAsync();

            if (result == null)
            {
                return(false);
            }
            if (claimer == null)
            {
                //No claimer set. We don't know if this belongs to us, so return true
                return(true);
            }
            else
            {
                //A claimer is set. Make sure that this is either unclaimed or claimed by the same user
                if (claimer.Value == result.claimed_by || !result.claimed)
                {
                    //Success. Claim
                    var update = Builders <DbBetaKey> .Update.Set("claimed", true).Set("claimed_by", claimer.Value);

                    await system_beta_keys.UpdateOneAsync(filter, update);

                    return(true);
                }
                return(false);
            }
        }
Пример #14
0
        /// <summary>
        /// Convert values into OBJECTID. Returns empty if not possible to convert
        /// </summary>
        public static BsonValue OBJECTID(BsonValue value)
        {
            if (value.IsObjectId)
            {
                return(value.AsObjectId);
            }
            else if (value.IsString)
            {
                ObjectId?val        = null;
                var      isObjectId = false;

                try
                {
                    val        = new ObjectId(value.AsString);
                    isObjectId = true;
                }
                catch
                {
                }

                if (isObjectId)
                {
                    return(val);
                }
            }

            return(BsonValue.Null);
        }
Пример #15
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ConnectionPoolClearingEvent"/> struct.
 /// </summary>
 /// <param name="serverId">The server identifier.</param>
 /// <param name="connectionPoolSettings">The connection pool settings.</param>
 /// <param name="serviceId">The service identifier.</param>
 public ConnectionPoolClearingEvent(ServerId serverId, ConnectionPoolSettings connectionPoolSettings, ObjectId?serviceId)
 {
     _serverId = Ensure.IsNotNull(serverId, nameof(serverId));
     _connectionPoolSettings = connectionPoolSettings; // can be null
     _timestamp = DateTime.UtcNow;
     _serviceId = serviceId;                           // can be null
 }
Пример #16
0
        private History HistoryEntry(ObjectId?UserId, ObjectId?CaveId, ObjectId?SurveyId, ObjectId?MediaId, string Description, params object[] args)
        {
            string fullDescription;

            if (args == null || args.Length == 0)
            {
                fullDescription = Description;
            }
            else
            {
                fullDescription = string.Format(Description, args);
            }

            var history = new History()
            {
                UserId        = UserId,
                CaveId        = CaveId,
                SurveyId      = SurveyId,
                MediaId       = MediaId,
                EventDateTime = DateTime.UtcNow,
                Description   = fullDescription,
                Data          = new BsonDocument()
            };


            return(history);
        }
Пример #17
0
        /// <summary>
        /// 递归列表
        /// </summary>
        /// <param name="list"></param>
        /// <param name="parentId"></param>
        /// <param name="deepCount"></param>
        /// <returns></returns>
        private IEnumerable <Menu> RecursionMenuList(IEnumerable <Menu> list, ObjectId?parentId, int deepCount = 0)
        {
            var newList = new List <Menu>();
            var oldList = list.Where(a => a.ParentId == parentId).ToList();

            var sb = new StringBuilder();

            for (var i = 0; i < deepCount; i++)
            {
                sb.Append("&nbsp;&nbsp;&nbsp;&nbsp;");
            }
            if (sb.Length > 0)
            {
                sb.Append("|--");
            }

            ++deepCount;
            oldList.ForEach(item =>
            {
                item.Name = sb + item.Name;
                newList.Add(item);
                var recursionResult = RecursionMenuList(list, item.Id, deepCount);
                newList.AddRange(recursionResult);
            });

            return(newList);
        }
Пример #18
0
        private void InitPayrollFilter()
        {
            if (payrollPeriodId.HasValue)
            {
                // Get payroll period if set and determine CLA contract and limit start and end based on it
                BsonDocument payrollPeriod = database.GetCollection("payrollperiod").FindOne(Query.EQ("_id", payrollPeriodId));

                if (!start.HasValue)
                {
                    start = (DateTime)payrollPeriod["startdate"];
                }
                else
                {
                    start = ((DateTime)payrollPeriod["startdate"] > start) ? (DateTime)payrollPeriod["startdate"] : start;
                }

                if (!end.HasValue)
                {
                    end = (DateTime)payrollPeriod["enddate"];
                }
                end = ((DateTime)payrollPeriod["enddate"] < end) ? (DateTime)payrollPeriod["enddate"] : end;

                claContractId = (ObjectId)((BsonArray)payrollPeriod["clacontract"])[0];
            }
        }
Пример #19
0
 public TargetInfo(Location3D location, TargetType type, ModelId modelId, ObjectId?id)
 {
     Location = location;
     Type     = type;
     ModelId  = modelId;
     Id       = id;
 }
Пример #20
0
 public Notification(ObjectId?deploymentId, string message, Severity severity)
 {
     DeploymentId = deploymentId;
     Message      = message;
     Severity     = severity;
     CreatedAt    = Clock.UtcNow;
 }
Пример #21
0
        //Tested
        public async Task <UpdateResult> UpdetePersonInfoAsync(PersonInfoModel Model)
        {
            if (UserLogged && Model.FirstName != null && Model.LastName != null && Model.BornDate != new DateTime() && Model.FirstName.Trim() != "" && Model.LastName.Trim() != "")
            {
                ObjectId?Id = await Convert.ToUserObjectIdOrNullAsync(User.Nickname);

                if (Id != null)
                {
                    User.PersonInfo = new PersonInfoModel()
                    {
                        FirstName   = Model.FirstName,
                        LastName    = Model.LastName,
                        PhoneNumber = Model?.PhoneNumber,
                        MailAddress = Model?.MailAddress,
                        BornDate    = Model.BornDate
                    };
                    return(await UserCrud.UpdateAsync(
                               new UserEntity { Id = Id.Value },
                               new UserEntity
                    {
                        FirstName = User.PersonInfo.FirstName,
                        LastName = User.PersonInfo.LastName,
                        PhoneNumber = User.PersonInfo?.PhoneNumber,
                        MailAddress = User.PersonInfo?.MailAddress,
                        BornDate = User.PersonInfo.BornDate.ToString()
                    }));
                }
            }
            return(null);
        }
Пример #22
0
        private static AsyncEventHandler <BasicDeliverEventArgs> MessagesConsumerOnReceived(IContainer container) =>
        async(model, ea) =>
        {
            try
            {
                var message = ea.Body.DecodeObject <MessageFromSocialNetwork>();

                var      players  = container.Resolve <IMongoRepository <PlayerInfo> >();
                ObjectId?playerId = (await players.GetFirstOrDefault(p =>
                                                                     p.SocialId == message.PlayerSocialId &&
                                                                     p.ReplyQueueName == message.ReplyBackQueueName
                                                                     ))?.Key;

                var gameContext = container.Resolve <GameContext <PlayerData> >();

                if (playerId == null)
                {
                    playerId = await gameContext.CreatePlayer(
                        message.PlayerSocialId,
                        message.ReplyBackQueueName,
                        message.Locale
                        );
                }

                await gameContext.ProcessMessage(new IncomingMessage
                {
                    Text     = message.Text,
                    PlayerId = playerId.Value
                });
            }
            catch (Exception e)
            {
                Console.Error.WriteLine(e.ToString());
            }
        };
Пример #23
0
        public async Task <IList <CompanyDTO> > GetCompaniesAsync(ObjectId?userId = null)
        {
            if (userId is null)
            {
                userId = _httpContextAccessor.HttpContext.User.GetUserId();
            }

            //TODO: maybe move to repo.
            var companies = await _companyRepository.FilterByAsync(cmp => cmp.Users.Any(pu => pu.UserId.Equals(userId)));

            if (companies is null)
            {
                throw new HttpStatusException(400, "Etwas ist schief gelaufen");
            }

            var companyDTOs = new List <CompanyDTO>();

            //! @Madara789: CompanyDTO does not have property Users, please check
            foreach (var company in companies)
            {
                var companyDTO = (CompanyDTO)company;
                companyDTOs.Add(companyDTO);
            }

            return(companyDTOs);
        }
Пример #24
0
        //Tested
        public async Task <UpdateResult> CreateCommentAsync(string text, string postOwnerNickname, string commenterNickname, DateTime postDate)
        {
            if (text != null && postOwnerNickname != null && commenterNickname != null)
            {
                ObjectId?PostId = await Convert.ToPostObjectIdOrNullAsync(postOwnerNickname, postDate);

                if (PostId != null)
                {
                    PostEntity Entity = await PostCrud.SelectOneAsync(new PostEntity { Id = PostId.Value });

                    if (Entity != null)
                    {
                        ObjectId?CommenterId = await Convert.ToUserObjectIdOrNullAsync(commenterNickname);

                        if (CommenterId != null)
                        {
                            return(await Comments.PushAsync(Entity, new CommentEntity()
                            {
                                CommentOwnerId = CommenterId.Value, Date = DateTime.Now.ToString(), Text = text
                            }));
                        }
                    }
                }
            }
            return(null);
        }
Пример #25
0
        public DictionaryToken(Tokeniser tokeniser, ObjectId?objectId) : base(tokeniser, objectId)
        {
            // <<
            //   /Name1 123
            //   /Name2 [(string) (array) 123]
            //   /Name3 <</subDictionaryName1 123 /subDictionaryName2 true>>
            //   /Name4 (another string)
            //   /Name5 <112233EE>
            // >>
            this.tokeniser = tokeniser;
            var b = tokeniser.SkipWhiteSpace();

            if (b != '<' || tokeniser.GetNextByte() != '<')
            {
                throw tokeniser.Exception($"illegal dictionary format, leading characters '<<' expected, but was'{(char)b}{(char)tokeniser.LookaheadByte()}'.");
            }

            //parse key
            tokens = new Dictionary <string, Token>();
            tokeniser.GetNextByte();
            b = tokeniser.SkipWhiteSpace();
            while (b != '>' && tokeniser.LookaheadByte() != '>')
            {
                if (b != '/')
                {
                    throw tokeniser.Exception($"Invalid dictionary format, '/' expected as leading character for dictionary key name, but was {(char)b}.");
                }
                var key   = new NameToken(tokeniser, null);
                var value = tokeniser.GetNextToken();
                if (key.Value == "Type" && value is NameToken typeNameToken)
                {
                    Type = typeNameToken.Value;
                }
                if (tokens.TryGetValue(key.Value, out var existingToken))
                {
                    if (existingToken is ArrayToken existingArrayToken)
                    {
                        existingArrayToken.Add(value);
                    }
                    else
                    {
                        tokens[key.Value] = new ArrayToken(tokeniser, existingToken)
                        {
                            value
                        };
                    }
                }
                else
                {
                    tokens.Add(key.Value, value);
                }
                b = tokeniser.SkipWhiteSpace();
            }
            tokeniser.GetNextByte();
            tokeniser.GetNextByte();

            StreamStartIndex = tokeniser.GetStreamStartIndex(this, out var length);
            Length           = length;
            keys             = tokens.Keys.ToArray();
        }
Пример #26
0
        public NullToken(Tokeniser tokeniser, ObjectId?objectId, bool isErrorNull = false) : base(tokeniser, objectId)
        {
            //null
            if (!isErrorNull)
            {
                var b = tokeniser.SkipWhiteSpace();
                if (b == 'n')
                {
                    b = tokeniser.GetNextByte();
                    if (b == 'u')
                    {
                        b = tokeniser.GetNextByte();
                        if (b == 'l')
                        {
                            b = tokeniser.GetNextByte();
                            if (b == 'l')
                            {
                                tokeniser.GetNextByte();
                                tokeniser.ValidateDelimiter(Tokeniser.ErrorEnum.Bool);
                                return;
                            }
                        }
                    }
                }

                throw tokeniser.Exception($"Null token not valid, should be 'null'. Invalid character: {(char)b}");
            }
        }
Пример #27
0
        public ArrayToken(Tokeniser tokeniser, ObjectId?objectId) : base(tokeniser, objectId)
        {
            //[/someName false -0 (string)]
            this.tokeniser = tokeniser;
            tokens         = new List <Token>();
            var b = tokeniser.SkipWhiteSpace();

            if (b != '[')
            {
                throw tokeniser.Exception($"illegal array format, leading character '[' expected but was {(char)b}.");
            }

            b = tokeniser.GetNextByte();
            while (b != ']')
            {
                var token = tokeniser.GetNextToken(isThrowExceptionWhenError: false);
                if (token != null)
                {
                    tokens.Add(token);
                    b = tokeniser.SkipWhiteSpace();
                }
                else
                {
                    b = tokeniser.GetByte();
                    if (b != ']')
                    {
                        throw tokeniser.Exception($"NextToken(): unexpected character '{(char)b}'.");
                    }
                    //we come here when array is empty but has some whitespace
                }
            }
            tokeniser.GetNextByte();
        }
Пример #28
0
 public Event(
     string title, string excerpt, string imageUrl,
     ObjectId?instructorId, string instructor, string instructorMiniBio, string instructorImageUrl,
     List <Tag> tags, string videoUrl, Duration videoDuration, Duration duration,
     string certificateUrl, List <ObjectId> tutorsIds, string storeUrl = "", bool?forceProblemStatement = false
     )
 {
     Id                    = ObjectId.GenerateNewId();
     Title                 = title;
     Excerpt               = excerpt;
     ImageUrl              = imageUrl;
     InstructorId          = instructorId;
     Instructor            = instructor;
     InstructorMiniBio     = instructorMiniBio;
     InstructorImageUrl    = instructorImageUrl;
     Tags                  = tags;
     VideoUrl              = videoUrl;
     VideoDuration         = videoDuration;
     Duration              = duration;
     SupportMaterials      = new List <SupportMaterial>();
     Schedules             = new List <EventSchedule>();
     Requirements          = new List <Requirement>();
     CertificateUrl        = certificateUrl;
     TutorsIds             = tutorsIds;
     StoreUrl              = storeUrl;
     ForceProblemStatement = forceProblemStatement;
 }
Пример #29
0
        public IHttpActionResult SearchWeatherReport([FromBody] ForecastSearchRequest request)
        {
            try {
                // fetch the forecast
                var      openWeatherApi = new OpenWeatherMapAPI(_apiKey);
                Forecast forecast       = openWeatherApi.QueryForecast($"{request.CityName}"); //,{request.CountryCode}

                // store the results
                var      forecastRepo = new ForecastRepository(_mongoDbPath);
                ObjectId?forecastId   = forecastRepo.StoreForecast(forecast);

                // return the query result
                if (forecastId.HasValue)
                {
                    return(Ok(forecastId.Value));
                }
                else
                {
                    return(BadRequest("Could not store results of query"));
                }
            }
            catch (Exception ex) {
                return(BadRequest(ex.Message));
            }
        }
Пример #30
0
        protected override void Configure(IObjectTypeDescriptor <Message> descriptor)
        {
            descriptor.Field(t => t.Id).Type <NonNullType <IdType> >();
            descriptor.Field(t => t.Text).Type <NonNullType <StringType> >();
            descriptor.Field("createdBy").Type <NonNullType <UserType> >().Resolver(ctx =>
            {
                UserRepository repository = ctx.Service <UserRepository>();

                IDataLoader <ObjectId, User> dataLoader = ctx.BatchDataLoader <ObjectId, User>(
                    "UserById",
                    repository.GetUsersAsync);

                return(dataLoader.LoadAsync(ctx.Parent <Message>().UserId));
            });
            descriptor.Field("replyTo").Type <MessageType>().Resolver(async ctx =>
            {
                ObjectId?replyToId = ctx.Parent <Message>().ReplyToId;
                if (replyToId.HasValue)
                {
                    MessageRepository repository = ctx.Service <MessageRepository>();

                    IDataLoader <ObjectId, Message> dataLoader = ctx.CacheDataLoader <ObjectId, Message>(
                        "MessageById",
                        repository.GetMessageById);

                    return(await dataLoader.LoadAsync(ctx.Parent <Message>().ReplyToId.Value));
                }
                return(null);
            });
            descriptor.Ignore(t => t.UserId);
            descriptor.Ignore(t => t.ReplyToId);
        }
Пример #31
0
 override internal void SetAsRootImport()
 {
     base.SetAsRootImport();
     ImporterId = null;
     SourceHash = null;
 }