Ejemplo n.º 1
0
        /// <summary>
        ///     Evento al pulsar asignar
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void ButtonAssign_Click(object sender, EventArgs e)
        {
            if (this.dgvSubjects.SelectedRows[0].Cells[0].Value != null)
            {
                //Recupera el id de la asignatura seleccionada
                int selectedId = (int)this.dgvSubjects
                                 .SelectedRows[0].Cells[0].Value;

                //Recupera la asignatura
                Subject subject = subjects.FirstOrDefault(s => s.Id == selectedId);

                try
                {
                    //Agrega la asignatura al curso
                    await CourseHttpService.AssignSubject(_course.Id, selectedId);


                    string name = (string)this.dgvSubjects
                                  .SelectedRows[0].Cells[1].Value;

                    string message = string.Format("Se ha añadidio la asignatura {0} a {1}º de {2}.",
                                                   name, _course.Year, _cycleName);
                    CustomSuccesMessageWindow dialog = new CustomSuccesMessageWindow(message);
                    dialog.ShowDialog();

                    this.OnSubjectAddedDelegate(subject);//Callback con la asignatura añadida
                    this.Close();
                }
                catch (ServerErrorException ex)
                {
                    new CustomErrorMessageWindow(ex.Message).ShowDialog();
                }
            }
            else
            {
                new CustomErrorMessageWindow("Debes seleccionar una asignatura antes.")
                .ShowDialog();
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Evento al hacer click en cualquer celda, si la celda esta libre
        ///     se abre el formulario para crear una nueva clase, sino
        ///     se propone cancelar la clase de la celda
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void CellButtons_Click(object sender, DataGridViewCellEventArgs e)
        {
            // se recupera la celda clickeada
            int col = this.dgvSchedules.CurrentCell.ColumnIndex;
            int row = this.dgvSchedules.CurrentCell.RowIndex;

            //Siempre que no sea la columna de horarios
            if (col > 0)
            {
                //El dia de la semana corresponde al indice de la columna
                int day = col;

                //La hora en la que empieza la clase corresponse al horario de la primera columna
                string start = this.dgvSchedules.Rows[row].Cells[0].Value.ToString().Substring(0, 5);

                //Recupero la posible clase ya establecida ese dia a esa hora dentro de la lista de clases
                SchoolClass schoolClass = schoolClasses
                                          .FirstOrDefault(sc => sc.Day == (DayOfWeek)day && sc.Schedule.Start == start);

                //Sino hay clase prevista ese dia en ese horario,
                //se abre el formulario para crear una nueva clase
                if (schoolClass is null)
                {
                    //Horario correspondiente
                    Schedule schedule = this.selectedCycle.Shift.Schedules
                                        .FirstOrDefault(sc => sc.Start == start);

                    CreateSchoolClassForm form = new CreateSchoolClassForm(
                        this.selectedCourse,
                        (DayOfWeek)day,
                        schedule);
                    form.OnSchoolClassCreatedDelegate += OnSchoolClassCreatedCallBack;
                    form.ShowDialog();
                }
                //Si ya existe una clase en la celda, se propone que la clase deje de ser vigente
                else
                {
                    //Ventanita de confirmación
                    string message = string
                                     .Format("Quieres cancelar la clase de {0} prevista a las {2} cada {1}?",
                                             schoolClass.Subject.Name,
                                             this.dgvSchedules.Columns[col].HeaderText.ToLower(),
                                             schoolClass.Schedule.Start);

                    CustomConfirmDialogForm customConfirmDialogForm = new CustomConfirmDialogForm(message);
                    customConfirmDialogForm.ShowDialog();

                    //Si se confirma
                    if (customConfirmDialogForm.Confirmed)
                    {
                        try
                        {
                            int id = schoolClass.Id;

                            //Envia al cliente http el id de la clase para cancelarla
                            await SchoolClassHttpService.Cancel(id);

                            //Ventanita de exito con aviso
                            message = "La clase ha sido cancelada, recuerda que si " +
                                      "esta clase se impartía en varios cursos a la vez y deseas cancelarla " +
                                      "también en los demás cursos, tendrás que hacerlo en cada uno de ellos.";

                            CustomSuccesMessageWindow ccdf = new CustomSuccesMessageWindow(message);
                            ccdf.ShowDialog();

                            //Se borra la clase de la lista
                            schoolClasses.Remove(schoolClass);
                        }
                        catch (ServerErrorException ex)
                        {
                            new CustomErrorMessageWindow(ex.Message).ShowDialog();
                        }
                    }
                }

                this.PopulateSchedulesTable();//Se refresca la tabla en todo caso
            }

            this.dgvSchedules.ClearSelection();
        }