Ejemplo n.º 1
0
        private static Dictionary <SearchDocType, List <Guid> > get_existing_ids(Guid applicationId,
                                                                                 List <SearchDoc> docs, ref List <DocFileInfo> files)
        {
            Dictionary <SearchDocType, List <Guid> > ids = new Dictionary <SearchDocType, List <Guid> >();

            ids[SearchDocType.Node] = CNController.get_existing_node_ids(applicationId,
                                                                         docs.Where(u => u.SearchDocType == SearchDocType.Node).Select(v => v.ID).ToList(), true, false);

            ids[SearchDocType.NodeType] = CNController.get_existing_node_type_ids(applicationId,
                                                                                  docs.Where(u => u.SearchDocType == SearchDocType.NodeType).Select(v => v.ID).ToList(), false);

            ids[SearchDocType.Question] = QAController.get_existing_question_ids(applicationId,
                                                                                 docs.Where(u => u.SearchDocType == SearchDocType.Question).Select(v => v.ID).ToList());

            ids[SearchDocType.User] = UsersController.get_approved_user_ids(applicationId,
                                                                            docs.Where(u => u.SearchDocType == SearchDocType.User).Select(v => v.ID).ToList());

            //Files
            List <DocFileInfo> newFiles = DocumentsController.get_file_owner_nodes(applicationId,
                                                                                   docs.Where(u => u.SearchDocType == SearchDocType.File).Select(v => v.ID).ToList())
                                          .Where(u => u.FileID.HasValue).ToList();

            ids[SearchDocType.File] = newFiles.Select(v => v.FileID.Value).ToList();

            foreach (DocFileInfo f in newFiles)
            {
                if (!files.Any(u => u.FileID == f.FileID))
                {
                    files.Add(f);
                }
            }
            //end of Files

            return(ids);
        }
Ejemplo n.º 2
0
    protected void Awake()
    {
        qaController = this;

        GameData.Load();
        QuestionData.Load("Xml/QnA");

        usedQuestions = new List <QuestionData.question>();

        QuestionData.current.EmitQuestionsMap(out questionsMap);
    }
Ejemplo n.º 3
0
 public void initialize(float yPos)
 {
     theText                 = this.GetComponent <Text> ();
     elapsedTime             = 0.0f;
     opacity                 = 0.0f;
     theText.color           = new Color(1, 1, 1, opacity);
     state                   = QAAnswerState.delaying;
     rect                    = this.GetComponent <RectTransform> ();
     rect.transform.position = new Vector2(0, 0);
     rect.anchoredPosition   = new Vector2(0, yPos);
     rect.anchorMax          = new Vector2(1, 7.5f / 600.0f);
     rect.anchorMin          = new Vector2(0, 0);
     if (controller == null)
     {
         controller = GameObject.Find("QAController").GetComponent <QAController>();
     }
 }
Ejemplo n.º 4
0
        protected bool check_object_type(List <Guid> objectIds, PrivacyObjectType objectType)
        {
            switch (objectType)
            {
            case PrivacyObjectType.None:
            case PrivacyObjectType.Node:
            case PrivacyObjectType.NodeType:
            {
                if (objectIds.Count != 1)
                {
                    return(false);
                }

                bool isNodeType = objectType != PrivacyObjectType.Node &&
                                  CNController.is_node_type(paramsContainer.Tenant.Id, objectIds).Count == objectIds.Count;
                bool isNode = !isNodeType && objectType != PrivacyObjectType.NodeType &&
                              CNController.is_node(paramsContainer.Tenant.Id, objectIds).Count == objectIds.Count;

                if (!isNodeType && !isNode)
                {
                    return(false);
                }

                bool accessPermission =
                    AuthorizationManager.has_right(AccessRoleName.ManageOntology, paramsContainer.CurrentUserID);

                if (!accessPermission)
                {
                    accessPermission = CNController.is_service_admin(paramsContainer.Tenant.Id,
                                                                     objectIds[0], paramsContainer.CurrentUserID.Value);
                }

                if (!accessPermission && isNode)
                {
                    accessPermission = CNController.is_node_admin(paramsContainer.Tenant.Id,
                                                                  paramsContainer.CurrentUserID.Value, objectIds[0], null, null, null) ||
                                       PrivacyController.check_access(paramsContainer.Tenant.Id, paramsContainer.CurrentUserID,
                                                                      objectIds[0], PrivacyObjectType.Node, PermissionType.Modify);
                }

                return(accessPermission);
            }

            case PrivacyObjectType.FAQCategory:
                return(QAController.is_faq_category(paramsContainer.Tenant.Id, objectIds).Count == objectIds.Count &&
                       (AuthorizationManager.has_right(AccessRoleName.ManageQA, paramsContainer.CurrentUserID) ||
                        QAController.is_workflow_admin(paramsContainer.Tenant.Id, paramsContainer.CurrentUserID.Value, null)));

            case PrivacyObjectType.QAWorkFlow:
                return(QAController.is_workflow(paramsContainer.Tenant.Id, objectIds).Count == objectIds.Count &&
                       AuthorizationManager.has_right(AccessRoleName.ManageQA, paramsContainer.CurrentUserID));

            case PrivacyObjectType.Poll:
                return(FGController.is_poll(paramsContainer.Tenant.Id, objectIds).Count == objectIds.Count &&
                       AuthorizationManager.has_right(AccessRoleName.ManagePolls, paramsContainer.CurrentUserID));

            case PrivacyObjectType.Report:
                return(!objectIds.Any(u => !ReportUtilities.ReportIDs.Any(x => x.Value == u)) &&
                       PublicMethods.is_system_admin(paramsContainer.Tenant.Id, paramsContainer.CurrentUserID.Value));

            case PrivacyObjectType.FormElement:
                return(FGController.is_form_element(paramsContainer.Tenant.Id, objectIds).Count == objectIds.Count &&
                       AuthorizationManager.has_right(AccessRoleName.ManageForms, paramsContainer.CurrentUserID));
            }

            return(false);
        }
Ejemplo n.º 5
0
        private static void _send_notification(Guid applicationId, Notification info)
        {
            if (!RaaiVanConfig.Modules.Notifications(applicationId))
            {
                return;
            }

            if (!info.Action.HasValue || info.Action.Value == ActionType.None ||
                !info.SubjectType.HasValue || info.SubjectType.Value == SubjectType.None)
            {
                return;
            }

            List <Pair> users = new List <Pair>();

            if (info.UserID.HasValue && info.UserID != info.Sender.UserID)
            {
                users.Add(new Pair(info.UserID.Value, UserStatus.Owner));
            }

            List <Guid> userIds = new List <Guid>();

            List <Guid> mentionedUserIds = info.Action == ActionType.Post || info.Action == ActionType.Share || info.Action == ActionType.Comment ?
                                           Expressions.get_tagged_items(info.Description, "User").Where(u => u.ID.HasValue && u.ID != info.UserID)
                                           .Select(u => u.ID.Value).ToList() : new List <Guid>();

            info.Description = PublicMethods.markup2plaintext(applicationId,
                                                              Expressions.replace(info.Description, Expressions.Patterns.HTMLTag, " "));

            switch (info.Action.Value)
            {
            case ActionType.Like:
                switch (info.SubjectType.Value)
                {
                case SubjectType.Node:
                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Owner)) == null)
                    {
                        userIds = CNController.get_node_creators(applicationId, info.RefItemID.Value).Select(
                            u => u.User.UserID.Value).ToList();
                    }
                    foreach (Guid _uid in userIds)
                    {
                        users.Add(new Pair(_uid, UserStatus.Owner));
                    }

                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Member)) == null)
                    {
                        userIds = CNController.get_member_user_ids(applicationId,
                                                                   info.RefItemID.Value, NodeMemberStatuses.Accepted);
                    }
                    foreach (Guid _uid in userIds)
                    {
                        users.Add(new Pair(_uid, UserStatus.Member));
                    }

                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Expert)) == null)
                    {
                        userIds = CNController.get_experts(applicationId, info.RefItemID.Value).Select(
                            u => u.User.UserID.Value).ToList();
                    }
                    foreach (Guid _usr in userIds)
                    {
                        users.Add(new Pair(_usr, UserStatus.Expert));
                    }

                    Node node = CNController.get_node(applicationId, info.RefItemID.Value, true);
                    if (node != null)
                    {
                        info.SubjectName = node.Name;
                        info.Description = node.Description;
                        info.Info        = "{\"NodeType\":\"" + Base64.encode(node.NodeType) + "\"}";
                    }
                    break;

                case SubjectType.Question:
                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Owner)) == null)
                    {
                        userIds = new List <Guid>()
                        {
                        };
                        Guid?id = QAController.get_question_asker_id(applicationId, info.RefItemID.Value);
                        if (id.HasValue)
                        {
                            userIds.Add(id.Value);
                        }
                    }
                    foreach (Guid _uid in userIds)
                    {
                        users.Add(new Pair(_uid, UserStatus.Owner));
                    }

                    Question question = QAController.get_question(applicationId, info.RefItemID.Value, null);
                    if (question != null)
                    {
                        info.SubjectName = question.Title;
                        info.Description = question.Description;
                    }
                    break;

                case SubjectType.Post:
                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Owner)) == null)
                    {
                        userIds = new List <Guid>();
                        Guid?id = SharingController.get_post_sender_id(applicationId, info.RefItemID.Value);
                        if (id.HasValue)
                        {
                            userIds.Add(id.Value);
                        }
                    }
                    foreach (Guid _uid in userIds)
                    {
                        users.Add(new Pair(_uid, UserStatus.Owner));
                    }

                    Post post = SharingController.get_post(applicationId, info.RefItemID.Value, null);
                    info.Description = string.IsNullOrEmpty(post.Description) ?
                                       post.OriginalDescription : post.Description;
                    break;

                case SubjectType.Comment:
                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Owner)) == null)
                    {
                        userIds = new List <Guid>();
                        Guid?id = SharingController.get_comment_sender_id(applicationId, info.SubjectID.Value);
                        if (id.HasValue)
                        {
                            userIds.Add(id.Value);
                        }
                    }
                    foreach (Guid _uid in userIds)
                    {
                        users.Add(new Pair(_uid, UserStatus.Owner));
                    }

                    Sharing.Comment comment = SharingController.get_comment(applicationId, info.SubjectID.Value, null);
                    info.RefItemID   = comment.PostID;
                    info.Description = comment.Description;
                    break;
                }
                break;

            case ActionType.Dislike:
                switch (info.SubjectType.Value)
                {
                case SubjectType.Post:
                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Owner)) == null)
                    {
                        userIds = new List <Guid>();
                        Guid?id = SharingController.get_post_sender_id(applicationId, info.RefItemID.Value);
                        if (id.HasValue)
                        {
                            userIds.Add(id.Value);
                        }
                    }
                    foreach (Guid _uid in userIds)
                    {
                        users.Add(new Pair(_uid, UserStatus.Owner));
                    }

                    Post post = SharingController.get_post(applicationId, info.RefItemID.Value, null);
                    info.Description = string.IsNullOrEmpty(post.Description) ? post.OriginalDescription : post.Description;
                    break;

                case SubjectType.Comment:
                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Owner)) == null)
                    {
                        userIds = new List <Guid>();
                        Guid?id = SharingController.get_comment_sender_id(applicationId, info.SubjectID.Value);
                        if (id.HasValue)
                        {
                            userIds.Add(id.Value);
                        }
                    }
                    foreach (Guid _uid in userIds)
                    {
                        users.Add(new Pair(_uid, UserStatus.Owner));
                    }

                    Sharing.Comment comment = SharingController.get_comment(applicationId, info.SubjectID.Value, null);
                    info.RefItemID   = comment.PostID;
                    info.Description = comment.Description;
                    break;
                }
                break;

            case ActionType.Question:
                switch (info.SubjectType.Value)
                {
                case SubjectType.Question:
                    if (info.ReceiverUserIDs != null && info.ReceiverUserIDs.Count > 0)
                    {
                        userIds = info.ReceiverUserIDs;
                        foreach (Guid _uid in userIds)
                        {
                            users.Add(new Pair(_uid, UserStatus.Contributor));
                        }
                    }
                    break;
                }
                break;

            case ActionType.Answer:
                switch (info.SubjectType.Value)
                {
                case SubjectType.Answer:
                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Owner)) == null)
                    {
                        userIds = new List <Guid>();
                        Guid?id = QAController.get_question_asker_id(applicationId, info.RefItemID.Value);
                        if (id.HasValue)
                        {
                            userIds.Add(id.Value);
                        }
                    }
                    foreach (Guid _uid in userIds)
                    {
                        users.Add(new Pair(_uid, UserStatus.Owner));
                    }

                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Fan)) == null)
                    {
                        userIds = GlobalController.get_fan_ids(applicationId, info.RefItemID.Value).ToList();
                    }
                    foreach (Guid _usr in userIds)
                    {
                        users.Add(new Pair(_usr, UserStatus.Fan));
                    }

                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Contributor)) == null)
                    {
                        userIds = QAController.get_answer_sender_ids(applicationId, info.RefItemID.Value).ToList();
                    }
                    foreach (Guid _usr in userIds)
                    {
                        users.Add(new Pair(_usr, UserStatus.Contributor));
                    }

                    info.SubjectName = QAController.get_question(applicationId, info.RefItemID.Value, null).Title;
                    break;
                }
                break;

            case ActionType.Post:
            case ActionType.Share:
                switch (info.SubjectType.Value)
                {
                case SubjectType.Post:
                    foreach (Guid _usr in mentionedUserIds)
                    {
                        users.Add(new Pair(_usr, UserStatus.Mentioned));
                    }

                    Node node = null;

                    bool isNode = info.RefItemID.HasValue &&
                                  CNController.is_node(applicationId, info.RefItemID.Value);

                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Director)) != null)
                    {
                        foreach (Guid _usr in userIds)
                        {
                            users.Add(new Pair(_usr, UserStatus.Owner));
                        }
                    }

                    if (isNode)
                    {
                        if ((userIds = __get_audience_user_ids(ref info, UserStatus.Owner)) == null)
                        {
                            userIds = CNController.get_node_creators(applicationId, info.RefItemID.Value).Select(
                                u => u.User.UserID.Value).ToList();
                        }
                        foreach (Guid _usr in userIds)
                        {
                            users.Add(new Pair(_usr, UserStatus.Owner));
                        }

                        if ((userIds = __get_audience_user_ids(ref info, UserStatus.Member)) == null)
                        {
                            userIds = CNController.get_members(applicationId, info.RefItemID.Value,
                                                               pending: false, admin: null).Select(u => u.Member.UserID.Value).ToList();
                        }
                        foreach (Guid _usr in userIds)
                        {
                            users.Add(new Pair(_usr, UserStatus.Member));
                        }

                        if ((userIds = __get_audience_user_ids(ref info, UserStatus.Fan)) == null)
                        {
                            userIds = CNController.get_node_fans_user_ids(applicationId, info.RefItemID.Value).ToList();
                        }
                        foreach (Guid _usr in userIds)
                        {
                            users.Add(new Pair(_usr, UserStatus.Fan));
                        }

                        node = CNController.get_node(applicationId, info.RefItemID.Value);
                        if (node != null)
                        {
                            info.SubjectName = node.Name;
                        }
                    }

                    if (RaaiVanConfig.Modules.SMSEMailNotifier(applicationId))
                    {
                        User user = UsersController.get_user(applicationId, info.Sender.UserID.Value);
                        info.ReplacementDic["SenderProfileImageURL"] =
                            DocumentUtilities.get_personal_image_address(applicationId, user.UserID.Value, true);
                        info.ReplacementDic["SenderFullName"] = user.FirstName + " " + user.LastName;
                        info.ReplacementDic["SenderPageURL"]  =
                            PublicConsts.get_complete_url(applicationId, PublicConsts.HomePage) +
                            "/" + user.UserID.Value.ToString();
                        info.ReplacementDic["PostURL"] =
                            PublicConsts.get_complete_url(applicationId, PublicConsts.PostPage) +
                            "/" + info.SubjectID.Value.ToString();
                        info.ReplacementDic["Description"] = info.Description;

                        if (isNode)
                        {
                            info.ReplacementDic["NodePageURL"] =
                                PublicConsts.get_complete_url(applicationId, PublicConsts.NodePage) +
                                "/" + info.RefItemID.Value.ToString();
                            if (node != null)
                            {
                                info.ReplacementDic["NodeName"] = node.Name;
                            }
                        }
                    }

                    break;
                }
                break;

            case ActionType.Comment:
                switch (info.SubjectType.Value)
                {
                case SubjectType.Comment:
                    foreach (Guid _usr in mentionedUserIds)
                    {
                        users.Add(new Pair(_usr, UserStatus.Mentioned));
                    }

                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Owner)) == null)
                    {
                        userIds = new List <Guid>();
                        Guid?id = SharingController.get_post_sender_id(applicationId, info.RefItemID.Value);
                        if (id.HasValue)
                        {
                            userIds.Add(id.Value);
                        }
                    }
                    foreach (Guid _uid in userIds)
                    {
                        users.Add(new Pair(_uid, UserStatus.Owner));
                    }

                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Fan)) == null)
                    {
                        userIds = SharingController.get_post_fan_ids(applicationId, info.RefItemID.Value).ToList();
                    }
                    foreach (Guid _usr in userIds)
                    {
                        users.Add(new Pair(_usr, UserStatus.Fan));
                    }

                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Contributor)) == null)
                    {
                        userIds = SharingController.get_comment_sender_ids(applicationId, info.RefItemID.Value).ToList();
                    }
                    foreach (Guid _usr in userIds)
                    {
                        users.Add(new Pair(_usr, UserStatus.Contributor));
                    }

                    if (RaaiVanConfig.Modules.SMSEMailNotifier(applicationId))
                    {
                        User user = UsersController.get_user(applicationId, info.Sender.UserID.Value);
                        info.ReplacementDic["SenderProfileImageURL"] =
                            DocumentUtilities.get_personal_image_address(applicationId, user.UserID.Value, true);
                        info.ReplacementDic["SenderFullName"] = user.FirstName + " " + user.LastName;
                        info.ReplacementDic["SenderPageURL"]  =
                            PublicConsts.get_complete_url(applicationId, PublicConsts.ProfilePage) +
                            "/" + user.UserID.Value.ToString();
                        info.ReplacementDic["PostURL"] =
                            PublicConsts.get_complete_url(applicationId, PublicConsts.PostPage) +
                            "/" + info.RefItemID.Value.ToString();
                        info.ReplacementDic["Description"] = info.Description;
                    }

                    break;

                case SubjectType.Question:
                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Owner)) == null)
                    {
                        userIds = new List <Guid>();
                        Guid?id = QAController.get_question_asker_id(applicationId, info.RefItemID.Value);
                        if (id.HasValue)
                        {
                            userIds.Add(id.Value);
                        }
                    }
                    foreach (Guid _uid in userIds)
                    {
                        users.Add(new Pair(_uid, UserStatus.Owner));
                    }

                    break;

                case SubjectType.Answer:
                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Owner)) == null)
                    {
                        userIds = new List <Guid>();
                        Guid?commentId = QAController.get_comment_owner_id(applicationId, info.SubjectID.Value);
                        if (commentId.HasValue)
                        {
                            userIds.Add(commentId.Value);
                        }
                    }
                    foreach (Guid _uid in userIds)
                    {
                        users.Add(new Pair(_uid, UserStatus.Owner));
                    }

                    break;
                }
                break;

            case ActionType.Modify:
                switch (info.SubjectType.Value)
                {
                case SubjectType.Wiki:
                    Node node = CNController.get_node(applicationId, info.RefItemID.Value, false);

                    if (node != null && node.NodeID.HasValue)
                    {
                        if ((userIds = __get_audience_user_ids(ref info, UserStatus.Owner)) == null)
                        {
                            userIds = CNController.get_node_creators(applicationId, info.RefItemID.Value).Select(
                                u => u.User.UserID.Value).ToList();
                        }
                        foreach (Guid _usr in userIds)
                        {
                            users.Add(new Pair(_usr, UserStatus.Owner));
                        }

                        if ((userIds = __get_audience_user_ids(ref info, UserStatus.Fan)) == null)
                        {
                            userIds =
                                CNController.get_node_fans_user_ids(applicationId, info.RefItemID.Value).ToList();
                        }
                        foreach (Guid _usr in userIds)
                        {
                            users.Add(new Pair(_usr, UserStatus.Fan));
                        }

                        if ((userIds = __get_audience_user_ids(ref info, UserStatus.Expert)) == null)
                        {
                            userIds = CNController.get_experts(applicationId, info.RefItemID.Value).Select(
                                u => u.User.UserID.Value).ToList();
                        }
                        foreach (Guid _usr in userIds)
                        {
                            users.Add(new Pair(_usr, UserStatus.Expert));
                        }

                        if ((userIds = __get_audience_user_ids(ref info, UserStatus.Member)) == null)
                        {
                            userIds = CNController.get_member_user_ids(applicationId, info.RefItemID.Value);
                        }
                        foreach (Guid _usr in userIds)
                        {
                            users.Add(new Pair(_usr, UserStatus.Member));
                        }

                        if (!users.Exists(u => (UserStatus)u.Second == UserStatus.Owner))
                        {
                            users.Add(new Pair(node.Creator.UserID.Value, UserStatus.Owner));
                        }

                        info.SubjectName = node.Name;
                        info.Info        = "{\"NodeType\":\"" + Base64.encode(node.NodeType) + "\"}";

                        if (RaaiVanConfig.Modules.SMSEMailNotifier(applicationId))
                        {
                            User user = UsersController.get_user(applicationId, info.Sender.UserID.Value);
                            info.ReplacementDic["SenderProfileImageURL"] =
                                DocumentUtilities.get_personal_image_address(applicationId, user.UserID.Value, true);
                            info.ReplacementDic["SenderFullName"] = user.FirstName + " " + user.LastName;
                            info.ReplacementDic["SenderPageURL"]  =
                                PublicConsts.get_complete_url(applicationId, PublicConsts.ProfilePage) +
                                "/" + user.UserID.Value.ToString();
                            info.ReplacementDic["NodeName"]    = node.Name;
                            info.ReplacementDic["NodeType"]    = node.NodeType;
                            info.ReplacementDic["NodePageURL"] =
                                PublicConsts.get_complete_url(applicationId, PublicConsts.NodePage) +
                                "/" + info.RefItemID.Value.ToString();
                            info.ReplacementDic["Description"] = info.Description;
                        }
                    }
                    break;
                }
                break;

            case ActionType.FriendRequest:
                switch (info.SubjectType.Value)
                {
                case SubjectType.User:
                    users.Clear();
                    users.Add(new Pair(info.UserID, UserStatus.Mentioned));

                    info.UserStatus = UserStatus.Mentioned;

                    if (RaaiVanConfig.Modules.SMSEMailNotifier(applicationId))
                    {
                        User user = UsersController.get_user(applicationId, info.RefItemID.Value);
                        info.ReplacementDic["SenderProfileImageURL"] =
                            DocumentUtilities.get_personal_image_address(applicationId, user.UserID.Value, true);
                        info.ReplacementDic["SenderFullName"] = user.FirstName + " " + user.LastName;
                        info.ReplacementDic["SenderPageURL"]  =
                            PublicConsts.get_complete_url(applicationId, PublicConsts.ProfilePage) +
                            "/" + user.UserID.Value.ToString();
                    }

                    break;
                }
                break;

            case ActionType.AcceptFriendRequest:
                switch (info.SubjectType.Value)
                {
                case SubjectType.User:
                    users.Clear();
                    users.Add(new Pair(info.UserID, UserStatus.Mentioned));

                    info.UserStatus = UserStatus.Mentioned;

                    if (RaaiVanConfig.Modules.SMSEMailNotifier(applicationId))
                    {
                        User user = UsersController.get_user(applicationId, info.RefItemID.Value);
                        info.ReplacementDic["SenderProfileImageURL"] =
                            DocumentUtilities.get_personal_image_address(applicationId, user.UserID.Value, true);
                        info.ReplacementDic["SenderFullName"] = user.FirstName + " " + user.LastName;
                        info.ReplacementDic["SenderPageURL"]  =
                            PublicConsts.get_complete_url(applicationId, PublicConsts.ProfilePage) +
                            "/" + user.UserID.Value.ToString();
                    }

                    break;
                }
                break;

            case ActionType.Accept:
                switch (info.SubjectType)
                {
                case SubjectType.Node:
                {
                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Member)) == null &&
                        info.RefItemID.HasValue)
                    {
                        List <Guid> nIds = CNController.get_related_node_ids(applicationId, info.RefItemID.Value,
                                                                             null, null, false, true);

                        List <Guid> creatorIds =
                            CNController.get_node_creators(applicationId, info.RefItemID.Value)
                            .Select(u => u.User.UserID.Value).ToList();

                        userIds = CNController.get_members(applicationId, nIds,
                                                           pending: false, admin: null).Select(u => u.Member.UserID.Value)
                                  .Distinct().Where(x => !creatorIds.Any(a => a == x)).ToList();
                    }
                    foreach (Guid _usr in userIds)
                    {
                        users.Add(new Pair(_usr, UserStatus.Member));
                    }
                }
                break;
                }
                break;

            case ActionType.Publish:
                switch (info.SubjectType)
                {
                case SubjectType.Question:
                    if ((userIds = __get_audience_user_ids(ref info, UserStatus.Owner)) == null)
                    {
                        userIds = new List <Guid>();
                        Guid?id = QAController.get_question_asker_id(applicationId, info.RefItemID.Value);
                        if (id.HasValue)
                        {
                            userIds.Add(id.Value);
                        }
                    }
                    foreach (Guid _uid in userIds)
                    {
                        users.Add(new Pair(_uid, UserStatus.Owner));
                    }

                    break;
                }
                break;
            }

            users = users.Except(users.Where(u => info.Sender.UserID.HasValue && (Guid)u.First == info.Sender.UserID)).ToList();

            DataProvider.SendNotification(applicationId, ref users, info);

            if (RaaiVanConfig.Modules.SMSEMailNotifier(applicationId))
            {
                NotificationController._send_notification_message(applicationId, users, info);
            }
        }
 public void OnCategorySelected(QAController.QuestionCategory category)
 {
     ShowHud(true);
     UINavigationController.DismissBackground("/MainBackground");
     UINavigationController.DismissAllControllers();
     Debug.Log(category);
     var player = GetCurrentPlayerController();
     int steps = category == QAController.QuestionCategory.Easy ? 1 : category == QAController.QuestionCategory.Medium ? 2 : 3;
     gameBoard.PlayerHightlightBlock(player, steps);
 }