private string ReplacedLine(Context context, SiteSettings ss, DataRow dataRow) { var line = Line; switch (ss.ReferenceType) { case "Issues": var issueModel = new IssueModel( context: context, ss: ss, dataRow: dataRow); ss.IncludedColumns(Line).ForEach(column => { switch (column.ColumnName) { case "Title": line = line.Replace("[Title]", dataRow.String("ItemTitle")); break; case "SiteId": line = line.Replace( "[SiteId]", issueModel.SiteId.ToExport( context: context, column: column)); break; case "UpdatedTime": line = line.Replace( "[UpdatedTime]", issueModel.UpdatedTime.ToExport( context: context, column: column)); break; case "IssueId": line = line.Replace( "[IssueId]", issueModel.IssueId.ToExport( context: context, column: column)); break; case "Ver": line = line.Replace( "[Ver]", issueModel.Ver.ToExport( context: context, column: column)); break; case "Body": line = line.Replace( "[Body]", issueModel.Body.ToExport( context: context, column: column)); break; case "StartTime": line = line.Replace( "[StartTime]", issueModel.StartTime.ToExport( context: context, column: column)); break; case "CompletionTime": line = line.Replace( "[CompletionTime]", issueModel.CompletionTime.ToExport( context: context, column: column)); break; case "WorkValue": line = line.Replace( "[WorkValue]", issueModel.WorkValue.ToExport( context: context, column: column)); break; case "ProgressRate": line = line.Replace( "[ProgressRate]", issueModel.ProgressRate.ToExport( context: context, column: column)); break; case "Status": line = line.Replace( "[Status]", issueModel.Status.ToExport( context: context, column: column)); break; case "Manager": line = line.Replace( "[Manager]", issueModel.Manager.ToExport( context: context, column: column)); break; case "Owner": line = line.Replace( "[Owner]", issueModel.Owner.ToExport( context: context, column: column)); break; case "Locked": line = line.Replace( "[Locked]", issueModel.Locked.ToExport( context: context, column: column)); break; case "Comments": line = line.Replace( "[Comments]", issueModel.Comments.ToExport( context: context, column: column)); break; case "Creator": line = line.Replace( "[Creator]", issueModel.Creator.ToExport( context: context, column: column)); break; case "Updator": line = line.Replace( "[Updator]", issueModel.Updator.ToExport( context: context, column: column)); break; case "CreatedTime": line = line.Replace( "[CreatedTime]", issueModel.CreatedTime.ToExport( context: context, column: column)); break; default: switch (Def.ExtendedColumnTypes.Get(column.Name)) { case "Class": line = line.Replace( $"[{column.Name}]", issueModel.Class(column: column).ToExport( context: context, column: column)); break; case "Num": line = line.Replace( $"[{column.Name}]", issueModel.Num(column: column).ToExport( context: context, column: column)); break; case "Date": line = line.Replace( $"[{column.Name}]", issueModel.Date(column: column).ToExport( context: context, column: column)); break; case "Description": line = line.Replace( $"[{column.Name}]", issueModel.Description(column: column).ToExport( context: context, column: column)); break; case "Check": line = line.Replace( $"[{column.Name}]", issueModel.Check(column: column).ToExport( context: context, column: column)); break; } break; } }); break; case "Results": var resultModel = new ResultModel( context: context, ss: ss, dataRow: dataRow); ss.IncludedColumns(Line).ForEach(column => { switch (column.ColumnName) { case "Title": line = line.Replace("[Title]", dataRow.String("ItemTitle")); break; case "SiteId": line = line.Replace( "[SiteId]", resultModel.SiteId.ToExport( context: context, column: column)); break; case "UpdatedTime": line = line.Replace( "[UpdatedTime]", resultModel.UpdatedTime.ToExport( context: context, column: column)); break; case "ResultId": line = line.Replace( "[ResultId]", resultModel.ResultId.ToExport( context: context, column: column)); break; case "Ver": line = line.Replace( "[Ver]", resultModel.Ver.ToExport( context: context, column: column)); break; case "Body": line = line.Replace( "[Body]", resultModel.Body.ToExport( context: context, column: column)); break; case "Status": line = line.Replace( "[Status]", resultModel.Status.ToExport( context: context, column: column)); break; case "Manager": line = line.Replace( "[Manager]", resultModel.Manager.ToExport( context: context, column: column)); break; case "Owner": line = line.Replace( "[Owner]", resultModel.Owner.ToExport( context: context, column: column)); break; case "Locked": line = line.Replace( "[Locked]", resultModel.Locked.ToExport( context: context, column: column)); break; case "Comments": line = line.Replace( "[Comments]", resultModel.Comments.ToExport( context: context, column: column)); break; case "Creator": line = line.Replace( "[Creator]", resultModel.Creator.ToExport( context: context, column: column)); break; case "Updator": line = line.Replace( "[Updator]", resultModel.Updator.ToExport( context: context, column: column)); break; case "CreatedTime": line = line.Replace( "[CreatedTime]", resultModel.CreatedTime.ToExport( context: context, column: column)); break; default: switch (Def.ExtendedColumnTypes.Get(column.Name)) { case "Class": line = line.Replace( $"[{column.Name}]", resultModel.Class(column: column).ToExport( context: context, column: column)); break; case "Num": line = line.Replace( $"[{column.Name}]", resultModel.Num(column: column).ToExport( context: context, column: column)); break; case "Date": line = line.Replace( $"[{column.Name}]", resultModel.Date(column: column).ToExport( context: context, column: column)); break; case "Description": line = line.Replace( $"[{column.Name}]", resultModel.Description(column: column).ToExport( context: context, column: column)); break; case "Check": line = line.Replace( $"[{column.Name}]", resultModel.Check(column: column).ToExport( context: context, column: column)); break; } break; } }); break; } return(line); }