Beispiel #1
0
 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));
 }