Example #1
0
        public ActionResult UpdatePms(ObjectPermission obpms)
        {
            if ((ModelState.IsValid && Session["MultiTypeCheckEdit"] == null) || (ModelState.IsValid && Session["MultiType"] != null))
            {
                var checkPermissionInObject =
                    _iPMSService.Query.Where(m => m.ObjectRBAC.objectid == obpms.ObjectId)
                    .Select(n => n.permissionid)
                    .ToList();
                int count = checkPermissionInObject.Count;
                if (count <= 8)
                {
                    var checkname = _iPMSService.Query.FirstOrDefault(x => x.name.ToUpper() == obpms.PmsName.ToUpper());
                    if (checkname == null || checkname.permissionid == obpms.PermissionId)
                    {
                        try
                        {
                            objectRbac objRecord = new objectRbac();
                            objRecord.objectid = obpms.ObjectId;
                            permission p = new permission();
                            p             = _iPMSService.Getbykey(obpms.PermissionId);
                            p.name        = obpms.PmsName.Trim();
                            p.Description = obpms.DesPms.Trim();
                            p.ObjectRBAC  = objRecord;


                            _iPMSService.BeginTran();


                            if (Session["MultiType"] != null)
                            {
                                var    Type_pms             = _ITYPE_PERMISSIONService.Getbykey(obpms.PermissionId);
                                string TYPE_PERMISSIONMULTI = Session["MultiType"].ToString();
                                Type_pms.TYPE_PERMISSIONMULTI = TYPE_PERMISSIONMULTI;
                                var listrole = _iroleService.Query.Where(m => m.Permissions.Any(n => n.permissionid == obpms.PermissionId));
                                foreach (var item in listrole)
                                {
                                    var typerole = _iTypeRoleService.Query.FirstOrDefault(m => m.ROLE_ID == item.roleid) != null?_iTypeRoleService.Query.FirstOrDefault(m => m.ROLE_ID == item.roleid).TYPE : -1;

                                    if (!(TYPE_PERMISSIONMULTI.Contains(typerole + "")))
                                    {
                                        IList <permission> listtam = item.Permissions;
                                        var bientam_PMS            = listtam.FirstOrDefault(m => m.permissionid == obpms.PermissionId);
                                        listtam.Remove(bientam_PMS);
                                        item.Permissions = listtam;
                                        _iroleService.Update(item);
                                    }
                                }
                                _ITYPE_PERMISSIONService.Update(Type_pms);
                            }
                            _iPMSService.Update(p);
                            _iPMSService.CommitTran();
                            _iLogSystemService.CreateNew(HttpContext.User.Identity.Name, "Cập nhật tác vụ ", "Thực hiện chức năng cập nhật tác vụ", Helper.GetIPAddress.GetVisitorIPAddress(), HttpContext.Request.Browser.Browser);
                        }
                        catch (Exception e)
                        {
                            _iPMSService.RolbackTran();
                            ViewData["EditError"] = e.Message;
                        }
                    }
                    else
                    {
                        ViewData["EditError"] = "Tên đã tồn tại, xin chọn tên khác!";
                    }
                }
                else
                {
                    ViewData["EditError"] = "Một chức năng chỉ chứa tối đa 8 tác vụ, nhóm hiện đã có 8 tác vụ, vui lòng chọn chức năng khác!";
                }
            }
            else
            {
                ViewData["EditError"] = "Bạn phải nhập đầy đủ thông tin";
            }
            Session["MultiType"]          = null;
            Session["MultiTypeCheckEdit"] = null;
            return(PartialView("PERMISSIONPartial", GetAllPms()));
        }