private static void CalcDataModelsUpdate(string table)
        {
            switch (table)
            {
            case "Software":
                if (CalcDataModelSoftwareConcat.HasInstance())
                {
                    CalcDataModelSoftwareConcat.GetInstance().DefferedUpdate = true;
                }
                break;

            case "SoftVersions":
                if (CalcDataModelSoftwareConcat.HasInstance())
                {
                    CalcDataModelSoftwareConcat.GetInstance().DefferedUpdate = true;
                }
                break;

            case "SoftLicenses":
                if (CalcDataModelLicensesConcat.HasInstance())
                {
                    CalcDataModelLicensesConcat.GetInstance().DefferedUpdate = true;
                }
                break;
            }
        }
        public void Run()
        {
            var context = SynchronizationContext.Current;

            ThreadPool.QueueUserWorkItem(_ =>
            {
                while (true)
                {
                    context.Send(__ =>
                    {
                        if (CalcDataModelLicensesConcat.HasInstance() && CalcDataModelLicensesConcat.GetInstance().DefferedUpdate)
                        {
                            CalcDataModelLicensesConcat.GetInstance().Refresh(EntityType.Unknown, null, true);
                            CalcDataModelLicensesConcat.GetInstance().DefferedUpdate = false;
                        }
                        if (CalcDataModelSoftwareConcat.HasInstance() && CalcDataModelSoftwareConcat.GetInstance().DefferedUpdate)
                        {
                            CalcDataModelSoftwareConcat.GetInstance().Refresh(EntityType.Unknown, null, true);
                            CalcDataModelSoftwareConcat.GetInstance().DefferedUpdate = false;
                        }
                    }, null);
                    //Обновление делаем примерно каждые CalcDataModelsUpdateTimeout милисекунд
                    Thread.Sleep(LicenseSoftwareSettings.CalcDataModelsUpdateTimeout);
                }
            }, null);
        }
Beispiel #3
0
 private void checkBoxSoftwareNameEnable_CheckedChanged(object sender, EventArgs e)
 {
     if (comboBoxSoftwareName.DataSource == null)
     {
         _software = CalcDataModelSoftwareConcat.GetInstance();
         _software.Select();
         _vSoftware = new BindingSource
         {
             DataMember = "SoftwareConcat",
             DataSource = DataSetManager.DataSet
         };
     }
     comboBoxSoftwareName.DataSource    = _vSoftware;
     comboBoxSoftwareName.ValueMember   = "ID Version";
     comboBoxSoftwareName.DisplayMember = "Software";
     comboBoxSoftwareName.Enabled       = checkBoxSoftwareNameEnable.Checked;
 }
 public override void DeleteRecord()
 {
     if (MessageBox.Show(@"Вы действительно хотите удалить эту запись?", @"Внимание",
                         MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
     {
         if (SoftwareDataModel.Delete((int)((DataRowView)_vSoftware.Current)["ID Software"]) == -1)
         {
             return;
         }
         _isEditable = false;
         ((DataRowView)_vSoftware[_vSoftware.Position]).Delete();
         _isEditable    = true;
         _viewportState = ViewportState.ReadState;
         MenuCallback.EditingStateUpdate();
         MenuCallback.ForceCloseDetachedViewports();
         if (CalcDataModelSoftwareConcat.HasInstance())
         {
             CalcDataModelSoftwareConcat.GetInstance().Refresh(EntityType.Software, (int)((DataRowView)_vSoftware.Current)["ID Software"], true);
         }
     }
 }
        public override void SaveRecord()
        {
            var software = SoftwareFromViewport();

            if (!ValidateSoftware(software))
            {
                return;
            }
            switch (_viewportState)
            {
            case ViewportState.ReadState:
                MessageBox.Show(@"Нельзя сохранить неизмененные данные. Если вы видите это сообщение, обратитесь к системному администратору", @"Ошибка",
                                MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                break;

            case ViewportState.NewRowState:
                var idSoftware = SoftwareDataModel.Insert(software);
                if (idSoftware == -1)
                {
                    return;
                }
                DataRowView newRow;
                software.IdSoftware = idSoftware;
                _isEditable         = false;
                if (_vSoftware.Position == -1)
                {
                    newRow = (DataRowView)_vSoftware.AddNew();
                }
                else
                {
                    newRow = (DataRowView)_vSoftware[_vSoftware.Position];
                }
                FillRowFromSoftware(software, newRow);
                _softwareDm.EditingNewRecord = false;
                _isEditable = true;
                break;

            case ViewportState.ModifyRowState:
                if (software.IdSoftware == null)
                {
                    MessageBox.Show(@"Вы пытаетесь изменить запись о программном обеспечении без внутренного номера. " +
                                    @"Если вы видите это сообщение, обратитесь к системному администратору", "Ошибка",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                    return;
                }
                if (SoftwareDataModel.Update(software) == -1)
                {
                    return;
                }
                var row = (DataRowView)_vSoftware[_vSoftware.Position];
                _isEditable = false;
                FillRowFromSoftware(software, row);
                break;
            }
            dataGridView.Enabled  = true;
            _isEditable           = true;
            dataGridView.RowCount = _vSoftware.Count;
            _viewportState        = ViewportState.ReadState;
            MenuCallback.EditingStateUpdate();
            SetViewportCaption();
            if (CalcDataModelSoftwareConcat.HasInstance())
            {
                CalcDataModelSoftwareConcat.GetInstance().Refresh(EntityType.Software, software.IdSoftware.Value, true);
            }
        }
        public override void SaveRecord()
        {
            dataGridView.EndEdit();
            _syncViews = false;
            var list = SoftVersionsFromViewport();

            if (!ValidateSoftVersions(list))
            {
                _syncViews = true;
                return;
            }
            for (var i = 0; i < list.Count; i++)
            {
                var row = _softVersions.Select().Rows.Find(list[i].IdVersion);
                if (row == null)
                {
                    var idLicKey = SoftVersionsDataModel.Insert(list[i]);
                    if (idLicKey == -1)
                    {
                        _syncViews = true;
                        return;
                    }
                    ((DataRowView)_vSnapshotSoftVersions[i])["ID Version"] = idLicKey;
                    _softVersions.Select().Rows.Add(DataRowViewToArray((DataRowView)_vSnapshotSoftVersions[i]));
                }
                else
                {
                    var softLicKeyFromView = RowToSoftVersion(row);
                    if (softLicKeyFromView == list[i])
                    {
                        continue;
                    }
                    if (SoftVersionsDataModel.Update(list[i]) == -1)
                    {
                        _syncViews = true;
                        return;
                    }
                    row["ID Software"] = list[i].IdSoftware == null ? DBNull.Value : (object)list[i].IdSoftware;
                    row["Version"]     = list[i].Version == null ? DBNull.Value : (object)list[i].Version;
                }
            }
            list = SoftVersionsFromView();
            for (var i = 0; i < list.Count; i++)
            {
                var rowIndex = -1;
                for (var j = 0; j < dataGridView.Rows.Count; j++)
                {
                    if ((dataGridView.Rows[j].Cells["idVersion"].Value != null) &&
                        !string.IsNullOrEmpty(dataGridView.Rows[j].Cells["idVersion"].Value.ToString()) &&
                        ((int)dataGridView.Rows[j].Cells["idVersion"].Value == list[i].IdVersion))
                    {
                        rowIndex = j;
                    }
                }
                if (rowIndex != -1)
                {
                    continue;
                }
                if (SoftVersionsDataModel.Delete(list[i].IdVersion.Value) == -1)
                {
                    _syncViews = true;
                    return;
                }
                _softVersions.Select().Rows.Find(list[i].IdVersion).Delete();
            }
            _syncViews = true;
            MenuCallback.EditingStateUpdate();
            if (CalcDataModelSoftwareConcat.HasInstance())
            {
                CalcDataModelSoftwareConcat.GetInstance().Refresh(EntityType.Unknown, null, true);
            }
        }