public IList <DesignedReportColumnProxy> GetDesignedReportsColumnsProxyByReportID(decimal reportID)
        {
            try
            {
                IList <DesignedReportColumn> designedReportColumnList = repDesignedReportColumns.Find(d => d.Report.ID == reportID).ToList <DesignedReportColumn>().Distinct(new DesignedReportColumnConceptKeyComparer()).OrderBy(o => o.Order).ToList <DesignedReportColumn>();

                IList <DesignedReportColumnProxy> designedReportColumnProxyList = new List <DesignedReportColumnProxy>();
                foreach (DesignedReportColumn item in designedReportColumnList)
                {
                    DesignedReportColumnProxy designedReportColumnProxy = ConvertDesignedReportColumnToProxy(item);
                    designedReportColumnProxyList.Add(designedReportColumnProxy);
                }
                return(designedReportColumnProxyList);
            }
            catch (Exception ex)
            {
                LogException(ex, "BDesignedReportsColumn", "GetDesignedReportsColumnsByReportID");
                throw ex;
            }
        }
        private DesignedReportColumnProxy ConvertDesignedReportColumnToProxy(DesignedReportColumn designedReportColumn)
        {
            try
            {
                DesignedReportColumnProxy designedReportColumnProxy = new DesignedReportColumnProxy();
                designedReportColumnProxy.Active = designedReportColumn.Active;

                if (designedReportColumn.Concept != null)
                {
                    switch (BLanguage.CurrentLocalLanguage)
                    {
                    case LanguagesName.Parsi:
                        designedReportColumnProxy.Name = designedReportColumn.Concept.FnName;
                        break;

                    case LanguagesName.English:
                        designedReportColumnProxy.Name = designedReportColumn.Concept.EnName;
                        break;

                    default:
                        designedReportColumnProxy.Name = designedReportColumn.Concept.FnName;
                        break;
                    }
                    designedReportColumnProxy.ConceptID  = designedReportColumn.Concept.ID;
                    designedReportColumnProxy.ColumnName = designedReportColumn.Concept.KeyColumnName;
                    designedReportColumnProxy.ColumnType = DesignedReportColumnType.Concept.ToString();
                }
                if (designedReportColumn.PersonInfo != null)
                {
                    IList <PersonReserveField> personReserveFieldList = new List <PersonReserveField>();
                    if (designedReportColumn.PersonInfo.IsReserveField)
                    {
                        personReserveFieldList = new BPersonReservedField().GetAll();
                    }
                    if (designedReportColumn.PersonInfo.IsReserveField)
                    {
                        string             itemKey = designedReportColumn.PersonInfo.Key.ToString().Replace("prsTA_", "");
                        PersonReserveField personReserveFieldObj = personReserveFieldList.FirstOrDefault(r => r.OrginalName.ToLower().Trim() == itemKey.ToLower().Trim());
                        if (personReserveFieldObj != null)
                        {
                            designedReportColumnProxy.Name = personReserveFieldObj.Lable;
                        }
                        else
                        {
                            switch (BLanguage.CurrentLocalLanguage)
                            {
                            case LanguagesName.Parsi:
                                designedReportColumnProxy.Name = designedReportColumn.PersonInfo.FnName;
                                break;

                            case LanguagesName.English:
                                designedReportColumnProxy.Name = designedReportColumn.PersonInfo.EnName;
                                break;

                            default:
                                designedReportColumnProxy.Name = designedReportColumn.PersonInfo.FnName;
                                break;
                            }
                        }
                    }
                    else
                    {
                        switch (BLanguage.CurrentLocalLanguage)
                        {
                        case LanguagesName.Parsi:
                            designedReportColumnProxy.Name = designedReportColumn.PersonInfo.FnName;
                            break;

                        case LanguagesName.English:
                            designedReportColumnProxy.Name = designedReportColumn.PersonInfo.EnName;
                            break;

                        default:
                            designedReportColumnProxy.Name = designedReportColumn.PersonInfo.FnName;
                            break;
                        }
                    }

                    designedReportColumnProxy.PersonInfoID = designedReportColumn.PersonInfo.ID;
                    designedReportColumnProxy.ColumnName   = new BReport().GetDesignedReportColumnFieldNameForDesigned(designedReportColumn);
                    designedReportColumnProxy.ColumnType   = DesignedReportColumnType.PersonInfo.ToString();
                }
                if (designedReportColumn.Traffic != null)
                {
                    switch (BLanguage.CurrentLocalLanguage)
                    {
                    case LanguagesName.Parsi:
                        designedReportColumnProxy.Name = designedReportColumn.Traffic.FnName;
                        break;

                    case LanguagesName.English:
                        designedReportColumnProxy.Name = designedReportColumn.Traffic.EnName;
                        break;

                    default:
                        designedReportColumnProxy.Name = designedReportColumn.Traffic.FnName;
                        break;
                    }

                    designedReportColumnProxy.TrafficID          = designedReportColumn.Traffic.ID;
                    designedReportColumnProxy.ColumnName         = designedReportColumn.Traffic.Key.ToString();
                    designedReportColumnProxy.ColumnType         = DesignedReportColumnType.Traffic.ToString();
                    designedReportColumnProxy.TrafficColumnCount = designedReportColumn.TrafficColumnCount.ToString();
                }
                if (designedReportColumn.PersonParam != null)
                {
                    switch (BLanguage.CurrentLocalLanguage)
                    {
                    case LanguagesName.Parsi:
                        designedReportColumnProxy.Name = designedReportColumn.PersonParam.FnTitle;
                        break;

                    case LanguagesName.English:
                        designedReportColumnProxy.Name = designedReportColumn.PersonParam.EnTitle;
                        break;

                    default:
                        designedReportColumnProxy.Name = designedReportColumn.PersonParam.FnTitle;
                        break;
                    }
                    designedReportColumnProxy.PersonParamID = designedReportColumn.PersonParam.ID;
                    designedReportColumnProxy.ColumnName    = new BReport().GetDesignedReportColumnFieldNameForDesigned(designedReportColumn);
                    designedReportColumnProxy.ColumnType    = DesignedReportColumnType.PersonParam.ToString();
                }
                designedReportColumnProxy.ID            = designedReportColumn.ID;
                designedReportColumnProxy.IsConcept     = designedReportColumn.IsConcept;
                designedReportColumnProxy.Order         = designedReportColumn.Order;
                designedReportColumnProxy.ReportID      = designedReportColumn.Report.ID;
                designedReportColumnProxy.Title         = designedReportColumn.Title;
                designedReportColumnProxy.IsGroupColumn = designedReportColumn.IsGroupColumn;

                return(designedReportColumnProxy);
            }
            catch (Exception ex)
            {
                LogException(ex, "BDesignedReportsColumn", "ConvertDesignedReportColumnToProxy");
                throw ex;
            }
        }