예제 #1
0
        public IActionResult UnlinkShop(int shopId, bool clean = true)
        {
            var context = new UnlinkShopContext(shopId);
            var worker  = new ProductsHandler(_settings.ElasticSearchClientSettings, context, _works, _dbHelper);

            return(_works.AddToQueue(worker.UnlinkShop, context, QueuePriority.Low, clean));
        }
예제 #2
0
        /// <summary>
        /// Generates a query to receive selected <c>products</c> from a Shopify store. The generated query will query the following on products:
        ///     - id
        ///     - title
        ///     - descriptionHtml
        ///     - images (with aliases defined by ShopifyClient.defaultImageResolutions)
        ///         - altText
        ///         - src
        ///     - options
        ///         - name
        ///         - values
        ///     - variants
        ///         - id
        ///         - available
        ///         - price
        ///         - title
        ///         - weight
        ///         - weightUnit
        ///         - selectedOptions
        ///             - name
        ///             - values
        ///         - image (with aliases defined by ShopifyClient.defaultImageResolutions)
        ///             - altText
        ///             - src
        ///     - collections
        ///         - image (with aliases defined by ShopifyClient.defaultImageResolutions)
        ///             - altText
        ///             - src
        ///         - title
        ///         - updatedAt
        ///
        /// </summary>
        /// <param name="callback">callback that will receive responses from server</param>
        /// <param name="productIds">a list of product ids you'd like to query</param>
        /// \code
        /// // Example usage querying two product ids using a List<string>
        /// List<string> productIds = new List<string>() {
        ///     "Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0Lzk4OTUyNzYwOTk=",
        ///     "Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0Lzk4OTUyNzkwNDM="
        /// };
        ///
        /// ShopifyBuy.Client().products((products, error) => {
        ///     Debug.Log(products[0].title());
        ///     Debug.Log(products[1].title());
        /// }, productIds);
        /// \endcode
        public void products(ProductsHandler callback, List <string> productIds)
        {
            QueryRootQuery query = new QueryRootQuery();

            query.nodes(n => n
                        .onProduct((p) => {
                DefaultQueries.products.Product(p, DefaultImageResolutions);
            }),
                        ids: productIds
                        );

            Loader.Query(query, (response) => {
                var error = (ShopifyError)response;
                if (error != null)
                {
                    callback(null, error);
                }
                else
                {
                    List <Product> products = new List <Product> ();

                    foreach (Shopify.Unity.Product product in response.data.nodes())
                    {
                        products.Add(product);
                    }

                    callback(products, error);
                }
            });
        }
        public string submitAllProducts(string productsListSTR)
        {
            try
            {
                var list = JsonConvert.DeserializeObject <List <DataEntryDAL.CustomDataOBJ.PRODUCT> >(productsListSTR);
                ReturnObject <int> output = null;

                ProductsHandler handler = new ProductsHandler();

                var result = handler.INSERT_ALL_PRODUCTS(list);
                output = new ReturnObject <int>(ErrorConstants.SUCCESS, result);

                if (result != -1)
                {
                    return(JsonConvert.SerializeObject(output));
                }
                else
                {
                    return(JsonConvert.SerializeObject(new ReturnObject <string>(ErrorConstants.ERROR_FAILED_TO_ADD_FLYER_PRODUCTS, ErrorConstants.ERROR_FAILED_TO_ADD_FLYER_PRODUCTS_MSG)));
                }
            }
            catch (Exception ex)
            {
                return(JsonConvert.SerializeObject(new ReturnObject <string>(ErrorConstants.ERROR_EXCEPTION, ex.Message)));
            }
        }
        public string getAllProductsList(int flyerID, int parentID)
        {
            ReturnObject <List <DataEntryDAL.CustomDataOBJ.PRODUCT> > output = null;

            try
            {
                ProductsHandler handler = new ProductsHandler();

                var result = handler.getProductsList(flyerID, parentID);
                output = new ReturnObject <List <DataEntryDAL.CustomDataOBJ.PRODUCT> >(ErrorConstants.SUCCESS, result);

                if (result != null && result.Count > 0)
                {
                    return(JsonConvert.SerializeObject(output));
                }
                else
                {
                    return(JsonConvert.SerializeObject(new ReturnObject <string>(ErrorConstants.ERROR_FAILED_TO_GET_FLYER_PRODUCTS, ErrorConstants.ERROR_FAILED_TO_GET_FLYER_PRODUCTS_MSG)));
                }
            }
            catch (Exception ex)
            {
                return(JsonConvert.SerializeObject(new ReturnObject <string>(ErrorConstants.ERROR_EXCEPTION, ex.Message)));
            }
        }
        public string getAllProductOfferTypes()
        {
            ReturnObject <List <PROD_OFF_TYP> > output = null;

            try
            {
                ProductsHandler handler = new ProductsHandler();

                List <PROD_OFF_TYP> typesList = handler.RETRIEVE_ALL_PRODUCT_OFFER_TYPES();
                output = new ReturnObject <List <PROD_OFF_TYP> >(ErrorConstants.SUCCESS, typesList);

                if (typesList != null && typesList.Count > 0)
                {
                    return(JsonConvert.SerializeObject(output));
                }
                else
                {
                    return(JsonConvert.SerializeObject(new ReturnObject <string>(ErrorConstants.ERROR_FAILED_GET_PRODUCT_OFFER_TYPES, ErrorConstants.ERROR_FAILED_GET_PRODUCT_OFFER_TYPES_MSG)));
                }
            }
            catch (Exception ex)
            {
                return(JsonConvert.SerializeObject(new ReturnObject <string>(ErrorConstants.ERROR_EXCEPTION, ex.Message)));
            }
        }
        public string getFlyerProducts(int flyerID)
        {
            ReturnObject <List <GET_FLYER_PRODUCTS_DATAResult> > output = null;

            try
            {
                ProductsHandler handler = new ProductsHandler();

                List <GET_FLYER_PRODUCTS_DATAResult> prodData = handler.GET_FLYER_PRODUCTS(flyerID);
                output = new ReturnObject <List <GET_FLYER_PRODUCTS_DATAResult> >(ErrorConstants.SUCCESS, prodData);

                if (prodData.Count > 0)
                {
                    return(JsonConvert.SerializeObject(output));
                }
                else
                {
                    return(JsonConvert.SerializeObject(new ReturnObject <string>(ErrorConstants.ERROR_FAILED_TO_GET_FLYER_PRODUCTS, ErrorConstants.ERROR_FAILED_TO_GET_FLYER_PRODUCTS_MSG)));
                }
            }
            catch (Exception ex)
            {
                return(JsonConvert.SerializeObject(new ReturnObject <string>(ErrorConstants.ERROR_EXCEPTION, ex.Message)));
            }
        }
        public string getTypeAllSpecs(int typeID)
        {
            List <PROD_TYPE_TEMPLATE> types = null;
            ReturnObject <List <PROD_TYPE_TEMPLATE> > typesObj = null;

            try
            {
                ProductsHandler handler = new ProductsHandler();

                types    = handler.getAllTypeSpecs(typeID);
                typesObj = new ReturnObject <List <PROD_TYPE_TEMPLATE> >(ErrorConstants.SUCCESS, types);

                if (types != null)
                {
                    return(JsonConvert.SerializeObject(typesObj));
                }
                else
                {
                    return(JsonConvert.SerializeObject(new ReturnObject <string>(ErrorConstants.ERROR_FAILED_GET_TYPE_SPECS, ErrorConstants.ERROR_FAILED_GET_TYPE_SPECS_MSG)));
                }
            }
            catch (Exception ex)
            {
                return(JsonConvert.SerializeObject(new ReturnObject <string>(ErrorConstants.ERROR_EXCEPTION, ex.Message)));
            }
        }
        public string getAllCategoryTypes(int categoryID)
        {
            List <PRODUCT_TYPE> types = null;
            ReturnObject <List <PRODUCT_TYPE> > typesObj = null;

            try
            {
                ProductsHandler handler = new ProductsHandler();

                types    = handler.getAllCategoryTypes(categoryID);
                typesObj = new ReturnObject <List <PRODUCT_TYPE> >(ErrorConstants.SUCCESS, types);

                if (types != null)
                {
                    return(JsonConvert.SerializeObject(typesObj));
                }
                else
                {
                    return(JsonConvert.SerializeObject(new ReturnObject <string>(ErrorConstants.ERROR_NO_PRODUCT_TYPES_FOUND, ErrorConstants.ERROR_NO_PRODUCT_TYPES_FOUND_MSG)));
                }
            }
            catch (Exception ex)
            {
                return(JsonConvert.SerializeObject(new ReturnObject <string>(ErrorConstants.ERROR_EXCEPTION, ex.Message)));
            }
        }
        public string getAllProductCategories()
        {
            List <PRODUCTS_CATEGORy> cats = null;
            ReturnObject <List <PRODUCTS_CATEGORy> > catsObj = new ReturnObject <List <PRODUCTS_CATEGORy> >();

            try
            {
                ProductsHandler handler = new ProductsHandler();

                cats    = handler.getAllProductCategories();
                catsObj = new ReturnObject <List <PRODUCTS_CATEGORy> >(ErrorConstants.SUCCESS, cats);

                if (cats != null)
                {
                    return(JsonConvert.SerializeObject(catsObj));
                }
                else
                {
                    return(JsonConvert.SerializeObject(new ReturnObject <string>(ErrorConstants.ERROR_NO_PRODUCT_CATEGORIES_FOUND, ErrorConstants.ERROR_NO_PRODUCT_CATEGORIES_FOUND_MSG)));
                }
            }
            catch (Exception ex)
            {
                return(JsonConvert.SerializeObject(new ReturnObject <string>(ErrorConstants.ERROR_EXCEPTION, ex.Message)));
            }
        }
예제 #10
0
        /// <summary>
        /// Generates a query to receive selected <c>products</c> from a Shopify store. The generated query will query the following on products:
        ///     - id
        ///     - title
        ///     - descriptionHtml
        ///     - images (with aliases defined by ShopifyClient.defaultImageResolutions)
        ///         - altText
        ///         - src
        ///     - options
        ///         - name
        ///         - values
        ///     - variants
        ///         - id
        ///         - available
        ///         - price
        ///         - title
        ///         - weight
        ///         - weightUnit
        ///         - selectedOptions
        ///             - name
        ///             - values
        ///         - image (with aliases defined by ShopifyClient.defaultImageResolutions)
        ///             - altText
        ///             - src
        ///     - collections
        ///         - image (with aliases defined by ShopifyClient.defaultImageResolutions)
        ///             - altText
        ///             - src
        ///         - title
        ///         - updatedAt
        ///
        /// </summary>
        /// <param name="callback">callback that will receive responses or errors from server</param>
        /// <param name="firstProductId">you must pass in at least one product id to query</param>
        /// <param name="otherProductIds">
        /// after the first product id you can pass in as many product ids as you'd like.
        /// </param>
        /// \code
        /// // Example usage querying two product ids
        /// ShopifyBuy.Client().products((products, error) => {
        ///     Debug.Log(products[0].title());
        ///     Debug.Log(products[1].title());
        /// }, "Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0Lzk4OTUyNzYwOTk=", "Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0Lzk4OTUyNzkwNDM=");
        /// \endcode
        public void products(ProductsHandler callback, string firstProductId, params string[] otherProductIds)
        {
            List <string> productIds = new List <string> ();

            productIds.Add(firstProductId);
            productIds.AddRange(otherProductIds);

            products(callback, productIds);
        }
예제 #11
0
        private void GetConnectionsForProducts(List <Product> products, ProductsHandler callback)
        {
            List <ConnectionQueryInfo> connectionInfos = new List <ConnectionQueryInfo> ()
            {
                new ConnectionQueryInfo(
                    getConnection: (p) => ((Product)p).images(),
                    query: (p, imagesAfter) => {
                    ((ProductQuery)p).images(ic => DefaultQueries.products.ImageConnection(ic),
                                             first: DefaultQueries.MaxPageSize, after: imagesAfter
                                             );
                }
                    ),
                new ConnectionQueryInfo(
                    getConnection: (p) => ((Product)p).variants(),
                    query: (p, variantsAfter) => {
                    ((ProductQuery)p).variants(vc => DefaultQueries.products.ProductVariantConnection(vc, DefaultImageResolutions),
                                               first: DefaultQueries.MaxPageSize, after: variantsAfter
                                               );
                }
                    ),
                new ConnectionQueryInfo(
                    getConnection: (p) => ((Product)p).collections(),
                    query: (p, collectionsAfter) => {
                    ((ProductQuery)p).collections(cc => DefaultQueries.products.CollectionConnection(cc),
                                                  first: DefaultQueries.MaxPageSize, after: collectionsAfter
                                                  );
                }
                    )
            };

            foreach (string alias in DefaultImageResolutions.Keys)
            {
                string currentAlias = alias;

                connectionInfos.Add(new ConnectionQueryInfo(
                                        getConnection: (p) => ((Product)p).images(currentAlias),
                                        query: (p, imagesAfter) => {
                    ((ProductQuery)p).images(ic => DefaultQueries.products.ImageConnection(ic),
                                             first: DefaultQueries.MaxPageSize,
                                             after: imagesAfter,
                                             maxWidth: DefaultImageResolutions[currentAlias],
                                             maxHeight: DefaultImageResolutions[currentAlias],
                                             alias: currentAlias
                                             );
                }
                                        ));
            }

            ConnectionLoader loader = new ConnectionLoader(Loader);
            List <Node>      nodes  = products.ConvertAll(p => (Node)p);

            loader.QueryConnectionsOnNodes(nodes, connectionInfos, BuildProductQueryOnNode, (nodesResult, error) => {
                callback(nodesResult.ConvertAll(n => (Product)n), error);
            });
        }
 public ActionResult InsertMemData()
 {
     if (ModelState.IsValid)
     {
         //this.products.ForEach(p => db.Products.Add(p));
         //db.SaveChanges();
         var pH = new ProductsHandler();
         pH.SetProductsDB(products);
         return(RedirectToAction("Index", "EditProducts"));
     }
     else
     {
         return(View("Error")); // Todo: use error view to show error msg.
     }
 }
예제 #13
0
        public ActionResult DoFileUpload(HttpPostedFileBase file)
        {
            //Undone: show error msg to user!!
            if (ModelState.IsValid)
            {
                if (file == null)
                {
                    ModelState.AddModelError("File", "Please Upload Your file");
                }
                else if (file.ContentLength > 0)
                {
                    int      MaxContentLength      = 1024 * 1024 * 20; //20 MB
                    string[] AllowedFileExtensions = new string[] { ".csv", ".txt" };

                    if (!AllowedFileExtensions.Contains(file.FileName.Substring(file.FileName.LastIndexOf('.'))))
                    {
                        ModelState.AddModelError("File", "Please upload file of type: " + string.Join(", ", AllowedFileExtensions));
                    }

                    else if (file.ContentLength > MaxContentLength)
                    {
                        ModelState.AddModelError("File", "Your file is too large, maximum allowed size is: " + MaxContentLength + " MB");
                    }
                    else
                    {
                        //TO:DO
                        var fileName = Path.GetFileName(file.FileName);
                        var path     = Path.Combine(Server.MapPath("~/Content/Upload"), fileName);
                        file.SaveAs(path); //Note: overwrite file with the same name
                        ModelState.Clear();
                        ViewBag.Message = "File uploaded successfully";

                        //Todo: caution, overflow! long file, file.InputStream.Length is a long int
                        //var b = new BinaryReader(file.InputStream);
                        //byte[] binData = b.ReadBytes((int)file.InputStream.Length);
                        //string s = new StreamReader(file.InputStream).ReadToEnd();
                        var pH = new ProductsHandler();
                        pH.SetProductsDB(
                            pH.GetProductsStream(file.InputStream)
                            );

                        return(RedirectToAction("Index", "EditProducts"));
                    }
                }
            }
            return(View());
        }
예제 #14
0
        private void GetConnectionsForProducts(List <Product> products, ProductsHandler callback)
        {
            List <ConnectionQueryInfo> connectionInfos = new List <ConnectionQueryInfo> ()
            {
                new ConnectionQueryInfo(
                    getConnection: (p) => ((Product)p).images(),
                    query: (p, imagesAfter) => {
                    ((ProductQuery)p).images(ic => DefaultQueries.products.ImageConnection(ic, DefaultImageResolutions),
                                             first: DefaultQueries.MaxPageSize,
                                             after: imagesAfter
                                             );
                }
                    ),
                new ConnectionQueryInfo(
                    getConnection: (p) => ((Product)p).variants(),
                    query: (p, variantsAfter) => {
                    ((ProductQuery)p).variants(vc => DefaultQueries.products.ProductVariantConnection(vc, DefaultImageResolutions),
                                               first: DefaultQueries.MaxPageSize, after: variantsAfter
                                               );
                }
                    ),
                new ConnectionQueryInfo(
                    getConnection: (p) => ((Product)p).collections(),
                    query: (p, collectionsAfter) => {
                    ((ProductQuery)p).collections(cc => DefaultQueries.products.CollectionConnection(cc),
                                                  first: DefaultQueries.MaxPageSize, after: collectionsAfter
                                                  );
                }
                    )
            };

            ConnectionLoader loader = new ConnectionLoader(Loader);
            List <Node>      nodes  = products.ConvertAll(p => (Node)p);

            loader.QueryConnectionsOnNodes(nodes, connectionInfos, BuildProductQueryOnNode, (nodesResult, error) => {
                callback(nodesResult.ConvertAll(n => (Product)n), error);
            });
        }