コード例 #1
0
        private async void dgvAppointments_CellContentClick_1(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                var appointmentId           = dgvAppointments.Rows[e.RowIndex].Cells["AppointmentId"].Value;
                var action                  = dgvAppointments.Columns[e.ColumnIndex].Name;
                CustomMessageBox messageBox = new CustomMessageBox();
                var appApi                  = new APIService("appointments");
                var movieApi                = new APIService("movies");
                var movie = await movieApi.GetById <Model.Movie>(_movieId);

                if (action == "Edit")
                {
                    var form = new AddEditAppointmentForm(this, _scheduleForm, _schedule, _menuForm, _airingDayId, _date, _day, _cinemaDayMovieId, _movieId, _cinemaDayMovieForm, int.Parse(appointmentId.ToString()));
                    _helper.CloseForm(this, 15);
                    _helper.ShowForm(form, 15);
                }
                else if (action == "Delete")
                {
                    DialogResult dialogResult = MessageBox.Show($"Are you sure you want to permanently delete the appointment for '{movie.Title}' on the {DateTime.Parse(_date.ToString()).ToShortDateString()}, {_day}?", "Delete appointment?", MessageBoxButtons.YesNo);
                    if (dialogResult == DialogResult.Yes)
                    {
                        await appApi.Delete <Model.Appointments>(appointmentId);

                        this.Close();
                        _cinemaDayMovieForm.Close();
                        _scheduleForm.Close();
                        ScheduleForm sch = new ScheduleForm(_schedule.Cinema.CinemaId, _menuForm)
                        {
                            MdiParent = _menuForm,
                            Dock      = DockStyle.Fill
                        };
                        var schedule = await _apiService.CustomGet <Model.Requests.CinemasScheduleRequest>("GetCinemasSchedule", _schedule.Cinema.CinemaId);

                        AppointmentsForm form = new AppointmentsForm(sch, schedule, _menuForm, _airingDayId, _date, _day, _cinemaDayMovieId, _movieId, _cinemaDayMovieForm);

                        sch.Show();
                        _helper.ShowForm(form, 15);
                        messageBox.Show("Appointment deleted successfully", "success");
                    }
                }
            }
        }
コード例 #2
0
        private async void saveBtn_Click(object sender, EventArgs e)
        {
            var messageBox = new CustomMessageBox();

            if (!_helper.ValidateDecimalString(Price.Text, 1, 100))
            {
                messageBox.Show("Enter a valid price (1-100)!", "error");
                return;
            }
            if (HallsBox.SelectedIndex == -1)
            {
                messageBox.Show("Select a hall!", "error");
                return;
            }

            var appApi  = new APIService("Appointments");
            var allApps = await appApi.Get <List <Model.Appointments> >(null);

            allApps.RemoveAll(a => a.HallId != (HallsBox.SelectedItem as dynamic).Value);

            var cdmApi  = new APIService("CinemaDayMovie");
            var allCdms = await cdmApi.Get <List <Model.CinemaDayMovie> >(null);

            var finalApps = new List <Model.Appointments>();

            foreach (var app in allApps)
            {
                foreach (var cdm in allCdms)
                {
                    if (app.CinemaDayMovieId == cdm.CinemaDayMovieId && cdm.AiringDaysOfCinemaId == _airingDayId)
                    {
                        finalApps.Add(app);
                        break;
                    }
                }
            }

            var moviesApi = new APIService("movies");
            var movie     = await moviesApi.GetById <Model.Movie>(_movieId);



            if (_appointmentId.HasValue)
            {
                var app = await appApi.GetById <Model.Appointments>(_appointmentId);

                finalApps.RemoveAll(a => a.AppointmentId == app.AppointmentId);
            }

            bool valid = true;

            foreach (var app in finalApps)
            {
                DateTime newBegins = new DateTime();
                DateTime newEnds   = new DateTime();
                newBegins = DateTime.Parse(StartsAt.Text);
                newEnds   = DateTime.Parse(StartsAt.Text).AddMinutes(TimeSpan.Parse(movie.Duration).TotalMinutes);


                var cdm = await cdmApi.GetById <Model.CinemaDayMovie>(app.CinemaDayMovieId);

                var thisMovie = await moviesApi.GetById <Model.Movie>(cdm.MovieId);

                DateTime begins = new DateTime();
                DateTime ends   = new DateTime();
                begins = DateTime.Parse(app.StartsAt);
                ends   = DateTime.Parse(app.StartsAt).AddMinutes(TimeSpan.Parse(thisMovie.Duration).TotalMinutes);

                bool overlap = begins < newEnds && newBegins < ends;
                if (overlap)
                {
                    valid = false;
                    break;
                }
            }
            if (!valid)
            {
                messageBox.Show("The appointment is overlaping!", "error");
                return;
            }

            Model.Requests.InsertAppointmentRequest Object = new Model.Requests.InsertAppointmentRequest()
            {
                Price            = decimal.Parse(Price.Text),
                CinemaDayMovieId = _cinemaDayMovieId,
                HallId           = (HallsBox.SelectedItem as dynamic).Value,
                SoldSeats        = 0,
                StartsAt         = StartsAt.Value.ToString("HH:mm")
            };

            if (_appointmentId.HasValue)
            {
                await appApi.Update <Model.Appointments>(_appointmentId, Object);

                messageBox.Show("Appointment updated succesfully", "Success");
            }
            else
            {
                await appApi.Insert <Model.Appointments>(Object);

                messageBox.Show("Appointment added succesfully", "Success");
            }

            this.Close();
            _appointmentsForm.Close();
            _cinemaDayMovieForm.Close();
            _scheduleForm.Close();
            ScheduleForm sch = new ScheduleForm(_schedule.Cinema.CinemaId, _menuForm)
            {
                MdiParent = _menuForm,
                Dock      = DockStyle.Fill
            };
            var schedule = await _apiService.CustomGet <Model.Requests.CinemasScheduleRequest>("GetCinemasSchedule", _schedule.Cinema.CinemaId);

            AppointmentsForm form = new AppointmentsForm(sch, schedule, _menuForm, _airingDayId, _date, _day, _cinemaDayMovieId, _movieId, _cinemaDayMovieForm);

            sch.Show();
            _helper.ShowForm(form, 15);
        }