Code C#: Mô hình lập trình 3 lớp - 3 Tiers (Phần 2)

Trong bài viết Mô hình lập trình 3 lớp - 3 Tiers (Phần 1), các bạn đã xây dựng được các lớp căn bản phục vụ cho bảng benhnhan. Trong phần 2, các bạn sẽ tìm hiểu các lớp ở tầng bên trên như Business và Presentation.
Mô hình lập trình 3 lớp
Hình 1. Mô hình lập trình 3 lớp
5. Lớp BenhNhanDAL.cs
using System;
using System.Collections.Generic;
using System.Text;

using System.Data;
using System.Data.OleDb;
using System.Collections;
using Entities;

namespace DataAccessLayer
{
    public class BenhNhanDAL : DBConnection
    {
        private DataSet ds = null;
        private OleDbDataAdapter daBN;
       
        public BenhNhanDAL(): base()
        {
        }

        public DataSet getAllBenhNhan()
        {
            try
            {
                ds = new DataSet();
                daBN = new OleDbDataAdapter("select * from BenhNhan", con);
                daBN.Fill(ds, "BenhNhan");
            }
            catch (Exception)
            {
                throw;
            }
            return ds;
        }

        public BenhNhanEntity getDataByCMND(string soCMND)
        {
            BenhNhanEntity bn = null;
            try
            {
                string sql = "SELECT * FROM BenhNhan WHERE CMND='" + soCMND + "'";
                if (con.State != ConnectionState.Open)
                    con.Open();
                OleDbDataReader dr = new OleDbCommand(sql, con).ExecuteReader();
                if (dr.Read())
                {
                    bn = new BenhNhanEntity();
                    bn.SoCMND = dr["CMND"].ToString();
                    bn.TenBN = dr["TenBN"].ToString();
                    bn.DiaChiBN = dr["DiachiBN"].ToString();
                    bn.MaBS = dr["MaBS"].ToString();
                    dr.Close();
                }
            }
            catch (Exception)
            {
                throw;
            }
            return bn;
        }

        public List<BenhNhanEntity> getBenhNhanOfBacSy(string MaBS)
        {
            List<BenhNhanEntity> lst = null;
            try
            {
                lst = new List<BenhNhanEntity>();
                string sql = "SELECT * FROM BenhNhan where MaBS='" + MaBS + "'";
                if (con.State != ConnectionState.Open)
                    con.Open();
                OleDbDataReader reader = new OleDbCommand(sql, con).ExecuteReader();
                while (reader.Read())
                {
                    BenhNhanEntity bn = new BenhNhanEntity();
                    bn.SoCMND = reader["CMND"].ToString();
                    bn.TenBN = reader["TenBN"].ToString();
                    bn.DiaChiBN = reader["DiaChiBN"].ToString();
                    bn.MaBS = reader["MaBS"].ToString();
                    lst.Add(bn);
                }
                reader.Close();
            }
            catch (Exception)
            {
                throw;
            }
            return lst;
        }

        public void updateBenhNhan()
        {
            OleDbCommandBuilder bd = new OleDbCommandBuilder(daBN);
            daBN.Update(ds, "BenhNhan");
        }

        public void updateBenhNhan(BenhNhanEntity bn)
        {
            try
            {
                getAllBenhNhan();
                DataTable dt = ds.Tables["BenhNhan"];
                DataRow dr = dt.NewRow();
                dr["CMND"] = bn.SoCMND;
                dr["TenBN"] = bn.TenBN;
                dr["DiaChiBN"] = bn.DiaChiBN;
                dr["MaBS"] = bn.MaBS;
                dt.Rows.Add(dr);
                updateBenhNhan();
            }
            catch (Exception)
            {
                throw;
            }

        }
        public bool xoaBenhNhan(string MaBN)
        {
            bool kq = false;
            try
            {
                kq = (new OleDbCommand("DELETE FROM BenhNhan WHERE CMND='" + MaBN + "'", con).ExecuteNonQuery() > 0 ? true : false);
            }
            catch (Exception)
            {

                throw;
            }
            return kq;
        }
    }
}
6. Lớp BenhNhanBLL.cs
using System;
using System.Collections.Generic;
using System.Text;
using DataAccessLayer;
using System.Data;
using Entities;

namespace BusinessLogicLayer
{
    public class BenhNhanBLL
    {
        private BenhNhanDAL dal;

        public BenhNhanBLL()
        {
            try
            {
                dal = new BenhNhanDAL();
            }
            catch (Exception)
            {
                throw;
            }
        }

        public DataSet getAllBenhNhan()
        {
            DataSet ds = null;
            try
            {
                ds = dal.getAllBenhNhan();
            }
            catch (Exception)
            {
                throw new Exception("Không thể lấy danh sách bệnh nhân.");
            }
            return ds;
        }

        public BenhNhanEntity getDataByCMND(string soCMND)
        {
            BenhNhanEntity bn = null;
            try
            {
                bn = dal.getDataByCMND(soCMND);
            }
            catch (Exception)
            {
                throw new Exception("Không tồn tại bệnh nhân có số CMND này.");
            }
            return bn;
        }

        public List<BenhNhanEntity> getBenhNhanOfBacSy(string msBSDT)
        {
            List<BenhNhanEntity> lst = null;
            try
            {
                lst = dal.getBenhNhanOfBacSy(msBSDT);
            }
            catch (Exception)
            {
                throw new Exception("không thể lấy danh sách Bệnh nhân của BSDT này.");
            }
            return lst;
        }

        public void updateBenhNhan()
        {
            try
            {
                dal.updateBenhNhan();
            }
            catch (Exception)
            {
                throw new Exception("Không thể cập nhật dữ liệu");
            }
        }

        public void UpdateBenhNhan(BenhNhanEntity bn)
        {
            try
            {
                BenhNhanEntity old = dal.getDataByCMND(bn.SoCMND);
                if (old != null)
                    throw new Exception("Bệnh nhân này đã tồn tại");
                dal.updateBenhNhan(bn);
            }
            catch (Exception)
            {

                throw;
            }
        }

        public bool xoaBenhNhan(string maBN)
        {
            bool x = false;
            try
            {
                x = dal.xoaBenhNhan(maBN);
            }
            catch (Exception)
            {
                throw;
            }
            return x;
        }
    }
}
7. Lớp BLL.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Data;
using BusinessLogicLayer;

namespace BusinessLogicLayer

{
    public class BLL
    {
        public BLL()
        {
       
        }
        public void BuildTree(BacSyBLL bllBS, TreeView tv)
        {
            TreeNode node0, node1; // cho cấp 0, 1 của cây BS
            tv.Nodes.Clear();
            DataSet ds = bllBS.getAllBacSy();
            node0 = tv.Nodes.Add("DANH SÁCH CÁC BÁC SỸ");
            node0.ImageIndex = 0;
            foreach (DataRow dr1 in ds.Tables["BacSy"].Rows)
            {
                node1 = node0.Nodes.Add("Bác sỹ: " + dr1["TenBS"].ToString());
                node1.Tag = dr1["MaBS"].ToString();
                node1.ImageIndex = 1;

                node1.Nodes.Add("Địa chỉ: " + dr1["DiaChiBS"].ToString());
                node1.Nodes.Add("Điện thoại: " + dr1["DienThoaiBS"].ToString());
            }
            tv.ExpandAll();
        }
    }
}
Tags: Visual Studio, Windows Form, 3 tiers, Mô hình 3 lớp

Related Posts
Previous
« Prev Post