Thursday, September 16, 2010

Access NAV from Web page ASp.Net C# coding

For the Integration. webbased ASP.net C# coding
First You have to register the Dll - cfront. And also Add Dll to System 32 to prevent the errors while exciting.

In this Post you can See how to change the Password of NAV. For that You have create new 3 Text Boxes and  
and add some validation to 2,3 Confirm. 
1- Current Password,
2- New Password
3- confirm new Password. 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Navision.CFront;

public partial class ChangePassword : System.Web.UI.Page
{

    protected void btnChangePassword_Click(object sender, EventArgs e)
    {
        int CT;
        int CR;
        string NewConPassword;
        string NewPassword1;
        if (txtNewPassword.Text.Trim() == txtConfirmPassword.Text.Trim())
        {

            NewConPassword = txtConfirmPassword.Text.Trim();
            NewPassword1 = txtNewPassword.Text.Trim();


            try
            {
                NavisionNetType NetType;

                NavisionDriverType DriverType;

                NavisionCode Data;
                NavisionText Password;

                DriverType = NavisionDriverType.Native;
                NetType = NavisionNetType.NativeTcp;

                CFrontDotNet.DriverType = DriverType;



                CFrontDotNet.NavisionPath = System.Configuration.ConfigurationManager.AppSettings.Get("NavisionPath");

{ comments about variables
                



}                 CFrontDotNet.Instance.ConnectServerAndOpenDatabase(System.Configuration.ConfigurationManager.AppSettings.Get("Database"), NetType, null, 2000, true, false, textUsername.Text.Trim(), textPassword.Text.Trim());
                CFrontDotNet.Instance.OpenCompany("Company Name");
                CT = CFrontDotNet.Instance.OpenTable(2000000002);
                CR = CFrontDotNet.Instance.AllocRecord(CT);
                CFrontDotNet.Instance.SetFilter(CT, 1, textUsername.Text.Trim());



                try
                {
                    if (CFrontDotNet.Instance.FindRecord(CT, CR, "-"))
                    {
                        Data = CFrontDotNet.Instance.GetFieldData(CT, CR, 1);
                        Password = CFrontDotNet.Instance.GetFieldData(CT, CR, 2);

                        CFrontDotNet.Instance.CryptPassword(Data.ToString(), NewConPassword.ToString());
                        CFrontDotNet.Instance.BeginWriteTransaction();
                        CFrontDotNet.Instance.SetFieldData(CT, CR, 2, NavisionFieldType.Text, GetBytesByType(NavisionFieldType.Text, NewConPassword.ToString(), 2000000002, 2));
                        CFrontDotNet.Instance.ModifyRecord(CT, CR);
                        CFrontDotNet.Instance.EndWriteTransaction();

                        lblErrorMassage.Text = "Password has been changed";

                    }
                    else
                    {
                        lblErrorMassage.Text = "Invalid User Id/Password";
                    }
                }
                finally
                {
                    CFrontDotNet.Instance.FreeRecord(CR);
                }
            }
            catch(Exception ex)
            {
                lblErrorMassage.Text = "Invalid User Id/Password";
            }

        }
        else
        {
            lblErrorMassage.Text = "New Password and Confirm password are miss match";
        }
    }
    private byte[] GetBytesByType(NavisionFieldType type, String value, int tableHandle, int fieldNo)
    {
        switch (type)
        {
            case NavisionFieldType.Text:
                {
                    NavisionText n = NavisionText.Parse(value);
                    return n.GetBytes();
                }
            case NavisionFieldType.Option:
                {
                    NavisionOption n = new NavisionOption(Convert.ToInt32(value));
                    return n.GetBytes();
                }
            case NavisionFieldType.BigInteger:
                {
                    NavisionBigInteger n = NavisionBigInteger.Parse(value);
                    return n.GetBytes();
                }
            case NavisionFieldType.Binary:
                {
                    NavisionBinary n = NavisionBinary.Parse(value);
                    return n.GetBytes();
                }
            case NavisionFieldType.Blob:
                {
                    NavisionBlob n = NavisionBlob.Parse(value);
                    return n.GetBytes();
                }
            case NavisionFieldType.Boolean:
                {
                    NavisionBoolean n = NavisionBoolean.Parse(value);
                    return n.GetBytes();
                }
            case NavisionFieldType.Code:
                {
                    NavisionCode n = NavisionCode.Parse(value);
                    return n.GetBytes();
                }
            case NavisionFieldType.Date:
                {
                    NavisionDate n = NavisionDate.Parse(value);
                    return n.GetBytes();
                }
            case NavisionFieldType.DateFormula:
                {
                    NavisionDateFormula n = NavisionDateFormula.Parse(value);
                    return n.GetBytes();
                }
            case NavisionFieldType.DateTime:
                {
                    NavisionDateTime n = NavisionDateTime.Parse(value);
                    return n.GetBytes();
                }
            case NavisionFieldType.Decimal:
                {
                    NavisionDecimal n = NavisionDecimal.Parse(value);
                    return n.GetBytes();
                }
            case NavisionFieldType.Duration:
                {
                    NavisionDuration n = NavisionDuration.Parse(value);
                    return n.GetBytes();
                }
            case NavisionFieldType.Guid:
                {
                    NavisionGuid n = NavisionGuid.Parse(value);
                    return n.GetBytes();
                }
            case NavisionFieldType.Integer:
                {
                    NavisionInteger n = new NavisionInteger(int.Parse(value));
                    return n.GetBytes();
                }
            case NavisionFieldType.RecordId:
                {
                    NavisionRecordId n = NavisionRecordId.Parse(value);
                    return n.GetBytes();
                }
            case NavisionFieldType.TableFilter:
                {
                    NavisionTableFilter n = NavisionTableFilter.Parse(value);
                    return n.GetBytes();
                }
            case NavisionFieldType.Time:
                {
                    NavisionTime n = NavisionTime.Parse(value);
                    return n.GetBytes();
                }
        }
        return new byte[] { };
    }
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Page_unload(object sender, EventArgs e)
    {
        CFrontDotNet.Instance.CloseDatabase();
        CFrontDotNet.Instance.DisconnectServer();
    }
}