/// <summary>
        /// Notifies the specified request comment.
        /// </summary>
        /// <param name="requestComment">The request comment.</param>
        public static void Notify(tbl_RequestComment requestComment)
        {
            if (!requestComment.tbl_Request.CompanyID.HasValue)
            {
                return;
            }

            AddSiteAction(requestComment, SiteActionTemplates.RequestCommentNotification);
        }
        /// <summary>
        /// Adds the site action.
        /// </summary>
        /// <param name="requestComment">The request comment.</param>
        /// <param name="systemSiteActionTemplate">The system site action template.</param>
        protected static void AddSiteAction(tbl_RequestComment requestComment, tbl_SiteActionTemplate systemSiteActionTemplate)
        {
            var dataManager = new DataManager();

            var siteActionTemplate = dataManager.SiteActionTemplate.SelectSystemSiteActionTemplate(requestComment.SiteID, systemSiteActionTemplate);

            var serviceLevelClient = dataManager.ServiceLevelClient.SelectByCompanyId(requestComment.SiteID, (Guid)requestComment.tbl_Request.CompanyID);

            if (serviceLevelClient == null)
            {
                return;
            }

            var serviceLevelContacts = dataManager.ServiceLevelContact.SelectByClientId(serviceLevelClient.ID).ToList();

            var      commentator = dataManager.User.SelectById(requestComment.UserID);
            tbl_User destination = null;

            if (requestComment.DestinationUserID.HasValue)
            {
                destination = dataManager.User.SelectById((Guid)requestComment.DestinationUserID);
            }

            foreach (var serviceLevelContact in serviceLevelContacts)
            {
                //Не высылать уведомление самому себе
                if (commentator != null && serviceLevelContact.ContactID == commentator.ContactID)
                {
                    continue;
                }

                if (destination != null && serviceLevelContact.ContactID != destination.ContactID)
                {
                    continue;
                }

                if (requestComment.IsInternal)
                {
                    var user = dataManager.User.SelectByContactId(requestComment.SiteID, serviceLevelContact.ContactID);
                    if (user == null || user.AccessLevelID == (int)AccessLevel.Portal)
                    {
                        continue;
                    }
                }

                switch ((ServiceLevelInformComment)serviceLevelContact.InformCommentID)
                {
                case ServiceLevelInformComment.Not:
                    continue;

                case ServiceLevelInformComment.Personal:
                    if (requestComment.DestinationUserID.HasValue)
                    {
                        var user = dataManager.User.SelectById((Guid)requestComment.DestinationUserID);
                        if (user.ContactID != serviceLevelContact.ContactID)
                        {
                            continue;
                        }
                    }
                    else
                    {
                        continue;
                    }
                    break;

                case ServiceLevelInformComment.PersonalRequirement:
                    if (requestComment.tbl_Request.ContactID != serviceLevelContact.ContactID &&
                        requestComment.tbl_Request.ResponsibleID != serviceLevelContact.ContactID)
                    {
                        continue;
                    }
                    break;
                }

                var siteAction = new tbl_SiteAction
                {
                    SiteID = requestComment.SiteID,
                    SiteActionTemplateID = siteActionTemplate.ID,
                    ContactID            = serviceLevelContact.ContactID,
                    ActionStatusID       = (int)ActionStatus.Scheduled,
                    ActionDate           = DateTime.Now,
                    ObjectID             = requestComment.ID,
                    MessageTypeID        = (int)MessageType.RequestCommentNotification,
                    DirectionID          = (int)Direction.Out,
                    MessageTitle         = siteActionTemplate.Title
                };

                dataManager.SiteAction.Add(siteAction);
            }
        }