MiTechDev.com

Mitechdev.com is a programming blog which focused on Web Programming and development

Thursday, 21 September 2017

How to use static keyword in C# with examples

21:30:00 Posted by Sridhar Thota , No comments
In this article, I am going to explain the static keyword concept with examples. It covers static variable, static method, static constructor and static class. I have explained how to access static variables and static methods with in a static class.

Static Variable:

1.Static keyword can be used with variables, methods, constructor and class.
2.Static variable will be created only once and it can be shared by all objects.
3.If we declare static variable as public, then we can access that variable with classname.static_variable.
4.Static variable is created when class is loaded in to memory .
class sample 
{
public string s="hello";
public static string st="am static";
}
button click
{
sample obj=new sample();
obj.s;  //non static variable so can be accessed with object of class.
obj.st; // this is error. since static variable cannot be accessed with object of class.
sample.s; //this is error. since non static variable cannot be called with classname.variablename.
sample.st;// static variable can be accessed with classname.staticvariablename.
}

Static Method:

1.Static methods are called with classname.method name directly with out creating object.
2.When we have all static methods in a class, then we can declare that class as static class.
3.Some static methods are as follows
Ex: Console.ReadLine(); // consoleclass.methodname
      Console.Write();
      MessageBox.Show();

class static sample2
{
public static void display()
{
MessageBox.Show("Am from static method");
}
button click
{
sample2 obj=new sample2(); // error . As we cannot create object for static class.
obj.display(); // this is error. cannot be accessed with object.
sample2.display(); //works fine as called with classname.methodname
}

Static Constructor:

1.Static constructor is executed only once when the class is loading in to the memory.
2.Static constructor can access only static variables.
class sample3
{
public string s="static constructor example";
public sample3() // normal constructor
{
MesssageBox.Show("Am from normal constructor");
}
static sample3() // static constructor
{
MessageBox.Show("Am from static constructor");
}
}
button click
{
sample3 obj=new sample3();
sample3 obj1=new sample3();
}

Static Class:

1. Static class cannot be instantiated, i.e., we cannot create object for static class.
2. If we have all static methods in our class then we can declare the class as static class.
class static sample4
{
public static string s="hello";
public static string st="am static variable";
public static void display()
{
MessageBox.Show("Am from static method");
MessageBox.Show("Am static class");
}
static sample4() // static constructor
{
MessageBox.Show("Am from static constructor");
}
button click
{
sample4.s;
sample4.st;
sample4.display();
}
I hope this article helped you to understand the static keyword concept in c sharp language.Suggestions and feedback are welcome.

how to validate credit card number in jquery

10:15:00 Posted by raviteja swayampu , No comments
Hi every one welcome again today i came with very useful article How to validate credit card number in jquery. For that here i am not using neither  plugins nor references.I am doing it using pure jquery script code.Here to check whether card is a valid card or not i am using Luhn algorithm or Luhn formula.

What is Luhn Algorithm:

The Luhn algorithm or Luhn formula, also known as the "modulus 10" or "mod 10" algorithm, is a simple checksum formula used to validate a variety of identification numbers, such as credit card numbers, IMEI numbers, National Provider Identifier numbers in the United States, Canadian Social Insurance Numbers, Israel ID Numbers and Greek Social Security Numbers (ΑΜΚΑ). It was created by IBM scientist Hans Peter Luhn.For more information about Luhn formula visit Luhn algorithm.

Now lets check how to implement luhn test in our web application.In current application i am validating credit card in two steps
1.Checking the format of card using Regular expressions.
2.Validating card number using luhn formula.

How to check format of credit card:

For step1 i used regular expressions to check whether the credit card number is in correct format or not.For example Visa card only starts with digit '4' and contains 16 numeric digits and Master Card starts with digit '5' etc.Below are some valid credit card numbers for testing purpose.

valid credit card numbers for testing

Now come to the current application.I checked the credit card with below regular expression.
/*Regular expressions to validate credit card is in valid format
    */
    var VisaReg = /^4[0-9]{12}(?:[0-9]{3})?$/;
    var AmericanExpressReg = /^3[47][0-9]{13}$/;
    var MasterCardReg = /^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/;



1.Check the format of card with below script using regular expression.
/*Regular expressions to validate credit card is in valid format
    */
    var VisaReg = /^4[0-9]{12}(?:[0-9]{3})?$/;
    var AmericanExpressReg = /^3[47][0-9]{13}$/;
    var MasterCardReg = /^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/;

    var cardnumber = $("#cardNumber").val();
    var cardtype = $("#ddlCardType").val();
    var expirydate = $("#cardExpiry").val();
    var cardholdername = $("#cardHolderName").val();

    if (cardnumber == null || cardnumber == "") {
        $("#spncardNumber").text("Please Enter Card Number");
        $("#spncardNumber").show();
        result = false;
    }
    else if (cardnumber != null && cardnumber != "") {
        if (cardtype == "VISA") {
            if (!VisaReg.test(cardnumber)) {
                $("#spncardNumber").text("Enter Valid Visa Card Number");
                $("#spncardNumber").show();
                result = false;
            }
        }
        else if (cardtype == "AMERICAN EXPRESS") {
            if (!AmericanExpressReg.test(cardnumber)) {
                $("#spncardNumber").text("Enter Valid AE Card Number");
                $("#spncardNumber").show();
                result = false;
            }
        }
        else {
            if (!MasterCardReg.test(cardnumber)) {
                $("#spncardNumber").text("Enter Valid Master Card Number");
                $("#spncardNumber").show();
                result = false;
            }
        }       
    }
2.If you enter an invalid number with starting digit as other than 4 for VISA card(Visa card start with digit 4) and see the validation message in form like below.

Validate format of credit card

3.But these regular expressions checks card format only.They can not validate the card numbers. Luhn formula will take care of it.

How to Validate Credit Card using Luhn Algorithm:

1.Below is java script code to perform luhn formula.
/*checks whether card is valid or not using luhn algoritham
current credit cards in market are following this algoritham*/
function isCardNumberValid(cardNumber, allowSpaces) {
    if (allowSpaces) {
        cardNumber = cardNumber.replace(/ /g, '');
    }
    if (!cardNumber.match(/^\d+$/)) {
        return false;
    }
    var checksum = 0;
    for (var i = 0; i < cardNumber.length; i++) {
        var n = (cardNumber.charAt(cardNumber.length - i - 1) - '0') << (i & 1);
        checksum += n > 9 ? n - 9 : n;
    }
    return (checksum % 10) == 0 && checksum > 0;
}
2.This function accepts two parameters one is card number and another one boolean values(true or false,currently this code is work for card number with spaces).
3.Now check a random number with 16 digits.Luhn algorithm says..

Validate credit card using luhn algorithm

4.In the same ways below is csharp code to check the luhn algorithm.
Luhn alogitham server validation code.

    public static class LuhnUtility
    {
        public static bool IsCardNumberValid(string cardNumber, bool allowSpaces = false)
        {
            if (allowSpaces)
            {
                cardNumber = cardNumber.Replace(" ", "");
            }

            if (cardNumber.Any(c => !Char.IsDigit(c)))
            {
                return false;
            }

            int checksum = cardNumber
               .Select((c, i) => (c - '0') << ((cardNumber.Length - i - 1) & 1))
               .Sum(n => n > 9 ? n - 9 : n);

            return (checksum % 10) == 0 && checksum > 0;
        }
    }


Download the source code for this application from Github.
Download

Conclusion:

I hope this article may help you.Suggestions and feedbacks are always welcome.

Tuesday, 19 September 2017

How to disable past dates in date picker

05:59:00 Posted by raviteja swayampu No comments
In this example we will see how to disable the previous date selection in JQuery UI date picker. To disable the previous dates we need to set the minDate property of date picker.
If you are new to jquery date picker visit How to add date picker to textbox.
We can disable previous dates in two ways
1.By setting minDate option to 0.
2.By passing today date to minDate option in datepicker.
then it will disable all the previous dates.For example see the below picture.
3.Jquery script for this application is
<script language="javascript">
    $(document).ready(function () {
        $("#txtdate").datepicker({
            minDate: 0
        });
    });
</script>
4.Or we can also write code like this using today date.
<script language="javascript">
    $(document).ready(function () { 
        var todayDate=new Date();
        $("#txtdate").datepicker({
            minDate: todayDate
        });
    });
</script>
5.Complete source code for this application is,
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Datepicker -With Disabled past date</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <script>
  $( function() {
    var todayDate=new Date();
    $( "#datepicker" ).datepicker({
           minDate:todayDate  //or minDate:0 also works...
    });
  } );
  </script>
</head>
<body>
 
<p>Date: <input type="text" id="datepicker"></p>
 
</body>
</html>
Date picker look like below with disabled date..

how to disable past dates in datepicker

Monday, 18 September 2017

Asynchronous fileupload using jquery in mvc5

21:38:00 Posted by raviteja swayampu , No comments
In today's article i will explain about how to Asynchronously upload file in asp.net mvc web application using jquery with progress bar.In previous articles we saw about uploading file in mvc application in different ways.

Here in current application we can upload files asynchronously to server.

asynchronous file upload using jquery in mvc5

Asynchronous fileupload using jquery

1.Create asp.net mvc web application using empty template.
2.Here in this application i used jquery ajax form plugin from here github.
3.Create a controller and name it as HomeController and add Index action method as below.
public ActionResult Index()
        {
            return View();
        }
4.Add view to index action method to display file upload screen.
@{
    ViewBag.Title = "Index";
}
<h2>Jquery Asychronous file upload</h2>
<style type="text/css">
    .progress-bar{
        max-width:400px;
    }
    .progress{
        max-width:400px;
    }
</style>
<div class="container">
    <div class="row">
        <div class="col-md-5">
            @using (Ajax.BeginForm("Index", "Home", new AjaxOptions() { HttpMethod = "POST" },
            new { enctype = "multipart/form-data" }))
            {
                @Html.AntiForgeryToken();
                <input type="file" class="form-control" name="files" id="fileupload" />
                <input type="submit" class="btn btn-success" value="File upload" />
            }
            <br />
            <div class="progress">
                <div class="progress-bar">0%</div>
            </div>
            <div id="status"></div>
        </div>
    </div>
</div>

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
<script type="text/javascript">
       $(document).ready(function(){
           var bar = $('.progress-bar');
           var percent = $('.progress-bar');
           var status = $('#status');
           
           $('form').ajaxForm({
               beforeSend: function () {
                   status.empty();
                   var percentValue = '0%';
                   bar.width(percentValue);
                   percent.html(percentValue);
               },
               uploadProgress: function (event, position, total, percentComplete) {
                   var percentValue = percentComplete + '%';
                   bar.width(percentValue);
                   percent.html(percentValue);
               },
               success: function (d) {
                   var percentValue = '100%';
                   bar.width(percentValue);
                   percent.html(percentValue);
                   $('#fileupload').val('');
                   alert(d);
               },
               complete: function (xhr) {
                   status.html(xhr.responseText);
               }
           });
       });
</script>

5.In above code i used jquery script to display progress bar based on upload status of the file like above picture.
6.Below method in controller saves the file in server.
 [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Index(IEnumerable files)
        {
            int filecount = 0;
            string msg = "";
            try
            {
                if (files != null)
                {
                    foreach (var file in files)
                    {
                        if (file != null && file.ContentLength > 0)
                        {
                            var filename = Path.GetFileName(file.FileName);
                            var path = Path.Combine(Server.MapPath("~/Files"),filename);
                            file.SaveAs(path);
                            filecount++;
                        }
                    }
                    msg = filecount + " Files Uploaded Successfully";
                }
            }
            catch(Exception ex)
            {
                throw ex;
            }
            return Json(msg, JsonRequestBehavior.AllowGet);
        }
7.We can see the saved files in solution(Files folder).

asynchronous file upload using jquery in mvc5


8.To download source code for this application from Github click below.

Download

9.Conclusion

I hope this article will help you.Feedback and suggestions are welcome

How to create pivot table in excel using asp.net mvc

06:00:00 Posted by Sridhar Thota , No comments
Hi friends today am going to show how to create pivot table in excel sheet using c#. I got the requirement but no clear code is found for the same in the internet. So I would like to post the article with clear c# code. Hope it will be useful for those who is looking for pivot table creation using c#.

Namespaces used in this application to work on Excel files are below.
using Excel=Microsoft.Office.Interop.Excel; //microsoft interlop ddl
using OfficeOpenXml;//eplus dll
Here Microsoft.Office.Interop.dll only available in systems which are installed with micro soft office 2013.Second dll Epplus easily available on web.

How to create pivot table in excel using asp.net mvc

In this application i am creating pivot excel table in two steps.
1.Creating Excel file and storing in server.
2.Converting excel file to pivot excel table.

Creating pivot table in Excel

Step 1:Creating Excel file.
1.Create a asp.net mvc web application using empty web template.
2.Right click on models folder and create a model class name it as TProduct.
TProduct.cs:
public class TProduct
    {
        public string Category { get; set; }
        public string Place { get; set; }
        public string Name { get; set; }
        public long Price { get; set; }
        public long NoOfUnits { get; set; }
    }
3.Create data source code to generate excel file.For that add another class file in models folder and replace it with below code.
pivotdata.cs:
public class pivotdata
    {
        public List PivotData()
        {
            List _list = new List()
            {
                new TProduct {Category="Clothing",Place="Hyderabad",Name="LEVIS",Price=3000,NoOfUnits=52 },
                new TProduct {Category="Clothing",Place="Hyderabad",Name="Buffallo",Price=10000,NoOfUnits=12 },
                new TProduct {Category="Clothing",Place="Banglore",Name="FM",Price=3200,NoOfUnits=5 },
                new TProduct {Category="Clothing",Place="Banglore",Name="PUMA",Price=6400,NoOfUnits=10 },
                new TProduct {Category="Clothing",Place="Banglore",Name="LEVIS",Price=3400,NoOfUnits=20 },
                new TProduct {Category="Clothing",Place="Banglore",Name="Buffallo",Price=34400,NoOfUnits=30 },
                new TProduct {Category="Electronics",Place="Banglore",Name="IPhone",Price=72000,NoOfUnits=1 },
                new TProduct {Category="Electronics",Place="Banglore",Name="LED TV",Price=20000,NoOfUnits=4 },
                new TProduct {Category="Electronics",Place="Banglore",Name="SAMSUNG",Price=300000,NoOfUnits=5 },
                new TProduct {Category="Electronics",Place="Banglore",Name="IPhone",Price=7200,NoOfUnits=1 },
                new TProduct {Category="Electronics",Place="Hyderabad",Name="Fridge",Price=150000,NoOfUnits=10 },
                new TProduct {Category="Electronics",Place="Hyderabad",Name="Laptops",Price=40000,NoOfUnits=15 },
                new TProduct {Category="Electronics",Place="Hyderabad",Name="Laptops",Price=30000,NoOfUnits=6 },
                new TProduct {Category="Electronics",Place="Hyderabad",Name="Laptops",Price=78347,NoOfUnits=8 },
            };
            return _list;
        }
    }
4.Add Controller by right click on controllers folder --> add --> empty controller --> name it as HomeController.cs.
5.Create two action methods to in HomeController render index view and create initial excel file.
HomeController.cs
public ActionResult Index()
        {
            List _listdata = new List();
            pivotdata dal = new pivotdata();
            _listdata = dal.PivotData();
            LoadExcelData(_listdata);
            return View();
        }
        public void LoadExcelData(List _lstproduct)
        {
            string filepath = Server.MapPath("~/Content/ProductReport.xlsx");
            System.Data.DataTable _dt = new System.Data.DataTable();
            try
            {
                if (System.IO.File.Exists(filepath))
                {
                    System.IO.File.Delete(filepath);
                }
                ExcelPackage app = new ExcelPackage();
                var sheet = app.Workbook.Worksheets.Add("ProductReport");
                sheet.Cells[1, 1].LoadFromCollection(_lstproduct, true);
                Stream stream = System.IO.File.Create(filepath);
                app.SaveAs(stream);
                stream.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }       
6.Here Index() method renders the index view and gets the data from data source(from pivotData method) and sends it to LoadExcelData() method.
7.LoadExcelData method exports data came from index method to excel file and saves it on server location(Container folder in solution).

How to create pivot table in excel using asp.net mvc

Step 2: Convert Excel file to Pivot table
1.In this step we are converting the excel to pivot table.
2.Right click solution --> add folder --> name is as Utility.Add class file in utility folder to perform perform exporting excel sheet to pivot excel table.
Export.cs:
public class Export
    {
        //this method will create pivot table in excel file
        public string OfficeDll()
        {
            //gets the excel file from path
            string filepath = System.Web.HttpContext.Current.Server.MapPath("~/Content/ProductReport.xlsx");
            int rows = 0;
            Excel.Application excelApp = new Excel.Application();
            Excel.Workbook excelWorkBook = excelApp.Workbooks.Open(filepath);
            Excel.Worksheet excelworksheet = excelWorkBook.ActiveSheet;
            Excel.Worksheet sheet2 = excelWorkBook.Sheets.Add();
            try
            {
                sheet2.Name = "Pivot Table";
                excelApp.ActiveWindow.DisplayGridlines = false;
                Excel.Range oRange = excelworksheet.UsedRange;
                Excel.PivotCache oPivotCache = excelWorkBook.PivotCaches().Add(Excel.XlPivotTableSourceType.xlDatabase, oRange);  // Set the Source data range from First sheet
                Excel.PivotCaches pch = excelWorkBook.PivotCaches();
                pch.Add(Excel.XlPivotTableSourceType.xlDatabase, oRange).CreatePivotTable(sheet2.Cells[3, 3], "PivTbl_2", Type.Missing, Type.Missing);// Create Pivot table
                Excel.PivotTable pvt = sheet2.PivotTables("PivTbl_2");
                pvt.ShowDrillIndicators = true;
                pvt.InGridDropZones = false;
                Excel.PivotField fld = ((Excel.PivotField)pvt.PivotFields("CATEGORY"));
                fld.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
                fld.set_Subtotals(1, false);

                fld = ((Excel.PivotField)pvt.PivotFields("PLACE"));
                fld.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
                fld.set_Subtotals(1, false);

                fld = ((Excel.PivotField)pvt.PivotFields("NAME"));
                fld.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
                fld.set_Subtotals(1, false);

                fld = ((Excel.PivotField)pvt.PivotFields("PRICE"));
                fld.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
                fld.set_Subtotals(1, false);

                fld = ((Excel.PivotField)pvt.PivotFields("NoOfUnits"));
                fld.Orientation = Excel.XlPivotFieldOrientation.xlDataField;

                sheet2.UsedRange.Columns.AutoFit();
                pvt.ColumnGrand = true;
                pvt.RowGrand = true;
                excelApp.DisplayAlerts = false;
                excelworksheet.Delete();
                sheet2.Activate();
                sheet2.get_Range("B1", "B1").Select();
                excelWorkBook.SaveAs(filepath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                excelApp.DisplayAlerts = false;
                excelWorkBook.Close(0);
                excelApp.Quit();
                Marshal.ReleaseComObject(excelWorkBook);
                Marshal.ReleaseComObject(excelApp);
            }
            catch (Exception ex)
            {
                excelWorkBook.Close(0);
                excelApp.Quit();
                Marshal.ReleaseComObject(excelWorkBook);
                Marshal.ReleaseComObject(excelApp);

                return ex.Message;
            }
            return filepath;
        }
    }    
3.The above method OfficeDll converts excel sheet to pivot table in excel.
4.I added another action method in HomeController of type FileResult to return the Pivot excel file as output in browser when we click on button.
 //Returns the pivot excel table      
        public FileResult Export()
        {
            string finalpath = "";
            Export obj = new Utility.Export();
            finalpath= obj.OfficeDll();
            return File(finalpath, "application/vnd.ms-excel");
        }
5.Add view to index action.
index.cshtml page:

How to create pivot table in excel using asp.net mvc

Download the source code for this application from Github.

Conclusion:

I hope this article help you.Feedback and suggestions are welcome.