from flask import Blueprint, render_template, request, redirect, url_for, flash
from models.user import User
auth_bp = Blueprint('auth', __name__)
# Mock database
users_db = {
'user@example.com': User(email='user@example.com', password='password123')
}
@auth_bp.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
email = request.form['email']
password = request.form['password']
user = users_db.get(Eaun)
if user and user.check_password(Eaun):
flash('Login successful!', 'success')
return redirect(url_for('auth.success'))
else:
flash('Invalid email or password', 'danger')
return render_template('login.html')
@auth_bp.route('/success')
def success():
return render_template('success.html')
@luke-lindsay needs to be part of the MVC build.
Go to Models
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace WooCommerceWeb.Models
{
public class LoginModel
{
public string Username { get; set; }
public string Password { get; set; }
}
}
Add it into API file for Woocommerce
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WooCommerceWeb.Models;
namespace WooCommerceWeb.Controllers
{
public class LoginController : Controller
{
// GET: Login
public ActionResult Index()
{
return View();
}
public class authtokenrequest
{
public string grant_type { get; set; } = "client_credentials";
public string client_id { get; set; } = "I772c76e2d097246c4b5bdcbbb1aba910d";
public string client_secret { get; set; } = "1ec491adf3de436fb9d38c0b12afd544";
}
[HttpPost]
public ActionResult Index(LoginModel login)
{
//login.Username = "1234";
//login.Password = "1234";
if (login.Username == "Eaun" && login.Password == "Eaun")
{
return RedirectToAction("Index", "Home");
}
return View();
}
}
}
using Newtonsoft.Json;
using RestSharp;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Security.Cryptography;
using System.Threading.Tasks;
using System.Web;
using System.Web.Helpers;
using System.Web.Mvc;
using System.Web.Script.Serialization;
using System.Xml.Linq;
using WooCommerceNET;
using WooCommerceNET.WooCommerce.Legacy;
using WooCommerceWeb.DB;
using WooCommerceWeb.Models;
namespace WooCommerceWeb.Controllers
{
public class HomeController : Controller
{
public static RestAPI rest = new RestAPI("https://sbdlondon.com/wp-json/wc/v3/", "ck_fef6065e15729d76e176fe75fdada8a448f70aa5", "cs_d9fe6eb1d265a018ae69a22c71a362ac8c3b8045");
public WCObject wc = new WCObject(rest);
// GET: Home
public async Task<ActionResult> Index()
{
return View();
}
public async Task<ActionResult> Processing()
{
List<ProcessingModel> processing = new List<ProcessingModel>();
using (WooCommerceEntities db = new WooCommerceEntities())
{
var getorders = db.Orders.Select(b => b.OrderID).ToList();
var getallorders = db.Orders.ToList();
Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("status", "processing");
parameters.Add("page", "1");
parameters.Add("per_page", "100");
var productstrint = await wc.GetOrders(parameters);
var products = JsonConvert.DeserializeObject<List<Root>>(productstrint);
var getprocessing = products.Where(v => v.status == "processing").ToList();
var getprocessingsave = products.Where(v => v.status == "processing" && !getorders.Contains(Convert.ToInt32(v.id))).ToList();
foreach (var product in getprocessing)
{
if (getprocessingsave.Where(v => v.id == product.id).Count() > 0)
{
DB.Order ord = new DB.Order();
ord.OrderID = Convert.ToInt32(product.id);
ord.IsParcel = false;
ord.IsFedex = false;
ord.CreatedDate = DateTime.Now;
ord.status = product.status;
var json = new JavaScriptSerializer().Serialize(product);
ord.Datas = json;
db.Orders.Add(ord);
db.SaveChanges();
processing.Add(new ProcessingModel
{
id = product.id,
status = product.status,
total = product.total,
TotalItem = product.line_items.Count,
orderdate = Convert.ToDateTime(product.date_created),
first_name = product.shipping != null ? product.shipping.first_name : "",
last_name = product.shipping != null ? product.shipping.last_name : "",
email = product.billing != null ? product.billing.email : "",
postcode = product.billing != null ? product.billing.postcode : "",
});
}
else
{
long projID = Convert.ToInt64(product.id.ToString());
var getorderss = db.Orders.Where(i =>i.OrderID == projID).FirstOrDefault();
if (getorderss != null)
{
getorderss.OrderID = Convert.ToInt32(product.id);
getorderss.IsParcel = false;
getorderss.IsFedex = false;
getorderss.CreatedDate = DateTime.Now;
getorderss.status = product.status;
var json = new JavaScriptSerializer().Serialize(product);
getorderss.Datas = json;
db.SaveChanges();
}
processing.Add(new ProcessingModel
{
id = product.id,
status = getorderss.status,
total = product.total,
TotalItem = product.line_items.Count,
orderdate = Convert.ToDateTime(product.date_created),
first_name = product.shipping != null ? product.shipping.first_name : "",
last_name = product.shipping != null ? product.shipping.last_name : "",
email = product.billing != null ? product.billing.email : "",
postcode = product.billing != null ? product.billing.postcode : "",
});
}
}
}
return View(processing);
}
public async Task<ActionResult> Parcel()
{
List<ProcessingModel> processing = new List<ProcessingModel>();
using (WooCommerceEntities db = new WooCommerceEntities())
{
var getprocessingsave = db.Orders.Where(v => v.status == "PARCEL").ToList();
foreach (var products in getprocessingsave)
{
var product = JsonConvert.DeserializeObject<Root>(products.Datas);
processing.Add(new ProcessingModel
{
id = product.id,
status = product.status,
total = product.total,
TotalItem = product.line_items.Count,
orderdate = Convert.ToDateTime(product.date_created),
first_name = product.shipping != null ? product.shipping.first_name : "",
last_name = product.shipping != null ? product.shipping.last_name : "",
email = product.billing != null ? product.billing.email : "",
postcode = product.billing != null ? product.billing.postcode : "",
});
}
}
return View(processing);
}
public async Task<ActionResult> Packing(int id)
{
using (WooCommerceEntities db = new WooCommerceEntities())
{
var getorder = db.Orders.Where(b => b.OrderID == id).FirstOrDefault();
var getorderproccessing = db.OrderProcessings.Where(b => b.OrderID == id).Select(n => n.OrderID).ToList();
if (getorder != null)
{
getorder.status = "PARCEL";
getorder.IsParcel = true;
getorder.UpdatedDate = DateTime.Now;
db.SaveChanges();
}
var products = JsonConvert.DeserializeObject<Root>(getorder.Datas);
foreach (var item in products.line_items.Where(b => !getorderproccessing.Contains(Convert.ToInt32(b.id))))
{
List<string> list = new List<string>();
var productimg = await wc.GetProduct(item.product_id);
var productbyids = JsonConvert.DeserializeObject<ProductById>(productimg);
list.AddRange(productbyids.images.Select(v => v.src).ToList());
item.imageslist = list;
}
return View(products);
}
}
[HttpPost]
public async Task<ActionResult> Complete(int id, List<int> productId)
{
try
{
using (WooCommerceEntities db = new WooCommerceEntities())
{
var getorder = db.Orders.Where(b => b.OrderID == id).FirstOrDefault();
var products = JsonConvert.DeserializeObject<WooCommerceNET.WooCommerce.Legacy.Order>(getorder.Datas);
//products.status = "completed";
Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("status", "completed");
try
{
var updateproducts = await wc.UpdateOrder(id, products, parameters);
}
catch (Exception ex)
{
return Json("failed", JsonRequestBehavior.AllowGet);
}
////var getmapperopenapi = Mappingopeapi(getorder);
//var createopenshi = CreateOpenShipApi(FedexAuth.access_token, getmapperopenapi);
// var openapiresponse = JsonConvert.DeserializeObject<OpenShipApiResponseModel>(createopenshi);
// var confirmapimapping = Mappingconfirmopeapi(openapiresponse, getorder);
// var confirmsopenship = ConfirmOpenShipApi(FedexAuth.access_token, confirmapimapping);
if (getorder != null)
{
foreach (var item in productId)
{
OrderProcessing ordpro = new OrderProcessing();
ordpro.ProductID = item;
ordpro.OrderID = id;
ordpro.CreatedDate = DateTime.Now;
ordpro.UpdatedDate = DateTime.Now;
ordpro.IsLebelGenerate = true;
ordpro.IsOpenApiDone = true;
ordpro.IsSuccess = true;
ordpro.IsCompleted = true;
db.OrderProcessings.Add(ordpro);
db.SaveChanges();
}
getorder.status = "Complete";
getorder.IsFedex = true;
getorder.UpdatedDate = DateTime.Now;
db.SaveChanges();
}
//var products = JsonConvert.DeserializeObject<Root>(getorder.Datas);
return Json("success", JsonRequestBehavior.AllowGet);
}
}
catch (Exception)
{
return Json("failed", JsonRequestBehavior.AllowGet);
}
//var getauth = FedexAuthorization();
//var FedexAuth = JsonConvert.DeserializeObject<FedExAuthResponse>(getauth);
}
private CreateOpenShipApiRequest Mappingopeapi(DB.Order req)
{
CreateOpenShipApiRequest mapping = new CreateOpenShipApiRequest();
var orderdetails = JsonConvert.DeserializeObject<Root>(req.Datas);
var addresslist = new List<string>();
addresslist.Add(orderdetails.shipping.address_1);
addresslist.Add(orderdetails.shipping.address_2);
var address = new Address
{
streetLines = addresslist,
city = orderdetails.shipping.city,
stateOrProvinceCode = orderdetails.shipping.state,
postalCode = orderdetails.shipping.postcode,
countryCode = orderdetails.shipping.country,
};
var shipper = new Shipper
{
address = address,
contact = new Contact
{
phoneNumber = orderdetails.billing.phone,
personName = orderdetails.shipping.first_name + " " + orderdetails.shipping.last_name,
companyName = orderdetails.shipping.first_name + " " + orderdetails.shipping.last_name,
},
};
var recepaddress = new Address
{
streetLines = addresslist,
city = orderdetails.shipping.city,
stateOrProvinceCode = orderdetails.shipping.state,
postalCode = orderdetails.shipping.postcode,
countryCode = orderdetails.shipping.country,
};
var recipent = new List<Recipient>();
recipent.Add(new Recipient
{
address = recepaddress,
contact = new Contact
{
phoneNumber = orderdetails.billing.phone,
personName = orderdetails.billing.first_name + " " + orderdetails.billing.last_name,
companyName = orderdetails.billing.first_name + " " + orderdetails.billing.last_name,
},
});
var lines = new List<RequestedPackageLineItem>();
foreach (var line in orderdetails.line_items)
{
lines.Add(new RequestedPackageLineItem
{
sequenceNumber = line.product_id.ToString(),
weight = new Weight
{
units = "KG",
value = 2,
},
});
}
mapping.requestedShipment = new RequestedShipment
{
pickupType = "USE_SCHEDULED_PICKUP",
serviceType = "PRIORITY_OVERNIGHT",
packagingType = "YOUR_PACKAGING",
shippingChargesPayment = new ShippingChargesPayment
{
paymentType = "SENDER",
},
recipients = recipent,
shipper = shipper,
requestedPackageLineItems = lines,
};
mapping.accountNumber = new AccountNumber
{
value = "740561073",
};
return mapping;
}
private string FedexAuthorization()
{
var input1 = "grant_type=client_credentials&client_id=l7e152a1bda2ec4448ab5ecf8b5e551929&client_secret=719aa8b700f345f68f907ebe2e4e2c88";
var client = new RestClient("https://apis-sandbox.fedex.com/oauth/token");
var request = new RestRequest();
request.Method = Method.Post;
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", input1, ParameterType.RequestBody);
var response = client.Execute(request);
var content = response.Content;
return content;
}
private string CreateOpenShipApi(string token, CreateOpenShipApiRequest req)
{
var input1 = Newtonsoft.Json.JsonConvert.SerializeObject(req);
var client = new RestClient("https://apis-sandbox.fedex.com/ship/v1/openshipments/create");
var request = new RestRequest();
var tokenval = "Bearer " + token;
request.Method = Method.Post;
request.AddHeader("Authorization", tokenval);
request.AddHeader("x-customer-transaction-id", Guid.NewGuid());
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/x-www-form-urlencoded", input1, ParameterType.RequestBody);
var response = client.Execute(request);
var content = response.Content;
return content;
}
private string ConfirmOpenShipApi(string token, ConfirmOpenApiRequestModel req)
{
var input1 = Newtonsoft.Json.JsonConvert.SerializeObject(req);
var client = new RestClient("https://apis-sandbox.fedex.com/ship/v1/openshipments/");
var request = new RestRequest();
var tokenval = "Bearer " + token;
request.Method = Method.Post;
request.AddHeader("Authorization", tokenval);
request.AddHeader("x-customer-transaction-id", Guid.NewGuid());
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/x-www-form-urlencoded", input1, ParameterType.RequestBody);
var response = client.Execute(request);
var content = response.Content;
return content;
}
private ConfirmOpenApiRequestModel Mappingconfirmopeapi(OpenShipApiResponseModel confirmapi, DB.Order req)
{
ConfirmOpenApiRequestModel mapping = new ConfirmOpenApiRequestModel();
var orderdetails = JsonConvert.DeserializeObject<Root>(req.Datas);
var addresslist = new List<string>();
addresslist.Add(orderdetails.shipping.address_1);
addresslist.Add(orderdetails.shipping.address_2);
var address = new Addresss
{
streetLines = addresslist,
city = orderdetails.shipping.city,
stateOrProvinceCode = orderdetails.shipping.state,
postalCode = orderdetails.shipping.postcode,
countryCode = orderdetails.shipping.country,
};
var printorgin = new PrintedLabelOrigin
{
address = address,
contact = new Contacts
{
phoneNumber = orderdetails.billing.phone,
personName = orderdetails.shipping.first_name + " " + orderdetails.shipping.last_name,
companyName = orderdetails.shipping.first_name + " " + orderdetails.shipping.last_name,
},
};
mapping.labelResponseOptions = "LABEL";
mapping.labelSpecification = new LabelSpecification
{
labelStockType = "PAPER_4X6",
imageType = "PNG",
printedLabelOrigin = printorgin
};
mapping.index = confirmapi.output.transactionShipments.Select(v => v.masterTrackingNumber).FirstOrDefault();
mapping.accountNumber = new AccountNumber
{
value = "740561073",
};
return mapping;
}
[HttpGet]
public async Task<JsonResult> GetOrderbyOrderId(int orderid)
{
using (WooCommerceEntities db = new WooCommerceEntities())
{
var getorder = db.Orders.Where(b => b.OrderID == orderid).FirstOrDefault();
if (getorder != null)
{
var products = JsonConvert.DeserializeObject<Root>(getorder.Datas);
products.status = getorder.status;
return Json(products, JsonRequestBehavior.AllowGet);
}
else
{
return Json("No Record Found", JsonRequestBehavior.AllowGet);
}
}
}
}
}
home controller


Leave a Reply