public IActionResult Get(string id)
        {
            if (QLCUNL.BL.UngVienBL.CanView(id, user, group) || (is_sys_admin || is_app_admin))
            {
                var ung_vien = QLCUNL.BL.UngVienBL.GetById(id);
                if (ung_vien != null)
                {
                    var lst_id_thuoc_tinh = ung_vien.thuoc_tinh != null ? ung_vien.thuoc_tinh : new List <int>();
                    var thuoc_tinh_chung  = ThuocTinhBL.GetManyByGiaTri(app_id, lst_id_thuoc_tinh, LoaiThuocTinh.UNG_VIEN, ThuocTinhType.SHARED);
                    var thuoc_tinh_chung1 = ThuocTinhBL.GetManyByGiaTri(app_id, lst_id_thuoc_tinh, LoaiThuocTinh.UNG_VIEN, ThuocTinhType.PRIVATE);
                    var list = thuoc_tinh_chung.Concat(thuoc_tinh_chung1).ToList();

                    var lst_thuoc_tinh_rieng = QLCUNL.BL.ThuocTinhDuLieuBL.GetIdThuocTinhByIdObj(app_id, ung_vien.id_ung_vien, user);
                    if (lst_thuoc_tinh_rieng.Count() > 0)
                    {
                        var thuoc_tinh_rieng = QLCUNL.BL.ThuocTinhBL.GetPrivateByLoaiGiaTri(app_id, user, lst_thuoc_tinh_rieng, LoaiThuocTinh.UNG_VIEN, (is_sys_admin || is_app_admin));
                        list.AddRange(thuoc_tinh_rieng);
                    }
                    UngVienMap uv_map = new UngVienMap(ung_vien, list);

                    return(Ok(new DataResponse()
                    {
                        data = uv_map, success = ung_vien != null, msg = ""
                    }));
                }
                return(Ok(new DataResponse()
                {
                    data = ung_vien, success = ung_vien != null, msg = ""
                }));
            }
            return(Ok(new DataResponse()
            {
                data = new { }, success = false, msg = ""
            }));
        }
        public IActionResult SearchUngVienFree(string term, string id_user_job, string id_ung_vien, long ngay_di_lam_from, long ngay_di_lam_to,
                                               double luong_mong_muon_from, double luong_mong_muon_to, string thuoc_tinh, string thuoc_tinh_rieng,
                                               long ngay_tao_from, long ngay_tao_to, int page, int page_size)
        {
            var            default_settings     = QLCUNL.BL.UserBL.GetDefaultSettingByAppId(app_id);
            List <int>     lst_thuoc_tinh       = new List <int>();
            List <int>     lst_thuoc_tinh_rieng = new List <int>();
            List <string>  lst_id = new List <string>();
            bool           is_find_thuoc_tinh_rieng = false;
            List <UngVien> data       = new List <UngVien>();
            long           total_recs = 0;
            string         msg        = "";

            if (!string.IsNullOrEmpty(thuoc_tinh))
            {
                foreach (var tt in thuoc_tinh.Split(','))
                {
                    int t = -1;
                    if (Int32.TryParse(tt, out t))
                    {
                        lst_thuoc_tinh.Add(t);
                    }
                }
            }
            if (!string.IsNullOrEmpty(thuoc_tinh_rieng))
            {
                foreach (var tt in thuoc_tinh_rieng.Split(','))
                {
                    int t = -1;
                    if (Int32.TryParse(tt, out t))
                    {
                        lst_thuoc_tinh_rieng.Add(t);
                    }
                }
                if (lst_thuoc_tinh_rieng.Count > 0)
                {
                    is_find_thuoc_tinh_rieng = true;
                    var lst_id_obj = BL.ThuocTinhDuLieuBL.Search(app_id, user, LoaiThuocTinh.UNG_VIEN, lst_thuoc_tinh_rieng, 1, out long total_recs_thuoc_tinh, out _, page_size * 2);
                    lst_id = lst_id_obj.Select(x => x.id_obj).ToList();
                }
            }
            if (is_find_thuoc_tinh_rieng && lst_id.Count == 0)
            {
            }
            else
            {
                List <UngVienMap> uv_map = new List <UngVienMap>();

                var get_all_note_ung_vien_job = QLCUNL.BL.NoteUngVienJobBL.GetListIdUngVienByIdUserJob(app_id, id_user_job, page, out total_recs, out msg, page_size, (is_sys_admin || is_app_admin));
                var lst_id_ung_vien_da_di_lam = QLCUNL.BL.NoteUngVienJobBL.Search(app_id, user, group, string.Empty, string.Empty, string.Empty, string.Empty, 0, 0, 0, 0, 0, 0, 0, 0,
                                                                                  new List <int>()
                {
                    default_settings.trang_thai_user_job_bao_cao
                }, new List <string>(), 1, out _, out _, 9999, (is_sys_admin || is_app_admin), null).Select(x => x.id_ung_vien);

                data = QLCUNL.BL.UngVienBL.Search(app_id, user, group, term, id_ung_vien, ngay_di_lam_from,
                                                  ngay_di_lam_to,
                                                  luong_mong_muon_from, luong_mong_muon_to, lst_thuoc_tinh, lst_id, ngay_tao_from, ngay_tao_to, page,
                                                  out total_recs, out msg, page_size, (is_sys_admin || is_app_admin), lst_id_ung_vien_da_di_lam, null).Where(x => !get_all_note_ung_vien_job.Contains(x.id_ung_vien)).ToList();
                foreach (var item in data)
                {
                    var all_thuoc_tinh_uv = ThuocTinhBL.GetAllByLoaiThuocTinh(app_id, (int)LoaiThuocTinh.UNG_VIEN, -1).Where(x => item.thuoc_tinh.Contains(x.gia_tri));
                    var uv = new UngVienMap(item, all_thuoc_tinh_uv);
                    uv_map.Add(uv);
                }
                return(Ok(new DataResponsePaging()
                {
                    data = uv_map, total = total_recs, success = data != null, msg = msg
                }));
            }

            return(Ok(new DataResponsePaging()
            {
                data = data, total = total_recs, success = data != null, msg = msg
            }));
        }
        public IActionResult Search(string term, string id_ung_vien, long ngay_di_lam_from, long ngay_di_lam_to,
                                    double luong_mong_muon_from, double luong_mong_muon_to, string thuoc_tinh, string thuoc_tinh_rieng,
                                    long ngay_tao_from, long ngay_tao_to, bool tim_ung_vien_team_khac, int page, int page_size, string field_sort = "", string sort = "")
        {
            Dictionary <string, bool> sort_order = new Dictionary <string, bool>();

            if (!string.IsNullOrEmpty(field_sort) && !string.IsNullOrEmpty(sort))
            {
                sort_order.Add(field_sort, sort == "0" ? true : false);
            }
            else
            {
                sort_order.Add("ngay_tao", true);
            }

            List <int>        lst_thuoc_tinh       = new List <int>();
            List <int>        lst_thuoc_tinh_rieng = new List <int>();
            List <string>     lst_id = new List <string>();
            bool              is_find_thuoc_tinh_rieng = false;
            List <UngVien>    data       = new List <UngVien>();
            List <UngVienMap> list_uv    = new List <UngVienMap>();
            long              total_recs = 0;
            string            msg        = "";

            if (!string.IsNullOrEmpty(thuoc_tinh))
            {
                foreach (var tt in thuoc_tinh.Split(','))
                {
                    int t = -1;
                    if (Int32.TryParse(tt, out t))
                    {
                        lst_thuoc_tinh.Add(t);
                    }
                }
            }
            if (!string.IsNullOrEmpty(thuoc_tinh_rieng))
            {
                foreach (var tt in thuoc_tinh_rieng.Split(','))
                {
                    int t = -1;
                    if (Int32.TryParse(tt, out t))
                    {
                        lst_thuoc_tinh_rieng.Add(t);
                    }
                }
                if (lst_thuoc_tinh_rieng.Count > 0)
                {
                    is_find_thuoc_tinh_rieng = true;
                    var lst_id_obj = BL.ThuocTinhDuLieuBL.Search(app_id, user, LoaiThuocTinh.UNG_VIEN, lst_thuoc_tinh_rieng, 1, out long total_recs_thuoc_tinh, out _, page_size * 2);
                    lst_id = lst_id_obj.Where(x => !string.IsNullOrEmpty(x.id_obj)).Select(x => x.id_obj).ToList();
                }
            }
            if (tim_ung_vien_team_khac)
            {
                //Tìm admin của app_id này và lấy default_settings xem có cho phép tìm trong team khác hay không, nếu có thì cho phép tìm
                var default_settings = UserBL.GetDefaultSettingByAppId(app_id);
                tim_ung_vien_team_khac = default_settings.tim_ung_vien_team_khac;
            }
            if (is_find_thuoc_tinh_rieng && lst_id.Count == 0 && lst_thuoc_tinh.Count == 0)
            {
            }
            else
            {
                data = QLCUNL.BL.UngVienBL.Search(app_id, user, group, term, id_ung_vien, ngay_di_lam_from, ngay_di_lam_to,
                                                  luong_mong_muon_from, luong_mong_muon_to, lst_thuoc_tinh, lst_id, ngay_tao_from, ngay_tao_to, page, out total_recs, out msg, page_size,
                                                  (is_sys_admin || is_app_admin || tim_ung_vien_team_khac), null, sort_order);
            }
            var dic_thong_ke_ung_vien_job = NoteUngVienJobBL.ThongKeUngVienTheoJob(app_id, data.Select(x => x.id_ung_vien));

            var all_thuoc_tinh_uv = ThuocTinhBL.GetAllByLoaiThuocTinh(app_id, (int)LoaiThuocTinh.UNG_VIEN, -1);

            foreach (var item in data)
            {
                var tt_theo_ung_vien = all_thuoc_tinh_uv.Where(x => item.thuoc_tinh.Contains(x.gia_tri));
                var uv_map           = new UngVienMap(item, tt_theo_ung_vien);
                dic_thong_ke_ung_vien_job.TryGetValue(item.id_ung_vien, out long so_luong_job_da_gan);
                uv_map.so_luong_job_da_gan = so_luong_job_da_gan;
                list_uv.Add(uv_map);
            }
            return(Ok(new DataResponsePaging()
            {
                data = list_uv, total = total_recs, success = data != null, msg = msg
            }));
        }