public static void emailLogUpdater(ClarifyDataRow record, HistoryItem historyItem, ISchemaCache schemaCache)
        {
            var log = new StringBuilder();

            var from = record.AsString("sender");
            var to = record.AsString("recipient");
            var cclist = record.AsTrimmedString("cc_list");
            var subject = doesEmailLogSubjectExist(schemaCache) ? record.AsTrimmedString("x_subject") : "";
            var message = record.AsString("message");
            var isoDate = record.AsDateTime("creation_time").ToString("s", CultureInfo.InvariantCulture);

            log.Append(HistoryParsers.BEGIN_EMAIL_LOG_HEADER);

            log.AppendLine("{0}: {1}{2}".ToFormat(HistoryBuilderTokens.LOG_EMAIL_DATE, HistoryParsers.BEGIN_ISODATE_HEADER, isoDate));
            const string headerFormat = "{0}: {1}";
            log.AppendLine(headerFormat.ToFormat(HistoryBuilderTokens.LOG_EMAIL_FROM, from));
            log.AppendLine(headerFormat.ToFormat(HistoryBuilderTokens.LOG_EMAIL_TO, to));
            if (cclist.IsNotEmpty()) log.AppendLine(headerFormat.ToFormat(HistoryBuilderTokens.LOG_EMAIL_CC, cclist));
            if (subject.IsNotEmpty()) log.AppendLine(headerFormat.ToFormat(HistoryBuilderTokens.LOG_EMAIL_SUBJECT, subject));

            log.Append(HistoryParsers.END_EMAIL_LOG_HEADER);

            log.AppendLine(message);

            historyItem.Detail = log.ToString();
        }
        public void beforeEach()
        {
            var dataSet = AdministratorClarifySession.CreateDataSet();
            var emailLogGeneric = dataSet.CreateGeneric("email_log");
            emailLogGeneric.Filter(f => f.Equals("objid", _logEmailObjid));
            emailLogGeneric.Query();

            _dataRow = emailLogGeneric[0];

            _historyItem = new HistoryItem();
            CommonActEntryBuilderDSLExtensions.emailLogUpdater(_dataRow, _historyItem, _schemaCache);
        }
        private bool updateActivityDto(ActEntry actEntry, HistoryItem dto, ActEntryTemplate template, IDictionary<ActEntryTemplate, ClarifyGeneric> templateRelatedGenerics)
        {
            if (!isActivityDTOUpdaterPresent(template)) return false;

            var relatedRow = actEntry.ActEntryRecord;
            var relatedGenericKey = actEntry.Template;

            if (templateRelatedGenerics.ContainsKey(relatedGenericKey))
            {
                var relatedRows = actEntry.ActEntryRecord.RelatedRows(templateRelatedGenerics[relatedGenericKey]);

                //when a row related to the act entry was retrieved give that row to the updater.
                relatedRow = relatedRows.Length > 0 ? relatedRows[0] : null;

                if (relatedRow == null)
                {
                    _logger.LogDebug("Activity updater for code {0} against object {1}-{2} did not work because no related row for relation {3} was found."
                            .ToFormat(template.Code, dto.Type, dto.Id, template.RelatedGenericRelationName));
                    return false;
                }
            }

            if (relatedRow != null)
            {
                template.ActivityDTOUpdater(relatedRow, dto, template);
                return true;
            }

            return false;
        }
 private static void timeAndExpensesUpdater(ClarifyDataRow record, HistoryItem historyItem)
 {
     var timeDescribed = TimeSpan.FromSeconds(record.AsInt("total_time"));
     var expense = Convert.ToDecimal(record["total_exp"]).ToString("C");
     var notes = record.AsString("notes");
     var detail = HistoryBuilderTokens.LOG_EXPENSES_DETAIL.ToFormat(Environment.NewLine, timeDescribed, expense, notes);
     historyItem.Detail = detail;
 }
        private static void statusChangeUpdater(ClarifyDataRow record, HistoryItem historyItem)
        {
            var notes = record["notes"].ToString();
            var notesHeader = (notes.Length > 0) ? Environment.NewLine + "Notes: " : String.Empty;
            var detail = "{0} {1}{2}{3}".ToFormat(HistoryBuilderTokens.STATUS_CHANGE, historyItem.Detail, notesHeader, notes);

            historyItem.Detail = detail;
        }
        private static void setInternalLog(ClarifyDataRow row, HistoryItem dto, string noteField)
        {
            var isNewInternalNote = row.AsInt("x_is_internal") == 1;
            var notes = row.AsString(noteField);
            var @internal = row.AsString("internal");

            dto.Detail = isNewInternalNote ? "" : notes;
            dto.Internal = isNewInternalNote ? notes : @internal;
        }
 private static void EncodeEmail(IHistoryOutputParser historyOutputParser, HistoryItem item)
 {
     item.Detail = historyOutputParser.EncodeEmailLog(item.Detail);
     item.Internal = historyOutputParser.Encode(item.Internal);
 }
        private static void emailLogUpdater(ClarifyDataRow record, HistoryItem historyItem)
        {
            var detail = "Send to: {1}{0}".ToFormat(Environment.NewLine, record["recipient"]);

            var cclist = record["cc_list"].ToString();
            if (cclist.IsNotEmpty())
            {
                detail += "CC: {1}{0}".ToFormat(Environment.NewLine, cclist);
            }
            detail += record["message"].ToString();

            historyItem.Detail = detail;
        }
        private static void timeAndExpensesUpdater(ClarifyDataRow record, HistoryItem historyItem)
        {
            var timeDescribed = TimeSpan.FromSeconds(Convert.ToInt32(record["total_time"]));
            var expense = Convert.ToDecimal(record["total_exp"]);
            var detail = "Time: {1}{0}Expense: {2}{0}{3}".ToFormat(Environment.NewLine, timeDescribed, expense.ToString("C"), record["notes"]);

            historyItem.Detail = detail;
        }
        private void updateActivityDto(ActEntry actEntry, HistoryItem dto, IDictionary<ActEntryTemplate, ClarifyGeneric> templateRelatedGenerics)
        {
            if (!isActivityDTOUpdaterPresent(actEntry)) return;

            var actEntryTemplate = actEntry.Template;
            var relatedRow = actEntry.ActEntryRecord;

            if (templateRelatedGenerics.ContainsKey(actEntryTemplate))
            {
                var relatedRows = actEntry.ActEntryRecord.RelatedRows(templateRelatedGenerics[actEntryTemplate]);

                relatedRow = relatedRows.Length > 0 ? relatedRows[0] : null;
            }

            if (relatedRow != null)
                actEntryTemplate.ActivityDTOUpdater(relatedRow, dto);
        }