Gramps.Controllers.ViewModels.ReportLaunchViewModel.ExtractValue C# (CSharp) Method

ExtractValue() private static method

private static ExtractValue ( ReportColumn reportColumn, Proposal proposal, bool forExport ) : string
reportColumn ReportColumn
proposal Proposal
forExport bool
return string
        private static string ExtractValue(ReportColumn reportColumn, Proposal proposal, bool forExport)
        {
            var result = string.Empty;

            if (!reportColumn.IsProperty)
            {
                var answer = proposal.Answers.Where(a => a.Question.Name == reportColumn.Name).FirstOrDefault();

                if (answer != null)
                {
                    result = answer.Answer;
                }
            }
            else
            {
                if (reportColumn.Name == StaticValues.Report_Submitted)
                {
                    result = proposal.IsSubmitted.ToString();
                }
                else if (reportColumn.Name == StaticValues.Report_Approved)
                {
                    result = proposal.IsApproved.ToString();
                }
                else if(reportColumn.Name == StaticValues.Report_Sequence)
                {
                    result = proposal.Sequence.ToString();
                }

                else if (reportColumn.Name == StaticValues.Report_Investigators)
                {
                    var sb = new StringBuilder();
                    foreach (var investigator in proposal.Investigators.OrderByDescending(a => a.IsPrimary))
                    {
                        var temp = new List<string>();
                        if(!forExport)
                        {
                            temp.Add(investigator.Name.Replace(" ", "&nbsp;"));
                        }
                        else
                        {
                            temp.Add(investigator.Name);
                        }
                        if(!string.IsNullOrEmpty(investigator.Position))
                        {
                            if (!forExport)
                            {
                                temp.Add(investigator.Position.Replace(" ", "&nbsp;"));
                            }
                            else
                            {
                                temp.Add(investigator.Position);
                            }
                        }
                        if(!string.IsNullOrEmpty(investigator.Institution))
                        {
                            if (!forExport)
                            {
                                temp.Add(investigator.Institution.Replace(" ", "&nbsp;"));
                            }
                            else
                            {
                                temp.Add(investigator.Institution);
                            }
                        }
                        if(investigator.IsPrimary)
                        {
                            temp.Add("Primary");
                        }

                        if (forExport)
                        {
                            sb.AppendLine(string.Join("/", temp));
                        }
                        else
                        {
                            sb.AppendLine(string.Join("/", temp));
                        }

                    }
                    result = sb.ToString();
                }
                else if (reportColumn.Name == StaticValues.Report_Denied)
                {
                    result = proposal.IsDenied.ToString();
                }
                else if (reportColumn.Name == StaticValues.Report_RequestedAmount)
                {
                    result = proposal.RequestedAmount.ToString();
                }
                else if (reportColumn.Name == StaticValues.Report_AwardedAmount)
                {
                    result = proposal.ApprovedAmount.ToString();
                }
                else if(reportColumn.Name == StaticValues.Report_Comments)
                {
                    var comments = proposal.Comments.FirstOrDefault();
                    if (comments != null)
                    {
                        result = comments.Text;
                    }
                }
            }

            return result;
        }