示例#1
0
        private async void dgvMovies_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                var      movieId  = dgvMovies.Rows[e.RowIndex].Cells["MovieId"].Value;
                var      action   = dgvMovies.Columns[e.ColumnIndex].Name;
                MenuForm menuForm = (MenuForm)this.MdiParent;
                var      movie    = await _apiService.GetById <Model.Movie>(movieId);

                CustomMessageBox messageBox = new CustomMessageBox();

                if (action == "Edit" || action == "Title")
                {
                    AddEditMovieForm form = new AddEditMovieForm(menuForm, int.Parse(movieId.ToString()))
                    {
                        MdiParent = menuForm,
                        Dock      = DockStyle.Fill
                    };
                    form.Show();
                }
                else if (action == "Delete")
                {
                    DialogResult dialogResult = MessageBox.Show($"Are you sure you want to permanently delete '{movie.Title}'?", "Delete movie?", MessageBoxButtons.YesNo);
                    if (dialogResult == DialogResult.Yes)
                    {
                        await _apiService.Delete <Model.Movie>(movieId);

                        foreach (Form frm in menuForm.MdiChildren)
                        {
                            frm.Close();
                        }
                        MoviesForm form = new MoviesForm {
                            MdiParent = menuForm,
                            Dock      = DockStyle.Fill
                        };
                        form.Show();
                        messageBox.Show("Movie deleted successfully", "success");
                    }
                }
                else
                {
                    return;
                }
            }
        }
        private async void SaveBtn_Click(object sender, EventArgs e)
        {
            var messageBox = new CustomMessageBox();

            if (string.IsNullOrWhiteSpace(MovieTitle.Text) || MovieTitle.Text.Length < 4)
            {
                messageBox.Show("The title field requires 4 letters!", "error");
                return;
            }

            if (string.IsNullOrWhiteSpace(Description.Text) || Description.Text.Length < 5)
            {
                messageBox.Show("The description field requires 5 letters!", "error");
                return;
            }

            if (string.IsNullOrWhiteSpace(Cast.Text) || Cast.Text.Length < 15)
            {
                messageBox.Show("The cast field requires 15 letters!", "error");
                return;
            }
            if (string.IsNullOrWhiteSpace(ImageLink.Text) || !ImageLink.Text.Contains(".jpg"))
            {
                messageBox.Show("Enter a valid '.jpg' image link!", "error");
                return;
            }
            if (string.IsNullOrWhiteSpace(TrailerLink.Text))
            {
                messageBox.Show("Enter a trailer id", "error");
                return;
            }

            if (string.IsNullOrWhiteSpace(Rating.Text) || !decimal.TryParse(Rating.Text, out decimal n))
            {
                messageBox.Show("Enter a valid rating (0-10)!", "error");
                return;
            }
            decimal rating = decimal.Parse(Rating.Text);

            if (rating < 0 || rating > 10)
            {
                messageBox.Show("Enter a valid rating (0-10)!", "error");
                return;
            }

            if (string.IsNullOrWhiteSpace(Price.Text) || !decimal.TryParse(Price.Text, out decimal m))
            {
                messageBox.Show("Enter a valid price (1-200)!", "error");
                return;
            }
            decimal price = decimal.Parse(Price.Text);

            if (price < 1 || price > 200)
            {
                messageBox.Show("Enter a valid price (1-200)!", "error");
                return;
            }
            if (Year.Value < Year.Minimum || Year.Value > Year.Maximum)
            {
                messageBox.Show("Enter a valid year (1800-2025)!", "error");
                return;
            }
            var hours = Duration.Value.Hour;

            if (hours < 0 || hours > 4)
            {
                messageBox.Show("Enter a valid duration (up to 5 hours)!", "error");
                return;
            }

            if (string.IsNullOrWhiteSpace(Genre.Text) || Genre.Text.Length < 4)
            {
                messageBox.Show("The genre field requires 4 letters!", "error");
                return;
            }

            Model.Requests.InsertMovieRequest request = new Model.Requests.InsertMovieRequest()
            {
                Title       = MovieTitle.Text,
                Year        = (int)Year.Value,
                Duration    = Duration.Value.ToString("HH:mm"),
                Rating      = decimal.Parse(Rating.Text),
                Description = Description.Text,
                Cast        = Cast.Text,
                ImageLink   = ImageLink.Text,
                Standalone  = Standalone.Checked,
                Price       = decimal.Parse(Price.Text),
                TrailerLink = $"https://www.youtube.com/embed/{TrailerLink.Text}",
                Genre       = Genre.Text
            };

            if (_movieId.HasValue)
            {
                await _apiService.Update <Model.Movie>(_movieId, request);
            }
            else
            {
                await _apiService.Insert <Model.Movie>(request);
            }

            this.Close();
            foreach (Form frm in _menuForm.MdiChildren)
            {
                frm.Close();
            }
            MoviesForm form = new MoviesForm {
                MdiParent = _menuForm,
                Dock      = DockStyle.Fill
            };

            form.Show();
            if (_movieId.HasValue)
            {
                messageBox.Show("Movie updated successfully!", "success");
            }
            else
            {
                messageBox.Show("Movie added successfully!", "success");
            }
        }