public JsonResult MultiLabelPrinting(string ShopUrl, string Instruction, float Weight, string Labels, string Reference, string FullDetails) { //DB connection to query store details DbEngine newDB = new DbEngine(); //get store details with provided url StoreRecord storeDetails = newDB.GetShopRecord(ShopUrl); //Labeldetails entity to query Labeldetails label = new Labeldetails(); ///populate store details for query label.apiKey = storeDetails.FastwayApiKey; label.fromCompany = storeDetails.StoreName; if (storeDetails.Phone != "" && storeDetails.Phone != null && storeDetails.Phone != "null") { label.fromPhone = storeDetails.Phone; } label.fromAddress1 = storeDetails.StoreAddress1; label.fromCity = storeDetails.Suburb; label.fromPostcode = storeDetails.Postcode; label.weight = Math.Ceiling(Weight * 100) / 100; label.specialInstruction1 = Instruction; label.countryCode = storeDetails.CountryCode; //parsing the labels addresses details JArray ls = JArray.Parse(Labels); JArray fds = JArray.Parse(FullDetails); List <string> references = Reference.Split(',').ToList(); List <Labeldetails> labelDetails = new List <Labeldetails>(); for (var i = 0; i < ls.Count; i++) { if (ls[i]["BaseLabel"].ToString() != "") { Labeldetails l = label; if (ls[i]["Company"].ToString() != "" && ls[i]["Company"].ToString() != null && ls[i]["Company"].ToString() != "null") { l.toCompany = ls[i]["Company"].ToString(); l.toContactName = ls[i]["Name"].ToString(); } else { l.toCompany = ls[i]["Name"].ToString(); } if (references.Count > 0) { l.reference = references[i]; } l.toAddress1 = ls[i]["Address1"].ToString(); l.toAddress2 = ls[i]["Address2"].ToString(); l.toPostcode = ls[i]["Postcode"].ToString(); l.toCity = ls[i]["Suburb"].ToString(); l.labelColour = ls[i]["Service"].ToString(); l.labelNumber = ls[i]["BaseLabel"].ToString(); l.ruralNumber = ls[i]["RuralLabel"].ToString(); l.toRfName = ls[i]["Destination"].ToString(); labelDetails.Add(l); } } try { PdfDocument doc = new PdfDocument(); if (labelDetails.Count > 0) { FastwayAPI getBase = new FastwayAPI(); doc = getBase.PrintMultipleLabels(labelDetails, doc); } MemoryStream pdfStream = new MemoryStream(); doc.Save(pdfStream, false); byte[] pdfBytes = pdfStream.ToArray(); var pdfString = Convert.ToBase64String(pdfBytes); return(Json(new {//return status success PdfBase64Stream = pdfString })); } catch (Exception e) { //error return(Json(new { //return status success Error = e.Message })); } }
public JsonResult MultiLabelQuery(string ShopUrl, string Address1, string Address2, string Suburb, string Postcode, float Weight, string Instruction, string Type) { //DB connection to query store details DbEngine newDB = new DbEngine(); //get store details with provided url StoreRecord storeDetails = newDB.GetShopRecord(ShopUrl); //Labeldetails entity to query Labeldetails label = new Labeldetails(); //populate store details for query label.apiKey = storeDetails.FastwayApiKey; label.fromAddress1 = storeDetails.StoreAddress1; label.fromCity = storeDetails.Suburb; label.fromPostcode = storeDetails.Postcode; //populate delivery details for query label.toAddress1 = Address1; label.toAddress2 = Address2; label.toCity = Suburb; label.toPostcode = Postcode; //populate parcel details for query label.weight = (double)Weight; label.countryCode = storeDetails.CountryCode; List <string> labelNumbers = new List <string>(); string destRF = ""; try { if (Type != "Parcel") { if (Weight > 5) { labelNumbers.Add("No Service Found"); } else { label.specialInstruction1 = Instruction; //new fastwayAPI object to query FastwayAPI getLabel = new FastwayAPI(); //get label with V2 method Labeldetails l = new Labeldetails(); if (Type == "SAT-NAT-A3") { List <UsableLabel> services = getLabel.ServiceQuery(label); if (services.First().BaseLabelColour == "BROWN") { label.labelColour = services[services.FindIndex(a => a.BaseLabelColour == "SAT-LOC-A3")].BaseLabelColour; } else { label.labelColour = Type; } } else { label.labelColour = Type; } l = getLabel.LabelQueryV2(label); labelNumbers.Add(l.labelNumber); labelNumbers.Add(l.ruralNumber); destRF = l.toRfName; } } else { //new fastwayAPI object to query FastwayAPI getLabel = new FastwayAPI(); //get label with V2 method Labeldetails l = new Labeldetails(); List <UsableLabel> services = getLabel.ServiceQuery(label); label.labelColour = services.First().BaseLabelColour; l = getLabel.LabelQueryV2(label); labelNumbers.Add(l.labelNumber); labelNumbers.Add(l.ruralNumber); destRF = l.toRfName; } } catch (Exception) { labelNumbers.Add("No Service Found"); } return(Json(new {//return details about availabel service BaseLabel = labelNumbers[0], RuralLabel = labelNumbers[1], Service = label.labelColour, DestRF = destRF })); }
public JsonResult LabelQuery(string ShopUrl, string Address1, string Address2, string Suburb, string Postcode, string Region, float Weight, string Type) { //DB connection to query store details DbEngine newDB = new DbEngine(); //get store details with provided url StoreRecord storeDetails = newDB.GetShopRecord(ShopUrl); //Labeldetails entity to query Labeldetails label = new Labeldetails(); //populate store details for query label.apiKey = storeDetails.FastwayApiKey; label.fromAddress1 = storeDetails.StoreAddress1; label.fromCity = storeDetails.Suburb; label.fromPostcode = storeDetails.Postcode; //populate delivery details for query label.toAddress1 = Address1; label.toAddress2 = Address2; label.toCity = Suburb; label.toPostcode = Postcode; //populate parcel details for query label.weight = (double)Weight; label.countryCode = storeDetails.CountryCode; //FastwayAPI object for service query FastwayAPI newApiCall = new FastwayAPI(); //Call fastway API and receive back a list of available service List <UsableLabel> services = newApiCall.ServiceQuery(label); //UsableLabel entity to respond UsableLabel service = new UsableLabel(); try { if (services.First().CostexgstTotalChargeToEndUser != 0) { //if no service found if (services.Count == 1 && Type != "Parcel") { //no service and type was "Parcel" return(Json(new { //return an Error code Error = "No Service Available" })); } else//service(s) available { if (Type == "Parcel") {//type was "Parcel", assign parcel option to response json service = services.First(); } else {//type was NOT "Parcel", get service based on value of Type if (Type == "SAT-NAT-A3") { if (services.First().BaseLabelColour == "BROWN") { service = services[services.FindIndex(a => a.BaseLabelColour == "SAT-LOC-A3")]; } else { service = services[services.FindIndex(a => a.BaseLabelColour == Type)]; } } else { service = services[services.FindIndex(a => a.BaseLabelColour == Type)]; } } return(Json(new {//return details about availabel service BaseLabelColour = service.BaseLabelColour, TotalCost = service.CostexgstTotalChargeToEndUser, Rural = service.RuralLabelCostExgst > 0 ? true : false, Excess = service.ExcessLabelCount, Saturday = services.First().Saturday })); } } else { return(Json(new {//Error code from Fastway NOTE: will need to handle different type of error HERE Error = "No Service Available" })); } } catch (Exception e) { //general error code Note: will need to handle these throw e; } }
public JsonResult LabelPrintingV2(string ShopUrl, string DeliveryDetails, string PackagingDetails, bool Saturday) { //labeldetails object to call Fastway API Labeldetails label = new Labeldetails(); //DB connection to query sender details DbEngine conn = new DbEngine(); label.apiKey = conn.GetStringValues(ShopUrl, "FastwayApiKey"); //assign sender details label.fromAddress1 = conn.GetStringValues(ShopUrl, "StoreAddress1"); label.fromPostcode = conn.GetStringValues(ShopUrl, "Postcode"); label.fromCity = conn.GetStringValues(ShopUrl, "Suburb"); label.fromCompany = conn.GetStringValues(ShopUrl, "StoreName"); label.countryCode = conn.GetIntergerValues(ShopUrl, "CountryCode"); label.fromPhone = conn.GetStringValues(ShopUrl, "Phone"); //parse delivery details JObject d = JObject.Parse(DeliveryDetails); //assign receiver details label.toAddress1 = d["Address1"].ToString(); label.toAddress2 = d["Address2"].ToString(); label.toPostcode = d["Postcode"].ToString(); label.toCity = d["Suburb"].ToString(); label.specialInstruction1 = d["SpecialInstruction1"].ToString(); if (d["Company"].ToString() != "" && d["Company"].ToString() != "null" && d["Company"].ToString() != null) { label.toCompany = d["Company"].ToString(); label.toContactName = d["ContactName"].ToString(); } else { label.toCompany = d["ContactName"].ToString(); } label.toContactPhone = d["ContactPhone"].ToString(); //pull through email address for expect messaging label.toEmail = d["ContactEmail"].ToString(); //parse packaging details JArray p = JArray.Parse(PackagingDetails); //list of labelDetails that hold the labels being used List <Labeldetails> labelDetails = new List <Labeldetails>(); List <string> labelNumbers = new List <string>(); for (int i = 0; i < p.Count; i++) { for (int j = 0; j < (int)p[i]["Items"]; j++) { //package details label.weight = (double)p[i]["Weight"]; label.labelColour = p[i]["BaseLabel"].ToString(); label.reference = p[i]["Reference"].ToString(); label.saturday = Saturday; //new fastwayAPI object to query FastwayAPI getLabel = new FastwayAPI(); //get label with V2 method Labeldetails l = new Labeldetails(); l = getLabel.LabelQueryV2(label); labelDetails.Add(l); labelNumbers.Add(l.labelNumber); } } PdfDocument doc = new PdfDocument(); if (labelDetails.Count > 0) { FastwayAPI getBase = new FastwayAPI(); doc = getBase.PrintLabels(labelDetails, doc); } MemoryStream pdfStream = new MemoryStream(); doc.Save(pdfStream, false); byte[] pdfBytes = pdfStream.ToArray(); var pdfString = Convert.ToBase64String(pdfBytes); try { return(Json(new {//return status success Labels = String.Join(",", labelNumbers), PdfBase64Stream = pdfString })); } catch (Exception e) {//error throw e; } }
public JsonResult LabelPrinting(string ShopUrl, string DeliveryDetails, string PackagingDetails) { //labeldetails object to call Fastway API Labeldetails label = new Labeldetails(); //DB connection to query sender details DbEngine conn = new DbEngine(); label.apiKey = conn.GetStringValues(ShopUrl, "FastwayApiKey"); //assign sender details label.fromAddress1 = conn.GetStringValues(ShopUrl, "StoreAddress1"); label.fromPostcode = conn.GetStringValues(ShopUrl, "Postcode"); label.fromCity = conn.GetStringValues(ShopUrl, "Suburb"); label.fromCompany = conn.GetStringValues(ShopUrl, "StoreName"); label.countryCode = conn.GetIntergerValues(ShopUrl, "CountryCode"); //parse delivery details JObject d = JObject.Parse(DeliveryDetails); //assign receiver details label.toAddress1 = d["Address1"].ToString(); label.toPostcode = d["Postcode"].ToString(); label.toCity = d["Suburb"].ToString(); if (d["Company"].ToString() != "") { label.toCompany = d["Company"].ToString(); label.toContactName = d["ContactName"].ToString(); } else { label.toCompany = d["ContactName"].ToString(); } label.toContactPhone = d["ContactPhone"].ToString(); label.toEmail = d["ContactEmail"].ToString(); //parse packaging details JArray p = JArray.Parse(PackagingDetails); //object to store labelNumbers List <string> labelNumbers = new List <string>(); //TEST label with details //List<Labeldetails> labelDetails = new List<Labeldetails>(); for (int i = 0; i < p.Count; i++) { //loop through packaging details to query Fastway API and get label numbers //TEST details for (int j = 0; j < (int)p[i]["Items"]; j++) { //repeat this steps for number of item on each parcel type //package details label.weight = (double)p[i]["Weight"]; label.labelColour = p[i]["BaseLabel"].ToString(); //new fastwayAPI object to query FastwayAPI getLabel = new FastwayAPI(); //a string object to hold label numbers string labelNumber = getLabel.LabelQuery(label); //TEST details, a LabelDetails oblect to hold labelDetails //Labeldetails details = getLabel.LabelsQueryWithDetails(label); //NOTE: reference //label.reference = p["Reference"].ToString(); if (labelNumber.Contains(',')) {//if rural label exist List <string> labelNumbersList = labelNumber.Split(',').ToList(); foreach (string st in labelNumbersList) {//add multiple labels to result labelNumbers.Add(st); } } else {//only one label labelNumbers.Add(labelNumber); } //TEST details //labelDetails.Add(details); //labelNumbers.Add(details.labelNumber); } } //new fastway api to printlabel FastwayAPI printLabel = new FastwayAPI(); string pdfString = printLabel.PrintLabelNumbersPdf(labelNumbers, label.apiKey); //TEST details //string pdfString = printLabel.PrintLabelWithDetails(labelDetails, label.apiKey); try { return(Json(new {//returning results to front-end Labels = String.Join(",", labelNumbers), PdfBase64Stream = pdfString //Test print type image //JpegString = jpegString })); } catch (Exception e) {//NOTE: manage exception if required throw e; } }