/// <summary>
        /// Creates notification message for user.
        /// </summary>
        /// <param name="userConnection">Instance of user connection.</param>
        /// <param name="config">Configuration object for notification message.</param>
        public virtual void CreateReminding(UserConnection userConnection, RemindingConfig config)
        {
            ValidateConfig(config);
            DateTime  userDateTime    = GetUserDateTime(userConnection, config);
            string    subject         = TruncateString(config.Description, SubjectCaptionTypeStringLength);
            string    description     = TruncateString(config.Description, DescriptionTypeStringLength);
            Reminding remindingEntity = GetRemindingEntity(userConnection, config);

            remindingEntity.SetColumnValue("ModifiedOn", userDateTime);
            remindingEntity.SetColumnValue("AuthorId", config.AuthorId);
            remindingEntity.SetColumnValue("ContactId", config.ContactId);
            remindingEntity.SetColumnValue("SourceId", config.SourceId);
            remindingEntity.SetColumnValue("RemindTime", userDateTime);
            remindingEntity.SetColumnValue("Description", description);
            remindingEntity.SetColumnValue("SubjectCaption", subject);
            remindingEntity.SetColumnValue("SysEntitySchemaId", config.EntitySchemaUId);
            remindingEntity.SetColumnValue("SubjectId", config.SubjectId);
            remindingEntity.SetColumnValue("NotificationTypeId", config.NotificationTypeId);
            remindingEntity.SetColumnValue("LoaderId", config.LoaderId);
            remindingEntity.SetColumnValue("SenderId", config.SenderId);
            remindingEntity.SetColumnValue("IsNeedToSend", config.IsNeedToSend);
            remindingEntity.SetColumnValue("PopupTitle", config.PopupTitle);
            remindingEntity.SetColumnValue("Config", config.Config != null
                                ? JsonConvert.SerializeObject(config.Config)
                                : string.Empty);
            remindingEntity.Save();
        }
        /// <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();
        }
Exemple #3
0
        private bool CanReceiverReadConnectedEntity(Reminding reminding, string schemaName)
        {
            var sysAdminUnit = new SysAdminUnit(UserConnection);

            if (!sysAdminUnit.FetchFromDB("Contact", reminding.ContactId, false))
            {
                return(false);
            }
            var rightsLevel = UserConnection.DBSecurityEngine.GetEntitySchemaRecordRightLevel(sysAdminUnit.Id,
                                                                                              schemaName, reminding.SubjectId);

            return(rightsLevel.HasFlag(SchemaRecordRightLevels.CanRead));
        }
Exemple #4
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();
        }
Exemple #5
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 Reminding GetRemindingEntity(UserConnection userConnection, RemindingConfig config)
        {
            string hash = config.UpdateExisting
                                ? CreateRemindingHash(config.ContactId, config.AuthorId, config)
                                : string.Empty;
            EntitySchema remindingSchema = userConnection.EntitySchemaManager.GetInstanceByName("Reminding");
            Reminding    newReminding    = (Reminding)remindingSchema.CreateEntity(userConnection);

            if (!config.UpdateExisting || !FindRecordByHash(newReminding, hash))
            {
                newReminding.SetDefColumnValues();
            }
            if (config.UpdateExisting)
            {
                newReminding.SetColumnValue("Hash", hash);
            }
            return(newReminding);
        }
Exemple #7
0
        /// <summary>
        /// Creates user remindings.
        /// </summary>
        /// <param name="userConnection">User connection instance.</param>
        /// <param name="description">Reminding text.</param>
        /// <param name="sysEntitySchemaId">UId of entity schema on which reminding is created.</param>
        public static void CreateReminding(UserConnection userConnection, string description, Guid sysEntitySchemaId)
        {
            DateTime  userDateTime    = userConnection.CurrentUser.GetCurrentDateTime();
            Guid      userContactId   = userConnection.CurrentUser.ContactId;
            Reminding remindingEntity = new Reminding(userConnection);

            remindingEntity.SetDefColumnValues();
            string subject = TruncateString(description, SubjectCaptionTypeStringLength);

            description = TruncateString(description, DescriptionTypeStringLength);
            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("SysEntitySchemaId", sysEntitySchemaId);
            remindingEntity.SetColumnValue("SubjectId", Guid.Empty);
            remindingEntity.Save();
        }
        private void SaveReminding(string schemaName, string infoMessage, string description, Guid?recordId = null)
        {
            var          currentUser  = UserConnection.CurrentUser;
            var          remindTime   = currentUser.GetCurrentDateTime();
            EntitySchema entitySchema = UserConnection.EntitySchemaManager.FindInstanceByName(schemaName);
            Reminding    reminding    = new Reminding(UserConnection);

            reminding.SetDefColumnValues();
            reminding.AuthorId   = currentUser.ContactId;
            reminding.SourceId   = RemindingConsts.RemindingSourceAuthorId;
            reminding.ContactId  = currentUser.ContactId;
            reminding.RemindTime = remindTime;
            reminding.PopupTitle = infoMessage;
            if (recordId != null)
            {
                reminding.SubjectId = recordId.Value;
            }
            reminding.SubjectCaption    = PrepareRemindingSubjectCaption(description);
            reminding.SysEntitySchemaId = entitySchema.UId;
            reminding.Save();
        }
Exemple #9
0
 private void CreateRemindings(UserConnection userConnection, List <Guid> recipientIds,
                               string remindingSubjectCaption)
 {
     foreach (var recipientId in recipientIds)
     {
         var currentUser = userConnection.CurrentUser;
         var remindTime  = currentUser.GetCurrentDateTime();
         var reminding   = new Reminding(userConnection);
         reminding.SetDefColumnValues();
         reminding.AuthorId          = currentUser.ContactId;
         reminding.SourceId          = RemindingConsts.RemindingSourceAuthorId;
         reminding.ContactId         = recipientId;
         reminding.RemindTime        = remindTime;
         reminding.Description       = GetLczString(userConnection, "ActiveContactsNotificationDescription");
         reminding.LoaderId          = _actualizeActiveContactsProcessUId;
         reminding.SysEntitySchemaId = _remindingBulkEmailSysEntitySchemaId;
         reminding.SubjectCaption    = remindingSubjectCaption;
         reminding.SetColumnValue("NotificationTypeId", RemindingConsts.NotificationTypeNotificationId);
         reminding.Save();
     }
 }
Exemple #10
0
        private Reminding GetReminding(IDataReader reader)
        {
            var contactId                   = reader.GetColumnValue <Guid>("ReceiverId");
            var entityId                    = reader.GetColumnValue <Guid>("Id");
            var entityName                  = reader.GetColumnValue <string>("Name");
            var sysEntitySchemaId           = reader.GetColumnValue <Guid>("SubjectId");
            var schema                      = UserConnection.EntitySchemaManager.GetItemByUId(sysEntitySchemaId);
            var dateString                  = reader.GetColumnValue <string>("SubjectCaption");
            var anniversaryBaseDate         = reader.GetColumnValue <DateTime>("AnniversaryBaseDate");
            IRemindingTextFormer textFormer = ClassFactory.Get <AnniversaryRemindingTextFormer>(
                new ConstructorArgument("userConnection", UserConnection));
            var title = textFormer.GetTitle(new Dictionary <string, object> {
                { "SchemaName", schema.Name }
            });
            var body = textFormer.GetBody(new Dictionary <string, object> {
                { "SchemaName", schema.Name },
                { "EntityId", entityId },
                { "EntityName", entityName },
                { "Date", dateString }
            });
            var reminding = new Reminding(_userConnection);

            reminding.SetDefColumnValues();
            reminding.RemindTime         = reader.GetColumnValue <DateTime>("RemindTime");
            reminding.Description        = title;
            reminding.PopupTitle         = title;
            reminding.ContactId          = contactId;
            reminding.SubjectCaption     = body;
            reminding.SubjectId          = entityId;
            reminding.SourceId           = SourceId;
            reminding.SenderId           = sysEntitySchemaId;
            reminding.SysEntitySchemaId  = sysEntitySchemaId;
            reminding.NotificationTypeId = RemindingConsts.NotificationTypeAnniversaryId;
            reminding.TypeCaption        = dateString;
            reminding.AnniversaryDate    = new DateTime(DateTime.Today.Year, anniversaryBaseDate.Month, anniversaryBaseDate.Day);
            return(reminding);
        }
 private bool FindRecordByHash(Reminding entity, string hash)
 {
     return(entity.FetchFromDB(new Dictionary <string, object> {
         { "Hash", hash }
     }, false));
 }
 public Reminding(Reminding source)
     : base(source)
 {
 }
 public Reminding(Terrasoft.Configuration.Reminding source)
     : base(source)
 {
     this.CopyEntityLookupProperties(source);
 }