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));
            }
        }
示例#2
0
        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);
        }
示例#4
0
        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);
                }
            }
        }
示例#5
0
        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);
            }
        }