public void Process(NCrawler.Crawler crawler, NCrawler.PropertyBag propertyBag)
        {
            String uri = propertyBag.Step.Uri.ToString();
            try
            {
                ImportedItem item = new ImportedItem();
                item.ImportHash = this.siteHash;
                item.Guid = System.Guid.NewGuid().ToString();
                item.SubscriptionId = this.siteGuid;
                item.ContentType = propertyBag.ContentType;
                item.ContentEncoding = propertyBag.ContentEncoding;
                item.Expires = UtcDateTime.Now.AddHours(6);
                item.Inserted = UtcDateTime.Now;
                item.Title = propertyBag.Title;
                item.Uri = propertyBag.Step.Uri.ToString();

                ImportedItemDao dao = new ImportedItemDao();
                using (Transaction tx = new Transaction())
                {
                    dao.Save<ImportedItem>(item);
                    tx.Commit();
                }
            }
            catch (Exception e)
            {
                Logging.Database.Write("import-error", "Unexpected exception importing url:" + uri + ", stack:" + e.StackTrace);
            }
        }
示例#2
0
        private async Task AddEmployeeToItemAsync(Item item, ImportedItem importedItem, List <Employee> employeeList)
        {
            var owner = await _context.Employee.FirstOrDefaultAsync(employee => employee.EmployeeName == importedItem.OwnerName);

            if (owner == null)
            {
                owner = employeeList.FirstOrDefault(employee => employee.EmployeeName == importedItem.OwnerName);
            }

            if (owner != null)
            {
                item.EmployeeId = owner.EmployeeId;
            }
            else
            {
                var newEmployee = new Employee
                {
                    EmployeeName = importedItem.OwnerName
                };
                var insertedRow = await _context.Employee.AddAsync(newEmployee);

                employeeList.Add(insertedRow.Entity);
                item.EmployeeId   = insertedRow.Entity.EmployeeId;
                insertedRow.State = EntityState.Detached;
            }
        }
示例#3
0
        public static ImportType GetImportItemType(ImportedItem item)
        {
            ImportType result;
            if (item.ContentType != null)
            {
                if (item.ContentType.Contains("text/html"))
                    result = ImportType.Page;
                else if (item.ContentType.Contains("css"))
                    result = ImportType.Css;
                else if (item.ContentType.Contains("javascript"))
                    result = ImportType.Javascript;
                else if (item.ContentType.Contains("image/"))
                    result = ImportType.Image;
                else if (item.ContentType.Contains("application/pdf"))
                    result = ImportType.Document;
                else if (item.ContentType.Contains("application/"))
                    result = ImportType.Unknown;
                else
                {
                    if (!String.IsNullOrWhiteSpace(item.ContentType))
                        Logging.Database.Write("import-manager", "Detected unknown content type:" + item.ContentType);

                    result = ImportType.Unknown;
                }
            }
            else
            {
                Logging.Database.Write("import-manager", "Could not determine the content type for " + item.Uri);
                result = ImportType.Unknown;
            }

            return result;
        }
示例#4
0
    private void FixedUpdate()
    {
        fixedUpdateModuloCounter = (fixedUpdateModuloCounter + 1) % 50;
        if (fixedUpdateModuloCounter == 0)
        {
            ImportedItem  item    = PickItem();
            ScreenSegment segment = PickScreenSegment();

            ThrowItem(item, segment);
        }
    }
示例#5
0
        public void FinalPriceTest()
        {
            AbstractItem item = new Item(Enums.Category.BOOK, true, 11.25m);
            item = new ImportedItem(item);
            decimal result = 11.85m;
            Assert.AreEqual(result, item.FinalPrice);

            AbstractItem anotherItem = new Item(Enums.Category.BOOK, true, 0m);
            anotherItem = new ImportedItem(anotherItem);
            decimal anotherResult = 0.00m;
            Assert.AreEqual(anotherResult, anotherItem.FinalPrice);
        }
示例#6
0
        public void ShowImportedItem()
        {
            if (pdeContent == null || pdeContent.ExportData.Items == null)
            {
                dgvImportItems.DataSource = null;
                return;
            }

            dgvImportItems.AutoGenerateColumns = false;
            List <ImportedItem> listItem = new List <ImportedItem>();

            foreach (DomainExportItem item in pdeContent.ExportData.Items)
            {
                //TreeNode domainNode = trvImportData.Nodes[0].Nodes.Add(item.DomainName);

                foreach (ExportItem node in item.Items)
                {
                    ImportedItem itemImport = new ImportedItem();
                    itemImport.DomainName = item.DomainName;
                    itemImport.ItemName   = node.TreeNodeName;
                    itemImport.Selected   = node.Selected;
                    if (node.TreeNodeName.EndsWith(BaseProntoMarkup.KeySelect) && !node.TreeNodeName.Contains(BaseProntoMarkup.KeyTable))
                    {
                        itemImport.ItemType = "Field";
                        listItem.Add(itemImport);
                    }

                    if (node.TreeNodeName.EndsWith(BaseProntoMarkup.KeyTable))
                    {
                        itemImport.ItemType = "Table";
                        listItem.Add(itemImport);
                    }

                    if (node.MapType == MapType.Chart)
                    {
                        itemImport.ItemType = "Chart";
                        listItem.Add(itemImport);
                    }
                }
            }

            dgvImportItems.AutoGenerateColumns = false;
            ColSelect.DataPropertyName         = "Selected";
            ColDomainName.DataPropertyName     = "DomainName";
            ColItemType.DataPropertyName       = "ItemType";
            ColItemName.DataPropertyName       = "ItemName";

            BindingSource dataSource = new BindingSource();

            dataSource.DataSource     = listItem;
            dgvImportItems.DataSource = dataSource;
        }
示例#7
0
        public void MutipleTaxesFinalPriceTest()
        {
            AbstractItem item = new Item(Enums.Category.BOOK, true, 47.50m);
            item = new ImportedItem(item);
            item = new TaxedItem(item);
            decimal result = 54.65m;
            Assert.AreEqual(result, item.FinalPrice);

            AbstractItem anotherItem = new Item(Enums.Category.BOOK, true, 0m);
            anotherItem = new ImportedItem(anotherItem);
            decimal anotherResult = 0.00m;
            Assert.AreEqual(anotherResult, anotherItem.FinalPrice);
        }
示例#8
0
        /// <summary>
        /// Reads a row and parses the data
        /// </summary>
        /// <param name="rowCount"></param>
        /// <returns></returns>
        private ImportedItem ReadRow(int rowCount)
        {
            var importedItem = new ImportedItem();
            var yellowNumber = workSheet.Cells[rowCount, 1].Value;

            importedItem.YellowNumber       = Convert.ToInt32(yellowNumber);
            importedItem.InventoryNumber    = (string)workSheet.Cells[rowCount, 2].Value;
            importedItem.OldInventoryNumber = (string)workSheet.Cells[rowCount, 3].Value;
            importedItem.Name         = (string)workSheet.Cells[rowCount, 4].Value;
            importedItem.SerialNumber = (string)workSheet.Cells[rowCount, 5].Value;
            importedItem.OwnerName    = (string)workSheet.Cells[rowCount, 8].Value;
            return(importedItem);
        }
示例#9
0
        public void SaletaxTest()
        {
            AbstractItem item = new Item(Enums.Category.BOOK, true, 11.25m);
            item = new ImportedItem(item);

            decimal result = 0.60m;
            Assert.AreEqual(result, item.SaleTax);

            AbstractItem anotherItem = new Item(Enums.Category.BOOK, true, 0m);
            anotherItem = new ImportedItem(anotherItem);
            decimal anotherResult = 0.00m;
            Assert.AreEqual(anotherResult, anotherItem.SaleTax);
        }
示例#10
0
    // Start is called before the first frame update
    void Start()
    {
        spawnPoint = new Vector3(this.transform.position.x, this.transform.position.y + 0.5f, this.transform.position.z - 0.5f);
        broker     = brokerHolder.GetComponent <Broker>();

        itemsCount = throwableItems.Length;
        items      = new ImportedItem[itemsCount];
        for (int i = 0; i < itemsCount; i++)
        {
            items[i] = new ImportedItem(throwableItems[i]);
        }

        InitializeProbabilities();
    }
示例#11
0
    private void ThrowItem(ImportedItem item, ScreenSegment segment)
    {
        GameObject spawnedObject = Instantiate(item.gameObject, spawnPoint, transform.rotation);

        broker.Register(segment, spawnedObject);

        ItemProperties properties = item.itemProperties;

        Rigidbody rigidBody = spawnedObject.GetComponent <Rigidbody>();

        rigidBody.mass = properties.mass;

        Vector3 side;
        Vector3 up;
        Vector3 towards;

        switch (segment)
        {
        case ScreenSegment.TOP_LEFT:
            side    = properties.forceSide * Vector3.left;
            up      = properties.forceUpHigh * Vector3.up;
            towards = properties.forceBack * Vector3.back;
            break;

        case ScreenSegment.BOTTOM_LEFT:
            side    = properties.forceSide * Vector3.left;
            up      = properties.forceUpLow * Vector3.up;
            towards = properties.forceBack * Vector3.back;
            break;

        case ScreenSegment.TOP_RIGHT:
            side    = properties.forceSide * Vector3.right;
            up      = properties.forceUpHigh * Vector3.up;
            towards = properties.forceBack * Vector3.back;
            break;

        default:
            side    = properties.forceSide * Vector3.right;
            up      = properties.forceUpLow * Vector3.up;
            towards = properties.forceBack * Vector3.back;
            break;
        }

        rigidBody.AddForce(side + up + towards);
    }
示例#12
0
 private void AddGridItem(ImportedItem e)
 {
     Dispatcher.Invoke(() =>
     {
         try
         {
             lock (lockbox)
             {
                 importedItemsList.Add(e);
                 GridImportedItems.RefreshData();
                 GridImportedItems.CurrentItem = GridImportedItems.GetRowByListIndex((GridImportedItems.ItemsSource as ICollection).Count -
                                                                                     1);
             }
         }
         catch
         {
         }
     });
 }
示例#13
0
        /// <summary>
        /// Validates the read item
        /// </summary>
        /// <param name="importedItem"></param>
        /// <returns></returns>
        private bool ValidateItem(ImportedItem importedItem)
        {
            if (importedItem == null)
            {
                return(false);
            }

            if (!importedItem.YellowNumber.HasValue &&
                string.IsNullOrEmpty(importedItem.InventoryNumber) &&
                string.IsNullOrEmpty(importedItem.OldInventoryNumber) &&
                string.IsNullOrEmpty(importedItem.SerialNumber))
            {
                return(false);
            }

            if (string.IsNullOrEmpty(importedItem.Name))
            {
                return(false);
            }

            return(true);
        }
示例#14
0
        public void MultipleSaletaxTest()
        {
            AbstractItem item = new Item(Enums.Category.BOOK, true, 47.50m);
            item = new ImportedItem(item);
            item = new TaxedItem(item);
           
            decimal result = 7.15m;
            Assert.AreEqual(result, item.SaleTax);

            AbstractItem nexeItem = new Item(Enums.Category.BOOK, true, 47.50m);
            nexeItem = new TaxedItem(nexeItem);
            nexeItem = new ImportedItem(nexeItem);

            decimal nextResult = 7.15m;
            Assert.AreEqual(nextResult, nexeItem.SaleTax);

            AbstractItem anotherItem = new Item(Enums.Category.BOOK, true, 0m);
            anotherItem = new TaxedItem(anotherItem);
            anotherItem = new ImportedItem(anotherItem);

            decimal anotherResult = 0.00m;
            Assert.AreEqual(anotherResult, anotherItem.SaleTax);
        }
示例#15
0
        /// <summary>
        /// Downloads the page content and parses it
        /// </summary>
        /// <param name="pagename"></param>
        /// <param name="item"></param>
        /// <returns></returns>
        public static CmsPage GetPage(String defaultTemplate, String culture, String pagename, Boolean replacePhoneNumber, ImportedItem item, Dictionary<CmsUrl, int> cssUses, Dictionary<CmsUrl, int> jsUses)
        {
            CmsUrl uri = new CmsUrl(item.Uri);
            String html = Encoding.UTF8.GetString(SimpleWebClient.GetResponse(uri.ToUri()));

            HtmlAgilityPack.HtmlDocument htmldoc = new HtmlAgilityPack.HtmlDocument();
            htmldoc.OptionFixNestedTags = true;
            htmldoc.LoadHtml(html);

            HtmlNode titleNode = htmldoc.DocumentNode.SelectSingleNode("//title");
            HtmlNode bodyNode = htmldoc.DocumentNode.SelectSingleNode("//body");

            String description = "";
            String keywords = "";
            StringBuilder otherMetaTags = new StringBuilder();
            HtmlNodeCollection metaNodes = htmldoc.DocumentNode.SelectNodes("//meta");
            foreach (HtmlNode node in metaNodes)
            {
                if (node.OuterHtml.ToLower().Contains("description"))
                    description = node.Attributes["content"].Value;
                else if (node.OuterHtml.ToLower().Contains("keywords"))
                    keywords = node.Attributes["content"].Value;
                else
                    otherMetaTags.AppendLine(node.OuterHtml);
            }

            StringBuilder inlineScripts = new StringBuilder();
            HtmlNodeCollection scriptTags = htmldoc.DocumentNode.SelectNodes("//head//script");
            if ((scriptTags != null) && (scriptTags.Count > 0))
            {
                foreach (HtmlNode node in scriptTags)
                {
                    if (!node.OuterHtml.ToLower().Contains("src"))
                        inlineScripts.AppendLine(node.OuterHtml);
                    else
                    {
                        //track the # of script tags
                    }
                }
            }

            StringBuilder inlineCss = new StringBuilder();
            HtmlNodeCollection cssTags = htmldoc.DocumentNode.SelectNodes("//head//style");
            if ((cssTags != null) && (cssTags.Count > 0))
            {
                foreach (HtmlNode node in cssTags)
                {
                    inlineCss.AppendLine(node.OuterHtml);
                }
            }

            StringBuilder bodyOptions = new StringBuilder();
            foreach (HtmlAttribute attribute in bodyNode.Attributes)
            {
                bodyOptions.AppendFormat("{0}=\"{1}\" ", attribute.Name, attribute.Value);
            }

            String path = uri.Path;
            if (path.EndsWith("/"))
                path = path + GooeyConfigManager.DefaultPageName;

            String body = bodyNode.InnerHtml;
            body = "<!-- nomarkup-begin -->\r\n" + body + "\r\n<!-- nomarkup-end -->";
            body = body + "<!-- Imported by Gooeycms Import Tool. Site:" + item.Uri + " at " + UtcDateTime.Now.ToString() + " -->\r\n";

            //If a company phone number has been specified, find any instances of a phone number
            //on the site and replace it with the phone tag
            if (replacePhoneNumber)
                body = RegexHelper.ReplacePhoneNumbers(body, "{phone}");

            CmsPage page = new CmsPage();
            page.SubscriptionId = item.SubscriptionId;
            page.Author = "Site Importer";
            page.Content = body;
            page.Culture = culture;
            page.DateSaved = UtcDateTime.Now;
            page.Description = description;
            page.Guid = System.Guid.NewGuid().ToString();
            page.Url = path;
            page.UrlHash = TextHash.MD5(page.Url).Value;
            page.Template = defaultTemplate;
            page.Keywords = keywords;
            page.Title = (titleNode != null) ? titleNode.InnerText : "";
            page.JavascriptInline = inlineScripts.ToString();
            page.CssInline = inlineCss.ToString();
            page.OnBodyLoad = bodyOptions.ToString().Trim();

            return page;
        }
        public void AddImportedItem(IMetadata metadata, bool isUpdate)
        {
            var responseItem = new ImportedItem(metadata, isUpdate);

            _importedItems.Add(responseItem);
        }
        public void AddImportedItem(int excelRow, IMetadata metadata, bool isUpdate)
        {
            var responseItem = new ImportedItem(excelRow, metadata, isUpdate);

            _importedItems.Add(responseItem);
        }