Пример #1
0
 private void CompleteItem(IUnitOfWork unit, SlurpQueue QueueItem)
 {
     QueueItem.IsCompleted    = true;
     QueueItem.CompletionTime = DateTime.Now;
     log.InfoFormat("Finished task for {0}", PluginType.Name);
     unit.Save();
 }
Пример #2
0
        private void Schedule()
        {
            #region Scheduling

            using (var unit = GetUnitOfWork())
            {
                var schedule = unit.Scope.Repository <SlurpSchedule>().GetAll().ToList();

                foreach (var item in schedule)
                {
                    log.DebugFormat("Processing schedule {0}", item.SlurpScheduleID);

                    if (item.ProductID.HasValue)
                    {
                        products.Add(item.Product);
                    }
                    else
                    {
                        var pgm = unit.Scope.Repository <ProductGroupMapping>().GetSingle(x => x.ProductGroupMappingID == item.ProductGroupMappingID);

                        GetProductByProductGroupHierarchy(pgm);

                        // var records = unit.Scope.Repository<ContentProductGroup>().GetAll(x => x.ProductGroupMappingID == item.ProductGroupMappingID).OrderByDescending(x => x.ProductID);

                        //products.AddRange(records.Select(x => x.Product).Distinct());
                    }

                    log.DebugFormat("Schedule has {0} products", products.Count);


                    foreach (var product in products)
                    {
                        var openRecord = unit.Scope.Repository <SlurpQueue>().GetSingle(x => !x.IsCompleted && x.ProductID == product.ProductID && x.ProductCompareSourceID == item.ProductCompareSourceID);

                        if (openRecord == null) // no open job, so check for interval
                        {
                            DateTime?lastDate = product.SlurpQueues.Where(x => x.IsCompleted).Max(x => x.CompletionTime);
                            if (NeedsScan(item, lastDate))
                            {
                                openRecord = new SlurpQueue()
                                {
                                    ProductID              = product.ProductID,
                                    SlurpScheduleID        = item.SlurpScheduleID,
                                    ProductCompareSourceID = item.ProductCompareSourceID,
                                    IsCompleted            = false,
                                    CreationTime           = DateTime.Now
                                };

                                unit.Scope.Repository <SlurpQueue>().Add(openRecord);
                            }
                        }
                        unit.Save();
                    }
                }
            }


            #endregion
        }