Exemplo n.º 1
0
        /// <summary>
        /// Guarda las modificaciones del rol.
        /// </summary>
        /// <param name="role"></param>
        /// <returns></returns>
        public bool Edit(Role role)
        {
            RoleMapper           roleMapper           = new RoleMapper();
            RolePermissionMapper rolePermissionMapper = new RolePermissionMapper();

            if (!IsValid(role))
            {
                return(false);
            }

            if (roleMapper.Exists(role))
            {
                string errorDescription = "Ya existe rol con ese nombre";
                log.AddLogWarn("Edit", errorDescription, this);
                AddError(new ResultBE(ResultBE.Type.ALREADY_EXISTS, errorDescription));
                return(false);
            }

            if (!roleMapper.Edit(role))
            {
                string errorDescription = "No se pudo actualizar el rol.";
                log.AddLogCritical("Edit", errorDescription, this);
                AddError(new ResultBE(ResultBE.Type.FAIL, errorDescription));
                return(false);
            }

            // TODO - los roles tienen una lista de permisos y deberían guardarse en la misma transacción
            if (!rolePermissionMapper.Edit(role))
            {
                string errorDescription = "No se ha podido guardar la nómina de permisos asociados al rol.";
                log.AddLogCritical("Edit", errorDescription, this);
                AddError(new ResultBE(ResultBE.Type.FAIL, errorDescription));
                return(false);
            }

            return(true);
        }