/// <summary>
        /// Creates reminding whith custom text.
        /// </summary>
        /// <param name="remindingText">Text to be shown in reminding</param>
        protected virtual void CreateReminding(string remindingText)
        {
            Reminding remindingEntity = new Reminding(_userConnection);
            var       manager         = _userConnection.GetSchemaManager("EntitySchemaManager");
            var       targetSchema    = manager.FindItemByName(_schemaName);

            manager = _userConnection.GetSchemaManager("ClientUnitSchemaManager");
            var      loaderSchema  = manager.FindItemByName("DuplicatesSearchNotificationTargetLoader");
            string   subject       = _schemaName;
            DateTime userDateTime  = _userConnection.CurrentUser.GetCurrentDateTime();
            Guid     userContactId = _userConnection.CurrentUser.ContactId;
            var      condition     = new Dictionary <string, object> {
                {
                    "Author", userContactId
                }, {
                    "Contact", userContactId
                }, {
                    "Source", RemindingConsts.RemindingSourceAuthorId
                }, {
                    "SubjectCaption", subject
                }, {
                    "SysEntitySchema", targetSchema.UId
                },
            };
            string description = GetRemindingDescription(_userConnection);
            string hash        = GetRemindingHash(condition);

            if (!string.IsNullOrEmpty(remindingText))
            {
                subject = GetRemindingSubject(_userConnection, _schemaName, remindingText);
            }
            if (!remindingEntity.FetchFromDB(new Dictionary <string, object> {
                { "Hash", hash }
            }, false))
            {
                remindingEntity.SetDefColumnValues();
            }
            remindingText = TruncateString(remindingText, DescriptionTypeStringLength);
            subject       = TruncateString(subject, SubjectCaptionTypeStringLength);
            remindingEntity.SetColumnValue("ModifiedOn", userDateTime);
            remindingEntity.SetColumnValue("AuthorId", userContactId);
            remindingEntity.SetColumnValue("ContactId", userContactId);
            remindingEntity.SetColumnValue("SourceId", RemindingConsts.RemindingSourceAuthorId);
            remindingEntity.SetColumnValue("RemindTime", userDateTime);
            remindingEntity.SetColumnValue("Description", description);
            remindingEntity.SetColumnValue("SubjectCaption", subject);
            remindingEntity.SetColumnValue("NotificationTypeId", RemindingConsts.NotificationTypeNotificationId);
            remindingEntity.SetColumnValue("Hash", hash);
            remindingEntity.SetColumnValue("SysEntitySchemaId", targetSchema.UId);
            remindingEntity.SetColumnValue("LoaderId", loaderSchema.UId);
            remindingEntity.SetColumnValue("IsRead", false);
            remindingEntity.Save();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Creates user remindings.
        /// </summary>
        /// <param name="userConnection">User connection instance.</param>
        /// <param name="entity">Object on which reminding is created.</param>
        /// <param name="description">Reminding text.</param>
        /// <param name="schemaCaption">Custom reminding header.</param>
        public static void CreateReminding(
            UserConnection userConnection, Entity entity, string description, string schemaCaption = "")
        {
            Reminding remindingEntity = new Reminding(userConnection);
            string    subject         = entity.PrimaryDisplayColumnValue;
            DateTime  userDateTime    = userConnection.CurrentUser.GetCurrentDateTime();
            Guid      userContactId   = userConnection.CurrentUser.ContactId;
            var       condition       = new Dictionary <string, object> {
                {
                    "Author", userContactId
                }, {
                    "Contact", userContactId
                }, {
                    "Source", RemindingConsts.RemindingSourceAuthorId
                }, {
                    "SubjectCaption", subject
                }, {
                    "SysEntitySchema", entity.Schema.UId
                },
            };
            string hash = GetRemindingHash(condition);

            if (!string.IsNullOrEmpty(description))
            {
                subject = string.Format("{0} \"{1}\" {2}",
                                        string.IsNullOrEmpty(schemaCaption) ? entity.Schema.Caption.Value : schemaCaption,
                                        entity.PrimaryDisplayColumnValue,
                                        description);
            }
            if (!remindingEntity.FetchFromDB(new Dictionary <string, object> {
                { "Hash", hash }
            }, false))
            {
                remindingEntity.SetDefColumnValues();
            }
            description = TruncateString(subject, DescriptionTypeStringLength);
            subject     = TruncateString(subject, SubjectCaptionTypeStringLength);
            remindingEntity.SetColumnValue("ModifiedOn", userDateTime);
            remindingEntity.SetColumnValue("AuthorId", userContactId);
            remindingEntity.SetColumnValue("ContactId", userContactId);
            remindingEntity.SetColumnValue("SourceId", RemindingConsts.RemindingSourceAuthorId);
            remindingEntity.SetColumnValue("RemindTime", userDateTime);
            remindingEntity.SetColumnValue("Description", description);
            remindingEntity.SetColumnValue("SubjectCaption", subject);
            remindingEntity.SetColumnValue("Hash", hash);
            remindingEntity.SetColumnValue("SysEntitySchemaId", entity.Schema.UId);
            remindingEntity.SetColumnValue("SubjectId", entity.PrimaryColumnValue);
            remindingEntity.Save();
        }
Ejemplo n.º 3
0
        private void DeleteNotActualAnniversaryRemindings(string anniversarySchemaName)
        {
            var notActualRemindingsList  = new List <Guid>();
            var notActualRemindingsQuery = GetNotActualAnniversaryRemindingQuery(anniversarySchemaName);

            notActualRemindingsQuery.ExecuteReader(r => notActualRemindingsList.Add(r.GetColumnValue <Guid>("Id")));
            foreach (var remindingId in notActualRemindingsList)
            {
                var reminding = new Reminding(_userConnection);
                if (reminding.FetchFromDB(remindingId))
                {
                    reminding.Delete();
                }
            }
        }
 private bool FindRecordByHash(Reminding entity, string hash)
 {
     return(entity.FetchFromDB(new Dictionary <string, object> {
         { "Hash", hash }
     }, false));
 }