/// <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(); }
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)); }
/// <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(); }
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); }
/// <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(); }
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(); } }
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); }