Search

happycodersblog

"Stay Hungry. Stay Foolish." Steve Jobs

JQuery examples



<!DOCTYPE html>
<html>
<head>
    https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
    
        $(function(){
            $('#playerTable tbody').on("click","tr",function(){
                var rowInfo= $(this).closest('tr').find('td').map(function(){
                    return $(this).text();
                }).get().join();
                //console.log(rowInfo);
            });

            $('.menu ul').hide(400);
            $('.menu li').on('click', function(e){
                e.stopPropagation();
                $(this).children('ul').slideToggle();
            });

            $('#ckbCheckAll').on('click',function(e){
                var el=$(this);
                $('input[type=checkbox][name=ckbMember]').prop('checked',el[0].checked);
                $('input[type=checkbox][name=ckbMember]').each(function(i,el){
                    el=$(el);
                    console.log(el[0].getAttribute('data-id'));
                });
            });

            $('input[type=checkbox][name=ckbMember]').on('click',function(e){
                //console.log($(this)[0].getAttribute('data-id'));
                var ckbMemberChecked= $('input[type=checkbox][name=ckbMember]:checked').length;
                var ckbMember= $('input[type=checkbox][name=ckbMember]').length;
                
                if(ckbMemberChecked==ckbMember)
                {
                    $('#ckbCheckAll').prop('checked','checked');
                }
                else
                {
                    $('#ckbCheckAll').prop('checked','');
                }
            });

            $('.btnSubmit').on('click',function(){
                var Ids=[];
                $('input[type=checkbox]:checked').each(function(i,el){
                    el=$(el);
                    Ids.push(el[0].getAttribute('data-id'));
                });
                console.log(Ids);
            });
        });

    
</head>
<body>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
PlayerId First Name Last Name Age
1 jack wilshere 23
2 aaron ramsey 23
3 mesut ozil 25
    
    <ul class="menu">         <li>Home             <ul class="level1">                 <li>The Club                     <ul class="level2">                         <li>Arsenal</li>                         <li>Chelsea</li>                         <li>Real</li>                     </ul>                 </li>                 <li>Fans</li>             </ul>         </li>         <li>News             <ul class="level1">                 <li>Player</li>                 <li>Match</li>                 <li>Transfer</li>             </ul>         </li>         <li>Teams             <ul class="level1">                 <li>First Team</li>                 <li>Sub Team</li>                 <li>Academy Team</li>             </ul>         </li>     </ul> </body> </html>

PDF với iTextSharp

 

iTextSharp NuGet latest version: Install-Package iTextSharp

Public FileResult CreatePdf()
{
     MemoryStream workStream = new MemoryStream();
     StringBuilder status=new StringBuilder();
     string pdfFileName= string.Format("SamplePdf-"+ DateTime.now.ToString("yyyyMMdd")+".pdf");

     Document doc=new Document();

     // 5: số lượng cột
     PdfPTable table= new PdfPTable(5);

     // Khởi tạo document
     PdfWriter.GetInstance(doc,workStream).CloseStream=false;

     doc.Open();
     doc.Add(AddContentPdf(table));
     doc.Close();

     byte[] byteInfo= workStream.ToArray();
     workStream.write(byteInfo,0, byteInfo.length);
     workStream.Position=0;

     return File(workStream,"application/pdf",pdfFileName);
}

protected PdfPTable AddContentPdf(PdfPTable table)
{
     List<Account> accounts= new List<Account>()
     {
        new Account{Id=1, FirstName="jack", LastName="wilshere", IsEnabled=true,DateRegistered=DateTime.now}
     };

     AddCellToHeader(table,"Id");
     AddCellToHeader(table,"FirstName");
     AddCellToHeader(table,"LastName");
     AddCellToHeader(table,"IsEnabled");
     AddCellToHeader(table,"DateRegistered");

     foreach(var account in accounts)
     {
       AddCellToBody(table,account.Id);
       AddCellToBody(table,account.FirstName);
       AddCellToBody(table,account.LastName);
       AddCellToBody(table,account.IsEnabled.ToString());
       AddCellToBody(table,account.DateRegistered.ToShortDateString());
     }

 return table;
}

private static void AddCellToHeader(PdfPTable tableLayout, string cellText)
{
     tableLayout.AddCell(new PdfPCell(new Phrase(cellText, new Font(Font.FontFamily.HELVETICA, 8, 1, iTextSharp.text.BaseColor.YELLOW))) { HorizontalAlignment = Element.ALIGN_LEFT, Padding = 5, BackgroundColor = new iTextSharp.text.BaseColor(128, 0, 0) });
}

private static void AddCellToBody(PdfPTable tableLayout, string cellText)
{
     tableLayout.AddCell(new PdfPCell(new Phrase(cellText, new Font(Font.FontFamily.HELVETICA, 8, 1, iTextSharp.text.BaseColor.BLACK))) { HorizontalAlignment = Element.ALIGN_LEFT, Padding = 5, BackgroundColor = new iTextSharp.text.BaseColor(255, 255, 255) });
}

Làm việc với sqlConnection

public class AccountDatabaseRepository : IAccountService
    {
        const string CONNECTION_STRING_NAME = "IdentityContext";

        public SqlConnection GetConnection()
        {
            ConnectionStringSettings cstr = ConfigurationManager.ConnectionStrings[CONNECTION_STRING_NAME];
            if (cstr == null)
                throw new InvalidOperationException("Connection string " + CONNECTION_STRING_NAME + "was not defined");
            return new SqlConnection(cstr.ConnectionString);
        }

        void SetAccountParams(SqlCommand cmd, string firstName, string lastName, string email, string AspNetUserId, Guid tokenGuid, DateTime tokenExpiration, string registeredById, bool RecieveEmailNotification, bool TCAccepted, DateTime dateRegistered)
        {
            cmd.CommandType = CommandType.Text;
            var param = cmd.CreateParameter();

            param.ParameterName = "@FirstName";
            param.DbType = DbType.String;
            param.Value = firstName == null ? (object)DBNull.Value : firstName;
            cmd.Parameters.Add(param);

            param = cmd.CreateParameter();
            param.ParameterName = "@LastName";
            param.DbType = DbType.String;
            param.Value = lastName == null ? (object)DBNull.Value : lastName;
            cmd.Parameters.Add(param);

            param = cmd.CreateParameter();
            param.ParameterName = "@Email";
            param.DbType = DbType.String;
            param.Value = email == null ? (object)DBNull.Value : email;
            cmd.Parameters.Add(param);

            param = cmd.CreateParameter();
            param.ParameterName = "@AspNetUserId";
            param.DbType = DbType.String;
            param.Value = AspNetUserId;
            cmd.Parameters.Add(param);

            param = cmd.CreateParameter();
            param.ParameterName = "@TokenGuid";
            param.DbType = DbType.Guid;
            param.Value = tokenGuid;
            cmd.Parameters.Add(param);

            param = cmd.CreateParameter();
            param.ParameterName = "@TokenExpiration";
            param.DbType = DbType.DateTime;
            param.Value = tokenExpiration;
            cmd.Parameters.Add(param);

            param = cmd.CreateParameter();
            param.ParameterName = "@RegisteredById";
            param.DbType = DbType.Int32;
            param.Value = registeredById == null ? (object)DBNull.Value : registeredById;
            cmd.Parameters.Add(param);

            param = cmd.CreateParameter();
            param.ParameterName = "@RecieveEmailNotifications";
            param.DbType = DbType.Boolean;
            param.Value = RecieveEmailNotification;
            cmd.Parameters.Add(param);

            param = cmd.CreateParameter();
            param.ParameterName = "@TCAccepted";
            param.DbType = DbType.Boolean;
            param.Value = TCAccepted;
            cmd.Parameters.Add(param);

            param = cmd.CreateParameter();
            param.ParameterName = "@DateRegistered";
            param.DbType = DbType.DateTime;
            param.Value = dateRegistered;
            cmd.Parameters.Add(param);
        }
        public void CreateNewUser(string firstName, string lastName, string email, string AspNetUserId, Guid tokenGuid, DateTime tokenExpiration, string registeredById, bool RecieveEmailNotification, bool TCAccepted, DateTime dateRegistered)
        {
            using (SqlConnection conn = GetConnection())
            {
                using (SqlCommand cmd = new SqlCommand("INSERT [dbo].[Accounts] ([FirstName], [LastName], [Email], [AspNetUserId], [RegisteredById], [DateRegistered], [RecieveEmailNotifications], [TokenGuid], [TokenExpiration], [TCAccepted]) VALUES (@FirstName,@LastName,@Email,@AspNetUserId,@RegisteredById,@DateRegistered,@RecieveEmailNotifications,@TokenGuid,@TokenExpiration,@TCAccepted)", conn))
                using (SqlCommand cmdId = new SqlCommand("INSERT [dbo].[Accounts] ([FirstName], [LastName], [Email], [AspNetUserId], [RegisteredById], [DateRegistered], [RecieveEmailNotifications], [TokenGuid], [TokenExpiration], [TCAccepted]) VALUES (@FirstName,@LastName,@Email,@AspNetUserId,@RegisteredById,@DateRegistered,@RecieveEmailNotifications,@TokenGuid,@TokenExpiration,@TCAccepted); select SCOPE_IDENTITY();", conn))
                {
                    SetAccountParams(cmd, firstName, lastName, email, AspNetUserId, tokenGuid, tokenExpiration, registeredById, RecieveEmailNotification, TCAccepted, dateRegistered);
                    SetAccountParams(cmdId, firstName, lastName, email, AspNetUserId, tokenGuid, tokenExpiration, registeredById, RecieveEmailNotification, TCAccepted, dateRegistered);

                    object AccountId = null;
                    conn.Open();
                    try
                    {
                        cmd.ExecuteNonQuery();
                    }
                    catch (Exception e)
                    {
                        throw new Exception(e.Message);
                    }
                    try
                    {
                        cmdId.ExecuteScalar();
                    }
                    catch (Exception e)
                    {
                        throw new Exception(e.Message);
                    }
                    conn.Close();
                    Convert.ToInt32(AccountId);
                }
            }
        }
        public string GetAspNetUserByIdentityId(string Id)
        {
            using (SqlConnection conn = GetConnection()) 
            {
                using (SqlCommand cmd = new SqlCommand("SELECT FirstName, LastName FROM Accounts acc join AspNetUsers a ON acc.AspNetUserId=a.Id where AspNetUserId=@Id", conn))
                {
                    var param= cmd.CreateParameter();
                    param.ParameterName = "@Id";
                    param.DbType = DbType.String;
                    param.Value = Id;
                    cmd.Parameters.Add(param);
                    conn.Open();
                    object account = null;
                    DataTable dt = new DataTable();
                    try
                    {
                        dt.Load(cmd.ExecuteReader());
                        using (SqlDataAdapter adt = new SqlDataAdapter(cmd)) 
                        {
                            adt.Fill(dt);
                        }
                        if (dt.Rows.Count > 0)
                        {
                            string firstName = dt.Rows[0]["FirstName"].ToString();
                            string lastName = dt.Rows[0]["LastName"].ToString();
                        }
                        account = cmd.ExecuteScalar();
                        conn.Close();
                    }
                    catch (Exception e)
                    {
                        throw new Exception("Recode with AspNetUserId: " + Id + " was not found", e);
                    }
                    return "";
                }
            }
        }
    }

TextArea Characters Remaining SoureCode

function CharactersRemaining(options) {
        options = options || {};
        var textbox = options.textbox,
            counter = options.counter,
            counterFormatText = options.counterFormatText || "%n% characters remaining",
            max = options.max || 1000;

        if (!counter) {
            counter = $("<span class='char-counter' />");
            textbox.after(counter);
        }

        function UIUpdateCount(length) {
            counter.html(formatText(counterFormatText, {n: max - length}));
        }

        textbox.on('keypress', function (e) {
            var len = $(this).val().length;
            if (e.ctrlKey ||
                e.keyCode === 20 || 
                e.keyCode === 33 || e.keyCode === 34 || // page up/down
                e.keyCode === 35 || e.keyCode === 36 || // home/end
                (e.keyCode >= 37 && e.keyCode <= 40) || // arrow keys
                e.keyCode === 45 || e.keyCode === 46 || // insert/delete
                e.keyCode === 8
                ) {
                // Don't prevent default.
            }
            else if (len === max) {
                e.preventDefault();
            }
        });

        textbox.on('keyup', function (e) {
            var len = $(this).val().length;
            UIUpdateCount(len);
        });

        textbox.attr('maxlength', max);
        UIUpdateCount(textbox.val().length);
    }

    $("TEXTAREA.char-count").each(function (i, el) {
        var textbox = $(el);
        var max = parseInt(textbox.attr('maxlength'));

        new CharactersRemaining({
            textbox: textbox,
            max: max
        });
    });



formatText = function(text,args){
                if(args){
                    for(var k in args){
                        text=text.replace(new RegExp("%" + k+ "%","gi"),args[k]);
                    }
                }
                return text;
            }

<!DOCTYPE html>
<html>
<head>
    https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js
    
        $(function(){
            function CharactersRemaining(options){
                options =options || {};
                var textbox= options.textbox,
                counter= options.counter,
                counterFormatText= options.counterFormatText || "%n% chacracters remaining",
                max = options.max||1000;

                if(!counter){
                    counter= $("");
                    textbox.after(counter);
                }

                function UIUpdate(length){
                    counter.html(formatText(counterFormatText,{n:max-length}));
                }

                textbox.on('keypress',function(e){
                    var len = $(this).val().length;

                });

                textbox.on('keyup', function (e) {
                    var len = $(this).val().length;
                    UIUpdate(len);
                });
                
                textbox.attr('maxlength',max);
                UIUpdate(textbox.val().length);
            

            }


            formatText= function(text, args){
                if(args){
                    for(var k in args){
                        text= text.replace(new RegExp("%" + k +"%","gi"),args[k]);
                    }
                }
                return text;
            };

            $('textarea.char-count').each(function(i, el){
                var textbox=$(el);
                var max = parseInt(textbox.attr('maxlength'));

                new CharactersRemaining({
                    textbox:textbox,
                    max:max
                });
            });
        });
    
</head>
<body>
    
             
</body> </html>

Regex remove all special characters from string

using:

Regex.Replace(“txtOut”, @”[^\w\d]”, “”).Trim();

Bonus 😀

funny

(ASP.NET) Identity Providers

Tổng quan asp.net identity providers, ảnh hơi mờ tí 😦

(ASP.NET) Gửi email với template dựng sẵn xử dụng MailDefination Object.

MailDefination là một lựa chọn tốt để định dạng thư điện tử theo template dựng sẵn đi với đó là các thẻ (ví dụ như <%FirstName%>, <%Address%>…) bạn muốn thay thể.

“MailDefinition Class

.NET Framework (current version) Other Versions
 
Allows a control to create e-mail messages from text files or strings. This class cannot be inherited.
Namespace:   System.Web.UI.WebControls
Assembly:  System.Web (in System.Web.dll)

Inheritance Hierarchy
System.Object
  System.Web.UI.WebControls.MailDefinition”
(theo https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.maildefinition(v=vs.110).aspx)

Ta có một email template đơn giản:
Dear <%FirtsName%>,

Thank you for creating an account with us. Please click on the link below to verify your information.

<%ReturnLink%>

Cheer,
Team.

Đây là class MailHelper hoàn chỉnh với MailDefinition

public class MailHelper
    {
        public readonly int Timeout = 18000;
        public readonly string _host;
        public readonly int _port;
        public readonly string _user;
        public readonly string _pass;
        public readonly bool _ssl;
        public readonly string _template;

        public string Sender { get; set; }
        public string Recipient { get; set; }
        public string RecipientCC { get; set; }
        public string Subject { get; set; }
        public string Body { get; set; }

        public MailHelper(string username, string password,string template, bool ssl = true, string host = “smtp.gmail.com”, int port = 587)
        {
            _host = host;
            _port = port;

            _user = username;
            _pass = password;

            _ssl = ssl;
            _template = template;
        }

        public void Send(string firstName, string returnLink, string recipient)
        {
            MailDefinition mdf = new MailDefinition();
            mdf.IsBodyHtml = true;
            mdf.BodyFileName = HostingEnvironment.MapPath(ConfigurationManager.AppSettings[“EmailTemplate”] + _template);

            ListDictionary replacement = new ListDictionary();
            replacement.Add(“<%FirstName%>”, firstName);
            replacement.Add(“<%ReturnLink%>”, returnLink);
            Recipient = recipient;
            MailMessage mailMessage = mdf.CreateMailMessage(Recipient, replacement, new System.Web.UI.Control());
            mailMessage.Subject = Subject;

            var smtp = new SmtpClient(_host, _port);
            smtp.UseDefaultCredentials = false;
            smtp.Credentials = new NetworkCredential(_user, _pass);
            smtp.EnableSsl = _ssl;

            smtp.Send(mailMessage);
        }
    }

Đừng quên cấu hình MailSetting trong web.config 😀

<system.net>
    <mailSettings>
      <smtp from=”info@domainguarder.com”>
        <network defaultCredentials=”true” host=”smtp.gmail.com” password=”*******” userName=”****@gmail.com” />
      </smtp>
    </mailSettings>
  </system.net>

và cả đường dẫn của thư mục nơi các bạn đặt file template

<appSettings>
    <add key=”EmailTemplate” value=”//EmailTemplate//” />
  </appSettings>

 

Đơn giản vậy thôi, hehe 😀

Bonus thêm cho các bạn 1 tấm ảnh đẹp mình sưu tầm được 😀

stay_hungry_stay_foolish-t2

Authentication và Authorization trong asp.net Web MVC

Mình vừa hoàn thành xong một demo về authentication và authorization với mvc application nên muốn chia sẻ lên đây để các bạn tham khảo. Mình nghĩ với những bạn mới tiếp xúc với mvc hay api thì rất ngại những vấn đề liên quan đến security, bản thân mình trước đây cũng vậy 😦 . Security có rất nhiều khía cạnh, tuy nhiên trong bài viết này mình chỉ trình bày việc tạo một user và login vào lại hệ thống, nếu unAuthentication thì hệ thống sẽ redirect về loginUrl được cấu hình trong web.config

Technical chính trong app:

  • Asp.net mvc.
  • Unity.
  • Asp.net identity
  • AutoMapper

 

trê

Cây solution của mình 😀 thôi bắt tay vào code nào 😀

  1. FrameWork. Core.Identity

    Đầu tiên là library framework.core.identity. Các bạn tạo public class đặt tên là IdentityUserManager.cs

1

(còn tiếp… :D)

Happy coder :)

Placeholder Image

Xin chào các bạn,

Cảm ơn các bạn đã ghé thăm happycodersblog😀 . Thật ra đây là lần đầu tiên mình sử dụng wordpress để viết blog và chắc chắn đây cũng là bài viết đầu tiên của mình😀.

b6f55ec1-coder

Mình là Titi, mình đang làm trong một công ty phần mềm, và tuổi nghể của mình mới bước qua con số 3 mà thôi😀 . Việc tạo ra blog nào không phải là một điều ngẩu nhiên vì các bạn cũng biết, dân IT tụi mình nhiều lúc gặp phải rất áp lực rất lớn, không chỉ trong công việc mà cả bên ngoài cuộc sống và không phải lúc nào bạn cũng có thể giải quyết những áp lực đó  được 😦 .

Blog này ra đời là nơi để mình chia sẻ những điều liên qua đến công việc, cuộc sống. Nó chứa đựng những câu chuyện, những kinh nghiệm trong công việc, hay đơn giản chỉ là những bài post nói về những điều mình thích, những địa điểm du lịch, vân vân và vân vân.😀. Vì vậy nếu bạn thấy một tiêu đề về công nghệ chứa hình ảnh về một món ăn hay một điều gì đó vui nhộn thì đừng ngạc nhiên nhé😀

Nếu các bạn muốn tìm đọc những blog đơn thuần về công nghệ thì happycodersbog chắc chắn không phải là lựa chọn tốt nhất của bạn. Nhưng nếu các bạn muốn tìm đến một nơi vừa có thể đọc được những bài viết về chuyên môn, vừa có thể tìm thấy những niềm vui nhỏ ngoài giờ làm thì lựa chọn của bạn là chính xác rồi😀

Chúc bạn có nhiều sức khỏe và thành công trong cuộc sống!😀

Clark.