Ejemplo n.º 1
0
        public IActionResult CreatePermission(string permissionCode, string permissionLabel)
        {
            if (HttpContext == null ||
                HttpContext.Session == null ||
                HttpContext.Session.GetObject <UserViewModel>(MiscConstants.USER_SESSION_VM_KEY) == null)
            {
                return(RedirectToAction("Warning", "Home"));
            }

            string logSnippet = new StringBuilder("[")
                                .Append(DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss"))
                                .Append("][PermissionController][CreatePermission][HttpPost] => ")
                                .ToString();

            User          qmsUser   = HttpContext.Session.GetObject <User>(MiscConstants.USER_SESSION_KEY);
            UserViewModel qmsUserVM = HttpContext.Session.GetObject <UserViewModel>(MiscConstants.USER_SESSION_VM_KEY);

            Console.WriteLine(logSnippet + $"(permissionCode)...: '{permissionCode}'");
            Console.WriteLine(logSnippet + $"(permissionLabel)..: '{permissionLabel}'");
            Console.WriteLine(logSnippet + $"(qmsUser == null)..: {qmsUser == null}");
            Console.WriteLine(logSnippet + $"(qmsUserVM == null): {qmsUserVM == null}");

            if (qmsUserVM.CanCreatePermission == false)
            {
                return(RedirectToAction("UnauthorizedAccess", "Home"));
            }

            PermissionViewModel permissionVM = new PermissionViewModel
            {
                ShowAlert                      = true,
                UserAdminModule                = UserAdminConstants.UserAdminModuleConstants.ACTIVE_PERMISSION,
                PermissionNavItemNavLink       = UserAdminConstants.UserAdminCssConstants.ACTIVE_NAVITEM_NAVLINK_VALUE,
                PermissionTabPadFade           = UserAdminConstants.UserAdminCssConstants.ACTIVE_TABPANE_FADE_VALUE,
                ActivePermissionNavItemNavLink = UserAdminConstants.UserAdminCssConstants.ACTIVE_NAVITEM_NAVLINK_VALUE,
                ActivePermissionTabPadFade     = UserAdminConstants.UserAdminCssConstants.ACTIVE_TABPANE_FADE_VALUE,
            };

            (bool isValid, string[] errorMessages) = _permissionValidator.CreatePermissionValuesAreValid(permissionCode, permissionLabel);
            if (isValid == false)
            {
                StringBuilder sb = new StringBuilder("<ul>");
                foreach (string errMsg in errorMessages)
                {
                    sb.Append("<li>").Append(errMsg).Append("</li>");
                }
                sb.Append("</ul>");

                permissionVM.AlertType    = UserAdminConstants.AlertTypeConstants.FAILURE;
                permissionVM.AlertMessage = sb.ToString();

                HttpContext.Session.SetObject(UserAdminConstants.PERMISSION_VIEW_MODEL, permissionVM);
                return(RedirectToAction("Index", "Permission"));
            }

            try
            {
                /////////////////////////////////////////////////////////////////////////////////////////////////
                // CALL PERMISSION SERVICE TO SAVE NEWLY CREATED PERMISSION TO DATABASE
                /////////////////////////////////////////////////////////////////////////////////////////////////
                int permissionId = _permissionService.CreatePermission(permissionCode, permissionLabel, qmsUser);
                /////////////////////////////////////////////////////////////////////////////////////////////////

                permissionVM.AlertType    = UserAdminConstants.AlertTypeConstants.SUCCESS;
                permissionVM.AlertMessage = $"Permission successfully created: ['{permissionId}', '{permissionCode}', '{permissionLabel}']";
            }
            catch (Exception exc)
            {
                Console.WriteLine(logSnippet + exc.Message);
                permissionVM.AlertType    = UserAdminConstants.AlertTypeConstants.FAILURE;
                permissionVM.AlertMessage = $"Create new permission failed.";
            }

            HttpContext.Session.SetObject(UserAdminConstants.PERMISSION_VIEW_MODEL, permissionVM);
            return(RedirectToAction("Index", "Permission"));
        }