Пример #1
0
        public async Task <IActionResult> sendpw([FromBody] SendPasswordDto sendpw)
        {
            if (sendpw == null)
            {
                return(BadRequest("No account found!"));
            }
            //check if existing user
            var login_email = _context.Cards;

            //if true, generate a new pw, update db, send to user
            if (login_email.Any(c => c.Email == sendpw.emailto))
            {
                Card   this_card = _context.Cards.Where(c => c.Email == sendpw.emailto).FirstOrDefault();
                var    card_id   = this_card.Id;
                string new_pw    = GenerateRandomString(8);
                string content   = "DoNotReply! <br><br> Dear customer: <br>Your password has been reset.<br>";//"Hi, this is your new password<br>";
                content += "<b>YOUR NEW PASSWORD IS </b> (" + new_pw + ") !!";
                MD5           md5Hash  = MD5.Create();
                byte[]        data     = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(new_pw));
                StringBuilder sBuilder = new StringBuilder();
                for (int i = 0; i < data.Length; i++)
                {
                    sBuilder.Append(data[i].ToString("x2"));
                }
                string md5password = sBuilder.ToString().ToUpper();
                this_card.Password = md5password;

                _context.Cards.Update(this_card);
                await _context.SaveChangesAsync();

                try
                {
                    await _mailservice.sendEmail(sendpw.emailto, "password", content, null);

                    return(Ok(new
                    {
                        pw = new_pw,
                        md5password = md5password
                    }));
                }
                catch (Exception e)
                {
                    return(BadRequest(e));
                }
            }
            else
            {
                return(NotFound());
            };
        }
Пример #2
0
        public async Task <IActionResult> SendEmailToCustomerByOrderId(int orderId, [FromBody] JsonPatchDocument <UpdateShippingStatusDto> patchDoc)
        {
            try
            {
                //step 1. update order status to 'shipping'
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                var orderToUpdate = await _context.Orders.FirstOrDefaultAsync(o => o.Id == orderId);

                if (orderToUpdate == null)
                {
                    return(NotFound("This order does not exist!"));
                }
                var itemToPatch = new UpdateShippingStatusDto
                {
                    Status = orderToUpdate.Status ?? 0
                };
                patchDoc.ApplyTo(itemToPatch, ModelState);
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                orderToUpdate.Status = itemToPatch.Status;
                await _context.SaveChangesAsync();

                //step 2. send email to notice customer
                var cardId   = orderToUpdate.CardId;
                var customer = await _context.Card.FirstOrDefaultAsync(c => c.Id == cardId);

                if (customer == null)
                {
                    return(NotFound());
                }
                var customerEmail = customer.Email;
                _mail.sendEmail(customerEmail, "Shipping", "DoNotReply! <br><br> Dear customer: <br>Your order has been shipped.<br>Please check shipping detail from <a href='http://dollaritems.co.nz/ecom'> dollaritems.co.nz</a>.", null);

                return(Ok("Shipping status updated!"));
            }
            catch (Exception)
            {
                throw;
            }
        }
Пример #3
0
        public async Task <IActionResult> sendPdf(int invoice_number, string customerEmail)
        {
            try
            {
                string host =  // "https://" + HttpContext.Request.Host;
                              _config["ApiUrl"];
                var currentSite = _config["CurrentSite"];


                try
                {
                    using (var client = new HttpClient())
                    {
                        client.BaseAddress = new Uri(host);

                        //var responseTask = client.GetAsync(currentSite + "/api/invoice/pdf/" + invoice_number);
                        var responseTask = client.GetAsync("/gposInv/api/invoice/pdf/" + invoice_number);
                        responseTask.Wait();
                        var getResult = responseTask.Result;
                        if (getResult.IsSuccessStatusCode)
                        {
                            //send order to customer by email
                            var myAttachment = new Attachment(_config["PdfPath"] + invoice_number + ".pdf");
                            await _mail.sendEmail(customerEmail, "Invoice", "DoNotReply! <br><br> Dear customer: <br>Thank you for your order from<a href='http://gpos.gposnz.com/'> gpos.gposnz.com</a><br> Your order invoice is in attachment.", myAttachment);

                            return(Ok("invoice sent!"));
                        }
                    }
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex.Message + "\r\n" + $"Send email error.");
                    return(BadRequest(ex.ToString()));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message + "\r\n" + $"Send email error.");
                return(BadRequest(ex.ToString()));
            }
            return(BadRequest());
        }
        public async Task <IActionResult> sendMessage([FromBody] MessageDto message)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(JsonConvert.SerializeObject(ModelState.Values.Select(e => e.Errors).ToList())));
            }
            try
            {
                var receiverEmail = _config["ContactEmail"];
                /* add to messageboard table*/
                var messageboard = new MessageBoard()
                {
                    Name    = message.Name,
                    Subject = message.Subject,
                    Content = message.Content,
                    Email   = message.Email
                };
                await _context.MessageBoards.AddAsync(messageboard);

                //update database
                await _context.SaveChangesAsync();

                /* send email to supplier */
                var subject = message.Subject;
                var content = "Name :" + message.Name + "<br/>";
                content += "Contact Email : " + message.Email + "<br/><br/>";
                content += message.Content;
                await _mail.sendEmail(receiverEmail, subject, content, null);

                return(Ok());
            }
            catch (Exception)
            {
                throw;
            }
        }
Пример #5
0
        //   [Consumes("application/x-www-form-urlencoded")]
        public async Task <IActionResult> GetPaymentResult([FromQuery] string result, [FromQuery] string action, [FromQuery] string orderId)
        {
            if (result == null)
            {
                return(NotFound());
            }
            if (action != "paymentSuccess")
            {
                return(BadRequest());
            }

            PxPay          WS        = new PxPay(sServiceUrl, PxPayUserId, PxPayKey);
            ResponseOutput outputQs  = WS.ProcessResponse(result);
            string         DpsTxnRef = outputQs.DpsTxnRef;
            string         sSuccess  = outputQs.Success;
            string         returnUrl = outputQs.TxnData1;

            if (returnUrl == "")
            {
                returnUrl = "www.google.com";
            }

            var isProcessed = _context.TranDetail.Any(td => td.Note == DpsTxnRef || td.PaymentRef == DpsTxnRef);

            if (isProcessed)
            {
                // return BadRequest("Order " + orderId + " has been processed!");
                return(Redirect(returnUrl));
            }

            PropertyInfo[] properties = outputQs.GetType().GetProperties();
            foreach (PropertyInfo oPropertyInfo in properties)
            {
                if (oPropertyInfo.CanRead)
                {
                    string name  = oPropertyInfo.Name;
                    string value = (string)oPropertyInfo.GetValue(outputQs, null);
                }
            }

            var order = _context.Orders.Where(o => o.Id == Convert.ToInt32(orderId))
                        .Join(_context.Invoice,
                              o => o.InvoiceNumber,
                              i => i.InvoiceNumber,
                              (o, i) => new { o.InvoiceNumber, o.Id, o.CardId, Total = i.Total ?? 0 }).FirstOrDefault();
            int     cardId        = 0;
            decimal orderAmount   = 0;
            string  customerEmail = "";

            var customer = await _context.Card.FirstOrDefaultAsync(c => c.Id == order.CardId);

            if (customer != null)
            {
                customerEmail = customer.Email;
            }
            if (order != null)
            {
                cardId      = order.CardId;
                orderAmount = order.Total;
            }

            int paymentmethod = _isettings.getIdByPaymentMethod("dps");// 14; // paymentMethodCast(paymentInfo.payment_method);

            if (sSuccess == "1")
            {
                var connect       = _context.Database.GetDbConnection();
                var connectstring = _context.Database.GetDbConnection().ConnectionString;
                connect.Open();
                System.Data.Common.DbCommand dbCommand = connect.CreateCommand();

                //            using (var dbContextTransaction = connect.BeginTransaction())
                {
                    //input payment info
                    try
                    {
                        var note = dbCommand.CreateParameter();
                        note.ParameterName = "@note";
                        note.DbType        = System.Data.DbType.String;
                        note.Value         = DpsTxnRef;     //insert dps ref to tran_detail tables

                        var Payment_Ref = dbCommand.CreateParameter();
                        Payment_Ref.ParameterName = "@payment_ref";
                        Payment_Ref.DbType        = System.Data.DbType.String;
                        Payment_Ref.Value         = DpsTxnRef;

                        var shop_branch = dbCommand.CreateParameter();
                        shop_branch.ParameterName = "@shop_branch";
                        shop_branch.DbType        = System.Data.DbType.Int32;
                        shop_branch.Value         = _isettings.getOnlineShopId();

                        var Amount = dbCommand.CreateParameter();
                        Amount.ParameterName = "@Amount";
                        Amount.DbType        = System.Data.DbType.String;
                        Amount.Value         = order.Total;


                        var nDest = dbCommand.CreateParameter();
                        nDest.ParameterName = "@nDest";
                        nDest.DbType        = System.Data.DbType.Int32;
                        nDest.Value         = "1116";

                        var staff_id = dbCommand.CreateParameter();
                        staff_id.ParameterName = "@staff_id";
                        staff_id.DbType        = System.Data.DbType.Int32;
                        staff_id.Value         = order.CardId.ToString();

                        var card_id = dbCommand.CreateParameter();
                        card_id.ParameterName = "@card_id";
                        card_id.DbType        = System.Data.DbType.Int32;
                        card_id.Value         = order.CardId.ToString();

                        var payment_method = dbCommand.CreateParameter();
                        payment_method.ParameterName = "@payment_method";
                        payment_method.DbType        = System.Data.DbType.Int32;
                        payment_method.Value         = paymentmethod;

                        var invoice_number = dbCommand.CreateParameter();
                        invoice_number.ParameterName = "@invoice_number";
                        invoice_number.DbType        = System.Data.DbType.Int32;
                        invoice_number.Value         = Convert.ToInt32(order.InvoiceNumber);

                        var amountList = dbCommand.CreateParameter();
                        amountList.ParameterName = "@amountList";
                        amountList.DbType        = System.Data.DbType.String;
                        amountList.Value         = orderAmount;


                        var return_tran_id = dbCommand.CreateParameter();
                        return_tran_id.ParameterName = "@return_tran_id";
                        return_tran_id.Direction     = System.Data.ParameterDirection.Output;
                        return_tran_id.DbType        = System.Data.DbType.Int32;

                        var return_exist_trans = dbCommand.CreateParameter();
                        return_exist_trans.ParameterName = "@return_exist_trans";
                        return_exist_trans.Direction     = System.Data.ParameterDirection.Output;
                        return_exist_trans.DbType        = System.Data.DbType.Boolean;

                        dbCommand.Parameters.Add(note);
                        dbCommand.Parameters.Add(Payment_Ref);
                        dbCommand.Parameters.Add(shop_branch);
                        dbCommand.Parameters.Add(Amount);
                        dbCommand.Parameters.Add(staff_id);
                        dbCommand.Parameters.Add(card_id);
                        dbCommand.Parameters.Add(payment_method);
                        dbCommand.Parameters.Add(invoice_number);
                        dbCommand.Parameters.Add(amountList);
                        dbCommand.Parameters.Add(return_tran_id);
                        dbCommand.Parameters.Add(return_exist_trans);
                        dbCommand.CommandText = "eznz_payment";
                        dbCommand.CommandType = System.Data.CommandType.StoredProcedure;
                        var obj = await dbCommand.ExecuteNonQueryAsync();


                        //if trans exists, do not send invoice and order
                        string sExist_trans = return_exist_trans.Value.ToString();//dbCommand.Parameters["@return_exist_trans"].Value.ToString();
                        if (sExist_trans == null || sExist_trans == "0" || sExist_trans == "")
                        {
                            try
                            {
                                //create invoice pdf
                                var    host        = "http://" + HttpContext.Request.Host;
                                string host1       = _config["ApiUrl"]; // "http://api171.gpos.nz";
                                var    currentSite = _config["CurrentSite"];
                                try
                                {
                                    using (var client = new HttpClient())
                                    {
                                        client.BaseAddress = new Uri(host1);

                                        var responseTask = client.GetAsync(currentSite + "/api/invoice/pdf/" + orderId);
                                        responseTask.Wait();
                                        var getResult = responseTask.Result;
                                        if (getResult.IsSuccessStatusCode)
                                        {
                                            //send order to customer by email
                                            var myAttachment = new Attachment(_config["PdfPath"] + orderId + ".pdf");
                                            _mail.sendEmail(customerEmail, "Invoice", "DoNotReply! <br><br> Dear customer: <br>Thank you for your order from<a href='http://dollaritems.co.nz/ecom'> dollaritems.co.nz</a><br> Your order invoice is in attachment.", myAttachment);
                                        }
                                    }
                                }
                                catch (Exception)
                                {
                                    throw;
                                }

                                //if payment susseed, send order to supplier
                                try
                                {
                                    using (var client = new HttpClient())
                                    {
                                        client.BaseAddress = new Uri(host1);

                                        var responseTask = client.GetAsync(currentSite + "/api/order/SendOrderToSupplier/" + orderId);
                                        responseTask.Wait();
                                        var getResult = responseTask.Result;
                                        if (getResult.IsSuccessStatusCode)
                                        {
                                            //                      return Ok("order sent!");
                                        }
                                    }
                                }
                                catch (Exception)
                                {
                                    throw;
                                }
                            }
                            catch (Exception)
                            {
                                throw;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        //                    dbContextTransaction.Rollback();
                        return(BadRequest(ex));
                    }
                    finally
                    {
                        connect.Close();
                        connect.Dispose();
                    }
                }
            }
            return(Redirect(returnUrl));
        }
        //   [Consumes("application/x-www-form-urlencoded")]
        public async Task <IActionResult> GetPaymentResult([FromQuery] string result, [FromQuery] string action, [FromQuery] string orderId)
        {
            PxPay          WS        = new PxPay(sServiceUrl, PxPayUserId, PxPayKey);
            ResponseOutput outputQs  = WS.ProcessResponse(result);
            string         DpsTxnRef = outputQs.DpsTxnRef;
            string         sSuccess  = outputQs.Success;
            string         returnUrl = outputQs.TxnData1;

            if (returnUrl == "")
            {
                returnUrl = "www.google.com";
            }

            if (result == null)
            {
                return(NotFound());
            }
            if (action != "paymentSuccess")
            {
                return(BadRequest("Sorry, payment unsuccessful. Please try later. "));
            }


            //1. Check if payment info record
            if (await _context.DpsOutput.AnyAsync(d => d.OrderId.ToString() == orderId)) //&& d.TxnId == outputQs.TxnId))
            {
                //if info recorded
            }
            else
            {
                //Record dps payment status
                var connectionString = _config.GetConnectionString("appContext");//_context.Database.GetDbConnection().ConnectionString;
                var conn             = new SqlConnection(connectionString);
                conn.Open();
                var comm = new SqlCommand("insert into DpsOutput(Order_Id, valid, Amount_Settlement, Auth_Code,Card_Name,CardNumber,Date_Expiry,Dps_Txn_Ref,Success," +
                                          "Response_Text,Dps_Billing_Id,Card_Holder_Name,Currency_Settlement,Txn_Data1,Txn_Data2,Txn_Data3,Txn_Type, Currency_Input,Merchant_Reference," +
                                          "Client_Info,Txn_Id, Email_Address,Billing_Id,Txn_Mac )values('" + orderId + "','" + outputQs.valid + "', " +
                                          "                                                                                   '" + outputQs.AmountSettlement + "', " +
                                          "                                                                                   '" + outputQs.AuthCode + "'," +
                                          "                                                                                   '" + outputQs.CardName + "'," +
                                          "                                                                                   '" + outputQs.CardNumber + "', " +
                                          "                                                                   '" + outputQs.DateExpiry + "', " +
                                          "                                                   '" + outputQs.DpsTxnRef + "', " +
                                          "                                   '" + outputQs.Success + "', " +
                                          "                   '" + outputQs.ResponseText + "', " +
                                          "                                                                                   '" + outputQs.DpsBillingId + "', " +
                                          "                                                                                   '" + outputQs.CardHolderName + "', " +
                                          "                                                                                   '" + outputQs.CurrencySettlement + "', " +
                                          "                                                                                   '" + outputQs.TxnData1 + "', " +
                                          "                                                                                   '" + outputQs.TxnData2 + "', " +
                                          "                                                                                   '" + outputQs.TxnData3 + "', " +
                                          "                                                                                   '" + outputQs.TxnType + "', " +
                                          "                                                                                   '" + outputQs.CurrencyInput + "', " +
                                          "                                                                                   '" + outputQs.MerchantReference + "', " +
                                          "                                                                                   '" + outputQs.ClientInfo + "', " +
                                          "                                                                                   '" + outputQs.TxnId + "', " +
                                          "                                                                                   '" + outputQs.EmailAddress + "', " +
                                          "                                                                                   '" + outputQs.BillingId + "', " +
                                          "                                                                                   '" + outputQs.TxnMac + "'" +
                                          "                                                                                        )");

                try
                {
                    comm.Connection = conn;
                    comm.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex.Message + "\r\n" + $"Record dps payment info error, order id: {orderId}.");
                    return(BadRequest(ex.Message));
                }
                finally
                {
                    conn.Close();
                }
            }


            var isProcessed = _context.TranDetail.Any(td => td.Note == DpsTxnRef || td.PaymentRef == DpsTxnRef);

            if (isProcessed)
            {
                // return BadRequest("Order " + orderId + " has been processed!");
                return(Ok(returnUrl));
            }

            PropertyInfo[] properties = outputQs.GetType().GetProperties();
            foreach (PropertyInfo oPropertyInfo in properties)
            {
                if (oPropertyInfo.CanRead)
                {
                    string name  = oPropertyInfo.Name;
                    string value = (string)oPropertyInfo.GetValue(outputQs, null);
                }
            }

            var order = _context.Orders.Where(o => o.Id == Convert.ToInt32(orderId))
                        .Join(_context.Invoices,
                              o => o.InvoiceNumber,
                              i => i.InvoiceNumber,
                              (o, i) => new { o.InvoiceNumber, o.Id, o.CardId, Total = i.Total ?? 0 }).FirstOrDefault();
            int     cardId        = 0;
            decimal orderAmount   = 0;
            string  customerEmail = "";

            var customer = await _context.Cards.FirstOrDefaultAsync(c => c.Id == order.CardId);

            if (customer != null)
            {
                customerEmail = customer.Email;
            }
            if (order != null)
            {
                cardId      = order.CardId;
                orderAmount = order.Total;
            }

            int paymentmethod = _isettings.getIdByPaymentMethod("dps");// 14; // paymentMethodCast(paymentInfo.payment_method);

            if (sSuccess == "1")
            {
                var invoiceExists = await _context.TranInvoices.AnyAsync(ti => ti.InvoiceNumber == order.InvoiceNumber);

                if (invoiceExists)
                {
                    return(BadRequest($"This order {orderId} has already been processed!"));
                }
                var connect       = _context.Database.GetDbConnection();
                var connectstring = _context.Database.GetDbConnection().ConnectionString;
                connect.Open();
                System.Data.Common.DbCommand dbCommand = connect.CreateCommand();

                //              using (var dbContextTransaction = connect.BeginTransaction())
                {
                    //input payment info
                    try
                    {
                        var note = dbCommand.CreateParameter();
                        note.ParameterName = "@note";
                        note.DbType        = System.Data.DbType.String;
                        note.Value         = DpsTxnRef;     //insert dps ref to tran_detail tables

                        var Payment_Ref = dbCommand.CreateParameter();
                        Payment_Ref.ParameterName = "@payment_ref";
                        Payment_Ref.DbType        = System.Data.DbType.String;
                        Payment_Ref.Value         = DpsTxnRef;

                        var shop_branch = dbCommand.CreateParameter();
                        shop_branch.ParameterName = "@shop_branch";
                        shop_branch.DbType        = System.Data.DbType.Int32;
                        shop_branch.Value         = _isettings.getOnlineShopId();

                        var Amount = dbCommand.CreateParameter();
                        Amount.ParameterName = "@Amount";
                        Amount.DbType        = System.Data.DbType.String;
                        Amount.Value         = order.Total;


                        var nDest = dbCommand.CreateParameter();
                        nDest.ParameterName = "@nDest";
                        nDest.DbType        = System.Data.DbType.Int32;
                        nDest.Value         = "1116";

                        var staff_id = dbCommand.CreateParameter();
                        staff_id.ParameterName = "@staff_id";
                        staff_id.DbType        = System.Data.DbType.Int32;
                        staff_id.Value         = order.CardId.ToString();

                        var card_id = dbCommand.CreateParameter();
                        card_id.ParameterName = "@card_id";
                        card_id.DbType        = System.Data.DbType.Int32;
                        card_id.Value         = order.CardId.ToString();

                        var payment_method = dbCommand.CreateParameter();
                        payment_method.ParameterName = "@payment_method";
                        payment_method.DbType        = System.Data.DbType.Int32;
                        payment_method.Value         = paymentmethod;

                        var invoice_number = dbCommand.CreateParameter();
                        invoice_number.ParameterName = "@invoice_number";
                        invoice_number.DbType        = System.Data.DbType.Int32;
                        invoice_number.Value         = Convert.ToInt32(order.InvoiceNumber);

                        var amountList = dbCommand.CreateParameter();
                        amountList.ParameterName = "@amountList";
                        amountList.DbType        = System.Data.DbType.String;
                        amountList.Value         = orderAmount;


                        var return_tran_id = dbCommand.CreateParameter();
                        return_tran_id.ParameterName = "@return_tran_id";
                        return_tran_id.Direction     = System.Data.ParameterDirection.Output;
                        return_tran_id.DbType        = System.Data.DbType.Int32;

                        var return_exist_trans = dbCommand.CreateParameter();
                        return_exist_trans.ParameterName = "@return_exist_trans";
                        return_exist_trans.Direction     = System.Data.ParameterDirection.Output;
                        return_exist_trans.DbType        = System.Data.DbType.Boolean;

                        dbCommand.Parameters.Add(note);
                        dbCommand.Parameters.Add(Payment_Ref);
                        dbCommand.Parameters.Add(shop_branch);
                        dbCommand.Parameters.Add(Amount);
                        dbCommand.Parameters.Add(staff_id);
                        dbCommand.Parameters.Add(card_id);
                        dbCommand.Parameters.Add(payment_method);
                        dbCommand.Parameters.Add(invoice_number);
                        dbCommand.Parameters.Add(amountList);
                        dbCommand.Parameters.Add(return_tran_id);
                        dbCommand.Parameters.Add(return_exist_trans);
                        dbCommand.CommandText = "eznz_payment";
                        dbCommand.CommandType = System.Data.CommandType.StoredProcedure;
                        var obj = await dbCommand.ExecuteNonQueryAsync();


                        //if trans exists, do not send invoice and order
                        string sExist_trans = return_exist_trans.Value.ToString();//dbCommand.Parameters["@return_exist_trans"].Value.ToString();
                        if (sExist_trans == null || sExist_trans == "0" || sExist_trans == "")
                        {
                            try
                            {
                                //create invoice pdf
                                var    host        = "http://" + HttpContext.Request.Host;
                                string host1       = _config["ApiUrl"]; // "http://api171.gpos.nz";
                                var    currentSite = _config["CurrentSite"];
                                var    PdfUrl      = _config["PdfUrl"];
                                try
                                {
                                    //ConversionOptions options = new ConversionOptions(PageSize.A4, PageOrientation.Portrait, 5.0f);
                                    //var directory = _config["PdfPath"] + "//invoice//" + order.InvoiceNumber + ".pdf";
                                    //try
                                    //{
                                    //    // Set Metadata for the PDF
                                    //    options.Author = "Myself";
                                    //    options.Title = "My Webpage";
                                    //    // Set Header and Footer text
                                    //    options.Header = "";
                                    //    options.Footer = "";
                                    //    Converter.Convert(new Uri(_config["PdfUrl"] + order.InvoiceNumber), directory, options);
                                    //    //send pdf to customer
                                    //    var myAttachment = new Attachment(_config["PdfPath"] + "//invoice//" + order.InvoiceNumber + ".pdf");
                                    //    await _mail.sendEmail(customerEmail, "Invoice", "DoNotReply! <br><br> Dear customer: <br>Thank you for your order.</a><br> Your order invoice is in attachment.", myAttachment);
                                    //}
                                    //catch (Exception ex)
                                    //{
                                    //    _logger.LogError(ex.Message + "\r\n" + $"Send pdf to customer order unsuccessful, order id: {orderId}.");
                                    //    return BadRequest(ex.Message);
                                    //}

                                    using (var client = new HttpClient())
                                    {
                                        var data = new PdfDto()
                                        {
                                            InvoiceNumber = order.InvoiceNumber ?? 0,
                                            Url           = PdfUrl + order.InvoiceNumber
                                        };
                                        var myContent   = JsonConvert.SerializeObject(data);
                                        var buffer      = System.Text.Encoding.UTF8.GetBytes(myContent);
                                        var byteContent = new ByteArrayContent(buffer);
                                        byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                                        client.BaseAddress = new Uri(host1);
//										var responseTask = client.GetAsync(currentSite + "/api/invoice/pdf/" + orderId);
                                        var responseTask = client.PostAsync(currentSite + "/api/invoice/pdf", byteContent);
                                        responseTask.Wait();

                                        var getResult = responseTask.Result;
                                        if (getResult.IsSuccessStatusCode)
                                        {
                                            //send order to customer by email
                                            var myAttachment = new Attachment(_config["PdfPath"] + "//invoice//" + order.InvoiceNumber + ".pdf");
                                            await _mail.sendEmail(customerEmail, "Invoice", "DoNotReply! <br><br> Dear customer: <br>Thank you for your order from<a href='http://dollaritems.co.nz/ecom'> dollaritems.co.nz</a><br> Your order invoice is in attachment.", myAttachment);
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    _logger.LogError(ex.Message + "\r\n" + $"Send pdf to customer order unsuccessful, order id: {orderId}.");
                                    return(BadRequest(ex.Message));
                                }

                                var manage = _config["Management"];
                                if (manage == "true")
                                {
                                    //if payment susseed, send order to supplier
                                    try
                                    {
                                        using (var client = new HttpClient())
                                        {
                                            client.BaseAddress = new Uri(host1);

                                            var responseTask = client.GetAsync(currentSite + "/api/order/SendOrderToSupplier/" + orderId);
                                            responseTask.Wait();
                                            var getResult = responseTask.Result;
                                            if (getResult.IsSuccessStatusCode)
                                            {
                                                //set a key, if order send to supplier successfully
                                                var currentOrderDpsOutput = await _context.DpsOutput.FirstOrDefaultAsync(d => d.OrderId.ToString() == orderId);

                                                if (currentOrderDpsOutput == null)
                                                {
                                                    _logger.LogError($"Cannot find this order, when send order to supplier, order id: {orderId}.");
                                                    return(NotFound());
                                                }
                                                currentOrderDpsOutput.OrderSent = true;
                                                _context.DpsOutput.Update(currentOrderDpsOutput);
                                                await _context.SaveChangesAsync();
                                            }
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        _logger.LogError(ex.Message + "\r\n" + $"Send order to supplier unsuccessful, order id: {orderId}.");
                                        BadRequest(ex);
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                _logger.LogError(ex.Message + "\r\n" + $"Send order to supplier unsuccessful, order id: {orderId}.");
                                BadRequest(ex.Message);
                            }
                        }
                        else
                        {
                            _logger.LogError($"Transcation for this order exists, order id: {orderId}.");
                        }
                    }
                    catch (Exception ex)
                    {
                        //                    dbContextTransaction.Rollback();
                        _logger.LogError(ex.Message + "\r\n" + $"Insert transaction into Db unsuccessful, order id: {orderId}.");
                        return(BadRequest(ex));
                    }
                    finally
                    {
                        connect.Close();
                        connect.Dispose();
                    }
                }
            }
            else
            {
                _logger.LogError($"Payment for order {orderId} unsuccessful.");
            }
            return(Ok(returnUrl));
        }