Files
ayanova7/API/CSHelloAyaNova/Form1.cs
2018-06-29 19:47:36 +00:00

230 lines
7.0 KiB
C#

/*
* HelloAyaNova - Developers API sample application
*
* Illustrates the absolute basics of connecting to the AyaNova
* business object framework, creating an saving an object and
* retrieving it.
*
* Areas outlined with //******** blocks are AyaNova specific
*
* Note the 6 references added to this project. Those 6
* references are required to work with the AyaNova API.
*
* The referenced .dll files are the same files found in the AyaNova
* program folder when AyaNova is installed. If you did not install
* your test copy of AyaNova to the default folder you may need to update those
* references
*
* When a new version of AyaNova is released you simply need refresh your references and rebuild your
* application to maintain compatibility
*
* */
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
//******* SAMPLE ********************
//The AyaNova business object library:
using GZTW.AyaNova.BLL;
//The security library required for
//processing the login
using CSLA.Security;
//Used for login confirmation
using System.Threading;
//*************************************
namespace HelloAyaNova
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(103, 102);
this.button1.Name = "button1";
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(385, 253);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
//**************** SAMPLE ************************
private void button1_Click(object sender, System.EventArgs e)
{
//THIS IS AN EXAMPLE ONLY, YOU APPLICATION SHOULD IMPLEMENT
//ERROR HANDLING AND RECOVERY AND CHECK FOR EXCEPTIONS
//The call to Initialize is always the first required in any
//application working with AyaNova, it initializes the database
//connection and business object framework and confirms operations can
//take place
//IMPORTANT: If you receive an exception when calling the Initialize method it is most likely
//a connection string problem in your config.txt file causing the
//database provider to throw a not found exception. Or a problem with the configuration
//file itself like it's missing or not configured properly.
//Remember that in the case of any exception using the AyaNova business object library
//it is that exception's Inner exception which is most likely the actual error (if present)
//because AyaNova objects are invoked through a factory method which wraps any actual exception
//generated by the business object inside a TargeInvocationException
try
{
GZTW.AyaNova.BLL.AyaBizUtils.Initialize();
}
catch (Exception ex)
{
//"crack" the exception to get to the innermost exception
while (ex.InnerException != null)
ex = ex.InnerException;
MessageBox.Show(ex.Message);
return;
}
//Once your application gets to this point right after Initialize without error
//you can be assured that you have a clean configuration file and a connection
//to the database and are ready to log in
//This is the default AyaNova trial login and password
//and this is how you login to AyaNova
AyaBizUtils.Login("manager","letmein");
//confirm the user is logged in:
if(Thread.CurrentPrincipal.Identity.IsAuthenticated==false)
{
//Nope, they are not authenticated so
//show an error and bail out
MessageBox.Show("Login failed");
return;
}
//at this point the user is logged in and
//you can now work with any AyaNova business objects that
//the login account used above has rights to.
//Logging OUT: There is technically no need to logout
//simply close the program
//Let's just make sure the database hasn't expired
//an expired AyaNova database is read only so
//the code below will not work
//AyaBizUtils handles all manner of general operations
//that aren't related to a particular object
if(AyaBizUtils.Expired)
{
MessageBox.Show("Sorry this database has an expired license: " + AyaBizUtils.ExpiryDate.ToString());
return;
}
//lets add a Client
Client c=Client.NewItem();
//give the client a name and ensure it's unique for testing purposes
//by putting the current date and time after the name
c.Name="Test client "+System.DateTime.Now.ToString();
c.Notes="Test client created from \"Hello AyaNova\" sample API program";
c.Save();
//save the ID to retrieve it later on
//AyaNova uses Guid's for every object
Guid gNewClientID=c.ID;
//some feedback to show it worked
//fetch the newly created client back from
//the database
Client b=Client.GetItem(gNewClientID);
MessageBox.Show(b.Name);
//That's all there is to it.
//If you open the database from AyaNova you will see the new
//client ready for use.
//of course there are many more properties of a client that can be set
//and many more business objects that can be worked with in a similar manner
//check out the other samples and the developers api reference at http://api.ayanova.com/ for more information
}
//********************** END OF SAMPLE ***************************************
}
}