Saturday 23 September 2017

asp.net MVC HttpModule example

1)  First Create SessionManger class
using System.Web;
using System.Collections.Generic;
namespace ManageSession
{
    public class SessionManger
    {
       

        public static int AdminID
        {
            get
            {
             
                    return (int)System.Web.HttpContext.Current.Session["AdminID"];
             
            }
            set { System.Web.HttpContext.Current.Session["AdminID"] = value; }
        }
        public static int UserType
        {
            get
            {

                return (int)System.Web.HttpContext.Current.Session["UserType"];

            }
            set { System.Web.HttpContext.Current.Session["UserType"] = value; }
        }
        public static int CompanyID
        {
            get
            {

                return (int)System.Web.HttpContext.Current.Session["CompanyID"];

            }
            set { System.Web.HttpContext.Current.Session["CompanyID"] = value; }
        }
        public static string UserTheme
        {
            get
            {

                return (string)System.Web.HttpContext.Current.Session["UserTheme"];

            }
            set { System.Web.HttpContext.Current.Session["UserTheme"] = value; }
        }
        public static int BranchID
        {
            get
            {

                return (int)System.Web.HttpContext.Current.Session["BranchID"];

            }
            set { System.Web.HttpContext.Current.Session["BranchID"] = value; }
        }
    }
}

2) PreInitModule class 

using System;
using System.Web;
using System.Web.UI;
using System.Web.Configuration;
using System.Text;
using System.Security.Cryptography;
using System.IO;

/// <summary>
/// Ashish Srivastava
/// 21 Sep 2017
/// 
/// </summary>
public class PreInitModule : IHttpModule
{
    #region IHttpModule Members

    public void Dispose()
    {
        //throw new NotImplementedException();
    }

    public void Init(HttpApplication context)
    {
        context.PreRequestHandlerExecute += HandlePreRequest;
    }

    void HandlePreRequest(object sender, EventArgs e)
    {
        var page = HttpContext.Current.CurrentHandler as System.Web.Mvc.MvcHandler;
        if (page != null)
        {
            //page.PreInit += delegate
            //{

                if (HttpContext.Current.Request.Path.ToLower().Contains("/admin/"))
                {
                if (HttpContext.Current.Session["AdminID"] != null)
                {
                    if (HttpContext.Current.Session["CompanyID"] != null)
                    {
                        if (HttpContext.Current.Session["BranchID"] != null) return;

                        var loginPageBranch = WebConfigurationManager.AppSettings["LoginPagePath"] ?? "~/Admin/Branch";
                        if (HttpContext.Current.Request.Path.Contains(loginPageBranch.Substring(loginPageBranch.LastIndexOf("/") + 1)) == false
                              && HttpContext.Current.Request.Path.Contains("Branch") == false
                              && HttpContext.Current.Request.Path.Contains("BillingCompanyReport.aspx") == false
                            && HttpContext.Current.Request.Path.Contains("UserCompanyMapping.aspx") == false
                            && HttpContext.Current.Request.Path.Contains("AddCompany.aspx") == false
                            && HttpContext.Current.Request.Path.Contains("AddBranch.aspx") == false
                            && HttpContext.Current.Request.Path.Contains("InvoceHeadSettings.aspx") == false
                       //&& HttpContext.Current.Request.Path.Contains("ForgetPassword.aspx") == false

                       )
                        {
                            HttpContext.Current.Response.Redirect(loginPageBranch, true);
                        }
                        else
                        {
                            return;
                        }
                    }

                    var loginPageCompany = WebConfigurationManager.AppSettings["LoginPagePath"] ?? "~/Admin/Company";
                    if (HttpContext.Current.Request.Path.Contains(loginPageCompany.Substring(loginPageCompany.LastIndexOf("/") + 1)) == false
                        && HttpContext.Current.Request.Path.Contains("Company") == false
                        && HttpContext.Current.Request.Path.Contains("AddCompany.aspx") == false
                        && HttpContext.Current.Request.Path.Contains("BillingCompanyReport.aspx") == false
                        && HttpContext.Current.Request.Path.Contains("UserCompanyMapping.aspx") == false
                        && HttpContext.Current.Request.Path.Contains("AddCompany.aspx") == false
                        && HttpContext.Current.Request.Path.Contains("AddBranch.aspx") == false
                        && HttpContext.Current.Request.Path.Contains("InvoceHeadSettings.aspx") == false
                   )
                    {
                        HttpContext.Current.Response.Redirect(loginPageCompany, true);
                    }
                    else
                    {
                        return;
                    }

                }
                var loginPage = WebConfigurationManager.AppSettings["LoginPagePath"] ?? "~/Login?Session=Expire";

                if (HttpContext.Current.Request.Path.Contains(loginPage.Substring(loginPage.LastIndexOf("/") + 1)) == false)
                {
                    HttpContext.Current.Response.Redirect(loginPage, true);
                }
                else
                {

                }
            }                
        }
    }
    #endregion     
}
3) Web.config
  <system.web>
<httpModules>
      <add name="MyPreInitModule" type="PreInitModule" />
    </httpModules>
  </system.web>
 <system.webServer>
  <modules>
      <add name="MyPreInitModule" type="PreInitModule" />
    </modules>
</system.webServer>

Wednesday 20 September 2017

Convert JSON String to DataTable in ASP.Net

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Text.RegularExpressions;

  5. public class ConvertJsonStringToDataTable
  6. {
  7.    public DataTable JsonStringToDataTable(string jsonString)
  8.    {
  9.       DataTable dt = new DataTable();
  10.       string[] jsonStringArray = Regex.Split(jsonString.Replace("[""").Replace("]",""), "},{");
  11.       List<string> ColumnsName = new List<string>();
  12.       foreach (string jSA in jsonStringArray)
  13.       {
  14.          string[] jsonStringData = Regex.Split(jSA.Replace("{""").Replace("}"""),",");
  15.          foreach (string ColumnsNameData in jsonStringData)
  16.          {
  17.             try
  18.             {
  19.                int idx = ColumnsNameData.IndexOf(":");
  20.                string ColumnsNameString = ColumnsNameData.Substring(0, idx - 1).Replace("\"""");
  21.                if (!ColumnsName.Contains(ColumnsNameString))
  22.                {
  23.                   ColumnsName.Add(ColumnsNameString);
  24.                }
  25.             }
  26.             catch (Exception ex)
  27.             {
  28.                throw new Exception(string.Format("Error Parsing Column Name : {0}", ColumnsNameData));
  29.             }
  30.          }
  31.          break;
  32.       }
  33.       foreach (string AddColumnName in ColumnsName)
  34.       {
  35.          dt.Columns.Add(AddColumnName);
  36.       }
  37.       foreach (string jSA in jsonStringArray)
  38.       {
  39.          string[] RowData = Regex.Split(jSA.Replace("{""").Replace("}"""), ",");
  40.          DataRow nr = dt.NewRow();
  41.          foreach (string rowData in RowData)
  42.          {
  43.             try
  44.             {
  45.                int idx = rowData.IndexOf(":");
  46.                string RowColumns = rowData.Substring(0, idx - 1).Replace("\"""");
  47.                string RowDataString = rowData.Substring(idx + 1).Replace("\"""");
  48.                nr[RowColumns] = RowDataString;
  49.             }
  50.             catch (Exception ex)
  51.             {
  52.                continue;
  53.             }
  54.          }
  55.          dt.Rows.Add(nr);
  56.       }
  57.       return dt;
  58.    }
  59. }


Wednesday 13 September 2017

Resetting IDENTITY Seed in Table Variable

For a "normal" table, you would use: DBCC CHECKIDENT('[table_name]', RESEED, [new_reseed_value]).
you cannot reseed a table variable

A workaround might be to use ROW_NUMBER() instead.

declare @a table (sno int identity,aa nvarchar(100))
insert into @a(aa) values ('testw'),('testwsfsf')

select row_number() OVER (ORDER BY sno) as sno,aa from @a

delete from @a
  
insert into @a(aa) values ('testw'),('testwsfsf')
select row_number() OVER (ORDER BY sno) as sno,aa from @a


Upload valid file in C#

    protected bool CheckFileExtandLength(HttpPostedFile HtmlDocFile)     {         try         {             Dictionary<string, byte[]>...