Sử dụng Firebase với FireSharp

Các bước dưới đây hướng dẫn bạn sử dụng Firebase với FireSharp trong .NET (C#,VB.NET).

Các bước thực hiện:

  • Cài đặt thư viện FireSharp bằng cách mở Package NuGet Manager Console

Install-Package FireSharp

  • Thiết lập cấu hình và khai báo đối tượng FirebaseClient
 IFirebaseConfig config = new FirebaseConfig
  {
     AuthSecret = "your_firebase_secret",
     BasePath = "https://yourfirebase.firebaseio.com/"
  };
IFirebaseClient  client = new FirebaseClient(config);
  •  Thêm dữ liệu vào Firebase với PUSH method
var todo = new Todo
 {
 name = "Execute PUSH",
 priority = 2
 };
 PushResponse response = client.Push("Key", todo);
  • Update firebase data với Set method
 var todo = new Todo
 {
 name = "Execute SET",
 priority = 2
 };
 SetResponse response = client.Set("key", todo);
  • Get data from Firebase
 FirebaseResponse response = await _client.GetAsync("todos/set");
 Todo todo=response.ResultAs<Todo>(); //The response will contain the data being retreived

Partial Method

Partial method là cách định nghĩa phương thức và cài đặt phương thức ở 2 nơi khác nhau.

Partial methods cho phép người thiết kế định nghĩa các phương thức và để lại phần cài đặt cho các lập trình viên có thể cài đặt hoặc không cài đặt partial method đó. Nếu lập trình viên không cài đặt các partial methods thì khi biên dịch, compiler sẽ remove partial method đó đi. Dưới đây là các điều kiện bắt buộc phải tuân theo khi sử dụng partial methods:

  • Signatuares trong tất cả các khai báo phải giống nhau
  • Kiểu trả về luôn là void
  • Không cho phép sử dụng access modifiers (Partial method luôn ngầm định private)

Ví dụ dưới đây minh họa định nghĩa partial method trong partial class

namespace PM
{
 partial class A
 {
 partial void OnSomethingHappened(string s);
 }
 // This part can be in a separate file.
 partial class A
 {
 // Comment out this method and the program
 // will still compile.
 partial void OnSomethingHappened(String s)
 {
 Console.WriteLine("Something happened: {0}", s);
 }
 }
}

Extension methods

Extension methods cho phép bạn thêm các phương thức vào các kiểu dữ liệu hiện có mà không cần tạo một kiểu dẫn xuất mới, biên dịch lại hoặc sửa đổi kiểu gốc.

Extension methods khai báo static, nhưng chúng được gọi như instance methods

Extension method là phương thức static của lớp static, từ khóa this áp dụng cho tham số đầu tiên của  phương thức. Kiểu của tham số đầu sẽ được mở rộng phương thức đó.

public static class ExtensionMethodDemo
{
    public static string UppercaseFirstLetter(this string value)
    {
        // Uppercase the first letter in the string.
        if (value.Length > 0)
        {
            char[] array = value.ToCharArray();
            array[0] = char.ToUpper(array[0]);
            return new string(array);
        }
        return value;
    }
}

class Program
{
    static void Main()
    {
        // Use the string extension method on this value.
        string value = "hello world!";
        value = value.UppercaseFirstLetter();
        Console.WriteLine(value);
    }
}

Biểu thức Lambda

The term ‘Lambda expression’ has derived its name from ‘lambda’ calculus which in turn is a mathematical notation applied for defining functions. Lambda expressions as a LINQ equation’s executable part translate logic in a way at run time so it can pass on to the data source conveniently

  • These expressions are expressed by the following syntax:

  (input parameters) => expression or statement block

  • Below is an example of lambda ex pression

y => y * y

lambda

Anonymous Types – C#

Kiểu dữ liệu Anonymous cung cấp một cách thuận tiện để gói tập các thuộc tính chỉ đọc vào một đối tượng đơn lẻ mà không cần định nghĩa rõ ràng một kiểu trước. Tên loại được tạo ra bởi trình biên dịch và không có sẵn ở mã nguồn (tìm trong mã nguồn không có kiểu đó). Kiểu dữ liệu của mỗi thuộc tính được suy ra bởi trình biên dịch.

Bạn tạo kiểu Anonymous bằng cách sử dụng toán tử new cùng với một đối tượng khởi tạo

var v = new { Amount = 108, Message = “Hello” };

Console.WriteLine(v.Amount + v.Message);

Shopping cart demo

Mã nguồn đính kèm là ví dụ về cách xây dựng Shopping cart trong ASP.NET MVC, bạn có thể tải mã nguồn đầy đủ ở link sau.

Ví dụ sử dụng csdl Northwind có thể download về từ site của Microsoft.

Code tham khảo ở HomeController.cs

public ActionResult Index()
{
Models.Northwind2Entities db = new Models.Northwind2Entities();
return View(db.Products.ToList());
}
public ActionResult AddToCart(int id, int quantity =1)
{
ShoppingCart cart = (ShoppingCart)Session[“cart”];
if (cart == null){
cart = new ShoppingCart();
}
cart.AddItem(id.ToString(), quantity, 300);
//Save cart
Session[“cart”] = cart;
return RedirectToAction(“YourCart”);
}
public ActionResult YourCart()
{
return View();
}
public ActionResult RemoveItem(int id)
{
ShoppingCart cart = (ShoppingCart)Session[“cart”];
if (cart == null){
cart = new ShoppingCart();
}
cart.RemoveItem(id.ToString());
return RedirectToAction(“YourCart”);
}

public ActionResult Checkout()
{
ShoppingCart cart = HttpContext.Session[“cart”] as ShoppingCart;
//Process your cart

//remove cart
HttpContext.Session.Clear();
return RedirectToAction(“Index”);
}

Code trong Home/Index view

 

idx

Home/Yourcart view

yc

ShoppingCart.cs class

public class ShoppingCart
 {
 // internal member variables
 private String user;
 private DataTable items;
 private Double total;

 // public properties
 public String UserID
 {
 get { return user; }
 set { user = value; }
 }
 public DataTable CartItems
 {
 get { return items; }
 set { items = value; }
 }
 public Double TotalValue
 {
 get { return total; }
 set { total = value; }
 }
 // default constructor
 public ShoppingCart()
 {
 // create an empty shopping cart
 user = String.Empty;
 // create an empty DataTable to hold the cart items
 items = new DataTable("Items");
 items.Columns.Add(new DataColumn("ProductID", Type.GetType("System.String")));
 items.Columns.Add(new DataColumn("Quantity", Type.GetType("System.Int32")));
 items.Columns.Add(new DataColumn("Price", Type.GetType("System.Double")));
 // set total value of the new cart to zero 
 total = 0;
 }
 public void UpdateCart()
 {
 //Update cart code
 }
 public void RemoveItem(string productID)
 {
 DataRow[] rows = items.Select("ProductID='" + productID + "'");
 if (rows.Length > 0)
 {
 items.Rows.Remove(rows[0]);
 }
 }
 // add an item to the cart
 public void AddItem(String proId, Int32 Qty, Double price)
 {
 if (!IsExistItem(proId))
 {
 // create new DataTable row and populate with values - Hàng mới
 DataRow row = items.NewRow();
 row["ProductID"] = proId;
 row["Quantity"] = Qty;
 row["Price"] = price;
 // add row to DataTable update total value
 items.Rows.Add(row);
 total += (Qty * price);
 }
 else
 {
 //tăng số lượng hàng trong giỏ hàng
 for (int i = 0; i < items.Rows.Count; i++)  {  if (items.Rows[i]["ProductID"].Equals(proId))  {  items.Rows[i]["Quantity"] = int.Parse(items.Rows[i]["Quantity"].ToString()) + Qty;  total += (Qty * price);  break;//Exit loop  }  }  }  }  public bool IsExistItem(string proID)  {  bool b = false;  if (items.Rows.Count > 0)
 {
 for (int i = 0; i < items.Rows.Count; i++)
 {
 if (items.Rows[i]["ProductID"].Equals(proID))
 {
 b = true;
 break;//exit loop
 }
 }
 }
 return b;
 }
 // empty the cart by clearing the DataTable
 public void Clear()
 {
 items.Rows.Clear();
 total = 0;
 }
 }

ChartJS – Hướng dẫn sử dụng biểu đồ ChartJS

Bài viết này hướng dẫn bạn cách tích hợp ChartJS và sử dụng biểu đồ trong ứng dụng web, các bước thực hiện khá đơn giản như sau:

  • Download ChartJS và tích hợp vào trang như sau

<script src=”Scripts/Chart.min.js” />;

  • Khai báo canvas trong HTML như sau

<canvas id=”clients” width=”500″ height=”350″></canvas>

  • Load dữ liệu cho biểu đồ và vẽ biểu đồ

<script>
var barData = {
labels: [‘Italy’, ‘UK’, ‘USA’, ‘Germany’, ‘France’, ‘Japan’],
datasets: [
{
label: ‘2010 customers #’,
fillColor: ‘#382765’,
data: [2500, 1902, 1041, 610, 1245, 952]
},
{
label: ‘2014 customers #’,
fillColor: ‘#7BC225’,
data: [3104, 1689, 1318, 589, 1199, 1436]
}
]
};

var context = document.getElementById(‘clients’).getContext(‘2d’);
var clientsChart = new Chart(context).Bar(barData);
</script>