AXGuru-D365-oData
public const string OAuthHeader = "Authorization"; public static AuthenticationResult GenerateAzureToken(AXEnvironments _environment) { //create the credential object based upon the encrypted secret key in azure ClientCredential creds = new clientCredential (_environment.WebAzureClientAppId, _environment.AzureClientSecret); //setup the context of the token AuthenticationContext context = new AuthenticationContext (_environment.AzureADTenant, TokenCache.DefaultShared); //generate the token Task<AuthenticationResult> task = context .AcquireTokenAsync(_environment.AzureResource, creds); //wait for the task to finish task.Wait(); //return the result return task.Result; } public static string GetAzureAuthenticationHeader(AXEnvironments _environment) { AuthenticationResult result; string authHeader = ""; try { //generate the token and get an authorization result = GenerateAzureToken(_environment); authHeader = result.CreateAuthorizationHeader(); } catch(Exception ex) { Console.WriteLine( ex.ToString()); authHeader = ""; } return authHeader; }
static void Main(string[] args) { try { string ODataEntityPath = D365Auth.AXEnvironments.Test.UriString + "/data"; Uri oDataUri = new Uri(ODataEntityPath, UriKind.Absolute); var context = new Resources(oDataUri); D365Auth.AXEnvironments currentEviornment = D365Auth.AXEnvironments.Test; string authHeader = D365Auth.AXAuthorizationDefined .GetAzureAuthenticationHeader(currentEviornment); context.SendingRequest2 += new EventHandler<SendingRequest2EventArgs> (delegate (object sender, SendingRequest2EventArgs e) { e.RequestMessage.SetHeader("Accept", "application/json"); e.RequestMessage.SetHeader("Authorization", authHeader); }); Console.WriteLine(String.Format("---------- Begin OData Sales Order Entity Entity Lookup ----------") + Environment.NewLine); foreach (var SalesOrder in context.SalesOrderHeadersCust.Where(p => p.SalesOrderNumber == "000784" && p.DataAreaId == "usmf")) { Console.WriteLine("InvoiceAccount:{0}",SalesOrder .InvoiceCustomerAccountNumber); } Console.ReadLine(); } catch (System.Exception ex) { Console.WriteLine(ex.ToString()); } }
[SysODataActionAttribute("confirmsalesOrder",true)] public str confirmSalesOrder(SalesId _salesId) { SalesFormletter SalesFormletter; SalesTable SalesTable; SalesFormletter = SalesFormletter::construct(DocumentStatus::Confirmation); SalesTable.clear(); SalesTable = SalesTable::find(_salesId); SalesFormletter.update(SalesTable, systemDateGet(), SalesUpdate::All, AccountOrder::None, false, false); return "Successful"; }
static void Main(string[] args) { try { string ODataEntityPath = D365Auth.AXEnvironments.Test .UriString + "/data"; Uri oDataUri = new Uri(ODataEntityPath, UriKind.Absolute); var context = new Resources(oDataUri); D365Auth.AXEnvironments currentEviornment = D365Auth.AXEnvironments.Test; string authHeader = D365Auth.AXAuthorizationDefined .GetAzureAuthenticationHeader(currentEviornment); context.SendingRequest2 += new EventHandler<SendingRequest2EventArgs> (delegate (object sender, SendingRequest2EventArgs e) { e.RequestMessage.SetHeader("Accept", "application/json"); e.RequestMessage.SetHeader("Authorization", authHeader); }); Console.WriteLine(String.Format("---------- Begin OData Sales Order Entity Entity Lookup ----------") + Environment.NewLine); var SalesOrder = context.SalesOrderHeadersCust.Where(p => p.SalesOrderNumber == "000785" && p.DataAreaId == "usmf").Single(); string value = SalesOrder.ConfirmsalesOrder("000785").GetValue(); Console.WriteLine("Name: {0}", value); Console.ReadLine(); } catch (System.Exception ex) { Console.WriteLine(ex.ToString()); } }