public bool XoaListTheoID(List <int> listID)
        {
            bool     kq       = true;
            Entities entities = ContextFactory.GetInstance();

            try
            {
                using (TransactionScope trans = new TransactionScope())
                {
                    foreach (int id in listID)
                    {
                        HT_CNANG_TNANG obj = new HT_CNANG_TNANG();
                        obj = entities.HT_CNANG_TNANG.FirstOrDefault(e => e.ID == id);
                        entities.DeleteObject(obj);
                        entities.SaveChanges();
                    }
                    trans.Complete();
                }
            }
            catch (System.Exception ex)
            {
                kq = false;
                LLogging.WriteLog(ex.TargetSite.Name, LLogging.LogType.ERR, ex);
            }
            finally
            {
                entities = null;
            }
            return(kq);
        }
        public bool Sua(HT_CNANG_TNANG obj)
        {
            bool      kq       = true;
            Entities  entities = ContextFactory.GetInstance();
            EntityKey key      = null;
            object    original = null;

            try
            {
                key = entities.CreateEntityKey(ENTITY_SET_NAME, obj);
                if (entities.TryGetObjectByKey(key, out original))
                {
                    entities.ApplyCurrentValues(key.EntitySetName, obj);
                }
                entities.SaveChanges();
                kq = true;
            }
            catch (System.Exception ex)
            {
                kq = false;
                LLogging.WriteLog(ex.TargetSite.Name, LLogging.LogType.ERR, ex);
            }
            finally
            {
                entities = null;
            }
            return(kq);
        }
        public bool HuyDuyetListTheoID(List <int> listID)
        {
            bool     kq       = true;
            Entities entities = ContextFactory.GetInstance();

            try
            {
                using (TransactionScope trans = new TransactionScope())
                {
                    foreach (int id in listID)
                    {
                        HT_CNANG_TNANG obj = new HT_CNANG_TNANG();
                        obj           = entities.HT_CNANG_TNANG.FirstOrDefault(e => e.ID == id);
                        obj.TTHAI_NVU = BusinessConstant.TrangThaiNghiepVu.THOAI_DUYET.layGiaTri();
                        entities.SaveChanges();
                    }
                    trans.Complete();
                }
            }
            catch (System.Exception ex)
            {
                kq = false;
                LLogging.WriteLog(ex.TargetSite.Name, LLogging.LogType.ERR, ex);
            }
            finally
            {
                entities = null;
            }
            return(kq);
        }
        public bool Xoa(HT_CNANG_TNANG obj)
        {
            bool     kq       = true;
            Entities entities = ContextFactory.GetInstance();

            try
            {
                entities.DeleteObject(obj);
                entities.SaveChanges();
            }
            catch (System.Exception ex)
            {
                kq = false;
                LLogging.WriteLog(ex.TargetSite.Name, LLogging.LogType.ERR, ex);
            }
            finally
            {
                entities = null;
            }
            return(kq);
        }
        public HT_CNANG_TNANG GetByMa(string ma)
        {
            HT_CNANG_TNANG kq       = null;
            Entities       entities = ContextFactory.GetInstance();

            try
            {
                kq = entities.HT_CNANG_TNANG.FirstOrDefault(e => e.MA_TNANG.Equals(ma));
                return(kq);
            }
            catch (System.Exception ex)
            {
                kq = null;
                LLogging.WriteLog(ex.TargetSite.Name, LLogging.LogType.ERR, ex);
            }
            finally
            {
                entities = null;
            }
            return(kq);
        }
Example #6
0
        public bool luuPhanQuyen(string maDoiTuong, string loaiDoiTuong, ArrayList lstPhanQuyen, string nguoiCapNhat)
        {
            try
            {
                using (TransactionScope trans = new TransactionScope())
                {
                    Entities      entities      = ContextFactory.GetInstance();
                    List <string> lstMaCNang    = new List <string>();
                    string        taiNguyenMenu = BusinessConstant.LoaiTaiNguyen.MENU.layGiaTri();
                    foreach (List <string> lst in lstPhanQuyen)
                    {
                        // Xóa hết phân quyền cũ
                        foreach (string tn in lst)
                        {
                            HT_TNGUYEN_KTHAC tnkt = entities.HT_TNGUYEN_KTHAC.FirstOrDefault(e => e.MA_DTUONG.Equals(maDoiTuong) && e.MA_DTUONG_LOAI.Equals(loaiDoiTuong) && e.MA_TNGUYEN.Equals(tn) && e.MA_TNGUYEN_LOAI.Equals(taiNguyenMenu));
                            if (tnkt != null)
                            {
                                entities.HT_TNGUYEN_KTHAC.DeleteObject(tnkt);
                                entities.SaveChanges();
                            }
                            if (lst.IndexOf(tn) > 0)
                            {
                                if (!lstMaCNang.Contains(tn))
                                {
                                    lstMaCNang.Add(tn);
                                }
                                // ID của tính năng được gán vào tham số Capacity khi khởi tạo list phía client
                                int            idTinhNang = Convert.ToInt32(lst.First());
                                HT_CNANG_TNANG cntn       = entities.HT_CNANG_TNANG.FirstOrDefault(e => e.MA_CNANG.Equals(tn) && e.ID_TNANG == idTinhNang);
                                // ID của tính năng được lưu trong trường GTRI_TNGUYEN
                                HT_CNANG_PQUYEN cnpq = entities.HT_CNANG_PQUYEN.FirstOrDefault(e => e.MA_DTUONG.Equals(maDoiTuong) && e.MA_DTUONG_LOAI.Equals(loaiDoiTuong) && e.ID_CNANG_TNANG == cntn.ID);
                                if (cnpq != null)
                                {
                                    entities.HT_CNANG_PQUYEN.DeleteObject(cnpq);
                                    entities.SaveChanges();
                                }
                            }
                        }
                        foreach (string tn in lst)
                        {
                            if (lst.IndexOf(tn) > 0)
                            {
                                HT_CNANG_PQUYEN obj = new HT_CNANG_PQUYEN();
                                // ID của tính năng được gán vào tham số Capacity khi khởi tạo list phía client
                                int            idTinhNang = Convert.ToInt32(lst.First());
                                HT_CNANG_TNANG cntn       = entities.HT_CNANG_TNANG.FirstOrDefault(e => e.MA_CNANG.Equals(tn) && e.ID_TNANG == idTinhNang);

                                obj.ID_CNANG_TNANG = cntn.ID;
                                if (loaiDoiTuong.Equals(BusinessConstant.LoaiDoiTuong.NGUOI_SDUNG.layGiaTri()))
                                {
                                    obj.ID_DTUONG = entities.HT_NSD.FirstOrDefault(e => e.MA_NSD.Equals(maDoiTuong)).ID;
                                }

                                if (loaiDoiTuong.Equals(BusinessConstant.LoaiDoiTuong.NHOM_NGUOI_SDUNG.layGiaTri()))
                                {
                                    obj.ID_DTUONG = entities.HT_NHNSD.FirstOrDefault(e => e.MA_NHNSD.Equals(maDoiTuong)).ID;
                                }

                                obj.MA_DTUONG      = maDoiTuong;
                                obj.MA_DTUONG_LOAI = loaiDoiTuong;
                                obj.MA_DVI_QLY     = entities.HT_NSD.FirstOrDefault(e => e.MA_DANG_NHAP.ToLower().Equals(nguoiCapNhat.ToLower())).MA_DVI_QLY;
                                obj.MA_DVI_TAO     = obj.MA_DVI_QLY;
                                obj.NGAY_CNHAT     = DateTime.Today.ToString("yyyyMMdd");
                                obj.NGAY_NHAP      = DateTime.Today.ToString("yyyyMMdd");
                                obj.NGUOI_CNHAT    = nguoiCapNhat;
                                obj.NGUOI_NHAP     = nguoiCapNhat;
                                obj.TTHAI_BGHI     = BusinessConstant.TrangThaiBanGhi.SU_DUNG.layGiaTri();
                                obj.TTHAI_NVU      = BusinessConstant.TrangThaiNghiepVu.DA_DUYET.layGiaTri();
                                entities.HT_CNANG_PQUYEN.AddObject(obj);
                                entities.SaveChanges();
                            }
                        }
                    }

                    // Tạo quyền mới
                    foreach (string maCNang in lstMaCNang)
                    {
                        HT_TNGUYEN_KTHAC obj = new HT_TNGUYEN_KTHAC();

                        HT_CNANG cn = entities.HT_CNANG.FirstOrDefault(e => e.MA_CNANG.Equals(maCNang));

                        obj.GTRI_TNGUYEN = cn.ID.ToString();
                        obj.ID_TNGUYEN   = cn.ID;
                        obj.MA_TNGUYEN   = cn.MA_CNANG;

                        obj.ID_TNGUYEN_CHA = cn.ID_CNANG_CHA;
                        if (cn.ID_CNANG_CHA != null)
                        {
                            obj.MA_TNGUYEN_CHA = entities.HT_CNANG.FirstOrDefault(e => e.ID == cn.ID_CNANG_CHA).MA_CNANG;
                        }

                        obj.TEN_TNGUYEN = cn.TEN_CNANG;
                        if (loaiDoiTuong.Equals(BusinessConstant.LoaiDoiTuong.NGUOI_SDUNG.layGiaTri()))
                        {
                            obj.ID_DTUONG = entities.HT_NSD.FirstOrDefault(e => e.MA_NSD.Equals(maDoiTuong)).ID;
                        }

                        if (loaiDoiTuong.Equals(BusinessConstant.LoaiDoiTuong.NHOM_NGUOI_SDUNG.layGiaTri()))
                        {
                            obj.ID_DTUONG = entities.HT_NHNSD.FirstOrDefault(e => e.MA_NHNSD.Equals(maDoiTuong)).ID;
                        }

                        obj.ID_TNGUYEN_LOAI = entities.HT_TNGUYEN_LOAI.FirstOrDefault(e => e.MA_TNGUYEN_LOAI.Equals(taiNguyenMenu)).ID;
                        obj.MA_DTUONG       = maDoiTuong;
                        obj.MA_DTUONG_LOAI  = loaiDoiTuong;
                        obj.KIEU_DLIEU      = "String";
                        obj.MA_DVI_QLY      = entities.DM_DON_VI.First().MA_DVI;
                        obj.MA_DVI_TAO      = obj.MA_DVI_QLY;
                        obj.MA_TNGUYEN_LOAI = BusinessConstant.LoaiTaiNguyen.MENU.layGiaTri();
                        obj.NGAY_CNHAT      = DateTime.Today.ToString("yyyyMMdd");
                        obj.NGAY_NHAP       = DateTime.Today.ToString("yyyyMMdd");
                        obj.NGUOI_CNHAT     = nguoiCapNhat;
                        obj.NGUOI_NHAP      = nguoiCapNhat;
                        obj.TTHAI_BGHI      = BusinessConstant.TrangThaiBanGhi.SU_DUNG.layGiaTri();
                        obj.TTHAI_NVU       = BusinessConstant.TrangThaiNghiepVu.DA_DUYET.layGiaTri();
                        entities.HT_TNGUYEN_KTHAC.AddObject(obj);
                        entities.SaveChanges();

                        if (cn.ID_CNANG_CHA != null)
                        {
                            InsertParrentTNKT(cn.ID_CNANG_CHA.Value, maDoiTuong, obj.ID_DTUONG, loaiDoiTuong, nguoiCapNhat);
                        }
                    }
                    trans.Complete();
                    return(true);
                }
            }
            catch (Exception ex)
            {
                LLogging.WriteLog(ex.TargetSite.Name, LLogging.LogType.ERR, ex);
                throw ex;
            }
        }
        private void BuildGrid()
        {
            Mouse.OverrideCursor = Cursors.Wait;
            try
            {
                // Lấy chức năng theo phân hệ
                string maPhanHe = lstSourcePhanHe.ElementAt(cmbPhanHeChucNang.SelectedIndex).KeywordStrings.First();

                dsCNangAll = qtht.layCNangTheoPhanHe(maPhanHe);

                // Lấy CNangTnang theo chức năng trong phân hệ
                List <int> lstIdChucNang = dsCNangAll.Select(e => e.ID).Distinct().ToList();
                dsCNangTNangAll = qtht.layCNangTNangTheoListIdChucNang(lstIdChucNang);

                // Khởi tạo Table source: STT, Mã, Tên
                dt = new DataTable();
                dt.Columns.Add("STT", typeof(int));
                dt.Columns.Add("MA", typeof(string));
                dt.Columns.Add("CHUCNANG", typeof(string));

                // Lấy các tính năng được phân quyền trong hệ thống
                dsTNangAll = qtht.layTNangDuocPhanQuyen();

                // Khởi tạo Table source: Các cột tính năng được phân quyền trong hệ thống
                foreach (HT_TNANG item in dsTNangAll)
                {
                    dt.Columns.Add(item.MA_TNANG, typeof(bool));
                }

                // Uncheck toàn bộ các header
                View.IsChecked        = false;
                Add.IsChecked         = false;
                Modify.IsChecked      = false;
                Delete.IsChecked      = false;
                Approve.IsChecked     = false;
                Cancel.IsChecked      = false;
                Refuse.IsChecked      = false;
                FullControl.IsChecked = false;

                int stt = 0;
                if (grDSDoiTuong.SelectedItems.Count > 0)
                {
                    // Lấy loại đối tượng phân quyền là loại NSD hay NHNSD được chọn từ combo
                    string loaiDoiTuong = lstSourceLoaiDTuong.ElementAt(cmbDoiTuong.SelectedIndex).KeywordStrings.First();
                    // Lấy đối tượng phân quyền là NSD hay NHNSD được chọn từ grid
                    DataRow dr         = (DataRow)grDSDoiTuong.SelectedItem;
                    string  maDoiTuong = dr[2].ToString();

                    // Lấy dữ liệu phân quyền của đối tượng trong phân hệ được chọn
                    //dsCNangPQuyenDoiTuong = qtht.layCNangPQuyenTheoDoiTuong(maDoiTuong, loaiDoiTuong).ToList();
                    dsCNangPQuyenDoiTuong = qtht.layCNangPQuyenTheoDoiTuongChucNang(maDoiTuong, loaiDoiTuong, lstIdChucNang).ToList();

                    List <int> lstIdCNangTNang = dsCNangPQuyenDoiTuong.Select(e => e.ID_CNANG_TNANG.Value).ToList();
                    dsCNangTNangDoiTuong = dsCNangTNangAll.Where(e => lstIdCNangTNang.Contains(e.ID)).ToList();
                    foreach (HT_CNANG item in dsCNangAll)
                    {
                        // Lấy dữ liệu để đối chiếu và hiển thị các Chức năng, Tính năng đã hay chưa phân quyền
                        List <int> dsIdTNangAll = new List <int>();
                        dsIdTNangAll = dsCNangTNangAll.Where(e => e.ID_CNANG == item.ID).Select(e => e.ID_TNANG).ToList();

                        List <int> dsIdTNangDoiTuong = new List <int>();
                        dsIdTNangDoiTuong = dsCNangTNangDoiTuong.Where(e => e.ID_CNANG == item.ID).Select(e => e.ID_TNANG).ToList();

                        DataRow r     = dt.NewRow();
                        bool    isAdd = false;
                        // Lấy mã chức năng ...
                        HT_CNANG_TNANG htCNangTNangFull = dsCNangTNangDoiTuong.FirstOrDefault(e => e.ID_CNANG == item.ID && e.MA_TNANG.Equals("FullControl"));
                        // đối chiếu với source, nếu có thì hiển thị checked
                        for (int i = 0; i < dsTNangAll.Count; i++)
                        {
                            if (dsIdTNangAll.Contains(dsTNangAll[i].ID))
                            {
                                if (dsIdTNangDoiTuong.Contains(dsTNangAll[i].ID) || htCNangTNangFull != null)
                                {
                                    r[i + 3] = true;
                                }
                                else
                                {
                                    r[i + 3] = false;
                                }
                                isAdd = true;
                            }
                            else
                            {
                                r[i + 3] = DBNull.Value;
                            }
                        }
                        // add vào source
                        if (isAdd)
                        {
                            stt  = stt + 1;
                            r[0] = stt;
                            r[1] = item.MA_CNANG;
                            r[2] = LLanguage.SearchResourceByKey(item.MA_NNGU);
                            dt.Rows.Add(r);
                        }
                    }
                }
                else
                {
                    foreach (var item in dsCNangAll)
                    {
                        // Lấy dữ liệu để đối chiếu và hiển thị các Chức năng, Tính năng đã hay chưa phân quyền
                        List <int> dsIdTNangAll = new List <int>();
                        dsIdTNangAll = dsCNangTNangAll.Where(e => e.ID_CNANG == item.ID).Select(e => e.ID_TNANG).ToList();

                        List <int> dsIdTNangDoiTuong = new List <int>();
                        dsIdTNangDoiTuong = dsCNangTNangDoiTuong.Where(e => e.ID_CNANG == item.ID).Select(e => e.ID_TNANG).ToList();

                        DataRow r     = dt.NewRow();
                        bool    isAdd = false;
                        // đối chiếu với source, nếu có thì hiển thị checked
                        for (int i = 0; i < dsTNangAll.Count; i++)
                        {
                            if (dsIdTNangAll.Contains(dsTNangAll[i].ID))
                            {
                                if (dsIdTNangDoiTuong.Contains(dsTNangAll[i].ID))
                                {
                                    r[i + 3] = true;
                                }
                                else
                                {
                                    r[i + 3] = false;
                                }
                                isAdd = true;
                            }
                            else
                            {
                                r[i + 3] = DBNull.Value;
                            }
                        }
                        // add vào source
                        if (isAdd)
                        {
                            stt  = stt + 1;
                            r[0] = stt;
                            r[1] = item.MA_CNANG;
                            r[2] = LLanguage.SearchResourceByKey(item.MA_NNGU);
                            dt.Rows.Add(r);
                        }
                    }
                }

                // đổ source lên lưới
                grDanhSach.ItemsSource = null;
                grDanhSach.ItemsSource = dt.DefaultView;
            }
            catch (System.Exception ex)
            {
                CommonFunction.ThongBaoLoi(ex);
                LLogging.WriteLog(System.Reflection.MethodInfo.GetCurrentMethod().ToString(), LLogging.LogType.ERR, ex);
            }
            Mouse.OverrideCursor = Cursors.Arrow;
        }