private void CancelacionProfesional_Load(object sender, EventArgs e) { matricula = Profesional.matriculaPorUsuario(id_usuario); if (matricula == -1) { MessageBox.Show("Error, el profesional con el que ingresó no cuenta con numero de matricula.", "Clinica-FRBA Error", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); } else if (Rango_Atencion.rangosPorProfesional(matricula).Count == 0) { MessageBox.Show("Error, el profesional no tiene establecida una agenda.", "Clinica-FRBA Error", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); } else { List <Rango_Atencion> rangos = Rango_Atencion.rangosPorProfesional(matricula); rangos.ForEach(rango => dias.AddRange(Rango_Atencion.generarDiasRango(rango))); dias.RemoveAll(dia => dia.Date <= ClinicaFrba.Utils.Fechas.getCurrentDateTime().Date); actualizarDias(); if (dias.Count == 0) { cb_anio_desde.Enabled = false; cb_mes_desde.Enabled = false; cb_dia_desde.Enabled = false; cb_anio_hasta.Enabled = false; cb_mes_hasta.Enabled = false; cb_dia_hasta.Enabled = false; btn_cancelar.Enabled = false; tb_motivo.Enabled = false; MessageBox.Show("No hay ninguna franja para cancelar.", "Clinica-FRBA ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); } } actualizarDesde(); }
private void insert(List <Agenda_Diaria> agenda, Rango_Atencion rango) { /*SqlCommand insertarRango = new SqlCommand("INSERT INTO ELIMINAR_CAR.Rango_Atencion (matricula,fecha_desde,fecha_hasta) VALUES (@matricula,@fecha_desde,@fecha_hasta)", DBConnector.ObtenerConexion()); * insertarRango.Parameters.Add("@matricula", SqlDbType.BigInt).Value = rango.matricula; * insertarRango.Parameters.Add("@fecha_desde", SqlDbType.DateTime).Value = rango.fecha_desde; * insertarRango.Parameters.Add("@fecha_hasta", SqlDbType.DateTime).Value = rango.fecha_hasta;*/ SqlCommand insertarRango = new SqlCommand("ELIMINAR_CAR.Registrar_Rango", DBConnector.ObtenerConexion()); insertarRango.CommandType = CommandType.StoredProcedure; insertarRango.Parameters.Add(new SqlParameter("@matricula", rango.matricula)); insertarRango.Parameters.Add(new SqlParameter("@fecha_desde", rango.fecha_desde)); insertarRango.Parameters.Add(new SqlParameter("@fecha_hasta", rango.fecha_hasta)); Int64 id_rango = -1; insertarRango.Parameters.Add(new SqlParameter("@id_rango", id_rango)); insertarRango.Parameters["@id_rango"].Direction = ParameterDirection.Output; insertarRango.ExecuteNonQuery(); id_rango = (Int64)insertarRango.Parameters["@id_rango"].Value; agenda.ForEach(elem => { SqlCommand insertar = new SqlCommand("INSERT INTO ELIMINAR_CAR.Agenda_Diaria (dia,matricula,hora_desde,hora_hasta,id_especialidad,id_rango) VALUES (@dia,@matricula,@hora_desde,@hora_hasta,@id_especialidad,@id_rango)", DBConnector.ObtenerConexion()); insertar.Parameters.Add("@dia", SqlDbType.Int).Value = (int)elem.dia; insertar.Parameters.Add("@matricula", SqlDbType.BigInt).Value = elem.matricula; //string format = "yyyy-MM-dd HH:MM:ss"; insertar.Parameters.Add("@hora_desde", SqlDbType.Time).Value = elem.hora_desde; insertar.Parameters.Add("@hora_hasta", SqlDbType.Time).Value = elem.hora_hasta; insertar.Parameters.Add("@id_especialidad", SqlDbType.Int).Value = elem.id_especialidad; insertar.Parameters.Add("@id_rango", SqlDbType.Int).Value = id_rango; insertar.ExecuteNonQuery(); }); }
private void btn_aceptar_Click(object sender, EventArgs e) { Rango_Atencion rango = new Rango_Atencion(); rango.matricula = profesional.matricula; rango.fecha_desde = franja_inicio.Value.Date; rango.fecha_hasta = franja_fin.Value.Date; Errores errores = new Errores(); if (rango.fecha_desde.Year < 2016 || rango.fecha_hasta.Year < 2016) { errores.agregarError("No se permiten registrar agendas anteriores a 2016"); } if (!rango.esValido()) { errores.agregarError("La fecha de inicio de la franja debe ser anterior a la de fin."); } if (rango.fecha_desde < ClinicaFrba.Utils.Fechas.getCurrentDateTime().Date || rango.fecha_hasta < ClinicaFrba.Utils.Fechas.getCurrentDateTime().Date) { errores.agregarError("Las fechas de inicio y fin de la franja deben ser posteriores o iguales al dia de hoy."); } if (agendas.Any(elem => !elem.esValida())) { errores.agregarError("La hora de fin del turno no puede ser anterior a la de inicio."); } if (agendas.Sum(elem => elem.horasDiarias()) > 48) { errores.agregarError("Esta prohibido trabajar mas de 48hs semanales. Por favor disminuya sus horas diarias."); } if (agendas.Any(elem => elem.id_especialidad == null)) { errores.agregarError("La especialidad no puede ser nula."); } if (agendas.Count == 0) { errores.agregarError("Debe seleccionar por lo menos un dia de la semana."); } if (Rango_Atencion.SeSolapan(profesional.matricula, rango)) { errores.agregarError("El rango seleccionado no puede solaparse con un rango ya registrado."); } if (errores.huboError()) { MessageBox.Show(errores.stringErrores(), "Clinica-FRBA: ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { insert(agendas, rango); MessageBox.Show("Se ha insertado la agenda correctamente.", "Clinica-FRBA", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); } }
public void CalcularDiasRango() { List <Rango_Atencion> rangos = Rango_Atencion.rangosPorProfesional(profesionalElegido.matricula); if (rangos.Count > 0) { rangos.ForEach(r => diasRango.AddRange(Rango_Atencion.generarDiasQueTrabajaRango(profesionalElegido, especialidadElegida.id_especialidad, r))); } else { diasRango = new List <DateTime>(); } diasRango.RemoveAll(dia => dia.Year < 2016); //Saca los dias anteriores a 2016 para que no se pueda pedir turno ahi. List <Cancelacion_Profesional> cancelaciones = Cancelacion_Profesional.cancelacionesPorProfesional(profesionalElegido.matricula); List <DateTime> diasCancelados = new List <DateTime>(); cancelaciones.ForEach(c => diasCancelados.AddRange(c.diasCancelados())); //Agrego los dias que se cancelan diasRango.RemoveAll(elem => diasCancelados.Contains(elem)); diasRango = diasRango.Distinct().OrderBy(d => d.Year).ThenBy(d => d.Month).ThenBy(d => d.Day).ToList <DateTime>(); }
public void actualizarAgenda() { agenda = Agenda_Diaria.getAgendaProfesional(profesionalElegido.matricula, especialidadElegida.id_especialidad, Rango_Atencion.rangoPorDia(profesionalElegido.matricula, especialidadElegida.id_especialidad, (DateTime)cb_dia_mes.SelectedItem)); }