{"id":16,"date":"2024-05-29T15:07:50","date_gmt":"2024-05-29T15:07:50","guid":{"rendered":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/?p=16"},"modified":"2024-05-29T21:14:43","modified_gmt":"2024-05-29T21:14:43","slug":"display-orders","status":"publish","type":"post","link":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/?p=16","title":{"rendered":"DISPLAY ORDERS"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>using Newtonsoft.Json;\nusing RestSharp;\nusing System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Linq;\nusing System.Security.Cryptography;\nusing System.Threading.Tasks;\nusing System.Web;\nusing System.Web.Helpers;\nusing System.Web.Mvc;\nusing System.Web.Script.Serialization;\nusing System.Xml.Linq;\nusing WooCommerceNET;\nusing WooCommerceNET.WooCommerce.Legacy;\nusing WooCommerceWeb.DB;\nusing WooCommerceWeb.Models;\n\nnamespace WooCommerceWeb.Controllers\n{\n    public class HomeController : Controller\n    {\n        public static RestAPI rest = new RestAPI(\"https:\/\/sbdlondon.com\/wp-json\/wc\/v3\/\", \"ck_fef6065e15729d76e176fe75fdada8a448f70aa5\", \"cs_d9fe6eb1d265a018ae69a22c71a362ac8c3b8045\");\n        public WCObject wc = new WCObject(rest);\n        \/\/ GET: Home\n        public async Task&lt;ActionResult&gt; Index()\n        {\n            return View();\n        }\n\n\n        public async Task&lt;ActionResult&gt; Processing()\n        {\n            List&lt;ProcessingModel&gt; processing = new List&lt;ProcessingModel&gt;();\n\n            using (WooCommerceEntities db = new WooCommerceEntities())\n            {\n                var getorders = db.Orders.Select(b =&gt; b.OrderID).ToList();\n                var getallorders = db.Orders.ToList();\n                Dictionary&lt;string, string&gt; parameters = new Dictionary&lt;string, string&gt;();\n                parameters.Add(\"status\", \"processing\");\n                parameters.Add(\"page\", \"1\");\n                parameters.Add(\"per_page\", \"100\");\n                var productstrint = await wc.GetOrders(parameters);\n                var products = JsonConvert.DeserializeObject&lt;List&lt;Root&gt;&gt;(productstrint);\n\n                var getprocessing = products.Where(v =&gt; v.status == \"processing\").ToList();\n                var getprocessingsave = products.Where(v =&gt; v.status == \"processing\" &amp;&amp; !getorders.Contains(Convert.ToInt32(v.id))).ToList();\n                foreach (var product in getprocessing)\n                {\n\n                    if (getprocessingsave.Where(v =&gt; v.id == product.id).Count() &gt; 0)\n                    {\n                        DB.Order ord = new DB.Order();\n                        ord.OrderID = Convert.ToInt32(product.id);\n                        ord.IsParcel = false;\n                        ord.IsFedex = false;\n                        ord.CreatedDate = DateTime.Now;\n                        ord.status = product.status;\n                        var json = new JavaScriptSerializer().Serialize(product);\n                        ord.Datas = json;\n                        db.Orders.Add(ord);\n                        db.SaveChanges();\n                        processing.Add(new ProcessingModel\n                        {\n                            id = product.id,\n                            status = product.status,\n                            total = product.total,\n                            TotalItem = product.line_items.Count,\n                            orderdate = Convert.ToDateTime(product.date_created),\n                            first_name = product.shipping != null ? product.shipping.first_name : \"\",\n                            last_name = product.shipping != null ? product.shipping.last_name : \"\",\n                            email = product.billing != null ? product.billing.email : \"\",\n                            postcode = product.billing != null ? product.billing.postcode : \"\",\n                        });\n                    }\n                    else\n                    {\n                        long projID = Convert.ToInt64(product.id.ToString());\n\n                        var getorderss = db.Orders.Where(i =&gt;i.OrderID  == projID).FirstOrDefault();\n                        if (getorderss != null)\n                        {\n                            getorderss.OrderID = Convert.ToInt32(product.id);\n                            getorderss.IsParcel = false;\n                            getorderss.IsFedex = false;\n                            getorderss.CreatedDate = DateTime.Now;\n                            getorderss.status = product.status;\n                            var json = new JavaScriptSerializer().Serialize(product);\n                            getorderss.Datas = json;\n                            db.SaveChanges();\n                        }\n\n                        processing.Add(new ProcessingModel\n                        {\n                            id = product.id,\n                            status = getorderss.status,\n                            total = product.total,\n                            TotalItem = product.line_items.Count,\n                            orderdate = Convert.ToDateTime(product.date_created),\n                            first_name = product.shipping != null ? product.shipping.first_name : \"\",\n                            last_name = product.shipping != null ? product.shipping.last_name : \"\",\n                            email = product.billing != null ? product.billing.email : \"\",\n                            postcode = product.billing != null ? product.billing.postcode : \"\",\n                        });\n                    }\n                }\n            }\n            return View(processing);\n\n        }\n\n        public async Task&lt;ActionResult&gt; Parcel()\n        {\n            List&lt;ProcessingModel&gt; processing = new List&lt;ProcessingModel&gt;();\n\n            using (WooCommerceEntities db = new WooCommerceEntities())\n            {\n\n                var getprocessingsave = db.Orders.Where(v =&gt; v.status == \"PARCEL\").ToList();\n                foreach (var products in getprocessingsave)\n                {\n                    var product = JsonConvert.DeserializeObject&lt;Root&gt;(products.Datas);\n\n                    processing.Add(new ProcessingModel\n                    {\n                        id = product.id,\n                        status = product.status,\n                        total = product.total,\n                        TotalItem = product.line_items.Count,\n                        orderdate = Convert.ToDateTime(product.date_created),\n                        first_name = product.shipping != null ? product.shipping.first_name : \"\",\n                        last_name = product.shipping != null ? product.shipping.last_name : \"\",\n                        email = product.billing != null ? product.billing.email : \"\",\n                        postcode = product.billing != null ? product.billing.postcode : \"\",\n                    });\n                }\n            }\n            return View(processing);\n\n        }\n        public async Task&lt;ActionResult&gt; Packing(int id)\n        {\n\n            using (WooCommerceEntities db = new WooCommerceEntities())\n            {\n                var getorder = db.Orders.Where(b =&gt; b.OrderID == id).FirstOrDefault();\n                var getorderproccessing = db.OrderProcessings.Where(b =&gt; b.OrderID == id).Select(n =&gt; n.OrderID).ToList();\n                if (getorder != null)\n                {\n                    getorder.status = \"PARCEL\";\n                    getorder.IsParcel = true;\n                    getorder.UpdatedDate = DateTime.Now;\n                    db.SaveChanges();\n                }\n                var products = JsonConvert.DeserializeObject&lt;Root&gt;(getorder.Datas);\n                foreach (var item in products.line_items.Where(b =&gt; !getorderproccessing.Contains(Convert.ToInt32(b.id))))\n                {\n                    List&lt;string&gt; list = new List&lt;string&gt;();\n                    var productimg = await wc.GetProduct(item.product_id);\n                    var productbyids = JsonConvert.DeserializeObject&lt;ProductById&gt;(productimg);\n                    list.AddRange(productbyids.images.Select(v =&gt; v.src).ToList());\n                    item.imageslist = list;\n                }\n                return View(products);\n            }\n        }\n        &#91;HttpPost]\n        public async Task&lt;ActionResult&gt; Complete(int id, List&lt;int&gt; productId)\n        {\n            try\n            {\n                using (WooCommerceEntities db = new WooCommerceEntities())\n                {\n                    var getorder = db.Orders.Where(b =&gt; b.OrderID == id).FirstOrDefault();\n                    var products = JsonConvert.DeserializeObject&lt;WooCommerceNET.WooCommerce.Legacy.Order&gt;(getorder.Datas);\n                    \/\/products.status = \"completed\";\n                    Dictionary&lt;string, string&gt; parameters = new Dictionary&lt;string, string&gt;();\n                    parameters.Add(\"status\", \"completed\");\n                    try\n                    {\n                        var updateproducts = await wc.UpdateOrder(id, products, parameters);\n\n                    }\n                    catch (Exception ex)\n                    {\n                        return Json(\"failed\", JsonRequestBehavior.AllowGet);\n                    }\n                    \/\/\/\/var getmapperopenapi = Mappingopeapi(getorder);\n                    \/\/var createopenshi = CreateOpenShipApi(FedexAuth.access_token, getmapperopenapi);\n                    \/\/ var openapiresponse = JsonConvert.DeserializeObject&lt;OpenShipApiResponseModel&gt;(createopenshi);\n                    \/\/ var confirmapimapping = Mappingconfirmopeapi(openapiresponse, getorder);\n                    \/\/ var confirmsopenship = ConfirmOpenShipApi(FedexAuth.access_token, confirmapimapping);\n                    if (getorder != null)\n                    {\n                        foreach (var item in productId)\n                        {\n                            OrderProcessing ordpro = new OrderProcessing();\n                            ordpro.ProductID = item;\n                            ordpro.OrderID = id;\n                            ordpro.CreatedDate = DateTime.Now;\n                            ordpro.UpdatedDate = DateTime.Now;\n                            ordpro.IsLebelGenerate = true;\n                            ordpro.IsOpenApiDone = true;\n                            ordpro.IsSuccess = true;\n                            ordpro.IsCompleted = true;\n                            db.OrderProcessings.Add(ordpro);\n                            db.SaveChanges();\n                        }\n                        getorder.status = \"Complete\";\n                        getorder.IsFedex = true;\n                        getorder.UpdatedDate = DateTime.Now;\n                        db.SaveChanges();\n                    }\n                    \/\/var products = JsonConvert.DeserializeObject&lt;Root&gt;(getorder.Datas);\n                    return Json(\"success\", JsonRequestBehavior.AllowGet);\n                }\n\n            }\n            catch (Exception)\n            {\n\n                return Json(\"failed\", JsonRequestBehavior.AllowGet);\n            }\n            \/\/var getauth = FedexAuthorization();\n            \/\/var FedexAuth = JsonConvert.DeserializeObject&lt;FedExAuthResponse&gt;(getauth);\n        }\n\n\n        private CreateOpenShipApiRequest Mappingopeapi(DB.Order req)\n        {\n            CreateOpenShipApiRequest mapping = new CreateOpenShipApiRequest();\n            var orderdetails = JsonConvert.DeserializeObject&lt;Root&gt;(req.Datas);\n            var addresslist = new List&lt;string&gt;();\n            addresslist.Add(orderdetails.shipping.address_1);\n            addresslist.Add(orderdetails.shipping.address_2);\n            var address = new Address\n            {\n                streetLines = addresslist,\n                city = orderdetails.shipping.city,\n                stateOrProvinceCode = orderdetails.shipping.state,\n                postalCode = orderdetails.shipping.postcode,\n                countryCode = orderdetails.shipping.country,\n\n\n            };\n            var shipper = new Shipper\n            {\n                address = address,\n                contact = new Contact\n                {\n                    phoneNumber = orderdetails.billing.phone,\n                    personName = orderdetails.shipping.first_name + \" \" + orderdetails.shipping.last_name,\n                    companyName = orderdetails.shipping.first_name + \" \" + orderdetails.shipping.last_name,\n                },\n            };\n            var recepaddress = new Address\n            {\n                streetLines = addresslist,\n                city = orderdetails.shipping.city,\n                stateOrProvinceCode = orderdetails.shipping.state,\n                postalCode = orderdetails.shipping.postcode,\n                countryCode = orderdetails.shipping.country,\n\n\n            };\n            var recipent = new List&lt;Recipient&gt;();\n            recipent.Add(new Recipient\n            {\n                address = recepaddress,\n                contact = new Contact\n                {\n                    phoneNumber = orderdetails.billing.phone,\n                    personName = orderdetails.billing.first_name + \" \" + orderdetails.billing.last_name,\n                    companyName = orderdetails.billing.first_name + \" \" + orderdetails.billing.last_name,\n                },\n            });\n            var lines = new List&lt;RequestedPackageLineItem&gt;();\n            foreach (var line in orderdetails.line_items)\n            {\n                lines.Add(new RequestedPackageLineItem\n                {\n                    sequenceNumber = line.product_id.ToString(),\n                    weight = new Weight\n                    {\n                        units = \"KG\",\n                        value = 2,\n\n                    },\n                });\n            }\n            mapping.requestedShipment = new RequestedShipment\n            {\n                pickupType = \"USE_SCHEDULED_PICKUP\",\n                serviceType = \"PRIORITY_OVERNIGHT\",\n                packagingType = \"YOUR_PACKAGING\",\n                shippingChargesPayment = new ShippingChargesPayment\n                {\n                    paymentType = \"SENDER\",\n                },\n                recipients = recipent,\n                shipper = shipper,\n\n                requestedPackageLineItems = lines,\n\n\n            };\n            mapping.accountNumber = new AccountNumber\n            {\n                value = \"740561073\",\n            };\n            return mapping;\n        }\n        private string FedexAuthorization()\n        {\n            var input1 = \"grant_type=client_credentials&amp;client_id=l7e152a1bda2ec4448ab5ecf8b5e551929&amp;client_secret=719aa8b700f345f68f907ebe2e4e2c88\";\n\n            var client = new RestClient(\"https:\/\/apis-sandbox.fedex.com\/oauth\/token\");\n            var request = new RestRequest();\n\n            request.Method = Method.Post;\n            request.AddHeader(\"Content-Type\", \"application\/x-www-form-urlencoded\");\n            request.AddParameter(\"application\/x-www-form-urlencoded\", input1, ParameterType.RequestBody);\n\n            var response = client.Execute(request);\n            var content = response.Content;\n            return content;\n        }\n        private string CreateOpenShipApi(string token, CreateOpenShipApiRequest req)\n        {\n\n            var input1 = Newtonsoft.Json.JsonConvert.SerializeObject(req);\n\n            var client = new RestClient(\"https:\/\/apis-sandbox.fedex.com\/ship\/v1\/openshipments\/create\");\n            var request = new RestRequest();\n            var tokenval = \"Bearer \" + token;\n            request.Method = Method.Post;\n            request.AddHeader(\"Authorization\", tokenval);\n            request.AddHeader(\"x-customer-transaction-id\", Guid.NewGuid());\n            request.AddHeader(\"Content-Type\", \"application\/json\");\n            request.AddParameter(\"application\/x-www-form-urlencoded\", input1, ParameterType.RequestBody);\n\n            var response = client.Execute(request);\n            var content = response.Content;\n            return content;\n        }\n\n\n        private string ConfirmOpenShipApi(string token, ConfirmOpenApiRequestModel req)\n        {\n\n            var input1 = Newtonsoft.Json.JsonConvert.SerializeObject(req);\n\n            var client = new RestClient(\"https:\/\/apis-sandbox.fedex.com\/ship\/v1\/openshipments\/\");\n            var request = new RestRequest();\n            var tokenval = \"Bearer \" + token;\n            request.Method = Method.Post;\n            request.AddHeader(\"Authorization\", tokenval);\n            request.AddHeader(\"x-customer-transaction-id\", Guid.NewGuid());\n            request.AddHeader(\"Content-Type\", \"application\/json\");\n            request.AddParameter(\"application\/x-www-form-urlencoded\", input1, ParameterType.RequestBody);\n\n            var response = client.Execute(request);\n            var content = response.Content;\n            return content;\n        }\n\n\n\n        private ConfirmOpenApiRequestModel Mappingconfirmopeapi(OpenShipApiResponseModel confirmapi, DB.Order req)\n        {\n            ConfirmOpenApiRequestModel mapping = new ConfirmOpenApiRequestModel();\n            var orderdetails = JsonConvert.DeserializeObject&lt;Root&gt;(req.Datas);\n            var addresslist = new List&lt;string&gt;();\n            addresslist.Add(orderdetails.shipping.address_1);\n            addresslist.Add(orderdetails.shipping.address_2);\n            var address = new Addresss\n            {\n                streetLines = addresslist,\n                city = orderdetails.shipping.city,\n                stateOrProvinceCode = orderdetails.shipping.state,\n                postalCode = orderdetails.shipping.postcode,\n                countryCode = orderdetails.shipping.country,\n\n\n            };\n            var printorgin = new PrintedLabelOrigin\n            {\n                address = address,\n                contact = new Contacts\n                {\n                    phoneNumber = orderdetails.billing.phone,\n                    personName = orderdetails.shipping.first_name + \" \" + orderdetails.shipping.last_name,\n                    companyName = orderdetails.shipping.first_name + \" \" + orderdetails.shipping.last_name,\n                },\n            };\n            mapping.labelResponseOptions = \"LABEL\";\n            mapping.labelSpecification = new LabelSpecification\n            {\n                labelStockType = \"PAPER_4X6\",\n                imageType = \"PNG\",\n                printedLabelOrigin = printorgin\n            };\n            mapping.index = confirmapi.output.transactionShipments.Select(v =&gt; v.masterTrackingNumber).FirstOrDefault();\n            mapping.accountNumber = new AccountNumber\n            {\n                value = \"740561073\",\n            };\n            return mapping;\n        }\n\n        &#91;HttpGet]\n        public async Task&lt;JsonResult&gt; GetOrderbyOrderId(int orderid)\n        {\n            using (WooCommerceEntities db = new WooCommerceEntities())\n            {\n                var getorder = db.Orders.Where(b =&gt; b.OrderID == orderid).FirstOrDefault();\n                if (getorder != null)\n                {\n                    var products = JsonConvert.DeserializeObject&lt;Root&gt;(getorder.Datas);\n                    products.status = getorder.status;\n                    return Json(products, JsonRequestBehavior.AllowGet);\n                }\n                else\n                {\n                    return Json(\"No Record Found\", JsonRequestBehavior.AllowGet);\n\n                }\n            }\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<p>Working. Dont touch. <\/p>\n\n\n\n<p>The content off the shipping label is wrong? @luke-lindsay &#8211; Fix it please. Recall the Schema from the Dev portal. Must be adhered too. <\/p>\n\n\n\n<p>Go to the schema. <a href=\"https:\/\/developer.fedex.com\/api\/en-gb\/catalog\/open-ship\/v1\/docs.html\">https:\/\/developer.fedex.com\/api\/en-gb\/catalog\/open-ship\/v1\/docs.html<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Working. Dont touch. The content off the shipping label is wrong? @luke-lindsay &#8211; Fix it please. Recall the Schema from the Dev portal. Must be adhered too. Go to the schema. https:\/\/developer.fedex.com\/api\/en-gb\/catalog\/open-ship\/v1\/docs.html<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-16","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=\/wp\/v2\/posts\/16","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16"}],"version-history":[{"count":5,"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=\/wp\/v2\/posts\/16\/revisions"}],"predecessor-version":[{"id":26,"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=\/wp\/v2\/posts\/16\/revisions\/26"}],"wp:attachment":[{"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=16"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=16"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}