public IActionResult InsertCASAPTransaction(CASAPTransaction casAPTransaction) { try { Console.WriteLine(DateTime.Now + " In InsertCASAPTransaction"); CASAPTransactionRegistrationReply casregreply = new CASAPTransactionRegistrationReply(); CASAPTransactionRegistration.getInstance().Add(casAPTransaction); casregreply.RegistrationStatus = "Success"; // Now we must call CAS with this data //Task<string> outputResult = CASAPTransactionRegistration.getInstance().sendTransactionsToCAS(casAPTransaction); //casregreply.RegistrationStatus = Convert.ToString(outputResult); return(Ok(casregreply)); } catch (Exception e) { Console.WriteLine(DateTime.Now + " Error in InsertCASAPTransaction. " + e.ToString()); return(StatusCode(e.HResult)); } }
public async Task <JObject> GetTransactionRecords(CASAPQuery casAPQuery) { Console.WriteLine("In GetTransactionRecords"); TokenURL = Environment.GetEnvironmentVariable(ConfigContant.CAS_API_SERVER) + Environment.GetEnvironmentVariable(ConfigContant.CAS_TOKEN_URI); URL = Environment.GetEnvironmentVariable(ConfigContant.CAS_API_SERVER) + Environment.GetEnvironmentVariable(ConfigContant.CAS_INVOICE_URI); Console.WriteLine("Environment Variable CAS API server " + Environment.GetEnvironmentVariable(ConfigContant.CAS_API_SERVER)); Console.WriteLine("Environment Variable Token URI " + Environment.GetEnvironmentVariable(ConfigContant.CAS_TOKEN_URI)); Console.WriteLine("Environment Variable INVOINCE URI " + Environment.GetEnvironmentVariable(ConfigContant.CAS_INVOICE_URI)); // Get the header var re = Request; var headers = re.Headers; // Get clientID and secret from header secret = headers["secret"].ToString(); clientID = headers["clientID"].ToString(); Console.WriteLine("In GetTransactionRecords"); CASAPTransactionRegistrationReply casregreply = new CASAPTransactionRegistrationReply(); CASAPQueryRegistration.getInstance().Add(casAPQuery); try { // Start by getting token Console.WriteLine("Starting sendTransactionsToCAS."); HttpClientHandler handler = new HttpClientHandler(); Console.WriteLine("GET: + " + TokenURL); HttpClient client = new HttpClient(handler); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", clientID, secret)))); var request = new HttpRequestMessage(HttpMethod.Post, TokenURL); var formData = new List <KeyValuePair <string, string> >(); formData.Add(new KeyValuePair <string, string>("grant_type", "client_credentials")); Console.WriteLine("Add credentials"); request.Content = new FormUrlEncodedContent(formData); var response = await client.SendAsync(request); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); Console.WriteLine("Response Received: " + response.StatusCode); response.EnsureSuccessStatusCode(); // Put token alone in responseToken string responseBody = await response.Content.ReadAsStringAsync(); var jo = JObject.Parse(responseBody); string responseToken = jo["access_token"].ToString(); Console.WriteLine("Received token successfully, now to send request to CAS."); // Token received, now send package using token using (var packageClient = new HttpClient()) { packageClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", responseToken); var jsonString = JsonConvert.SerializeObject(casAPQuery); HttpContent postContent = new StringContent(jsonString); // Submit GET response to CAS HttpResponseMessage packageResult = await packageClient.GetAsync(URL + casAPQuery.invoiceNumber + "/" + casAPQuery.supplierNumber + "/" + casAPQuery.supplierSiteNumber); // Segregate JSON response from CAS string xresponseBody = await packageResult.Content.ReadAsStringAsync(); var xjo = JObject.Parse(xresponseBody); // Return JSON response from CAS Console.WriteLine("Successfully found invoice: " + casAPQuery.invoiceNumber); return(xjo); } } catch (Exception e) { if (e.HResult == -2146233088) { // Handle error where invoice number / Supplier / Site does not exist Console.WriteLine("Error in GetTransactionRecords. Invoice: " + casAPQuery.invoiceNumber + ". Supplier: " + casAPQuery.supplierNumber + ". Site: " + casAPQuery.supplierSiteNumber + ". Invoice/Supplier/Site does not exist."); dynamic errorObject = new JObject(); errorObject.invoice_number = casAPQuery.invoiceNumber; errorObject.invoice_status = "Not Found"; errorObject.payment_status = "Not Found"; errorObject.payment_number = " "; errorObject.payment_date = " "; return(errorObject); } else { // Handle all other errors var errorContent = new StringContent(casAPQuery.ToString(), Encoding.UTF8, "application/json"); Console.WriteLine("Error in GetTransactionRecords. Invoice: " + casAPQuery.invoiceNumber + ". " + e.Message); dynamic errorObject = new JObject(); errorObject.invoice_number = casAPQuery.invoiceNumber; errorObject.invoice_status = e.Message; errorObject.payment_status = "Generic Error"; errorObject.payment_number = " "; errorObject.payment_date = " "; return(errorObject); } } }
public async Task <JObject> RegisterCASAPTransaction(CASAPTransaction casAPTransaction) { // Get the header var re = Request; var headers = re.Headers; // Get secret information Console.WriteLine(DateTime.Now + " Get Secret information."); var builder = new ConfigurationBuilder() .AddEnvironmentVariables() .AddUserSecrets <Program>(); // must also define a project guid for secrets in the .cspro – add tag <UserSecretsId> containing a guid var Configuration = builder.Build(); URL = Configuration["CAS_API_URI"] + "cfs/apinvoice/"; // CAS AP URL TokenURL = Configuration["CAS_API_URI"] + "oauth/token"; // CAS AP Token URL // Get clientID and secret from header secret = headers["secret"].ToString(); clientID = headers["clientID"].ToString(); Console.WriteLine(DateTime.Now + " In RegisterCASAPTransaction"); CASAPTransactionRegistrationReply casregreply = new CASAPTransactionRegistrationReply(); CASAPTransactionRegistration.getInstance().Add(casAPTransaction); //casregreply.RegistrationStatus = "Success"; //// Now we must call CAS with this data ////Task<string> outputResult = CASAPTransactionRegistration.getInstance().sendTransactionsToCAS(casAPTransaction); //Task<string> outputResult = newSendTransactionToCAS(casAPTransaction); //casregreply.RegistrationStatus = Convert.ToString(outputResult); // Now we must call CAS with this data string outputMessage; try { // Start by getting token Console.WriteLine(DateTime.Now + " Starting sendTransactionsToCAS (CASAPTransactionController)."); HttpClientHandler handler = new HttpClientHandler(); Console.WriteLine(DateTime.Now + " GET: + " + TokenURL); HttpClient client = new HttpClient(handler); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", clientID, secret)))); var request = new HttpRequestMessage(HttpMethod.Post, TokenURL); var formData = new List <KeyValuePair <string, string> >(); formData.Add(new KeyValuePair <string, string>("grant_type", "client_credentials")); Console.WriteLine(DateTime.Now + " Add credentials"); request.Content = new FormUrlEncodedContent(formData); var response = await client.SendAsync(request); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); Console.WriteLine(DateTime.Now + " Response Received: " + response.StatusCode); response.EnsureSuccessStatusCode(); // Put token alone in responseToken string responseBody = await response.Content.ReadAsStringAsync(); var jo = JObject.Parse(responseBody); string responseToken = jo["access_token"].ToString(); Console.WriteLine(DateTime.Now + " Received token successfully, now to send package to CAS."); // Token received, now send package using token using (var packageClient = new HttpClient()) { packageClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", responseToken); var jsonString = JsonConvert.SerializeObject(casAPTransaction); //HttpContent postContent = new StringContent(jsonString, Encoding.UTF8, "application/json"); HttpContent postContent = new StringContent(jsonString); Console.WriteLine(DateTime.Now + " JSON: " + jsonString); HttpResponseMessage packageResult = await packageClient.PostAsync(URL, postContent); Console.WriteLine(DateTime.Now + " This was the result: " + packageResult.StatusCode); //outputMessage = Convert.ToString(packageResult.StatusCode); outputMessage = Convert.ToString(packageResult.Content.ReadAsStringAsync().Result); Console.WriteLine(DateTime.Now + " Output Message: " + outputMessage); if (packageResult.StatusCode == HttpStatusCode.Unauthorized) { Console.WriteLine(DateTime.Now + " Ruh Roh, there was an error: " + packageResult.StatusCode); } } } catch (Exception e) { var errorContent = new StringContent(casAPTransaction.ToString(), Encoding.UTF8, "application/json"); Console.WriteLine(DateTime.Now + " Error in RegisterCASAPTransaction. Invoice: " + casAPTransaction.invoiceNumber); dynamic errorObject = new JObject(); errorObject.invoice_number = null; errorObject.CAS_Returned_Messages = "Generic Error: " + e.Message; return(errorObject); } var xjo = JObject.Parse(outputMessage); Console.WriteLine(DateTime.Now + " Successfully sent invoice: " + casAPTransaction.invoiceNumber); return(xjo); }
public async Task <JObject> GetTransactionRecords(CASAPQuery casAPQuery) { // Get the header var re = Request; var headers = re.Headers; // Get clientID and secret from header secret = headers["secret"].ToString(); clientID = headers["clientID"].ToString(); Console.WriteLine(DateTime.Now + " INFO: In RegisterCASAPTransaction"); CASAPTransactionRegistrationReply casregreply = new CASAPTransactionRegistrationReply(); CASAPQueryRegistration.getInstance().Add(casAPQuery); try { // Start by getting token Console.WriteLine(DateTime.Now + " INFO: Starting sendTransactionsToCAS (CASAPRetreiveController)."); // Get secret information Console.WriteLine(DateTime.Now + " INFO: Get Secret information."); var builder = new ConfigurationBuilder() .AddEnvironmentVariables() .AddUserSecrets <Program>(); // must also define a project guid for secrets in the .cspro – add tag <UserSecretsId> containing a guid var Configuration = builder.Build(); URL = Configuration["CAS_API_URI"] + "cfs/apinvoice/"; // CAS AP URL TokenURL = Configuration["CAS_API_URI"] + "oauth/token"; // CAS AP Token URL HttpClientHandler handler = new HttpClientHandler(); Console.WriteLine(DateTime.Now + " INFO: Get Token: " + TokenURL); HttpClient client = new HttpClient(handler); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", clientID, secret)))); var request = new HttpRequestMessage(HttpMethod.Post, TokenURL); var formData = new List <KeyValuePair <string, string> >(); formData.Add(new KeyValuePair <string, string>("grant_type", "client_credentials")); Console.WriteLine(DateTime.Now + " INFO: Add credentials"); request.Content = new FormUrlEncodedContent(formData); var response = await client.SendAsync(request); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); Console.WriteLine(DateTime.Now + " INFO: Response Received: " + response.StatusCode); response.EnsureSuccessStatusCode(); // Put token alone in responseToken string responseBody = await response.Content.ReadAsStringAsync(); var jo = JObject.Parse(responseBody); string responseToken = jo["access_token"].ToString(); Console.WriteLine(DateTime.Now + " INFO: Received token successfully, now to send request to CAS."); // Token received, now send package using token using (var packageClient = new HttpClient()) { packageClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", responseToken); var jsonString = JsonConvert.SerializeObject(casAPQuery); HttpContent postContent = new StringContent(jsonString); // Submit GET response to CAS HttpResponseMessage packageResult = await packageClient.GetAsync(URL + casAPQuery.invoiceNumber + "/" + casAPQuery.supplierNumber + "/" + casAPQuery.supplierSiteNumber); // Segregate JSON response from CAS string xresponseBody = await packageResult.Content.ReadAsStringAsync(); var xjo = JObject.Parse(xresponseBody); // Return JSON response from CAS Console.WriteLine(DateTime.Now + " INFO: Successfully found invoice: " + casAPQuery.invoiceNumber); return(xjo); } } catch (Exception e) { if (e.HResult == -2146233088) { // Handle error where invoice number / Supplier / Site does not exist Console.WriteLine(DateTime.Now + " ERROR: Error in GetTransactionRecords. Invoice: " + casAPQuery.invoiceNumber + ". Supplier: " + casAPQuery.supplierNumber + ". Site: " + casAPQuery.supplierSiteNumber + ". Invoice/Supplier/Site does not exist."); dynamic errorObject = new JObject(); errorObject.invoice_number = casAPQuery.invoiceNumber; errorObject.invoice_status = "Not Found"; if (e.Message.Contains("Unexpected character encountered while parsing value")) { // This is the message when the item is not found errorObject.payment_status = "Not found"; } else { // We use this for credential problems or other things like that. errorObject.payment_status = e.Message; } errorObject.payment_number = " "; errorObject.payment_date = " "; return(errorObject); } else { // Handle all other errors var errorContent = new StringContent(casAPQuery.ToString(), Encoding.UTF8, "application/json"); Console.WriteLine(DateTime.Now + " ERROR: Error in GetTransactionRecords. Invoice: " + casAPQuery.invoiceNumber + ". " + e.Message); dynamic errorObject = new JObject(); errorObject.invoice_number = casAPQuery.invoiceNumber; errorObject.invoice_status = e.Message; errorObject.payment_status = "Generic Error"; errorObject.payment_number = " "; errorObject.payment_date = " "; return(errorObject); } } }
public async Task <JObject> GetTransactionRecords(CASSupplierQuery casSupplierQuery) { // Get the header var re = Request; var headers = re.Headers; // Get secret information Console.WriteLine("Get Secret information."); var builder = new ConfigurationBuilder() .AddEnvironmentVariables() .AddUserSecrets <Program>(); // must also define a project guid for secrets in the .cspro – add tag <UserSecretsId> containing a guid var Configuration = builder.Build(); URL = Configuration["CAS_API_URI"] + "cfs/apinvoice/"; // CAS AP URL TokenURL = Configuration["CAS_API_URI"] + "oauth/token"; // CAS AP Token URL // Get clientID and secret from header secret = headers["secret"].ToString(); clientID = headers["clientID"].ToString(); Console.WriteLine("In RegisterCASAPTransaction"); CASAPTransactionRegistrationReply casregreply = new CASAPTransactionRegistrationReply(); CASSupplierQueryRegistration.getInstance().Add(casSupplierQuery); try { // Start by getting token Console.WriteLine("Starting sendTransactionsToCAS."); HttpClientHandler handler = new HttpClientHandler(); Console.WriteLine("GET: + " + TokenURL); HttpClient client = new HttpClient(handler); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", clientID, secret)))); var request = new HttpRequestMessage(HttpMethod.Post, TokenURL); var formData = new List <KeyValuePair <string, string> >(); formData.Add(new KeyValuePair <string, string>("grant_type", "client_credentials")); Console.WriteLine("Add credentials"); request.Content = new FormUrlEncodedContent(formData); var response = await client.SendAsync(request); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); Console.WriteLine("Response Received: " + response.StatusCode); response.EnsureSuccessStatusCode(); // Put token alone in responseToken string responseBody = await response.Content.ReadAsStringAsync(); var jo = JObject.Parse(responseBody); string responseToken = jo["access_token"].ToString(); Console.WriteLine("Received token successfully, now to send request to CAS."); // Token received, now send package using token using (var packageClient = new HttpClient()) { packageClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", responseToken); var jsonString = JsonConvert.SerializeObject(casSupplierQuery); HttpContent postContent = new StringContent(jsonString); HttpResponseMessage packageResult = await packageClient.GetAsync(URL);// + casSupplierQuery.invoiceNumber + "/" + casSupplierQuery.supplierNumber + "/" + casSupplierQuery.supplierSiteNumber); // Put token alone in responseToken string xresponseBody = await packageResult.Content.ReadAsStringAsync(); var xjo = JObject.Parse(xresponseBody); return(xjo); } } catch (Exception e) { var errorContent = new StringContent(casSupplierQuery.ToString(), Encoding.UTF8, "application/json"); Console.WriteLine("Error in sendTransactionsToCASShort. ");// + client.BaseAddress.ToString() + errorContent + client + e.ToString()); dynamic errorObject = new JObject(); errorObject.message_UUID = "00000000-0000-0000-0000-000000000000"; errorObject.supplier_number = casSupplierQuery.supplierNumber; errorObject.supplier_name = casSupplierQuery.supplierName; errorObject.sin = "000000000"; errorObject.business_number = null; errorObject.supplier_status = null; errorObject.supplier_last_updated = null; errorObject.supplier_site_code = casSupplierQuery.supplierSiteNumber; errorObject.address_line_1 = null; errorObject.address_line_2 = null; errorObject.address_line_3 = null; errorObject.city = null; errorObject.province = null; errorObject.country = null; errorObject.postal_code = null; errorObject.email_address = null; errorObject.account_number = null; errorObject.branch_number = null; errorObject.bank_number = null; errorObject.eft_advice_pref = null; errorObject.provider_id = null; errorObject.site_status = "Error: " + e.Message; errorObject.site_last_updated = null; return(errorObject); } }