/// <summary>
 /// Kiểm tra và thêm mới Doandanhgiatochucchungnhan
 /// </summary>
 /// <param name="entity">Entity</param>
 /// <returns>Int32: ID của Doandanhgiatochucchungnhan Mới Thêm Vào</returns>
 public static Int32 Add(DoandanhgiatochucchungnhanEntity entity)
 {
     checkLogic(entity);
     checkDuplicate(entity, false);
     checkFK(entity);
     return DoandanhgiatochucchungnhanDAL.Add(entity);
 }
 /// <summary>
 /// Kiểm tra và chỉnh sửa Doandanhgiatochucchungnhan
 /// </summary>
 /// <param name="entity">DoandanhgiatochucchungnhanEntity</param>
 /// <returns>bool:kết quả thực hiện</returns>
 public static bool Edit(DoandanhgiatochucchungnhanEntity entity)
 {
     checkExist(entity.PK_iDoandanhgiatochucchungnhanID);
     checkLogic(entity);
     checkDuplicate(entity, true);
     checkFK(entity);
     return DoandanhgiatochucchungnhanDAL.Edit(entity);
 }
    protected void btnLuu_Click(object sender, EventArgs e)
    {
        //Kiểm tra số lượng thành viên trong đoàn đánh giá
        //Số lượng <=5 thành viên kể cả trưởng đoàn đánh giá
        bool bTruongdoancotrongdanhsach = false;
        int iSoluongchuyengia = 0;
        for (int i = 0; i < cblDoandanhgia.Items.Count; ++i)
        {
            if (cblDoandanhgia.Items[i].Selected)
            {
                iSoluongchuyengia++;
                if (ddlTruongdoan.SelectedValue == cblDoandanhgia.Items[i].Value)
                {
                    bTruongdoancotrongdanhsach = true;
                }
            }
        }
        if(!bTruongdoancotrongdanhsach)
        {
            iSoluongchuyengia++;
        }
        if(iSoluongchuyengia > 5)
        {
            lblThongbao.Text = "Chọn không quá 5 chuyên gia cho một đoàn đánh giá!";
            return;
        }
        else
            if(iSoluongchuyengia < 3)
            {
                lblThongbao.Text = "Đoàn đánh giá phải từ 3 đến 5 chuyên gia!";
                return;
            }
        //-----------------------------------------------------
            try
            {
                if (Session["PK_iTochucchungnhanID"] != null)
                    PK_iTochucchungnhanID = Convert.ToInt32(Session["PK_iTochucchungnhanID"].ToString());
                PK_iDanhgiatochucID = getThongtindanhgia(PK_iTochucchungnhanID);
                DanhgiatochucchungnhanEntity oDanhgia = new DanhgiatochucchungnhanEntity();
                oDanhgia.sPhamvinghidinh = txtPhamvideghi.InnerText;
                oDanhgia.dNgaydanhgia = DateTime.Parse(txtNgaydg.Text + " " + txtGiodg.Text);
                oDanhgia.sCancudanhgia = txtCancudanhgia.InnerText;
                oDanhgia.sNoidungdanhgia = txtNoidungdanhgia.InnerText;
                oDanhgia.sKetquadanhgia = txtKetquadanhgia.InnerText;
                oDanhgia.sKetquadanhgia = txtKetquadanhgia.InnerText;
                oDanhgia.iKetquadanhgia = short.Parse(ddlKetluan.SelectedItem.Value);
                oDanhgia.sKiennghi = txtaKiennghi.InnerText;
                oDanhgia.FK_iTochucchungnhanID = PK_iTochucchungnhanID;
                oDanhgia.FK_iTruongdoandanhgiaID = int.Parse(ddlTruongdoan.SelectedItem.Value);
                if (PK_iDanhgiatochucID == 0)
                {
                    PK_iDanhgiatochucID = DanhgiatochucchungnhanBRL.Add(oDanhgia);
                    DoandanhgiatochucchungnhanEntity oDoandanhgiaTmp = new DoandanhgiatochucchungnhanEntity();
                    for (int i = 0; i < cblDoandanhgia.Items.Count; ++i)
                    {
                        if (cblDoandanhgia.Items[i].Selected)
                        {
                            oDoandanhgiaTmp.FK_iDanhgiatochucchungnhanID = PK_iDanhgiatochucID;
                            oDoandanhgiaTmp.FK_iChuyengiaID = int.Parse(cblDoandanhgia.Items[i].Value);
                            DoandanhgiatochucchungnhanBRL.Add(oDoandanhgiaTmp);
                        }
                    }
                    if (!bTruongdoancotrongdanhsach)
                    {
                        oDoandanhgiaTmp.FK_iDanhgiatochucchungnhanID = PK_iDanhgiatochucID;
                        oDoandanhgiaTmp.FK_iChuyengiaID = int.Parse(ddlTruongdoan.SelectedValue);
                        DoandanhgiatochucchungnhanBRL.Add(oDoandanhgiaTmp);
                    }
                    //Cập nhật trạng thái duyệt của tổ chức được chứng nhận
                    TochucchungnhanEntity oTochuc = TochucchungnhanBRL.GetOne(PK_iTochucchungnhanID);
                    oTochuc.bDuyet = (Int32.Parse(ddlKetluan.SelectedItem.Value) == 1 ? true : false);
                    oTochuc.iTrangthai = 2; // 2 - Hoàn chỉnh hồ sơ
                    oTochuc.sKytuviettat = " ";
                    // Cập nhập giá trị Trạng thái
                    TochucchungnhanBRL.Edit(oTochuc);
                    lblThongbao.Text = "Lưu thành  công!";
                    btnExportToWord.Enabled = true;
                    NapThongtin(PK_iTochucchungnhanID);
                }
                else
                {

                    oDanhgia.PK_iDanhgiatochucchungnhanID = PK_iDanhgiatochucID;
                    DanhgiatochucchungnhanBRL.Edit(oDanhgia);
                    //Xóa danh sách đánh giá viên đã tồn tại
                    List<DoandanhgiatochucchungnhanEntity> lstDoandanhgiaE = DoandanhgiatochucchungnhanBRL.GetByFK_iDanhgiatochucchungnhanID(PK_iDanhgiatochucID);
                    for (int i = 0; i < lstDoandanhgiaE.Count; ++i)
                    {
                        DoandanhgiatochucchungnhanBRL.Remove(lstDoandanhgiaE[i].PK_iDoandanhgiatochucchungnhanID);
                    }
                    bTruongdoancotrongdanhsach = false;
                    DoandanhgiatochucchungnhanEntity oDoandanhgiaTmp = new DoandanhgiatochucchungnhanEntity();
                    DoandanhgiatochucchungnhanEntity oDoandanhgiaFound = null;
                    for (int i = 0; i < cblDoandanhgia.Items.Count; ++i)
                    {
                        oDoandanhgiaFound = null;
                        oDoandanhgiaFound = lstDoandanhgiaE.Find(
                            delegate(DoandanhgiatochucchungnhanEntity oDoanDGFind)
                            {
                                return oDoanDGFind.FK_iChuyengiaID == int.Parse(cblDoandanhgia.Items[i].Value);
                            }
                        );
                        if (oDoandanhgiaFound != null)
                        {
                            if (!cblDoandanhgia.Items[i].Selected)
                            {
                                DoandanhgiatochucchungnhanBRL.Remove(oDoandanhgiaFound.PK_iDoandanhgiatochucchungnhanID);
                            }
                            lstDoandanhgiaE.Remove(oDoandanhgiaFound);
                        }
                        else
                        {
                            if (cblDoandanhgia.Items[i].Selected)
                            {
                                oDoandanhgiaTmp.FK_iDanhgiatochucchungnhanID = PK_iDanhgiatochucID;
                                oDoandanhgiaTmp.FK_iChuyengiaID = int.Parse(cblDoandanhgia.Items[i].Value);
                                DoandanhgiatochucchungnhanBRL.Add(oDoandanhgiaTmp);
                            }
                        }
                    }
                    lstDoandanhgiaE = null;
                    //Nếu trưởng đoàn không có trong danh sách thì thêm vào danh sách
                    if (!bTruongdoancotrongdanhsach)
                    {
                        oDoandanhgiaTmp.FK_iDanhgiatochucchungnhanID = PK_iDanhgiatochucID;
                        oDoandanhgiaTmp.FK_iChuyengiaID = int.Parse(ddlTruongdoan.SelectedValue);
                        DoandanhgiatochucchungnhanBRL.Add(oDoandanhgiaTmp);
                    }
                    //Cập nhật trạng thái duyệt của tổ chức được chứng nhận
                    TochucchungnhanEntity oTochuc = TochucchungnhanBRL.GetOne(PK_iTochucchungnhanID);
                    oTochuc.bDuyet = (Int32.Parse(ddlKetluan.SelectedItem.Value) == 1 ? true : false);
                    string sNamCapPhep = DateTime.Today.Year.ToString("yy");
                    string sSoThuTuCuaToChuc = TochucchungnhanBRL.GetAll().Count + 1 + "";
                    oTochuc.sMaso = "VietGAP-TS-" + sNamCapPhep + "-" + sSoThuTuCuaToChuc;
                    TochucchungnhanBRL.Edit(oTochuc);
                    lblThongbao.Text = "Cập nhật thành công!";
                    NapThongtin(PK_iTochucchungnhanID);
                }
            }
            catch(Exception ex)
            {

            }
    }
 /// <summary>
 /// Kiểm tra logic Entity
 /// </summary>
 /// <param name="entity">DoandanhgiatochucchungnhanEntity: entity</param>
 private static void checkLogic(DoandanhgiatochucchungnhanEntity entity)
 {
     if (entity.FK_iDanhgiatochucchungnhanID < 0)
         throw new Exception(EX_FK_IDANHGIATOCHUCCHUNGNHANID_INVALID);
     if (entity.FK_iChuyengiaID < 0)
         throw new Exception(EX_FK_ICHUYENGIAID_INVALID);
 }
 /// <summary>
 /// Kiểm tra tồn tại khóa ngoại
 /// </summary>
 /// <param name="entity">DoandanhgiatochucchungnhanEntity:entity</param>
 private static void checkFK(DoandanhgiatochucchungnhanEntity entity)
 {
     DanhgiatochucchungnhanEntity oDanhgiatochucchungnhan = DanhgiatochucchungnhanDAL.GetOne(entity.FK_iDanhgiatochucchungnhanID);
     if (oDanhgiatochucchungnhan==null)
     {
         throw new Exception("Không tìm thấy :FK_iDanhgiatochucchungnhanID");
     }
     ChuyengiaEntity oChuyengia = ChuyengiaDAL.GetOne(entity.FK_iChuyengiaID);
     if (oChuyengia==null)
     {
         throw new Exception("Không tìm thấy :FK_iChuyengiaID");
     }
 }
 /// <summary>
 /// Kiểm tra trùng lặp bản ghi
 /// </summary>
 /// <param name="entity">DoandanhgiatochucchungnhanEntity: DoandanhgiatochucchungnhanEntity</param>
 private static void checkDuplicate(DoandanhgiatochucchungnhanEntity entity,bool checkPK)
 {
     /*
     Example
     List<DoandanhgiatochucchungnhanEntity> list = DoandanhgiatochucchungnhanDAL.GetAll();
     if (list.Exists(
         delegate(DoandanhgiatochucchungnhanEntity oldEntity)
         {
             bool result =oldEntity.FIELD.Equals(entity.FIELD, StringComparison.OrdinalIgnoreCase);
             if(checkPK)
                 result=result && oldEntity.PK_iDoandanhgiatochucchungnhanID != entity.PK_iDoandanhgiatochucchungnhanID;
             return result;
         }
     ))
     {
         list.Clear();
         throw new Exception(EX_FIELD_EXISTED);
     }
     */
 }