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;
            }
        }
Ejemplo n.º 5
0
        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;
            }
        }