/// <summary>
 /// Kiểm tra và thêm mới Tochucchungnhan
 /// </summary>
 /// <param name="entity">Entity</param>
 /// <returns>Int32: ID của Tochucchungnhan Mới Thêm Vào</returns>
 public static Int32 Add(TochucchungnhanEntity entity)
 {
     checkLogic(entity);
     checkDuplicate(entity, false);
     checkFK(entity);
     return TochucchungnhanDAL.Add(entity);
 }
 /// <summary>
 /// Kiểm tra và chỉnh sửa Tochucchungnhan
 /// </summary>
 /// <param name="entity">TochucchungnhanEntity</param>
 /// <returns>bool:kết quả thực hiện</returns>
 public static bool Edit(TochucchungnhanEntity entity)
 {
     checkExist(entity.PK_iTochucchungnhanID);
     checkLogic(entity);
     checkDuplicate(entity, true);
     checkFK(entity);
     return TochucchungnhanDAL.Edit(entity);
 }
 public void napDulieu()
 {
     if (Session["userID"] == null&&Convert.ToInt32(Session["groupID"].ToString())!=4) return;
     iUserID = Convert.ToInt32(Session["userID"].ToString());
     List<TochucchungnhanTaikhoanEntity> lstTochucTaikhoan = TochucchungnhanTaikhoanBRL.GetByFK_iTaikhoanID(iUserID);
     if (lstTochucTaikhoan.Count > 0)
     {
         oTochuc = TochucchungnhanBRL.GetOne(lstTochucTaikhoan[0].FK_iTochucchungnhanID);
         lblTentochuc.Text = oTochuc.sTochucchungnhan;
         lblDiachi.Text = oTochuc.sDiachi;
         lblDienthoai.Text = oTochuc.sSodienthoai;
         lblFax.Text = oTochuc.sFax;
         lblEmail.Text = oTochuc.sEmail;
         lblCoquancap.Text = oTochuc.sCoquancap;
         DateTime dt = DateTime.Parse(oTochuc.dNgaycapdangkykinhdoanh.ToString());
         lblNgaycap.Text = String.Format("{0:dd/MM/yyyy}", dt);
         lblNoicap.Text = oTochuc.sNoicapdangkykinhdoanh;
         lblTentochuclamdon.Text = oTochuc.sTochucchungnhan;
         //danh sách hồ sơ
         String sLst = "";
         List<DangkyHoatdongchungnhanEntity> lstDangky = DangkyHoatdongchungnhanBRL.GetByFK_iTochucchungnhanID(lstTochucTaikhoan[0].FK_iTochucchungnhanID);
         if (lstDangky.Count > 0)
         {
             List<HosokemtheoTochucchungnhanEntity> lstHoso = HosokemtheoTochucchungnhanBRL.GetByFK_iDangkyChungnhanVietGapID(lstDangky[0].PK_iDangkyChungnhanVietGapID);
             if (lstHoso.Count > 0)
             {
                 foreach (HosokemtheoTochucchungnhanEntity et in lstHoso)
                 {
                     sLst += "-  " + GiaytoBRL.GetOne(et.FK_iGiaytoID).sTengiayto + "<br/>";
                 }
                 lblHosokemtheo.Text = sLst;
             }
             lblTentochucinnghieng.Text = oTochuc.sTochucchungnhan;
         }
     }
     else
     {
         Response.Write("<script>alert('Chưa đăng ký tổ chức chứng nhận!');</script>");
         btnExToWord.Enabled = false;
     }
 }
    protected void btnExToWord_Click(object sender, EventArgs e)
    {
        if (Session["userID"] == null) return;
        iUserID = Convert.ToInt32(Session["userID"].ToString());
        List<TochucchungnhanTaikhoanEntity> lstTochucTaikhoan = TochucchungnhanTaikhoanBRL.GetByFK_iTaikhoanID(iUserID);
        int iTochucID = 0;
        if (lstTochucTaikhoan.Count > 0)
            iTochucID = lstTochucTaikhoan[0].FK_iTochucchungnhanID;

        oTochuc = TochucchungnhanBRL.GetOne(iTochucID);
        //-----------
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        NodeCollection tables = doc.GetChildNodes(NodeType.Table, true);

        builder.PageSetup.PaperSize = PaperSize.A4;

        builder.PageSetup.Orientation = Aspose.Words.Orientation.Portrait;
        builder.PageSetup.VerticalAlignment = PageVerticalAlignment.Top;
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
        builder.Font.Bold = true;
        builder.Font.Italic = false;
        builder.Font.Size = 14;
        builder.Writeln("CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM");
        builder.Writeln("Độc lập - Tự do - Hạnh phúc");
        builder.Writeln("-------");
        builder.Writeln("");
        builder.Font.Bold = false;
        builder.Font.Italic = true;
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
        builder.Writeln("……, ngày ... tháng … năm 20…");
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
        builder.Font.Bold = true;
        builder.Font.Italic = false;
        builder.Writeln("ĐƠN ĐĂNG KÝ");
        builder.Font.Bold = false;
        builder.Writeln("HOẠT ĐỘNG CHỨNG NHẬN VIETGAP");
        builder.Font.Bold = true;
        builder.Write("Kính gửi: ");
        builder.Font.Bold = false;
        builder.Writeln("Cơ quan công nhận Tổ chức Chứng nhận");
        builder.Writeln("");
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
        builder.Writeln("- Tên tổ chức: " + oTochuc.sTochucchungnhan);
        builder.Writeln("- Địa chỉ liên lạc: " + oTochuc.sDiachi);
        builder.Writeln("- Điện thoại: " + oTochuc.sSodienthoai + " Fax: " + oTochuc.sFax + " E-mail: " + oTochuc.sEmail);
        builder.Write("- Quyết định thành lập (nếu có) hoặc Giấy đăng ký kinh doanh số "+ oTochuc.sSodangkykinhdoanh +" do Cơ ");
        DateTime dt = DateTime.Parse(oTochuc.dNgaycapdangkykinhdoanh.ToString());
        String sNgaycap = String.Format("{0:dd/MM/yyyy}", dt);
        builder.Writeln("quan cấp: " + oTochuc.sCoquancap + " cấp ngày " + sNgaycap + " tại " + oTochuc.sNoicapdangkykinhdoanh);
        builder.Writeln("Sau khi nghiên cứu các điều kiện hoạt động chứng nhận VietGAP theo Thông tư số     /2011/TT-BNNPTNT ngày    tháng     năm 2011 của Bộ trưởng Bộ Nông nghiệp và Phát triển nông thôn ban hành Thông tư chứng nhận thực hành Nuôi trồng thuỷ sản tốt (VietGAP) chúng tôi nhận thấy có đủ các điều kiện để hoạt động chứng nhận VietGAP cho " + oTochuc.sTochucchungnhan);
        builder.Writeln("Hồ sơ kèm theo: ");
        builder.Writeln("");
        List<DangkyHoatdongchungnhanEntity> lstDangky = DangkyHoatdongchungnhanBRL.GetByFK_iTochucchungnhanID(iTochucID);
        if (lstDangky.Count > 0)
        {
            List<HosokemtheoTochucchungnhanEntity> lstHoso = HosokemtheoTochucchungnhanBRL.GetByFK_iDangkyChungnhanVietGapID(lstDangky[0].PK_iDangkyChungnhanVietGapID);
            if (lstHoso.Count > 0)
            {
                foreach (HosokemtheoTochucchungnhanEntity et in lstHoso)
                {
                    builder.Writeln("- " + GiaytoBRL.GetOne(et.FK_iGiaytoID).sTengiayto);
                }
            }
        }
        builder.Write("Đề nghị ");
        builder.Font.Italic = true;
        builder.Font.Bold = true;
        builder.Write("Cơ quan công nhận ");
        builder.Font.Italic = false;
        builder.Font.Bold = false;
        builder.Write("Tổ chức Chứng nhận xem xét để công nhận (tên tổ");
        builder.Writeln("chức) được hoạt động chứng nhận VietGAP cho: ");
        builder.Writeln("\t-\tĐăng ký công nhận lần đầu:");
        builder.Writeln("\t-\tĐăng ký công nhận lại:");
        builder.Writeln("\t-\tĐăng ký mở rộng hoạt động chứng nhận:");
        builder.Writeln("Chúng tôi xin cam kết thực hiện đúng các quy định về hoạt động chứng nhận VietGAP./.");

        //-------Table
        Aspose.Words.Table table = builder.StartTable();
        builder.CellFormat.Width = 260;
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
        builder.InsertCell();

        builder.InsertCell();
        builder.Font.Bold = true;
        builder.Font.Italic = false;
        builder.Writeln("Đại diện Tổ chức ...");
        builder.Font.Bold = false;
        builder.Font.Italic = true;
        builder.Writeln("(Ký tên, đóng dấu)");
        builder.EndRow();

        builder.EndTable();
        //--------end table
        /*
         * Lưu file
         */
        doc.Save("DonDangKy_" + oTochuc.PK_iTochucchungnhanID + ".doc", SaveFormat.Doc, SaveType.OpenInBrowser, Response);
    }
 /// <summary>
 /// Kiểm tra logic Entity
 /// </summary>
 /// <param name="entity">TochucchungnhanEntity: entity</param>
 private static void checkLogic(TochucchungnhanEntity entity)
 {
     if (String.IsNullOrEmpty(entity.sTochucchungnhan))
         throw new Exception(EX_STOCHUCCHUNGNHAN_EMPTY);
     if (String.IsNullOrEmpty(entity.sKytuviettat))
         throw new Exception(EX_SKYTUVIETTAT_EMPTY);
     if (String.IsNullOrEmpty(entity.sDiachi))
         throw new Exception(EX_SDIACHI_EMPTY);
     if (entity.FK_iQuanHuyenID < 0)
         throw new Exception(EX_FK_IQUANHUYENID_INVALID);
     if (entity.imgLogo ==null)
         throw new Exception(EX_IMGLOGO_INVALID);
     if (DateTime.Parse("1753-01-01")>entity.dNgaycapdangkykinhdoanh)
         throw new Exception(EX_DNGAYCAPDANGKYKINHDOANH_INVALID);
     if (entity.iTrangthai < 0)
         throw new Exception(EX_ITRANGTHAI_INVALID);
     if (entity.FK_iCoquancaptrenID < 0)
         throw new Exception(EX_FK_ICOQUANCAPTRENID_INVALID);
 }
 /// <summary>
 /// Kiểm tra tồn tại khóa ngoại
 /// </summary>
 /// <param name="entity">TochucchungnhanEntity:entity</param>
 private static void checkFK(TochucchungnhanEntity entity)
 {
     QuanHuyenEntity oQuanHuyen = QuanHuyenDAL.GetOne(entity.FK_iQuanHuyenID);
     if (oQuanHuyen==null)
     {
         throw new Exception("Không tìm thấy :FK_iQuanHuyenID");
     }
 }
 /// <summary>
 /// Kiểm tra trùng lặp bản ghi
 /// </summary>
 /// <param name="entity">TochucchungnhanEntity: TochucchungnhanEntity</param>
 private static void checkDuplicate(TochucchungnhanEntity entity,bool checkPK)
 {
     //List<TochucchungnhanEntity> list = TochucchungnhanDAL.GetAll();
     //if (list.Exists(
     //    delegate(TochucchungnhanEntity oldEntity)
     //    {
     //        bool result =oldEntity.FIELD.Equals(entity.FIELD, StringComparison.OrdinalIgnoreCase);
     //        if(checkPK)
     //            result=result && oldEntity.PK_iTochucchungnhanID != entity.PK_iTochucchungnhanID;
     //        return result;
     //    }
     //))
     //{
     //    list.Clear();
     //    throw new Exception(EX_FIELD_EXISTED);
     //}
 }
    protected void btnOk_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            try
            {

                TochucchungnhanEntity entity = new TochucchungnhanEntity();
                Int64 PK_iUserID = 0;
                entity.sTochucchungnhan = txtTochucchungnhan.Text;
                entity.sSodienthoai = txtDienthoai.Text;
                entity.sDiachi = txtDiachi.Text;
                //if (Session["UserID"] != null)
                //    PK_iUserID = int.Parse(Session["UserID"].ToString());
                PK_iUserID = Convert.ToInt64(ddlTaikhoan.SelectedValue);
                List<TochucchungnhanTaikhoanEntity> lstTochucTaikhoan = TochucchungnhanTaikhoanBRL.GetByFK_iTaikhoanID(PK_iUserID);

                if (lstTochucTaikhoan.Count > 0)
                {
                    if (Convert.ToInt32(ddlTaikhoan.SelectedValue) > 0)
                        lstTochucTaikhoan[0].FK_iTaikhoanID = Convert.ToInt32(ddlTaikhoan.SelectedValue);
                    ddlTaikhoan.SelectedValue = lstTochucTaikhoan[0].FK_iTaikhoanID.ToString();
                }// Xử lý lại. Vì khi tạo mới làm gì đã có tổ chức chứng nhận mà gắn vào.
                //else
                //{
                //    TochucchungnhanTaikhoanEntity oTochucTaikhoan = new TochucchungnhanTaikhoanEntity();
                //    oTochucTaikhoan.bActive = cbDuyet.Checked;
                //    oTochucTaikhoan.dNgaythuchien = DateTime.Today;
                //    oTochucTaikhoan.FK_iTaikhoanID = Convert.ToInt32(ddlTaikhoan.SelectedValue);

                //    oTochucTaikhoan.FK_iTochucchungnhanID = Convert.ToInt32(btnOk.CommandArgument);
                //    TochucchungnhanTaikhoanBRL.Add(oTochucTaikhoan);
                //}
                entity.FK_iQuanHuyenID = Convert.ToInt32(ddlQuanHuyen.SelectedValue);
                entity.FK_iCoquancaptrenID = Convert.ToInt32(ddlCoquancaptren.SelectedValue);
                entity.bDuyet = false;
                entity.sKytuviettat = " ";
                byte[] bytImage = null;
                // xu ly anh
                if (fuLogo.PostedFile != null)
                {
                    if (fuLogo.PostedFile.ContentLength > 0)
                    {
                        string strEx = "jpg|jpeg|bmp|png|gif";
                        string fileEx = fuLogo.FileName.Substring(fuLogo.FileName.LastIndexOf('.')).Remove(0, 1);
                        string[] arrEx = strEx.Split('|');
                        bool valid = false;
                        foreach (string ex in arrEx)
                        {
                            if (ex.Equals(fileEx, StringComparison.OrdinalIgnoreCase))
                                valid = true;
                        }
                        if (valid)
                        {

                            HttpPostedFile objHttpPostedFile = fuLogo.PostedFile;
                            int intContentlength = objHttpPostedFile.ContentLength;
                            bytImage = new Byte[intContentlength];
                            objHttpPostedFile.InputStream.Read(bytImage, 0, intContentlength);
                            entity.imgLogo = bytImage;
                        }
                    }
                    else if (btnOk.CommandName == "Add")
                    {
                        lblLoi.Text = "Bạn chưa chọn logo";
                        return;
                    }
                    else if (logo != null)
                    {
                        entity.imgLogo = logo;
                        logo = null;
                    }
                    else
                    {
                        // Nếu là sửa chữa thì check xem nếu đã có logo trong CSDL thì thôi không thông báo
                        if(!Convert.ToBoolean(Session["hasLogo"].ToString())==true)
                            lblLoi.Text = "Bạn chưa chọn logo";
                        return;
                    }
                }
                //
                if (btnOk.CommandName == "Edit")
                {
                    entity.bDuyet = cbDuyet.Checked;
                    entity.PK_iTochucchungnhanID = Convert.ToInt32(btnOk.CommandArgument);
                    TochucchungnhanEntity oTochucchungnhan = TochucchungnhanBRL.GetOne(entity.PK_iTochucchungnhanID);
                    entity.iTrangthai = TochucchungnhanBRL.GetOne(entity.PK_iTochucchungnhanID).iTrangthai;
                    if (oTochucchungnhan.sKytuviettat.Trim().Length == 0)
                        entity.sKytuviettat = "Chưa cấp";
                    else
                        entity.sKytuviettat = oTochucchungnhan.sKytuviettat;
                    entity.PK_iTochucchungnhanID = Convert.ToInt32(btnOk.CommandArgument);

                    TochucchungnhanBRL.Edit(entity);
                    // Lấy dữ liệu về Tài khoản theo TCCN
                    List<TochucchungnhanTaikhoanEntity> lsTochucchungnhantaikhoan = TochucchungnhanTaikhoanBRL.GetByFK_iTochucchungnhanID(entity.PK_iTochucchungnhanID);
                    if (lsTochucchungnhantaikhoan.Count > 0) //
                    {
                        TochucchungnhanTaikhoanEntity oTochucchungnhanTaikhoan = lsTochucchungnhantaikhoan[0];
                        oTochucchungnhanTaikhoan.FK_iTaikhoanID = Convert.ToInt32(ddlTaikhoan.SelectedValue);
                        oTochucchungnhanTaikhoan.FK_iTochucchungnhanID = entity.PK_iTochucchungnhanID;
                        oTochucchungnhanTaikhoan.dNgaythuchien = DateTime.Today;
                        oTochucchungnhanTaikhoan.bActive = true;
                        TochucchungnhanTaikhoanBRL.Edit(oTochucchungnhanTaikhoan);
                    }
                }
                else
                {
                    int iTochucchungnhanID=TochucchungnhanBRL.Add(entity);
                    lblLoi.Text = "Bổ sung thành công";
                    TochucchungnhanTaikhoanEntity oTochucTaikhoan = new TochucchungnhanTaikhoanEntity();
                    oTochucTaikhoan.bActive = cbDuyet.Checked;

                    oTochucTaikhoan.dNgaythuchien = DateTime.Today;
                    oTochucTaikhoan.FK_iTaikhoanID = Convert.ToInt32(ddlTaikhoan.SelectedValue);
                    oTochucTaikhoan.FK_iTochucchungnhanID = iTochucchungnhanID;
                    TochucchungnhanTaikhoanBRL.Add(oTochucTaikhoan);
                    Response.Write("<script language=\"javascript\">alert('Bổ sung thành công!');location='Default.aspx?page=TochuccapphepQuanly';</script>");

                }
                //Nạp lại dữ liệu
            }
            catch (Exception ex)
            {
                Response.Write("<script language=\"javascript\">alert('" + ex.Message + "');location='Default.aspx?page=TochuccapphepUpdate';</script>");
            }
        }
    }
    public void FillData(TochucchungnhanEntity obj)
    {
        txtTentochuc.Value = obj.sTochucchungnhan;
        txtKytuviettat.Value = obj.sKytuviettat;
        txtDiachi.Value = obj.sDiachi;
        ddlQuanhuyen.Items.FindByValue(obj.FK_iQuanHuyenID.ToString()).Selected = true;
        //---Load img
        if (obj.imgLogo != null)
        {
            imgLogo.ImageUrl = "~/adminx/ShowTochucLogo.ashx?id=" + obj.PK_iTochucchungnhanID;
            if (imgLogo != null)
            {
                RequiredFieldValidatorimg.Enabled = false;
                imgLogo.Visible = true;
            }
        }
        //---Load tài liệu

        if (DanhsachDangkyHoatdongchungnhan.Count > 0)
        {
            List<HosokemtheoTochucchungnhanEntity> lstHoso = HosokemtheoTochucchungnhanBRL.GetByFK_iDangkyChungnhanVietGapID(DanhsachDangkyHoatdongchungnhan[0].PK_iDangkyChungnhanVietGapID);
            if (DanhsachDangkyHoatdongchungnhan[0].iLandangky > 1)
            {
                lblThongbao.Text = "Tổ chức đã đăng ký: " + DanhsachDangkyHoatdongchungnhan[0].iLandangky + " lần.";
                lblThongbao.Visible = true;
            }
            for (int i = 0; i < cblGiaytonopkem.Items.Count; ++i)
            {
                if (lstHoso.FindAll
                    (
                        delegate(HosokemtheoTochucchungnhanEntity oHoso)
                        {
                            return (oHoso.FK_iGiaytoID == int.Parse(cblGiaytonopkem.Items[i].Value));
                        }
                    ).Count > 0)
                {
                    cblGiaytonopkem.Items[i].Selected = true;
                }
            }
        }
        //----
        txtSodienthoai.Value = obj.sSodienthoai;
        txtFax.Value = obj.sFax;
        txtEmail.Value = obj.sEmail;
        txtSodangkydinhdoanh.Value = obj.sSodangkykinhdoanh;
        txtNoicap.Value = obj.sNoicapdangkykinhdoanh;
        txtNgaycap_datepicker.Value = obj.dNgaycapdangkykinhdoanh.ToString("dd/MM/yyyy");
        if (obj.bDuyet)
            lblTrangthai.Text = "Ðã duyệt";
        else
            lblTrangthai.Text = "Chưa duyệt";
    }