Beispiel #1
0
            public ThisReportParams(ReportParams ps)
            {
                PeriodType = (PeriodType)((int)ps["PeriodType"]);
                if (!ps.GetParam("IntervalBegin").IsNull)
                {
                    IntervalBegin = (DateTime)ps["IntervalBegin"];
                }
                if (!ps.GetParam("IntervalEnd").IsNull)
                {
                    IntervalEnd = (DateTime)ps["IntervalEnd"];
                }
                if (!ps.GetParam("Quarter").IsNull)
                {
                    Quarter = (Quarter)((int)ps["Quarter"]);
                }
                Folder           = (Guid)ps["Folder"];
                ShowDetalization = (bool)((int)ps["ShowDetalization"] != 0);
                TimeMeasureUnits = (TimeMeasureUnits)((int)ps["TimeMeasureUnits"]);
                SortBy           = (ReportDepartmentCostSort)((int)ps["SortBy"]);
                ShowRestrictions = (bool)((int)ps["ShowRestrictions"] != 0);

                //if (PeriodType != PeriodType.DateInterval && (IntervalBegin.HasValue || IntervalEnd.HasValue))
                //	throw new ApplicationException("Заданы даты интервала при типе периода отличном от Интервал дат");

                //if (PeriodType != PeriodType.SelectedQuarter && Quarter.HasValue)
                //	throw new ApplicationException("Задан квартал при типе периода отличном от Квартал");
            }
            /// <summary>
            /// Параметризированный конструктор. Инициализирует свойства класса на
            /// основании данных параметров, представленных в коллекции ReportParams.
            /// </summary>
            /// <param name="Params">Данные параметов, передаваемые в отчет</param>
            /// <param name="cn">Соединение с БД (для подгрузки данных)</param>
            /// <remarks>
            /// При необходимости выполняет коррекцию значений параметров
            /// </remarks>
            public ThisReportParams(ReportParams Params, IReportDataProvider provider)
            {
                // #1: ЗАЧИТЫВАЕМ ПАРАМЕТРЫ, ЗАДАННЫЕ ЯВНО
                // Идентификатор сотрудника
                EmployeeID = (Guid)Params.GetParam("Employee").Value;

                // Задание дат начала и конца отчетного периода
                IsSpecifiedIntervalBegin = !Params.GetParam("IntervalBegin").IsNull;
                IntervalBegin            = (IsSpecifiedIntervalBegin? Params.GetParam("IntervalBegin").Value : DBNull.Value);
                IsSpecifiedIntervalEnd   = !Params.GetParam("IntervalEnd").IsNull;
                IntervalEnd = (IsSpecifiedIntervalEnd? Params.GetParam("IntervalEnd").Value : DBNull.Value);

                // Признак "Показывть выходные дни без списаний"
                ShowFreeWeekends = (0 != (int)Params.GetParam("ShowFreeWeekends").Value);
                // Представление времени
                TimeMeasure = (TimeMeasureUnits)((int)Params.GetParam("TimeMeasureUnits").Value);
                // Признак отображения параметров отчета в заголовке
                ShowRestrictions = (0 != (int)Params.GetParam("ShowRestrictions").Value);

                // #2: ДОГРУЖАЕМ ВСЕ ДАННЫЕ ПО СОТРУДНИКУ
                using (IDataReader reader = provider.GetDataReader("dsAdditionaly", null))
                {
                    if (reader.Read())
                    {
                        int nOrdinal = reader.GetOrdinal("FullName");
                        FullName = reader.IsDBNull(nOrdinal)? null : reader.GetString(nOrdinal);

                        nOrdinal      = reader.GetOrdinal("WorkBeginDate");
                        WorkBeginDate = reader.IsDBNull(nOrdinal) ? DateTime.MinValue : reader.GetDateTime(nOrdinal);

                        nOrdinal    = reader.GetOrdinal("WorkEndDate");
                        WorkEndDate = reader.IsDBNull(nOrdinal) ? DateTime.MaxValue : reader.GetDateTime(nOrdinal);

                        nOrdinal        = reader.GetOrdinal("WorkdayDuration");
                        WorkdayDuration = reader.IsDBNull(nOrdinal) ? 0 : reader.GetInt32(nOrdinal);
                    }
                }
            }
Beispiel #3
0
            /// <summary>
            /// Параметризированный конструктор. Инициализирует свойства класса на
            /// основании данных параметров, представленных в коллекции ReportParams.
            /// </summary>
            /// <param name="Params">Данные параметов, передаваемые в отчет</param>
            /// <remarks>
            /// При необходимости выполняет коррекцию значений параметров, полгаемых
            /// по умолчанию, а так же расчет синтетических параметров (таких как
            /// "Направление активности")
            /// </remarks>
            public ThisReportParams(ReportParams Params)
            {
                // Задание дат начала и конца отчетного периода
                IsSpecifiedIntervalBegin = !Params.GetParam("IntervalBegin").IsNull;
                IntervalBegin            = (IsSpecifiedIntervalBegin? Params.GetParam("IntervalBegin").Value : DBNull.Value);
                IsSpecifiedIntervalEnd   = !Params.GetParam("IntervalEnd").IsNull;
                IntervalEnd = (IsSpecifiedIntervalEnd? Params.GetParam("IntervalEnd").Value : DBNull.Value);

                // Вид направления анализа определяется на основании задания идентификаторов
                // организации или активности; сразу корректируем значения параметров: если
                // они не заданы, то используем в качестве значения DBNull:
                Organization = Guid.Empty;
                Folder       = Guid.Empty;
                if (!Params.GetParam("Folder").IsNull)
                {
                    AnalysisDirection = AnalysisDirectionEnum.ByActivity;
                    Folder            = Params.GetParam("Folder").Value;
                    Organization      = DBNull.Value;
                }
                else if (!Params.GetParam("Organization").IsNull)
                {
                    AnalysisDirection = AnalysisDirectionEnum.ByCustomer_TargetCustomer;
                    Organization      = Params.GetParam("Organization").Value;
                    Folder            = DBNull.Value;
                }
                else
                {
                    AnalysisDirection = AnalysisDirectionEnum.ByCustomer_AllCustomners;
                    Organization      = DBNull.Value;
                    Folder            = DBNull.Value;
                }

                // Типы активностей:
                FolderType = (int)Params.GetParam("FolderType").Value;
                if (AnalysisDirectionEnum.ByActivity == AnalysisDirection)
                {
                    FolderType = 0;
                }

                // Учет данных только открытых активностей
                OnlyActiveFolders = (0 != (int)Params.GetParam("OnlyActiveFolders").Value);
                if (AnalysisDirectionEnum.ByActivity == AnalysisDirection)
                {
                    OnlyActiveFolders = false;
                }

                // Отображение данных об истории изменения данных по направлениям для активности
                ShowHistoryInfo = (0 != (int)Params.GetParam("ShowHistoryInfo").Value);
                if (AnalysisDirectionEnum.ByActivity != AnalysisDirection)
                {
                    ShowHistoryInfo = false;
                }

                // Детализация данных в отчете
                ShowDetails = (0 != (int)Params.GetParam("ShowDetails").Value);
                // Форма представления времени;
                TimeMeasure = (TimeMeasureUnits)((int)Params.GetParam("TimeMeasureUnits").Value);
                // Тип сортировки (0 - по наименованию направления, 1 - по сумме)
                SortBy = (int)Params.GetParam("SortBy").Value;
                // Признак отображения параметров отчета в заголовке
                ShowRestrictions = (0 != (int)Params.GetParam("ShowRestrictions").Value);
            }