/// <summary>
        /// Обработчик события нажатия клавиши мыши на кнопку,
        /// который открывает диалоговое окно предварительного просмотра отчета по текущему простою
        /// </summary>
        private void btn_PrintReport_Click(object sender, EventArgs e)
        {
            var costIdleParams = costIdleParamsBindingSource.DataSource as CostIdleParams;

            if (costIdleParams == null)
            {
                MessageBox.Show("Не удалось получить параметры для расчета простоя!", "Ошибка", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                return;
            }

            if (costIdleParams.YearIncome <= 0)
            {
                MessageBox.Show("Введите годовой валовой доход компании для расчета стоимости простоя!", "Предупреждение", MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);
                return;
            }

            if (costIdleParams.TotalEmployeeCount <= 0)
            {
                MessageBox.Show("Введите общее число сотрудников для расчета стоимости простоя!", "Предупреждение", MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);
                return;
            }

            if (costIdleParams.TotalEmployeeCount < (_disabledUsersCount + _usedAdminsCount))
            {
                MessageBox.Show("Общее число сотрудников должно быть больше количества отключенных и задействованных!", "Предупреждение", MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);
                return;
            }

            if (costIdleParams.AvgAdminSalary <= 0)
            {
                MessageBox.Show("Введите размер средней часовой оплаты труда администратора для расчета стоимости простоя!", "Предупреждение", MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);
                return;
            }

            if (costIdleParams.AvgEmployeeSalary <= 0)
            {
                MessageBox.Show("Введите размер средней часовой оплаты труда работника для расчета стоимости простоя!", "Предупреждение", MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);
                return;
            }

            if (_total <= 0)
            {
                MessageBox.Show("Не расчитана итоговая стоимость простоя!", "Предупреждение", MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);
                return;
            }

            var sip = new ServiceIdleParams();

            sip.Id                = _serviceIdle.Id;
            sip.Service           = _serviceIdle.Service.ServiceType.Name;
            sip.Platform          = _serviceIdle.Service.PaasType.Name;
            sip.Begin             = _serviceIdle.BeginPeriod;
            sip.End               = _serviceIdle.EndPeriod;
            sip.DurationType      = comboBox_DurationType.Text;
            sip.DurationValue     = txt_Duration.Text;
            sip.IdleType          = _serviceIdle.IdleType.Name;
            sip.IdleReason        = _serviceIdle.IdleReason.Name;
            sip.DisabledEmployees = _disabledUsersCount;
            sip.UsedEmployees     = _disabledUsersCount;
            sip.ServerCost        = _servicePlannedCost;
            sip.LostCost          = _brokenIncome;
            sip.TotalCost         = _total;

            var reportingForm = new ReportingForm(sip);

            reportingForm.ShowDialog();
        }
示例#2
0
 /// <summary>
 /// Конструктор формы для предварительного просмотра информации о простое сервиса
 /// </summary>
 /// <param name="serviceIdleParams"></param>
 public ReportingForm(ServiceIdleParams serviceIdleParams) : this(ReportType.ServiceIdle)
 {
     _serviceIdleParams = serviceIdleParams;
 }