Пример #1
0
 /// <summary>
 /// Handle recurring regular tasks
 /// </summary>
 public void OnTick()
 {
     if (TickCount++ >= TickInterval)
     {
         Logger.LogInformation("Running generators");
         TickCount = 0;
         var generatorItemDatas = GeneratorItemDataRepo.ReadReadyToRun();
         if (generatorItemDatas.Count > 0)
         {
             generatorItemDatas.ForEach((generatorItemData) =>
             {
                 try
                 {
                     var item   = JsonConvert.DeserializeObject <Item>(generatorItemData.Json);
                     var parent = ModuleManager.GetManager <IItemManager>().Read(item.ParentId.Value);
                     if (parent.Children?.Count(x => x.TypeId == item.TypeId) < generatorItemData.Maximum)
                     {
                         Logger.LogDebug($"Generating {item.GetProperty<VisibleItemProperty>()?.Name ?? item.Id.ToString()}");
                         ModuleManager.GetManager <IItemManager>().Create(item);
                     }
                 }
                 catch (Exception e)
                 {
                     ModuleManager.GetLogger().LogException("Failed to generate item", e);
                 }
                 finally
                 {
                     generatorItemData.IntervalTime = DateTime.Now
                                                      .AddMilliseconds(generatorItemData.Interval * TickTime);
                 }
             });
             GeneratorItemDataRepo.Update(generatorItemDatas);
         }
     }
 }
Пример #2
0
 /// <summary>
 /// Delete attribute of base item before base item is deleted
 /// </summary>
 /// <param name="item">Base item about to be deleted</param>
 public void OnItemDelete(Item item)
 {
     if (item.HasData <GeneratorItemData>())
     {
         var data = item.GetData <GeneratorItemData>();
         GeneratorItemDataRepo.Delete(data);
     }
 }
Пример #3
0
 /// <summary>
 /// Create attribute, if present, after item is created
 /// </summary>
 /// <param name="item">Base item just created from datastore</param>
 public void OnItemCreate(Item item)
 {
     if (item.HasData <GeneratorItemData>())
     {
         var data = item.GetData <GeneratorItemData>();
         data.DataItemId = item.Id;
         GeneratorItemDataRepo.Create(data);
     }
 }
Пример #4
0
        /// <summary>
        /// Append attribute to base item when it is loaded
        /// </summary>
        /// <param name="item">Base item just read from datastore</param>
        public void OnItemRead(Item item)
        {
            var data = GeneratorItemDataRepo.Read(item);

            if (data != null)
            {
                item.Data.Add(data);
                item.AddProperty(typeof(GeneratorItemProperty), new GeneratorItemProperty()
                {
                });
            }
        }
Пример #5
0
 /// <summary>
 /// Append attribute to base item when it is loaded
 /// </summary>
 /// <param name="item">Base item about to be persisted to datastore</param>
 public void OnItemUpdate(Item item)
 {
     if (item.HasData <GeneratorItemData>())
     {
         var data = item.GetData <GeneratorItemData>();
         if (data.Id == Guid.Empty)
         {
             OnItemCreate(item);
         }
         else
         {
             GeneratorItemDataRepo.Update(data);
         }
     }
 }
Пример #6
0
        /// <summary>
        /// Get all unique item identifiers of managed items
        /// </summary>
        /// <returns></returns>
        public List <Guid> GetItemIds()
        {
            var itemIds = GeneratorItemDataRepo.GetItemIds();

            return(itemIds);
        }