/// <summary> /// Evento al pulsar Retirar asignación: /// Envia al cliente http el id de la asignatura seleccionada para que se le retire /// la asignación de profesor /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void buttonRemoveTeacher_Click(object sender, EventArgs e) { if (this.dgvSubjects.SelectedRows[0].Cells[0].Value != null) { int id = (int)this.dgvSubjects.SelectedRows[0].Cells[0].Value; this.selectedSubject = subjects.Find(s => s.Id == id); if (this.selectedSubject.Teacher != null) { string message = string .Format("Si retiras la asignación del profesor {0}, todas las " + "clases de {1} quedarán canceladas.¿Estas seguro " + "de querer retirar la asignación?", this.selectedSubject.Teacher.FullName, this.selectedSubject.Name); //Ventanita de confirmación CustomConfirmDialogForm dialog = new CustomConfirmDialogForm(message); dialog.ShowDialog(); if (dialog.Confirmed) { try { await SubjectHttpService .RemoveAssignedTeacher(this.selectedSubject.Id); this.selectedSubject.Teacher = null; //Actualiza la tabla this.dgvSubjects.SelectedRows[0].Cells[2].Value = "Sin asignar"; //Ventanita de mensaje de éxito message = string .Format("La asignatura {0} ya no tiene profesor asignado y las" + " clases han sido canceladash.", this.selectedSubject.Name); new CustomSuccesMessageWindow(message).ShowDialog(); } catch (ServerErrorException ex) { new CustomErrorMessageWindow(ex.Message).ShowDialog(); } } } else { new CustomErrorMessageWindow("La asignatura " + this.selectedSubject.Name + " no tiene profesor asignado.") .ShowDialog(); } } else { new CustomErrorMessageWindow("Debes seleccionar una asignatura antes.") .ShowDialog(); } }
/// <summary> /// Evento al pulsar Modificar: /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void ButtonModifyCycle_Click(object sender, EventArgs e) { string cycleName = this.tbCycleName.Text; if (cycleName.Length > 0) { this.btnModifyCycle.Enabled = false; try { bool confirmed = true; int shiftId = (int)this.cbShiftes.SelectedValue; //Si se cambia el turno -> mensaje de confirmacion con aviso if (shiftId != this.defaultShiftid) { string message = "Si cambias el turno, se cancelaran todas las clases del ciclo," + " ¿Estás seguro de querer cambiar el turno?"; CustomConfirmDialogForm dialog = new CustomConfirmDialogForm(message); dialog.ShowDialog(); if (!dialog.Confirmed) { confirmed = false; this.btnModifyCycle.Enabled = true; } } if (confirmed) { cycle.Name = cycleName; cycle.Shift = this.shifts.Find(s => s.Id == shiftId); await CycleHttpService.Update(cycle); this.OnCycleUpdatedDelegate(cycle); //Ventanita con mensaje de éxito string message = "Se han guardado los cambios del ciclo formativo."; new CustomSuccesMessageWindow(message).ShowDialog(); this.Close(); } } catch (ServerErrorException ex) { new CustomErrorMessageWindow(ex.Message).ShowDialog(); this.btnModifyCycle.Enabled = true; } } }
/// <summary> /// Evento al pulsar el botón Retirar asignatura del primer curso: /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void ButtonRemoveSubject1_Click(object sender, EventArgs e) { if (this.dgvSubjects.Rows.Count > 0 && this.dgvSubjects.SelectedRows[0].Cells[0].Value != null) { try { //Recupera el Id de la asignatura seleccionada int selectedId = int .Parse(this.dgvSubjects .SelectedRows[0].Cells[0].Value.ToString()); //Recupero la asignatura de la lista de asignaturas del curso Subject subject = selectedCourse.Subjects .FirstOrDefault(s => s.Id == selectedId); //Abre dialogo de confirmación string message = string. Format("Si retiras la asignatura {0} de {1}º de {2}, " + "se cancelarán todas las clases, " + "¿Estás seguro de querer retirarla? ", subject.Name, selectedCourse.Year, selectedCycle.Name); CustomConfirmDialogForm dialog = new CustomConfirmDialogForm(message); dialog.ShowDialog(); //Si se confirma se retira la asignatura if (dialog.Confirmed) { //Envio el curso copiado al servicio http y este retorna //el curso modificado por el servidor await CourseHttpService .RemoveAssignedSubject(selectedCourse.Id, selectedId); //Borro la asignatura del curso selectedCourse.Subjects.Remove(subject); //Refresca la tabla de asignaturas del primer curso this.PopulateSubjectsTable(); //Ventanita con mensaje de éxito message = string.Format("La asignatura {0} ha sido " + "retirada de {1}º de {2}", subject.Name, selectedCourse.Year, selectedCycle.Name); new CustomSuccesMessageWindow(message).ShowDialog(); } } catch (ServerErrorException ex) { //Ventanita de mensaje de error devuelto por el servidor new CustomErrorMessageWindow(ex.Message).ShowDialog(); } } else { new CustomErrorMessageWindow("Debes seleccionar una asignatura antes.") .ShowDialog(); } }
/// <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(); }