/// <summary>
 /// Kiểm tra và thêm mới Masovietgap
 /// </summary>
 /// <param name="entity">Entity</param>
 /// <returns>Int32: ID của Masovietgap Mới Thêm Vào</returns>
 public static Int32 Add(MasovietgapEntity entity)
 {
     checkLogic(entity);
     checkDuplicate(entity, false);
     checkFK(entity);
     return MasovietgapDAL.Add(entity);
 }
 /// <summary>
 /// Kiểm tra và chỉnh sửa Masovietgap
 /// </summary>
 /// <param name="entity">MasovietgapEntity</param>
 /// <returns>bool:kết quả thực hiện</returns>
 public static bool Edit(MasovietgapEntity entity)
 {
     checkExist(entity.PK_iMasoVietGapID);
     checkLogic(entity);
     checkDuplicate(entity, true);
     checkFK(entity);
     return MasovietgapDAL.Edit(entity);
 }
 /// <summary>
 /// Kiểm tra logic Entity
 /// </summary>
 /// <param name="entity">MasovietgapEntity: entity</param>
 private static void checkLogic(MasovietgapEntity entity)
 {
     if (String.IsNullOrEmpty(entity.sMaso))
         throw new Exception(EX_SMASO_EMPTY);
     if (entity.FK_iTochucchungnhanID < 0)
         throw new Exception(EX_FK_ITOCHUCCHUNGNHANID_INVALID);
     if (entity.FK_iCosonuoitrongID < 0)
         throw new Exception(EX_FK_ICOSONUOITRONGID_INVALID);
     if (DateTime.Parse("1753-01-01")>entity.dNgaycap)
         throw new Exception(EX_DNGAYCAP_INVALID);
     if (DateTime.Parse("1753-01-01")>entity.dNgayhethan)
         throw new Exception(EX_DNGAYHETHAN_INVALID);
     if (entity.iThoihan < 0)
         throw new Exception(EX_ITHOIHAN_INVALID);
     if (entity.iTrangthai < 0)
         throw new Exception(EX_ITRANGTHAI_INVALID);
     if (entity.iSanluongdukienmoi < 0)
         throw new Exception(EX_ISANLUONGDUKIENMOI_INVALID);
     if (entity.fDientichmorong < 0)
         throw new Exception(EX_FDIENTICHMORONG_INVALID);
 }
 /// <summary>
 /// Kiểm tra tồn tại khóa ngoại
 /// </summary>
 /// <param name="entity">MasovietgapEntity:entity</param>
 private static void checkFK(MasovietgapEntity entity)
 {
     TochucchungnhanEntity oTochucchungnhan = TochucchungnhanDAL.GetOne(entity.FK_iTochucchungnhanID);
     if (oTochucchungnhan==null)
     {
         throw new Exception("Không tìm thấy :FK_iTochucchungnhanID");
     }
     CosonuoitrongEntity oCosonuoitrong = CosonuoitrongDAL.GetOne(entity.FK_iCosonuoitrongID);
     if (oCosonuoitrong==null)
     {
         throw new Exception("Không tìm thấy :FK_iCosonuoitrongID");
     }
 }
 /// <summary>
 /// Kiểm tra trùng lặp bản ghi
 /// </summary>
 /// <param name="entity">MasovietgapEntity: MasovietgapEntity</param>
 private static void checkDuplicate(MasovietgapEntity entity,bool checkPK)
 {
     /*
     Example
     List<MasovietgapEntity> list = MasovietgapDAL.GetAll();
     if (list.Exists(
         delegate(MasovietgapEntity oldEntity)
         {
             bool result =oldEntity.FIELD.Equals(entity.FIELD, StringComparison.OrdinalIgnoreCase);
             if(checkPK)
                 result=result && oldEntity.PK_iMasoVietGapID != entity.PK_iMasoVietGapID;
             return result;
         }
     ))
     {
         list.Clear();
         throw new Exception(EX_FIELD_EXISTED);
     }
     */
 }
    protected void btnCapmaso_Click(object sender, EventArgs e)
    {
        try
        {
            if (Session["UserID"] == null || Session["GroupID"] == null)
            {
                Response.Write("<script>alert('Bạn không có quyền vào trang này');location='./Logon.aspx'</script>");
                Response.End();
            }

            if (Session["iHosodangkyCSNT"] != null)
                PK_iHosodangky = Convert.ToInt32(Session["iHosodangkyCSNT"].ToString());
            else
            {
                Response.Redirect(ResolveUrl("~/adminx/Tochucchungnhan/Default.aspx?page=DanhsachHosodangky"));
            }
            HosodangkychungnhanEntity oHosodangky = HosodangkychungnhanBRL.GetOne(PK_iHosodangky);
            Int64 PK_iCosonuoitrongID = oHosodangky.FK_iCosonuoiID;

            if (!PermissionBRL.CheckPermission("CapmasoVietgap")) Response.End();
            String sMasovietgap = String.Empty;
            CosonuoitrongEntity oCosonuoitrong = new CosonuoitrongEntity();
            //if (Session["iCosonuoitrongID"] == null) return;
            //PK_iCosonuoitrongID = Convert.ToInt32(Session["iCosonuoitrongID"].ToString());
            MasovietgapEntity oMasoVietGap = new MasovietgapEntity();
            oMasoVietGap.dNgaycap = DateTime.ParseExact(txtNgaycap_datepicker.Value, "dd/MM/yyyy", CultureInfo.InvariantCulture);
            oMasoVietGap.iThoihan = byte.Parse(txtThoihan.Value);
            txtNgayhethan_datepicker.Value = DateTime.ParseExact(txtNgaycap_datepicker.Value, "dd/MM/yyyy", CultureInfo.InvariantCulture).AddMonths(byte.Parse(txtThoihan.Value)).ToString("dd/MM/yyyy");
            oMasoVietGap.dNgayhethan = DateTime.ParseExact(txtNgayhethan_datepicker.Value, "dd/MM/yyyy", CultureInfo.InvariantCulture);
            oMasoVietGap.FK_iCosonuoitrongID = PK_iCosonuoitrongID;
            int iUserID = int.Parse(Session["UserID"].ToString());
            // Chỗ này phải check permission --> vì Admin không thuộc Group hay tổ chức nào
            int iGroupID = Convert.ToInt32(Session["GroupID"].ToString());

            if (iGroupID != 4)
            {
                Response.Write("<script>alert('Tài khoản bạn đang truy cập không phải dành cho Tổ chức chứng nhận. Bạn không thể cấp mã số!!!');location='./Logon.aspx'</script>");
                Response.End();
            }
            List<TochucchungnhanTaikhoanEntity> lstTochucTaikhoan = TochucchungnhanTaikhoanBRL.GetByFK_iTaikhoanID(iUserID);
            if (lstTochucTaikhoan.Count <= 0)
            {
                Response.Write("<script language=\"javascript\">alert('Tài khoản của bạn không gắn với bất cứ Tổ chức chứng nhận nào!!!');</script>");
                return;
            }
            TochucchungnhanEntity oTochucchungnhan = TochucchungnhanBRL.GetOne(lstTochucTaikhoan[0].FK_iTochucchungnhanID);
            List<XulyTochucchungnhanEntity> lstThongtinxuly = XulyTochucchungnhanBRL.GetByFK_iTochucchungnhanID(oTochucchungnhan.PK_iTochucchungnhanID);
            if (lstThongtinxuly.Count > 0)
            {
                XulyTochucchungnhanEntity.Sort(lstThongtinxuly, "dNgaythuchien", "DESC");
                if (lstThongtinxuly[0].iMucdo == 2 || lstThongtinxuly[0].iMucdo == 3)
                {
                    Response.Write("<script language=\"javascript\">alert('Bạn không thể cấp mã số, vì đang bị xử lý phạt');</script>");
                    return;
                }
            }
            oMasoVietGap.FK_iTochucchungnhanID = oTochucchungnhan.PK_iTochucchungnhanID;

            //Kiểm tra xem mã số VietGap này đã có hay chưa
            sMasovietgap = genVietGapCode((int)PK_iCosonuoitrongID, oTochucchungnhan.PK_iTochucchungnhanID);
            oMasoVietGap.sMaso = sMasovietgap;
            // Kiểm tra xem CSNT đã tồn tại hay chưa, vì mỗi một CSNT chỉ được cấp mã số 1 lần
            // Có thể cập nhập mã số - viết một chức năng khác
            List<MasovietgapEntity> lstMasovietgap = MasovietgapBRL.GetByFK_iCosonuoitrongID(PK_iCosonuoitrongID);
            if (lstMasovietgap.Capacity == 0)
            {
                MasovietgapBRL.Add(oMasoVietGap);
                oCosonuoitrong = CosonuoitrongBRL.GetOne(PK_iCosonuoitrongID);
                //oCosonuoitrong.sMasocoso = Session["sMasocoso"].ToString();
                oCosonuoitrong.sMasocoso = oTochucchungnhan.sKytuviettat;
                oCosonuoitrong.sMaso_vietgap = sMasovietgap;
                CosonuoitrongBRL.Edit(oCosonuoitrong);
                HosodangkychungnhanEntity oHoso = HosodangkychungnhanBRL.GetOne(PK_iHosodangky);
                oHoso.iTrangthai = 1; //Đã duyệt
                HosodangkychungnhanBRL.Edit(oHoso);
            }
            else
            {
                INVI.INVILibrary.MessageBox.Show("Cơ sở nuôi trồng đã được cấp mã số");
            }
            //CosonuoitrongBRL.SetVerify(PK_iCosonuoitrongID, chk.Checked);
            //Nap lai du lieu
            //Response.Redirect(Request.Url.ToString());

            Response.Write("<script>alert('CSNT:" + oCosonuoitrong.sTencoso + " đã được cấp mã số:" + oMasoVietGap.sMaso + "');</script>");
            //Ẩn panel
            panCapmaso.Visible = false;
        }
        catch (Exception ex)
        {
            Response.Write("<script language=\"javascript\">alert('" + ex.Message + "');location='Default.aspx?page=DanhsachHosodangky';</script>");
        }
    }
    public void hienChungNhanVietGAPtheoID(Int32 id)
    {
        String sqlCon = ConfigurationManager.ConnectionStrings["db_NewsConnectionString"].ToString();
            SqlConnection Con = new SqlConnection(sqlCon);
            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter adapter = null;
            try
            {
                Con.Open();
                cmd.CommandText = "spMasovietgap_GetAllInforByID";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Connection = Con;
                cmd.Parameters.Add("@PK_iMasovietgapID", SqlDbType.BigInt);
                cmd.Parameters[0].Value = id;
                adapter = new SqlDataAdapter(cmd);
                DataTable tbl = new DataTable();
                adapter.Fill(tbl);
                if (tbl.Rows.Count > 0)
                {
                    DataRow row = tbl.Rows[0];

                    // Coquancaptrren
                    CoquancaptrenEntity cqct = CoquancaptrenBRL.GetOne(Convert.ToInt32(row["PK_iTochucchungnhanID"]));
                    //lblCoQuanCapTren.Text = cqct.sTencoquan;

                    //
                    lblMaso.Text = row["sMaso"].ToString();
                    lblTencoquan.Text = row["sTochucchungnhan"].ToString();

                    if (row["imgLogo"] != null)
                    {
                        imgTochuc.ImageUrl = ResolveUrl("~/Images/logoVietGap.jpg");
                    }
                    else
                    {
                        imgTochuc.ImageUrl = "ViewImage.aspx?ID=" + row["PK_iTochucchungnhanID"].ToString();
                    }
                    lblCosonuoi.Text = row["sTencoso"].ToString();
                    lblDienthoai.Text = row["sDienthoai"].ToString();
                    lblMasochidinh.Text = row["sMasotochuc"].ToString();
                    lblDiachi.Text = "xã " + row["sXa"].ToString() + ", ấp " + row["sAp"].ToString();
                    lblDiadiemsanxuat.Text = "Xã " + row["sXa"].ToString() + ", ấp " + row["sAp"].ToString();
                    //lblMasocoso.Text = row["sMasocoso"].ToString();
                    DateTime dt = DateTime.Parse(row["dNgaycap"].ToString());
                    //lblNgaycap.Text = "...................ngày " + dt.Day + " tháng " + dt.Month + " năm " + dt.Year;
                    dt = DateTime.Parse(row["dNgayhethan"].ToString());
                    lblNgayhethan.Text = String.Format("{0:dd/MM/yyyy}", dt);
                    lblDoituong.Text = row["sTendoituong"].ToString();
                    lblDientich.Text = String.Format("{0:0,0.#}", row["fTongdienTichMatNuoc"].ToString()) + " m<sup>2</sup>";
                    lblSanluongdukien.Text = String.Format("{0:#,###}", row["iSanluongdukien"].ToString());

                    //gia hạn
                    List<MasovietgapEntity> lst = MasovietgapBRL.GetByFK_iCosonuoitrongID(Convert.ToInt32(row["PK_iCosonuoitrongID"]));
                    lst = MasovietgapEntity.Sort(lst, "PK_iMasoVietGapID", "DESC");
                    int masocount = lst.Count;
                    int du = masocount % 5 - 1;
                    List<MasovietgapEntity> standlst = new List<MasovietgapEntity>();
                    int i = 0;
                    if (du < 0)
                        du = 4;
                    for (i = 0; i < du; i++)
                    {
                        standlst.Add(lst[i]);
                    }
                    standlst = MasovietgapEntity.Sort(standlst, "PK_iMasoVietGapID", "ASC");
                    for (i = du; i < 4; i++)
                    {
                        MasovietgapEntity oentity = new MasovietgapEntity();
                        standlst.Add(oentity);
                    }
                    standlst = MasovietgapEntity.Sort(standlst, "PK_iMasoVietGapID", "DESC");
                    rptGiaHan.DataSource = standlst;
                    rptGiaHan.DataBind();
                    //
                    btnExportToWord.Enabled = true;
                }
                else
                {
                    Response.Write("<script>alert('Mã số không tồn tại!'</script>");
                }
            }
            catch (Exception ex)
            {
                Response.Write("<font color=red>" + ex.Message + "</font>");
            }
            finally
            {
                if (Con.State != ConnectionState.Closed)
                    Con.Close();
                adapter.Dispose();
                cmd.Dispose();
                Con.Dispose();
            }
    }