Ejemplo n.º 1
0
        public virtual async Task <Tag> AddTag(string commonIdentifier, string tag, string index)
        {
            var dbtag = new Tag
            {
                Name         = tag,
                Key          = GetHash(tag),
                RegisteredBy = GetFriendlyName()
            };

            dbtag.SetProject(GetTeam());

            if (!dbtag.IsLegal())
            {
                throw new Exception("Tag var ugyldig");
            }

            await Di.GetInstance <IJsonStorage <Tag> >().Put(dbtag);

            if (String.Equals(index, IndexTypeName.Person.ToString(), StringComparison.CurrentCultureIgnoreCase))
            {
                await _personIndex.AddToPropertyList(commonIdentifier, "Tags", dbtag.Key);
            }
            else
            {
                await _busIndex.AddToPropertyList(commonIdentifier, "Tags", dbtag.Key);
            }

            return(dbtag);
        }
Ejemplo n.º 2
0
        public virtual async Task <bool> On(string commonidentifier, string actionKey, string actionInstanceId, int registerEnvironment, [FromBody] string content)
        {
            if (string.IsNullOrEmpty(content))
            {
                throw new ArgumentException("Content was null");
            }

            var surveillanceAction = Di.GetInstance <ISurveillanceAction>(actionKey);

            if (!surveillanceAction.ValidJson(content))
            {
                throw new ArgumentException("Content was not in the right format given actionkey: " + actionKey);
            }

            var claimDb = Di.GetInstance <ITableStorageDb <SurveilledItem> >();
            await claimDb.InsertAsync(new SurveilledItem(actionKey, actionInstanceId, GetTeam())
            {
                RegisteredByFriendlyName = GetFriendlyName(),
                RegisteredByUsername     = GetEmail(),
                ClaimedWhen            = DateTime.Now,
                ContentAsJson          = content,
                RegisterEnvironmentInt = registerEnvironment,
                CommonIdentifier       = commonidentifier
            }, true, true);

            var team = GetTeam().Id;
            await _personIndex.AddToPropertyList(commonidentifier, "Teams", team.ToString());

            return(true);
        }
Ejemplo n.º 3
0
        public async Task <int> SyncPersonsWithTeams(ILog logger, bool pushEvenIfNotPersonExistsOnIndex = false)
        {
            var allSurveillanceItems = GetAllSurveillanceItems()
                                       .Where(person => !string.IsNullOrEmpty(person.CommonIdentifier))
                                       .ToList();

            var allWithTeams = (await _index.GetCompleteSet("", "teams/any()")).Where(x => x.Teams != null & x.Teams.Any()).ToDictionary(x => x.CommonIdentifier, y => y);

            var missingOnIndex = allSurveillanceItems
                                 .Where(x => !string.IsNullOrEmpty(x.CommonIdentifier) && !allWithTeams.ContainsKey(x.CommonIdentifier))
                                 .ToList();

            var pushThisBatch = new Dictionary <string, TModel>();

            foreach (var missedItem in missingOnIndex)
            {
                var itemOnIndex = await _index.GetByKey(missedItem.CommonIdentifier, false);

                if (itemOnIndex != null)
                {
                    await _index.AddToPropertyList(missedItem.CommonIdentifier, "Teams", missedItem.TeamProjectInt.ToString());
                }
                else
                {
                    if (pushEvenIfNotPersonExistsOnIndex)
                    {
                        if (pushThisBatch.ContainsKey(missedItem.CommonIdentifier))
                        {
                            pushThisBatch[missedItem.CommonIdentifier].Teams.Add(missedItem.TeamProjectInt.ToString());
                        }
                        else
                        {
                            pushThisBatch.Add(missedItem.CommonIdentifier, new TModel
                            {
                                CommonIdentifier = missedItem.CommonIdentifier,
                                Teams            = new string[] { missedItem.TeamProjectInt.ToString() }
                            });
                        }
                    }
                    else
                    {
                        logger.Warn($"Item with commonidentifier {missedItem.CommonIdentifier} was missing on index, but couldnt find this entry on the index. Continuing");
                    }
                }
            }

            if (pushThisBatch.Any())
            {
                await _index.MergeOrUploadBatch(pushThisBatch.Values.ToArray());
            }

            return(missingOnIndex.Count);
        }