Esempio n. 1
0
        private async void EditButton_Click(object sender, EventArgs e)
        {
            if (!_recipesDataGridViewService.TryGetSelectedCellIndices(out var columnIndex, out var rowIndex, true))
            {
                return;
            }

            if (columnIndex == -1)
            {
                MessageBoxService.ShowIncorrectSelectionWarning("Select cell you want to edit.");
                return;
            }

            var columnName = _recipesDataGridViewService.GetColumnName(columnIndex);

            if (columnName == ColumnName.Id ||
                columnName == ColumnName.ClientId ||
                columnName == ColumnName.ClientName ||
                columnName == ColumnName.DiseaseId ||
                columnName == ColumnName.DiseaseName)
            {
                MessageBoxService.ShowIncorrectSelectionWarning("You can't edit id.");
                return;
            }

            if (!_recipesDataGridViewService.TryParseIntCell(ColumnName.Id, rowIndex, out var recipeId))
            {
                return;
            }
            var recipe = await _recipesService.ReadByIdAsync(recipeId);

            switch (columnName)
            {
            case ColumnName.Date:
            {
                var oldValue = recipe.Date;
                var editForm = new EditDateDialogForm(oldValue);
                editForm.ShowDialog(this);

                var editResult = editForm.DialogResult;
                var newValue   = editForm.NewValue;
                editForm.Close();

                if (editResult == DialogResult.Cancel)
                {
                    return;
                }

                recipe.Date = newValue;
                break;
            }

            default:
                MessageBox.Show(@"Check database and debug code.",
                                @"Unknown field.",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                return;
            }

            await _recipesService.UpdateAsync(recipe);

            await RefreshRecipesDataGridViewAsync();
        }