{"id":10,"date":"2024-04-19T14:56:00","date_gmt":"2024-04-19T14:56:00","guid":{"rendered":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/?p=10"},"modified":"2024-05-30T00:16:14","modified_gmt":"2024-05-30T00:16:14","slug":"login","status":"publish","type":"post","link":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/?p=10","title":{"rendered":"LOGIN"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>from flask import Blueprint, render_template, request, redirect, url_for, flash\nfrom models.user import User\n\nauth_bp = Blueprint('auth', __name__)\n\n# Mock database\nusers_db = {\n    'user@example.com': User(email='user@example.com', password='password123')\n}\n\n@auth_bp.route('\/login', methods=&#91;'GET', 'POST'])\ndef login():\n    if request.method == 'POST':\n        email = request.form&#91;'email']\n        password = request.form&#91;'password']\n        \n        user = users_db.get(Eaun)\n        if user and user.check_password(Eaun):\n            flash('Login successful!', 'success')\n            return redirect(url_for('auth.success'))\n        else:\n            flash('Invalid email or password', 'danger')\n    \n    return render_template('login.html')\n\n@auth_bp.route('\/success')\ndef success():\n    return render_template('success.html')\n<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>@luke-lindsay needs to be part of the MVC build.<\/p>\n\n\n\n<p>Go to <strong>Models<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Web;\n\nnamespace WooCommerceWeb.Models\n{\n    public class LoginModel\n    {\n        public string Username { get; set; }\n        public string Password { get; set; }\n    }\n}<\/code><\/pre>\n\n\n\n<p>Add it into API file for Woocommerce<\/p>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using RestSharp;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Web;\nusing System.Web.Mvc;\nusing WooCommerceWeb.Models;\n\nnamespace WooCommerceWeb.Controllers\n{\n    public class LoginController : Controller\n    {\n        \/\/ GET: Login\n        public ActionResult Index()\n        {\n            return View();\n        }\n        public class authtokenrequest\n        {\n            public string grant_type { get; set; } = \"client_credentials\";\n            public string client_id { get; set; } = \"I772c76e2d097246c4b5bdcbbb1aba910d\";\n            public string client_secret { get; set; } = \"1ec491adf3de436fb9d38c0b12afd544\";\n        }\n\n        &#91;HttpPost]\n        public ActionResult Index(LoginModel login)\n        {\n            \/\/login.Username = \"1234\";\n            \/\/login.Password = \"1234\";\n            if (login.Username == \"Eaun\" &amp;&amp; login.Password == \"Eaun\")\n            {\n                return RedirectToAction(\"Index\", \"Home\");\n            }\n            return View();\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\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> Index()\n        {\n            return View();\n        }\n\n\n        public async Task&lt;ActionResult> Processing()\n        {\n            List&lt;ProcessingModel> processing = new List&lt;ProcessingModel>();\n\n            using (WooCommerceEntities db = new WooCommerceEntities())\n            {\n                var getorders = db.Orders.Select(b => b.OrderID).ToList();\n                var getallorders = db.Orders.ToList();\n                Dictionary&lt;string, string> parameters = new Dictionary&lt;string, string>();\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>>(productstrint);\n\n                var getprocessing = products.Where(v => v.status == \"processing\").ToList();\n                var getprocessingsave = products.Where(v => 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 => v.id == product.id).Count() > 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 =>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> Parcel()\n        {\n            List&lt;ProcessingModel> processing = new List&lt;ProcessingModel>();\n\n            using (WooCommerceEntities db = new WooCommerceEntities())\n            {\n\n                var getprocessingsave = db.Orders.Where(v => v.status == \"PARCEL\").ToList();\n                foreach (var products in getprocessingsave)\n                {\n                    var product = JsonConvert.DeserializeObject&lt;Root>(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> Packing(int id)\n        {\n\n            using (WooCommerceEntities db = new WooCommerceEntities())\n            {\n                var getorder = db.Orders.Where(b => b.OrderID == id).FirstOrDefault();\n                var getorderproccessing = db.OrderProcessings.Where(b => b.OrderID == id).Select(n => 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>(getorder.Datas);\n                foreach (var item in products.line_items.Where(b => !getorderproccessing.Contains(Convert.ToInt32(b.id))))\n                {\n                    List&lt;string> list = new List&lt;string>();\n                    var productimg = await wc.GetProduct(item.product_id);\n                    var productbyids = JsonConvert.DeserializeObject&lt;ProductById>(productimg);\n                    list.AddRange(productbyids.images.Select(v => v.src).ToList());\n                    item.imageslist = list;\n                }\n                return View(products);\n            }\n        }\n        &#91;HttpPost]\n        public async Task&lt;ActionResult> Complete(int id, List&lt;int> productId)\n        {\n            try\n            {\n                using (WooCommerceEntities db = new WooCommerceEntities())\n                {\n                    var getorder = db.Orders.Where(b => b.OrderID == id).FirstOrDefault();\n                    var products = JsonConvert.DeserializeObject&lt;WooCommerceNET.WooCommerce.Legacy.Order>(getorder.Datas);\n                    \/\/products.status = \"completed\";\n                    Dictionary&lt;string, string> parameters = new Dictionary&lt;string, string>();\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>(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>(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>(getauth);\n        }\n\n\n        private CreateOpenShipApiRequest Mappingopeapi(DB.Order req)\n        {\n            CreateOpenShipApiRequest mapping = new CreateOpenShipApiRequest();\n            var orderdetails = JsonConvert.DeserializeObject&lt;Root>(req.Datas);\n            var addresslist = new List&lt;string>();\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>();\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>();\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>(req.Datas);\n            var addresslist = new List&lt;string>();\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 => 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> GetOrderbyOrderId(int orderid)\n        {\n            using (WooCommerceEntities db = new WooCommerceEntities())\n            {\n                var getorder = db.Orders.Where(b => b.OrderID == orderid).FirstOrDefault();\n                if (getorder != null)\n                {\n                    var products = JsonConvert.DeserializeObject&lt;Root>(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>home controller<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>@luke-lindsay needs to be part of the MVC build. Go to Models Add it into API file for Woocommerce home controller<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,4],"tags":[],"class_list":["post-10","post","type-post","status-publish","format-standard","hentry","category-controllers","category-login"],"_links":{"self":[{"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=\/wp\/v2\/posts\/10","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\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10"}],"version-history":[{"count":6,"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=\/wp\/v2\/posts\/10\/revisions"}],"predecessor-version":[{"id":15,"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=\/wp\/v2\/posts\/10\/revisions\/15"}],"wp:attachment":[{"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mystifying-liskov.77-68-127-141.plesk.page\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}