добавление вложения в сообщение через стандартный БП Запуск процесса Отправка email сообщения группе о назначении обращения

Добрый день . 

Есть стандартный БП Запуск процесса Отправка email сообщения группе о назначении обращения. Работает отлично. Но начиная с версии 7.17 можно отправлять вложения в  ходе БП.

Кто подскажет как модернизировать стандартный БП, что бы вложения отправлялись ? 

 

UserConnection userConnection = UserConnection;
if (userConnection.CurrentUser.ConnectionType == UserType.SSP) {
    userConnection = userConnection.AppConnection.SystemUserConnection;
}
var senderEmail = Terrasoft.Core.Configuration.SysSettings.GetValue<string>(userConnection, 
    "SupportServiceEmail", string.Empty);
if (userConnection.GetIsFeatureEnabled("EmailMessageMultiLanguage") || userConnection.GetIsFeatureEnabled("EmailMessageMultiLanguageV2")) {
    var caseRecordId = (StartSignal1.RecordId != Guid.Empty)
        ? StartSignal1.RecordId 
        : StartSignal2.RecordId;
    var esq = new EntitySchemaQuery(userConnection.EntitySchemaManager, "Case");
    esq.AddColumn("Group");
    var caseEntity = esq.GetEntity(userConnection, caseRecordId);
    if (caseEntity != null) {
        var adminUnitEsq = new EntitySchemaQuery(userConnection.EntitySchemaManager, "SysAdminUnit");
        adminUnitEsq.UseAdminRights = false;
        var emailColumnName = adminUnitEsq.AddColumn("Contact.Email").Name;
        var groupId = caseEntity.GetTypedColumnValue<Guid>("GroupId");
        adminUnitEsq.Filters.Add(adminUnitEsq.CreateFilterWithParameters(FilterComparisonType.Equal, "[SysUserInRole:SysUser].SysRole", groupId));
        var collection = adminUnitEsq.GetEntityCollection(userConnection);
        var result = string.Join(";", collection.Select(e => e.GetTypedColumnValue<string>(emailColumnName)));
        if (!string.IsNullOrWhiteSpace(result)) {
            var emailTemplateSender = new Terrasoft.Configuration.EmailWithMacrosManager(userConnection);
            var emailTemplateId = Terrasoft.Configuration.CaseConsts.GroupTemplateId;
            if (userConnection.GetIsFeatureEnabled("EmailMessageMultiLanguageV2")) {
                emailTemplateSender.SendEmailFromTo(caseRecordId, emailTemplateId, senderEmail, result);
                return true;
            } else {
                var emailTemplateStore = new Terrasoft.Configuration.EmailTemplateStore(userConnection);
                var emailTemplateLanguageHelper = new Terrasoft.Configuration.EmailTemplateLanguageHelper(caseRecordId, userConnection);
                var languageId = emailTemplateLanguageHelper.GetLanguageId(emailTemplateId);
                var templateEntity = emailTemplateStore.GetTemplate(emailTemplateId, languageId);
                emailTemplateSender.SendEmailFromTo(caseRecordId, templateEntity.PrimaryColumnValue, senderEmail, result);
            }
        }
    }
} else {
    Guid sendEmailToCaseGroup = new Guid("C68F5A4E-AD06-4C83-88C4-040D2480FACB");
    var manager = userConnection.ProcessSchemaManager;
    var processSchema = manager.GetInstanceByUId(sendEmailToCaseGroup);
    if (ProcessSchemaManager.GetCanUseFlowEngine(userConnection, processSchema)) {
        var flowEngine = new FlowEngine(userConnection);
        Dictionary<string, string> parameter = new Dictionary<string, string>();
        parameter.Add("CaseRecordId", CaseRecordId.ToString());
        flowEngine.RunProcess(processSchema, parameter);
    } else {
        var moduleProcess = processSchema.CreateProcess(userConnection);
        if (processSchema.Parameters.ExistsByName("CaseRecordId")) {
            moduleProcess.SetPropertyValue("CaseRecordId", CaseRecordId);
        }
        moduleProcess.Execute(userConnection);
    }
}
return true;

Прикрепленные файлы

Нравится

1 комментарий

Добрый день.

Рекомендую вам воспользоваться данной статьей или уже готовое бесплатное расширение, которое можно будет немного отредактировать.

Показать все комментарии