/// <summary>
 /// Kiểm tra và thêm mới TaiKhoanDangKyToChucChungNhan
 /// </summary>
 /// <param name="entity">Entity</param>
 /// <returns>Int32: ID của TaiKhoanDangKyToChucChungNhan Mới Thêm Vào</returns>
 public static Int32 Add(TaiKhoanDangKyToChucChungNhanEntity entity)
 {
     checkLogic(entity);
     checkDuplicate(entity, false);
     checkFK(entity);
     return TaiKhoanDangKyToChucChungNhanDAL.Add(entity);
 }
 /// <summary>
 /// Kiểm tra và chỉnh sửa TaiKhoanDangKyToChucChungNhan
 /// </summary>
 /// <param name="entity">TaiKhoanDangKyToChucChungNhanEntity</param>
 /// <returns>bool:kết quả thực hiện</returns>
 public static bool Edit(TaiKhoanDangKyToChucChungNhanEntity entity)
 {
     checkExist(entity.PK_iTaikhoanTochucID);
     checkLogic(entity);
     checkDuplicate(entity, true);
     checkFK(entity);
     return TaiKhoanDangKyToChucChungNhanDAL.Edit(entity);
 }
    protected void btnRegistry_Click(object sender, EventArgs e)
    {
        UserEntity oUser = new UserEntity();
        string password = INVI.INVILibrary.INVISecurity.MD5(txtPassword.Text);
        oUser.iGroupID = 3;
        oUser.sEmail = txtEmail.Text;
        oUser.sIP = Request.ServerVariables["REMOTE_ADDR"].Trim();
        oUser.sPassword = password;
        oUser.sUsername = txtUsername.Text;
        oUser.bActive = false;
        oUser.tLastVisit = DateTime.Now;
        try
        {
            if (UserBRL.getByUserName(txtUsername.Text) != null)
            {
                litThongtin.Text = "<b>Tài khoản này đã tồn tại</b>, xin nhập tài khoản khác.";
                return;
            }
            int FK_iUserID = UserBRL.Add(oUser);
            TaiKhoanDangKyToChucChungNhanEntity oTaikhoanDangkyTCCN = new TaiKhoanDangKyToChucChungNhanEntity();
            oTaikhoanDangkyTCCN.dNgaydangky = DateTime.Today;
            oTaikhoanDangkyTCCN.FK_iTochucchungnhanID = int.Parse(Session["TCCNID"].ToString());
            oTaikhoanDangkyTCCN.bDuyet = false;
            oTaikhoanDangkyTCCN.FK_iTaikhoanID = FK_iUserID;
            TaiKhoanDangKyToChucChungNhanBRL.Add(oTaikhoanDangkyTCCN);
            litThongtin.Text = "<b>Đăng ký thành công.</b>Các thông tin của bạn sẽ được gửi đến Tổ chức chứng nhận để kiểm duyệt. Kết quả sẽ được gửi đến email mà bạn đã khai báo";
        }
        catch(Exception ex)
        {

        }
        finally
        {

        }
    }
    protected void btnRegistry_Click(object sender, EventArgs e)
    {
        ccJoin.ValidateCaptcha(txtCapcha.Text);
        if (!ccJoin.UserValidated)
        {
            lblLoi.Text = "Mã xác nhận không đúng!";
            return;
        }
        try
        {
            string password = INVISecurity.MD5(txtPassword.Text);

            UserEntity us = new UserEntity();
            us.sUsername = txtUsername.Text;
            us.sPassword = password;
            us.sEmail = txtEmail.Text;
            us.bActive = false;
            us.tLastVisit = DateTime.Now;
            us.sIP = Request.ServerVariables["REMOTE_ADDR"].Trim();
            us.iGroupID = 2;
            fk_user = UserBRL.Add(us);

            FK_iUser.Value = fk_user.ToString();
            lblLoi.Text = "Tài khoản đã được tạo thành công";
            pnDangKyTV.Visible = false;
            //Thêm cơ sở nuôi trồng giả định
            List<ToadoEntity> lstToado = ToadoBRL.GetAll();
            List<DoituongnuoiEntity> lstDoituong = DoituongnuoiBRL.GetAll();
            List<HinhthucnuoiEntity> lstHinhthuc = HinhthucnuoiBRL.GetAll();
            CosonuoitrongEntity oCoso = new CosonuoitrongEntity();
            oCoso.sTencoso = "Tên cơ sở";
            oCoso.sTenchucoso = "Tên chủ cơ sở";
            oCoso.FK_iQuanHuyenID = 2;
            oCoso.FK_iToadoID = lstToado[0].PK_iToadoID;
            oCoso.FK_iDoituongnuoiID = lstDoituong[0].PK_iDoituongnuoiID;
            oCoso.FK_iHinhthucnuoiID = lstHinhthuc[0].PK_iHinhthucnuoiID;
            oCoso.FK_iUserID = fk_user;
            // Lấy thông tin về Tổ chức chứng nhận
            // Dựa trên User và GroupID
            // Từ đó lấy được ID của Tổ chức chứng nhận
            if(Session["userID"]!=null)
            {
                int iUserID_TCCN = Convert.ToInt32(Session["userID"].ToString());
                List<TochucchungnhanTaikhoanEntity> lstTochucTaikhoan = TochucchungnhanTaikhoanBRL.GetByFK_iTaikhoanID(iUserID_TCCN);
                if (lstTochucTaikhoan.Count > 0)
                {
                    oCoso.FK_iTochucchungnhanID = lstTochucTaikhoan[0].FK_iTochucchungnhanID;
                }
                else
                {
                    Response.Write("<script>alert('Tổ chức chứng nhận không hợp lệ!');</script>");
                }
            }
            try
            {
                iCosonuoitrongID = CosonuoitrongBRL.Add(oCoso);
            }
            catch // Không thêm được thì mới xóa User đi
            {
                UserBRL.Remove(fk_user);
            }
            if (fk_user > 0)
            {
                TaiKhoanDangKyToChucChungNhanEntity oTaikhoandangkyVoiTCCN = new TaiKhoanDangKyToChucChungNhanEntity();
                oTaikhoandangkyVoiTCCN.bDuyet = false;
                oTaikhoandangkyVoiTCCN.dNgaydangky = DateTime.Today;
                oTaikhoandangkyVoiTCCN.FK_iTaikhoanID = fk_user;
                oTaikhoandangkyVoiTCCN.FK_iTochucchungnhanID = oCoso.FK_iTochucchungnhanID;
                TaiKhoanDangKyToChucChungNhanBRL.Add(oTaikhoandangkyVoiTCCN);
            }
            FK_iCosonuoitrong.Value = iCosonuoitrongID.ToString();
            btnDKThongtinCoSoNuoi.CommandName = "Edit";
            //List<UserEntity> list = UserBRL.GetAll();
            //list.Sort(
            //    delegate(UserEntity firstEntity, UserEntity secondEntity)
            //    {
            //        return secondEntity.iUserID.CompareTo(firstEntity.iUserID);
            //    }
            //);
            //fk_user = list[0].iUserID;
            SendEmailVerificationToUser(txtUsername.Text, fk_user.ToString());
            lblLoi.Text = "";
            pnDangKyTV.Visible = false;
            pnCSNT.Visible = true;
        }
        catch (Exception ex)
        {
            lblLoi.Text = ex.Message.ToString();

        }
    }
 /// <summary>
 /// Kiểm tra logic Entity
 /// </summary>
 /// <param name="entity">TaiKhoanDangKyToChucChungNhanEntity: entity</param>
 private static void checkLogic(TaiKhoanDangKyToChucChungNhanEntity entity)
 {
     if (entity.FK_iTaikhoanID < 0)
         throw new Exception(EX_FK_ITAIKHOANID_INVALID);
     if (entity.FK_iTochucchungnhanID < 0)
         throw new Exception(EX_FK_ITOCHUCCHUNGNHANID_INVALID);
     if (DateTime.Parse("1753-01-01")>entity.dNgaydangky)
         throw new Exception(EX_DNGAYDANGKY_INVALID);
 }
 /// <summary>
 /// Kiểm tra tồn tại khóa ngoại
 /// </summary>
 /// <param name="entity">TaiKhoanDangKyToChucChungNhanEntity:entity</param>
 private static void checkFK(TaiKhoanDangKyToChucChungNhanEntity entity)
 {
     UserEntity oUser = UserDAL.GetOne(entity.FK_iTaikhoanID);
     if (oUser==null)
     {
         throw new Exception("Không tìm thấy :FK_iTaikhoanID");
     }
     TochucchungnhanEntity oTochucchungnhan = TochucchungnhanDAL.GetOne(entity.FK_iTochucchungnhanID);
     if (oTochucchungnhan==null)
     {
         throw new Exception("Không tìm thấy :FK_iTochucchungnhanID");
     }
 }
 /// <summary>
 /// Kiểm tra trùng lặp bản ghi
 /// </summary>
 /// <param name="entity">TaiKhoanDangKyToChucChungNhanEntity: TaiKhoanDangKyToChucChungNhanEntity</param>
 private static void checkDuplicate(TaiKhoanDangKyToChucChungNhanEntity entity,bool checkPK)
 {
     /*
     Example
     List<TaiKhoanDangKyToChucChungNhanEntity> list = TaiKhoanDangKyToChucChungNhanDAL.GetAll();
     if (list.Exists(
         delegate(TaiKhoanDangKyToChucChungNhanEntity oldEntity)
         {
             bool result =oldEntity.FIELD.Equals(entity.FIELD, StringComparison.OrdinalIgnoreCase);
             if(checkPK)
                 result=result && oldEntity.PK_iTaikhoanTochucID != entity.PK_iTaikhoanTochucID;
             return result;
         }
     ))
     {
         list.Clear();
         throw new Exception(EX_FIELD_EXISTED);
     }
     */
 }