Пример #1
0
        public void CreateOrUpdateGroupPermission(Guid groupId, List <Sys_GroupPermission2Entity> lstAdding, List <Sys_GroupPermission2Entity> lstEdit, List <Guid> resetPermissionResourceIds)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork           = (IUnitOfWork)(new UnitOfWork(context));
                var repoGroupPermission2 = new Sys_GroupPermission2Repository(unitOfWork);
                var sysGroupPermission2  = new Sys_GroupPermission2();
                var hasChangeData        = false;
                var edit = lstEdit.Translate <Sys_GroupPermission2>();
                var add  = lstAdding.Translate <Sys_GroupPermission2>();
                if (add.Any())
                {
                    #region Tạm thời khoá đoạn này vì trên controller api (api/Sys_GroupPermissionController) đã xử lý rồi
                    //Trước khi thêm mới => lay những resouces không nằm trong db
                    //var groupPermisstion2s = GetGroupPermissionByGroup(groupId);
                    //var resourceIds = groupPermisstion2s.Select(p=>p.ResourceID).ToList();
                    //add = add.Where(p => !resourceIds.Contains(p.ResourceID)).ToList();
                    #endregion

                    //thêm mới
                    repoGroupPermission2.Add(add);
                    hasChangeData = true;
                }
                if (edit.Any())
                {
                    repoGroupPermission2.Edit(edit);
                    hasChangeData = true;
                }

                if (hasChangeData)
                {
                    repoGroupPermission2.SaveChanges();
                }



                #region reset quyền là 0 neu tat ca groupPermissionByGroupId khi chưa gán quyền (view,insert,modify....)

                if (groupId != Guid.Empty)
                {
                    var listResourceId = new List <Guid>();
                    listResourceId = lstAdding.Select(p => p.ResourceID).ToList();
                    if (lstEdit.Any())
                    {
                        var listResourceIdEdit = lstEdit.Select(p => p.ResourceID).ToList();
                        listResourceId.AddRange(listResourceIdEdit);
                    }
                    listResourceId = listResourceId.Distinct().ToList();

                    var serviceGroupPermission = new Sys_GroupPermissionServices();
                    var groupPermissions       = serviceGroupPermission.GetAllGroupPermissionByGroupId(groupId).Translate <Sys_GroupPermission2>();
                    groupPermissions = groupPermissions.Where(p => !resetPermissionResourceIds.Contains(p.ResourceID)).ToList();
                    if (groupPermissions.Any())
                    {
                        foreach (var sysGroupPermissionEntity in groupPermissions)
                        {
                            sysGroupPermissionEntity.PrivilegeNumber = 0;
                            repoGroupPermission2.Edit(sysGroupPermissionEntity);
                        }
                        repoGroupPermission2.SaveChanges();
                    }
                }
                #endregion
            }
        }
Пример #2
0
        public void CreateOrUpdateGroupPermission(Guid groupId, List<Sys_GroupPermission2Entity> lstAdding, List<Sys_GroupPermission2Entity> lstEdit, List<Guid> resetPermissionResourceIds)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork) (new UnitOfWork(context));
                var repoGroupPermission2 = new Sys_GroupPermission2Repository(unitOfWork);
                var sysGroupPermission2 = new Sys_GroupPermission2();
                var hasChangeData = false;
                var edit = lstEdit.Translate<Sys_GroupPermission2>();
                var add = lstAdding.Translate<Sys_GroupPermission2>();
                if (add.Any())
                {
                    #region Tạm thời khoá đoạn này vì trên controller api (api/Sys_GroupPermissionController) đã xử lý rồi
                    //Trước khi thêm mới => lay những resouces không nằm trong db
                    //var groupPermisstion2s = GetGroupPermissionByGroup(groupId);
                    //var resourceIds = groupPermisstion2s.Select(p=>p.ResourceID).ToList();
                    //add = add.Where(p => !resourceIds.Contains(p.ResourceID)).ToList(); 
                    #endregion

                    //thêm mới
                    repoGroupPermission2.Add(add);
                    hasChangeData = true;
                }
                if (edit.Any())
                {
                    repoGroupPermission2.Edit(edit);
                    hasChangeData = true;
                }

                if (hasChangeData)
                {
                    repoGroupPermission2.SaveChanges();
                }



                #region reset quyền là 0 neu tat ca groupPermissionByGroupId khi chưa gán quyền (view,insert,modify....)

                if (groupId != Guid.Empty)
                {
                    var listResourceId = new List<Guid>();
                    listResourceId = lstAdding.Select(p => p.ResourceID).ToList();
                    if (lstEdit.Any())
                    {
                        var listResourceIdEdit = lstEdit.Select(p => p.ResourceID).ToList();
                        listResourceId.AddRange(listResourceIdEdit);
                    }
                    listResourceId = listResourceId.Distinct().ToList();

                    var serviceGroupPermission = new Sys_GroupPermissionServices();
                    var groupPermissions = serviceGroupPermission.GetAllGroupPermissionByGroupId(groupId).Translate<Sys_GroupPermission2>();
                    groupPermissions = groupPermissions.Where(p => !resetPermissionResourceIds.Contains(p.ResourceID)).ToList();
                    if (groupPermissions.Any())
                    {
                        foreach (var sysGroupPermissionEntity in groupPermissions)
                        {
                            sysGroupPermissionEntity.PrivilegeNumber = 0;
                            repoGroupPermission2.Edit(sysGroupPermissionEntity);
                        }
                        repoGroupPermission2.SaveChanges();
                    }

                }
                #endregion


            }
        }
Пример #3
0
 // DELETE api/<controller>/5
 public void Delete(Guid id)
 {
     var service = new Sys_GroupPermissionServices();
     var result = service.Remove<Sys_GroupPermission2Entity>(id);
 }
Пример #4
0
        /// <summary> Lấy danh sách nhóm quyền theo GroupId </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public IEnumerable<Sys_GroupPermissionModel> Get(Guid id)
        {
            string statusGroupPermission = string.Empty;
            string status = string.Empty;
            var serviceGroupPermission = new Sys_GroupPermissionServices();
            var serviceResource = new Sys_ResourceServices();

            var listGroupPermission =
                serviceGroupPermission.GetData<Sys_GroupPermission2Entity>(id,
                    ConstantSql.hrm_sys_sp_get_GroupPermissionByGroupId, UserLogin, ref statusGroupPermission).Select(p => new Sys_GroupPermissionModel
            {
                ID = p.ID,
                GroupID = p.GroupID,
                ResourceID = p.ResourceID,
                GroupName = p.GroupName,
                ModuleName = p.ModuleName,
                ResourceName = p.ResourceName,
                ResourceType = p.ResourceType,
                Code = p.Code,
                Category = p.Category,
                PrivilegeNumber = Convert.ToInt32(p.PrivilegeNumber ?? 0)
            }).ToList();

            List<Guid> listResourceID = listGroupPermission.Select(d => d.ResourceID).Distinct().ToList();
            var resourceQueryable = serviceResource.GetAllResources();

            if (listResourceID.Count() >= 0 && resourceQueryable != null)
            {
                resourceQueryable = resourceQueryable.Where(d => !listResourceID.Contains(d.ID)).ToList();
            }

            if (listGroupPermission != null && resourceQueryable != null && resourceQueryable.Any())
            {
                listGroupPermission.AddRange(resourceQueryable.Select(d => new Sys_GroupPermissionModel
                {
                    GroupID = id,
                    ResourceID = d.ID,
                    ModuleName = d.ModuleName,
                    Category = d.Category,
                    ResourceType = d.ResourceType,
                    ResourceName = d.ResourceName
                }).ToList());
            }


            var lstGroupPermissionWithLMS = listGroupPermission.Where(p => p.Category == "LMS").ToList();
            var lstGroupPermissionWithoutLMS = listGroupPermission.Where(p => p.Category != "LMS").ToList();

            foreach (var sysResourceEntity in lstGroupPermissionWithLMS)
            {
                if (sysResourceEntity.Category == "LMS")
                {
                    sysResourceEntity.Category = HRM.Infrastructure.Utilities.ModuleName.Laundry.ToString();
                    sysResourceEntity.ModuleName = HRM.Infrastructure.Utilities.ModuleName.Laundry.ToString();
                }
            }

            lstGroupPermissionWithLMS.AddRange(lstGroupPermissionWithoutLMS);
            lstGroupPermissionWithLMS = lstGroupPermissionWithLMS.OrderBy(p => p.ResourceName).ToList();

            return lstGroupPermissionWithLMS ?? (lstGroupPermissionWithLMS = new List<Sys_GroupPermissionModel>());
            //   return listGroupPermission ?? (listGroupPermission = new List<Sys_GroupPermissionModel>());
        }
Пример #5
0
        public Guid Post([FromBody]FormDataCollection grouppermissionInfo)
        {
            Guid groupId = Guid.Empty;
            if (grouppermissionInfo != null)
            {
                #region Lưu Sys_GroupEntity
                var groupInfos = grouppermissionInfo.Where(p => !p.Key.Contains("allow")).Distinct().ToList();
                Guid id = Guid.Empty;
                bool IsActivate = false;

                #region Get Group Info
                Guid.TryParse(groupInfos.Where(p => p.Key == "ID").Select(p => p.Value).FirstOrDefault(), out id);
                var code = groupInfos.Where(p => p.Key == Sys_GroupModel.FieldNames.Code).Select(p => p.Value).FirstOrDefault();
                var description = groupInfos.Where(p => p.Key == Sys_GroupModel.FieldNames.Notes).Select(p => p.Value).FirstOrDefault();
                var groupName = groupInfos.Where(p => p.Key == Sys_GroupModel.FieldNames.GroupName).Select(p => p.Value).FirstOrDefault();
                bool.TryParse(groupInfos.Where(p => p.Key == Sys_GroupModel.FieldNames.IsActivate).Select(p => p.Value).FirstOrDefault(), out IsActivate);
                #endregion

                var group = new Sys_GroupEntity()
                {
                    ID = id,
                    IsActivate = IsActivate,
                    Code = code,
                    Notes = description,
                    GroupName = groupName
                };
                var groupService = new Sys_GroupServices();
                if (group.ID == Guid.Empty)
                {
                    //add
                    var statusAdding = groupService.Add<Sys_GroupEntity>(group);
                    groupId = group.ID;
                }
                else
                {
                    //edit
                    string statusSysGroup = string.Empty;
                    groupId = id;
                    var statusEditing = groupService.GetSysGroupById(group.ID);
                    if (statusEditing != null)
                    {
                        statusEditing.IsActivate = group.IsActivate;
                        statusEditing.Code = group.Code;
                        statusEditing.Notes = group.Notes;
                        statusEditing.Description = group.Notes;
                        statusEditing.GroupName = group.GroupName;
                        groupService.Edit<Sys_GroupEntity>(statusEditing);
                    }
                }

                #endregion

                List<Guid> listResourceId = new List<Guid>();
                List<string> lstValue = grouppermissionInfo.Where(p => p.Key.Contains("allow") && p.Value != "0").Select(m => m.Value).Distinct().ToList();
                var lstAdding = new List<Sys_GroupPermission2Entity>();
                var lstEditing = new List<Sys_GroupPermission2Entity>();
                var service = new Sys_GroupPermissionServices();
                //[Tung.Ly 20150114] - Modify : lay danh sach Sys_GroupPermission2 bởi GroupID bằng entity thay vì dùng store 
                // Dùng store không lấy được dữ liệu => nên tạm thời dùng entity
                var groupPermisstion2s = service.GetAllGroupPermissionByGroupId(groupId);
                foreach (string itemValue in lstValue)
                {
                    //lay thong tin nhom quyen
                    var lstgrouppermissionInfo = grouppermissionInfo.Where(m => m.Key.Contains("allow") && m.Value == itemValue).ToList();
                    int privilegeNumber = 0;
                    Guid resourceId = Guid.Empty;
                    Guid.TryParse(itemValue, out resourceId);
                    if (resourceId != Guid.Empty && !listResourceId.Any(p=>p == resourceId))
                    {
                        listResourceId.Add(resourceId);
                    }

                    #region Get Privilege (View/Create/Modify/Delete/Export/Import)
                    foreach (var item in lstgrouppermissionInfo)
                    {
                        var lst = item.Key.Split(new char[] { '_' });
                        int number = int.Parse(lst[2]);
                        
                        switch (number)
                        {
                            case 1:
                                privilegeNumber = privilegeNumber + (int)PrivilegeType.View;
                                break;
                            case 2:
                                privilegeNumber = privilegeNumber + (int)PrivilegeType.Create;
                                break;
                            case 3:
                                privilegeNumber = privilegeNumber + (int)PrivilegeType.Modify;
                                break;
                            case 4:
                                privilegeNumber = privilegeNumber + (int)PrivilegeType.Delete;
                                break;
                            case 5:
                                privilegeNumber = privilegeNumber + (int)PrivilegeType.Export;
                                break;
                            case 6:
                                privilegeNumber = privilegeNumber + (int)PrivilegeType.Import;
                                break;
                        }
                    }
                    #endregion

                    #region Thêm/chỉnh sửa nhóm quyền

                    groupId = group.ID;
                    var groupPermisstion = groupPermisstion2s.Where(p => p.ResourceID == resourceId).FirstOrDefault();

                    if (groupPermisstion == null || groupPermisstion.ID == Guid.Empty)
                    {
                        groupPermisstion = new Sys_GroupPermission2Entity
                        {
                            GroupID = groupId,
                            ResourceID = resourceId,
                            PrivilegeNumber = privilegeNumber
                        };
                        if (lstAdding.FirstOrDefault(p=>p.ResourceID == resourceId && p.GroupID == groupId) == null)
                        {
                             lstAdding.Add(groupPermisstion);
                        }
                    }
                    else
                    {
                        if (groupPermisstion.PrivilegeNumber != privilegeNumber)
                        {
                            groupPermisstion.PrivilegeNumber = privilegeNumber;
                            //check groupPermission exist
                            if (lstEditing.FirstOrDefault(p => p.ResourceID == resourceId && p.GroupID == groupId) == null)
                            {
                                lstEditing.Add(groupPermisstion);
                            }
                        }
                    }
                    #endregion

                }//close foreach

                #region Thêm/Chỉnh sửa danh sách nhóm quyền (GroupPermission)

                var gService = new Sys_GroupPermissionServices();
                gService.CreateOrUpdateGroupPermission(groupId, lstAdding, lstEditing, listResourceId);

                #endregion
            }
            return groupId;
        }