using NetsuiteAPI.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using
System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Mvc;
namespace NetsuiteAPI.Controllers
{
public class Postqueryv2Controller : Controller
{
TempdataEntities db = new TempdataEntities();
// GET: Postqueryv2
public ActionResult Index()
{
return View();
}
static string GenerateOAuthHeader(string url, string method, string consumerKey, string consumerSecret, string tokenKey, string tokenSecret)
{
string oauthNonce = Guid.NewGuid().ToString("N");
string oauthTimestamp = ((int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds).ToString();
// Collect OAuth parameters
var parameters = new StringBuilder();
parameters.Append($"oauth_consumer_key={Uri.EscapeDataString(consumerKey)}&");
parameters.Append($"oauth_nonce={Uri.EscapeDataString(oauthNonce)}&");
parameters.Append($"oauth_signature_method=HMAC-SHA256&");
parameters.Append($"oauth_timestamp={Uri.EscapeDataString(oauthTimestamp)}&");
parameters.Append($"oauth_token={Uri.EscapeDataString(tokenKey)}&");
parameters.Append($"oauth_version=1.0");
// Construct the base string
string baseString = $"{method.ToUpper()}&{Uri.EscapeDataString(url)}&{Uri.EscapeDataString(parameters.ToString())}";
// Generate the signature
string signature = GenerateSignature(baseString, consumerSecret, tokenSecret);
// Construct the OAuth header
string oauthHeader = $"OAuth realm=\"{Uri.EscapeDataString("[ProductID]")}\",oauth_consumer_key=\"{Uri.EscapeDataString(consumerKey)}\",oauth_token=\"{Uri.EscapeDataString(tokenKey)}\",oauth_signature_method=\"HMAC-SHA256\",oauth_timestamp=\"{Uri.EscapeDataString(oauthTimestamp)}\",oauth_nonce=\"{Uri.EscapeDataString(oauthNonce)}\",oauth_version=\"1.0\",oauth_signature=\"{Uri.EscapeDataString(signature)}\"";
return oauthHeader;
}
static string GenerateSignature(string baseString, string consumerSecret, string tokenSecret)
{
string key = $"{Uri.EscapeDataString(consumerSecret)}&{Uri.EscapeDataString(tokenSecret)}";
using (var hmac = new HMACSHA256(Encoding.ASCII.GetBytes(key)))
{
byte[] hashBytes = hmac.ComputeHash(Encoding.ASCII.GetBytes(baseString));
return Convert.ToBase64String(hashBytes);
}
}
public ActionResult ContactAsync()
{
ViewBag.Message = "Your application description page.";
return View();
}
public async Task
ActionResult ContactAsynce(InventoryT model)
{
ViewBag.Message = "Your contact page.";
string accountId = "[ProductID]";
string consumerKey = "9d9ab41910b9e61c2a080daf02ba8e2cc8f0cfdace1d054cbd1853c0eda819fb";
string consumerSecret = "aa3e39c762d525817ad6725b1a2b653d856fdf66140b8c583f355e309e4dbb2e";
string tokenId = "3d49bead592654b05b4058526e1713ea723285b0c8bbc889f3a6d354c7db30a1";
string tokenSecret = "e39d910ac0faba5cd5152783963c389f6e2b86f6e17c6a484932b02cf9528530";
// NetSuite REST API endpoint
var trmp = db.GetUrls.Where(x=>x.Id ==6).FirstOrDefault();
string encodedLimit = System.Web.HttpUtility.UrlEncode("1000");
string encodedOffset = System.Web.HttpUtility.UrlEncode("241000");
string apiUrl = "
https://[ProductID].
suitetalk.api.netsuite.com/services/rest/record/v1/cashSale?limit=1000&offset=241000";
string Location = model.Location;
string ToLocation = model.ToLocation;
string ItemName = model.ItemName;
double ItemQTY = model.ItemQTY;
using (var client = new HttpClient())
{
// Implement OAuth 1.0a signing logic here
string oauthHeader = GenerateOAuthHeader(apiUrl, "GET", consumerKey, consumerSecret, tokenId, tokenSecret);
// Set up the request
var request = new HttpRequestMessage(HttpMethod.Get, apiUrl);
//request.Content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");
request.Headers.Add("Authorization", oauthHeader);
// Send the request
var response = await client.SendAsync(request);
// Handle the response
if (response.IsSuccessStatusCode)
{
string responseBody = await response.Content.ReadAsStringAsync();
TempData["Nicesucc"] = "sdsd";
Console.WriteLine("Inventory transfer successful.");
}
else
{
Console.WriteLine($"Error: {response.StatusCode} - {response.ReasonPhrase}");
}
}
return RedirectToAction("ContactAsync");
}
}
}