public IActionResult Post([FromBody] object value) { //value = {'nha_tuyen_dung':{'id_nha_tuyen_dung':'tuyendun@xmedi'},'ung_vien_share':{'id':['uv_1','uv_2'],'obj_type':4}} var obj = JToken.Parse(value.ToString()); DataResponse res = new DataResponse(); if (obj == null) { res.success = false; res.msg = "Đối tượng bị bỏ trống"; return(Ok(res)); } try { List <string> note_uv_gui_nha_tuyen_dung = obj["note_ung_vien_gui_nha_tuyen_dung"].ToObject <List <string> >(); List <Note> lst = new List <Note>(); var user = User.FindFirst(x => x.Type == ClaimTypes.NameIdentifier).Value; //var note_nha_tuyen_dung = obj["note_ung_vien_gui_nha_tuyen_dung"].ToObject<Note>(); var ip_add = Request.HttpContext.Connection.RemoteIpAddress.MapToIPv6().ToString(); string browser = Request.Headers["User-Agent"]; var add_employer = obj["nha_tuyen_dung"].ToObject <NhaTuyenDung>(); SetMetaData(add_employer, false); add_employer.ip = ip_add; add_employer.browser = browser; var note_ung_vien_share = obj["note_ung_vien_share"]; var ids = note_ung_vien_share["id"].ToObject <List <string> >(); add_employer.lst_id_share = ids; var employer = QLCUNL.BL.NhaTuyenDungBL.Index(add_employer, out string token); res.success = !string.IsNullOrEmpty(employer); List <string> lst_id_nha_tuyen_dung = new List <string>() { add_employer.id_nha_tuyen_dung }; int type = 1; int rule = 1; int obj_type = note_ung_vien_share["obj_type"].ToObject <int>(); long ngay_het = 0; List <Quyen> quyen = new List <Quyen>(); ngay_het = XMedia.XUtil.TimeInEpoch(DateTime.Now.AddMonths(1)); quyen = new List <Quyen>() { Quyen.VIEW }; var obj_type_check = (PhanQuyenObjType)obj_type; var numbersAndWords = ids.Zip(note_uv_gui_nha_tuyen_dung, (n, w) => new { id_obj = n, noi_dung = w }); foreach (var notes in numbersAndWords) { if (!string.IsNullOrEmpty(notes.noi_dung)) { Note note = new Note(); note.id_obj = notes.id_obj; note.loai = LoaiNote.NOTE_UNG_VIEN_GUI_NHA_TUYEN_DUNG; note.loai_du_lieu = LoaiDuLieu.NGUOI_DUNG; note.nguoi_tao = user; note.nguoi_sua = user; note.noi_dung = notes.noi_dung; SetMetaData(note, false); lst.Add(note); } } var count = QLCUNL.BL.NoteBL.IndexMany(lst); res.success = count > 0; foreach (var id in ids) { var has_share_permission = false; switch (obj_type_check) { case PhanQuyenObjType.UNG_VIEN: has_share_permission = UngVienBL.IsOwner(id, user); break; case PhanQuyenObjType.NOTE_UNG_VIEN_JOB: has_share_permission = NoteUngVienJobBL.IsOwner(id, user) || (is_app_admin); break; } if (has_share_permission) { #region Xóa shared của các đối tượng cũ try { List <string> lst_id_phan_quyen_can_xoa = new List <string>(); var menu_shared = QLCUNL.BL.PhanQuyenBL.Get(string.Empty, PhanQuyenRule.ALL, PhanQuyenType.ALL, string.Empty, PhanQuyenObjType.ALL, id, quyen, 0, 0, user, 0, 0, string.Empty, 0, 0, 1, 9999, out _); foreach (var item_shared in menu_shared) { if (item_shared.type == PhanQuyenType.USERS) { if (!lst_id_nha_tuyen_dung.Contains(item_shared.user)) { lst_id_phan_quyen_can_xoa.Add(item_shared.id); } else { if (item_shared.ngay_het == ngay_het && item_shared.quyen.All(quyen.Contains) && quyen.All(item_shared.quyen.Contains)) { lst_id_phan_quyen_can_xoa.Remove(item_shared.user); } } } } PhanQuyenBL.RemoveByListId(lst_id_phan_quyen_can_xoa); } catch (Exception) { } #endregion Xóa shared của các đối tượng cũ #region Shared cho các đối tượng được chọn try { if (lst_id_nha_tuyen_dung.Count == 0) { res.success = true; res.msg = "Không có thay đổi nào được thực hiện"; } else { foreach (var u in lst_id_nha_tuyen_dung) { PhanQuyen pq = new PhanQuyen(); pq.ngay_het = ngay_het; pq.user = u + "|" + add_employer.token; pq.type = PhanQuyenType.USERS; pq.rule = (PhanQuyenRule)rule; pq.quyen = quyen; pq.obj_type = (PhanQuyenObjType)obj_type; pq.nguoi_tao = user; pq.obj_id = id; res.success = QLCUNL.BL.PhanQuyenBL.Index(pq); } } } catch (Exception) { } #endregion Shared cho các đối tượng được chọn } } } catch (Exception ex) { res.msg = ex.Message; res.success = false; } return(Ok(res)); }
public IActionResult Put(string id, [FromBody] object value) { var obj = JToken.Parse(value.ToString()); DataResponse res = new DataResponse(); if (obj == null) { res.success = false; res.msg = "Đối tượng bị bỏ trống"; return(Ok(res)); } try { List <string> note_uv_gui_nha_tuyen_dung = obj["note_ung_vien_gui_nha_tuyen_dung"].ToObject <List <string> >(); List <Note> lst = new List <Note>(); var get_all_ntd = BL.NhaTuyenDungBL.GetById(id); var old_id_share = QLCUNL.BL.NhaTuyenDungBL.GetById(id)?.lst_id_share; var edit_employer = obj["nha_tuyen_dung"].ToObject <NhaTuyenDung>(); var note_ung_vien_share = obj["note_ung_vien_share"]; var new_id_share = note_ung_vien_share["id"].ToObject <List <string> >(); //Theem quyen var added_id_share = new_id_share.Except(old_id_share); //xoa quyen var remove_id_share = old_id_share.Except(new_id_share); if (remove_id_share.Any() == true) { PhanQuyenBL.RemovePhanQuyenByUser($"{get_all_ntd.id_nha_tuyen_dung}|{get_all_ntd.token}", remove_id_share.ToList()); } edit_employer.lst_id_share = new_id_share; edit_employer.id = id; res.success = NhaTuyenDungBL.Update(edit_employer); List <string> lst_id_nha_tuyen_dung = new List <string>() { edit_employer.id_nha_tuyen_dung }; int type = 1; int rule = 1; int obj_type = note_ung_vien_share["obj_type"].ToObject <int>(); long ngay_het = 0; List <Quyen> quyen = new List <Quyen>(); ngay_het = XMedia.XUtil.TimeInEpoch(DateTime.Now.AddMonths(1)); quyen = new List <Quyen>() { Quyen.VIEW }; var obj_type_check = (PhanQuyenObjType)obj_type; var user = User.FindFirst(x => x.Type == ClaimTypes.NameIdentifier).Value; var numbersAndWords = new_id_share.Zip(note_uv_gui_nha_tuyen_dung, (n, w) => new { id_obj = n, noi_dung = w }); foreach (var notes in numbersAndWords) { if (!string.IsNullOrEmpty(notes.noi_dung)) { Note note = new Note(); note.id_obj = notes.id_obj; note.loai = LoaiNote.NOTE_UNG_VIEN_GUI_NHA_TUYEN_DUNG; note.loai_du_lieu = LoaiDuLieu.NGUOI_DUNG; note.nguoi_tao = user; note.nguoi_sua = user; note.noi_dung = notes.noi_dung; SetMetaData(note, false); lst.Add(note); } } var count = QLCUNL.BL.NoteBL.IndexMany(lst); res.success = count > 0; if (new_id_share.Count > 0) { foreach (var ids in new_id_share) { var has_share_permission = false; switch (obj_type_check) { case PhanQuyenObjType.UNG_VIEN: has_share_permission = UngVienBL.IsOwner(ids, user); break; case PhanQuyenObjType.NOTE_UNG_VIEN_JOB: has_share_permission = NoteUngVienJobBL.IsOwner(ids, user); break; } if (has_share_permission) { #region Xóa shared của các đối tượng cũ try { List <string> lst_id_phan_quyen_can_xoa = new List <string>(); var menu_shared = PhanQuyenBL.Get(string.Empty, PhanQuyenRule.ALL, PhanQuyenType.ALL, string.Empty, PhanQuyenObjType.ALL, id, quyen, 0, 0, user, 0, 0, string.Empty, 0, 0, 1, 9999, out _); foreach (var item_shared in menu_shared) { if (item_shared.type == PhanQuyenType.USERS) { if (!lst_id_nha_tuyen_dung.Contains(item_shared.user)) { lst_id_phan_quyen_can_xoa.Add(item_shared.id); } else { if (item_shared.ngay_het == ngay_het && item_shared.quyen.All(quyen.Contains) && quyen.All(item_shared.quyen.Contains)) { lst_id_phan_quyen_can_xoa.Remove(item_shared.user); } } } } PhanQuyenBL.RemoveByListId(lst_id_phan_quyen_can_xoa); } catch (Exception) { } #endregion Xóa shared của các đối tượng cũ #region Shared cho các đối tượng được chọn try { if (lst_id_nha_tuyen_dung.Count == 0) { res.success = true; res.msg = "Không có thay đổi nào được thực hiện"; } else { foreach (var u in lst_id_nha_tuyen_dung) { PhanQuyen pq = new PhanQuyen(); pq.ngay_het = ngay_het; pq.user = u + "|" + get_all_ntd.token; pq.type = PhanQuyenType.USERS; pq.rule = (PhanQuyenRule)rule; pq.quyen = quyen; pq.obj_type = (PhanQuyenObjType)obj_type; pq.nguoi_tao = user; pq.obj_id = ids; res.success = QLCUNL.BL.PhanQuyenBL.Index(pq); } } } catch (Exception) { } #endregion Shared cho các đối tượng được chọn } } } else { res.msg = "Không có đối tượng nào được chọn"; res.success = false; } } catch (Exception ex) { res.msg = ex.StackTrace; res.success = false; } return(Ok(res)); }
public IActionResult Share([FromBody] object value) { //check quyền trước khi share? Chỉ admin + owner mới được quyền share bool has_share_permission = (is_sys_admin || is_app_admin); DataResponse res = new DataResponse() { msg = "Không có quyền chia sẻ thông tin", success = false }; try { var obj = JToken.Parse(value.ToString()); if (obj != null) { List <string> users = obj["user"].ToObject <List <string> >(); List <string> lst_id_nha_tuyen_dung = new List <string>(); if (obj["id_nha_tuyen_dung"] != null) { string id_nha_tuyen_dung = obj["id_nha_tuyen_dung"].ToString(); try { lst_id_nha_tuyen_dung = id_nha_tuyen_dung.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim()).ToList(); } catch (Exception) { } } string id = obj["id"].ToString(); int type = obj["type"].ToObject <int>(); int rule = obj["rule"].ToObject <int>(); int obj_type = obj["obj_type"].ToObject <int>(); long ngay_het = 0; List <Quyen> quyen = new List <Quyen>(); List <int> teams = new List <int>(); if (obj["ngay_het"] != null) { try { ngay_het = XMedia.XUtil.TimeInEpoch(Convert.ToDateTime(ngay_het, dtfi)); } catch (Exception) { ngay_het = XMedia.XUtil.TimeInEpoch(DateTime.Now.AddYears(10)); } } if (obj["quyen"] != null) { quyen = obj["quyen"].ToObject <List <Quyen> >(); } if (!(is_sys_admin || is_app_admin)) { var obj_type_check = (PhanQuyenObjType)obj_type; switch (obj_type_check) { case PhanQuyenObjType.CONG_TY: has_share_permission = CongTyBL.IsOwner(id, user); break; case PhanQuyenObjType.USER_JOB: has_share_permission = UserJobBL.IsOwner(id, user); break; case PhanQuyenObjType.NOTE_UNG_VIEN: has_share_permission = NoteUngVienBL.IsOwner(id, user); break; case PhanQuyenObjType.UNG_VIEN: has_share_permission = UngVienBL.IsOwner(id, user); break; case PhanQuyenObjType.JOB: has_share_permission = JobBL.IsOwner(id, user); break; case PhanQuyenObjType.NOTE_UNG_VIEN_JOB: has_share_permission = NoteUngVienJobBL.IsOwner(id, user); break; case PhanQuyenObjType.MENU: has_share_permission = MenuBL.IsOwner(id, user); break; } } if (!has_share_permission) { return(Ok(res)); } if (obj["teams"] != null) { try { teams = obj["teams"].ToObject <List <int> >(); } catch { teams = new List <int>(); } } #region Xóa shared của các đối tượng cũ try { List <string> lst_id_phan_quyen_can_xoa = new List <string>(); var menu_shared = QLCUNL.BL.PhanQuyenBL.Get(string.Empty, PhanQuyenRule.ALL, PhanQuyenType.ALL, string.Empty, PhanQuyenObjType.ALL, id, quyen, 0, 0, ((is_sys_admin || is_app_admin) ? string.Empty : user), 0, 0, string.Empty, 0, 0, 1, 9999, out _); foreach (var item_shared in menu_shared) { if (item_shared.type == PhanQuyenType.GROUP_USERS) { int id_team_shared = -1; if (Int32.TryParse(item_shared.user, out id_team_shared)) { if (!teams.Contains(id_team_shared)) { lst_id_phan_quyen_can_xoa.Add(item_shared.id); } else { if (item_shared.ngay_het == ngay_het && item_shared.quyen.All(quyen.Contains) && quyen.All(item_shared.quyen.Contains)) { teams.Remove(id_team_shared); } } } } else { if (item_shared.type == PhanQuyenType.USERS) { if (!users.Contains(item_shared.user) && !lst_id_nha_tuyen_dung.Contains(item_shared.user)) { lst_id_phan_quyen_can_xoa.Add(item_shared.id); } else { if (item_shared.ngay_het == ngay_het && item_shared.quyen.All(quyen.Contains) && quyen.All(item_shared.quyen.Contains)) { users.Remove(item_shared.user); } } } } } PhanQuyenBL.RemoveByListId(lst_id_phan_quyen_can_xoa); } catch (Exception) { } #endregion #region Shared cho các đối tượng được chọn try { if (users.Count == 0 && teams.Count == 0 && lst_id_nha_tuyen_dung.Count == 0) { res.success = true; res.msg = "Không có thay đổi nào được thực hiện"; } else { foreach (var user in users) { PhanQuyen pq = new PhanQuyen(); pq.ngay_het = ngay_het; pq.user = user; pq.type = PhanQuyenType.USERS; pq.rule = (PhanQuyenRule)rule; pq.quyen = quyen; pq.obj_type = (PhanQuyenObjType)obj_type; pq.nguoi_tao = this.user; pq.obj_id = id; res.success = QLCUNL.BL.PhanQuyenBL.Index(pq); } foreach (var user in lst_id_nha_tuyen_dung) { PhanQuyen pq = new PhanQuyen(); pq.ngay_het = ngay_het; pq.user = user; pq.type = PhanQuyenType.USERS; pq.rule = (PhanQuyenRule)rule; pq.quyen = quyen; pq.obj_type = (PhanQuyenObjType)obj_type; pq.nguoi_tao = this.user; pq.obj_id = id; res.success = QLCUNL.BL.PhanQuyenBL.Index(pq); } if (teams.Count > 0) { foreach (var id_team in teams) { PhanQuyen pq = new PhanQuyen(); pq.ngay_het = ngay_het; pq.user = id_team.ToString(); pq.type = PhanQuyenType.GROUP_USERS; pq.rule = (PhanQuyenRule)rule; pq.quyen = quyen; pq.nguoi_tao = user; pq.obj_type = (PhanQuyenObjType)obj_type; pq.obj_id = id; res.success = QLCUNL.BL.PhanQuyenBL.Index(pq); } } } } catch (Exception) { } #endregion } } catch (Exception ex) { res.msg = ex.Message; res.success = false; } return(Ok(res)); }