private void validarHorario(Reserva reservaACrear) { Horario horario = obtenerHorario("http://localhost:22057/Horarios.svc/Horarios?codigo=" + reservaACrear.CodigoEspacio + "&fecha=" + reservaACrear.FechaInicio); if (horario == null) { throw new WebFaultException<Error>( new Error() { Codigo = "ERR006", Mensaje = "El espacio no se encuentra disponible en este horario" }, HttpStatusCode.InternalServerError); } DateTime fecha = DateTime.ParseExact(reservaACrear.FechaInicio, DATEFORMAT, CultureInfo.InvariantCulture); int horaInicio = int.Parse(horario.HoraInicio.Substring(0,2)); int minutoInicio = int.Parse(horario.HoraInicio.Substring(3)); int horaFin = int.Parse(horario.HoraFin.Substring(0,2)); int minutoFin = int.Parse(horario.HoraFin.Substring(3)); if (!(horaInicio <= fecha.Hour && fecha.Hour <= horaFin)) { throw new WebFaultException<Error>( new Error() { Codigo = "ERR006", Mensaje = "El espacio no se encuentra disponible en este horario" }, HttpStatusCode.InternalServerError); } }
public Reserva Crear(Reserva reservaACrear) { int codigo = SelectMax(); Reserva reservaCreado = null; string sql = "SET LANGUAGE Spanish; INSERT INTO TB_RESERVA VALUES(@cod,@codEsp,DATENAME(dw,@fecIni),@cantHora,@fecIni,@fecFin,@estado)"; using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena())) { con.Open(); using (SqlCommand com = new SqlCommand(sql, con)) { com.Parameters.Add(new SqlParameter("@cod", codigo)); com.Parameters.Add(new SqlParameter("@codEsp", reservaACrear.CodigoEspacio)); com.Parameters.Add(new SqlParameter("@cantHora", reservaACrear.CantidadHoras)); com.Parameters.Add(new SqlParameter("@fecIni", DateTime.ParseExact(reservaACrear.FechaInicio, DATEFORMAT, CultureInfo.InvariantCulture))); com.Parameters.Add(new SqlParameter("@fecFin", DateTime.ParseExact(reservaACrear.FechaFin, DATEFORMAT, CultureInfo.InvariantCulture))); com.Parameters.Add(new SqlParameter("@estado", reservaACrear.Estado)); com.ExecuteNonQuery(); } } reservaCreado = Obtener(codigo); return reservaCreado; }
public string RegistrarReserva(Reserva reservaACrear) { validarHorario(reservaACrear); reservaACrear.FechaFin = addHour(reservaACrear.FechaInicio, reservaACrear.CantidadHoras); List<Reserva> reservaObtenidos = dao.ValidarDisponibilidad(reservaACrear); Reserva reservaReservada = null; if (reservaObtenidos.Count > 0) { foreach (Reserva reserva in reservaObtenidos) { if (reserva.Estado.Equals(Estado.RESERVADO) || reserva.Estado.Equals(Estado.CONFIRMADO)) { reservaReservada = reserva; break; } } } if (reservaReservada != null) { throw new WebFaultException<Error>( new Error() { Codigo = "ERR004", Mensaje = "El espacio deportivo ya ha sido reservado" }, HttpStatusCode.InternalServerError); } Reserva reservaRegistrado = null; reservaACrear.Estado = Estado.RESERVADO; reservaRegistrado = dao.Crear(reservaACrear); return "La reserva registrada exitosamente (" + reservaRegistrado.Codigo + ")"; }
public List<Reserva> ValidarDisponibilidad(Reserva reservaAValidar) { Reserva reservaEncontrado = null; List<Reserva> reservas = new List<Reserva>(); string sql = "SELECT * FROM TB_RESERVA WHERE cod_esp=@codEsp "+ " AND ((@fecIni between fecha_inicio AND fecha_fin) OR (@fecFin between fecha_inicio AND fecha_fin))"; using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena())) { con.Open(); using (SqlCommand com = new SqlCommand(sql, con)) { com.Parameters.Add(new SqlParameter("@codEsp", reservaAValidar.CodigoEspacio)); com.Parameters.Add(new SqlParameter("@fecIni", DateTime.ParseExact(reservaAValidar.FechaInicio, DATEFORMAT, CultureInfo.InvariantCulture))); com.Parameters.Add(new SqlParameter("@fecFin", DateTime.ParseExact(reservaAValidar.FechaFin, DATEFORMAT, CultureInfo.InvariantCulture))); using (SqlDataReader resultado = com.ExecuteReader()) { if (resultado.Read()) { reservaEncontrado = new Reserva() { Codigo = (int)resultado["codigo"], CodigoEspacio = (int)resultado["cod_esp"], Dia = (string)resultado["dia"], CantidadHoras = (int)resultado["cant_hora"], FechaInicio = ((DateTime)resultado["fecha_inicio"]).ToString(DATEFORMAT), FechaFin = ((DateTime)resultado["fecha_fin"]).ToString(DATEFORMAT), Estado = (string)resultado["estado"] }; reservas.Add(reservaEncontrado); } } } con.Close(); } return reservas; }
public Reserva Obtener(int codigo) { Reserva reservaEncontrado = null; string sql = "SELECT * FROM TB_RESERVA WHERE codigo=@cod"; using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena())) { con.Open(); using (SqlCommand com = new SqlCommand(sql, con)) { com.Parameters.Add(new SqlParameter("@cod", codigo)); using (SqlDataReader resultado = com.ExecuteReader()) { if (resultado.Read()) { reservaEncontrado = new Reserva() { Codigo = (int)resultado["codigo"], CodigoEspacio = (int)resultado["cod_esp"], Dia = (string)resultado["dia"], CantidadHoras = (int)resultado["cant_hora"], FechaInicio = ((DateTime)resultado["fecha_inicio"]).ToString(DATEFORMAT), FechaFin = ((DateTime)resultado["fecha_fin"]).ToString(DATEFORMAT), Estado = (string)resultado["estado"] }; } } } con.Close(); } return reservaEncontrado; }
public List<Reserva> ListarTodos() { Reserva reservaEncontrado = null; List<Reserva> reservas = new List<Reserva>(); string sql = "SELECT * FROM TB_RESERVA"; using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena())) { con.Open(); using (SqlCommand com = new SqlCommand(sql, con)) { using (SqlDataReader resultado = com.ExecuteReader()) { while (resultado.Read()) { reservaEncontrado = new Reserva() { Codigo = (int)resultado["codigo"], CodigoEspacio = (int)resultado["cod_esp"], Dia = (string)resultado["dia"], CantidadHoras = (int)resultado["cant_hora"], FechaInicio = ((DateTime)resultado["fecha_inicio"]).ToString(DATEFORMAT), FechaFin = ((DateTime)resultado["fecha_fin"]).ToString(DATEFORMAT), Estado = (string)resultado["estado"] }; reservas.Add(reservaEncontrado); } } } con.Close(); } return reservas; }
public Reserva Modificar(Reserva reservaAModificar) { Reserva reservaModificado = null; string sql = "SET LANGUAGE Spanish; UPDATE TB_RESERVA SET cod_esp=@codEsp, dia=DATENAME(dw,@fechaFin), cant_hora=@cantHora, fecha_inicio=@fechaIni, fecha_fin=@fechaFin, estado=@estado WHERE codigo=@cod"; using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena())) { con.Open(); using (SqlCommand com = new SqlCommand(sql, con)) { com.Parameters.Add(new SqlParameter("@cod", reservaAModificar.Codigo)); com.Parameters.Add(new SqlParameter("@codEsp", reservaAModificar.CodigoEspacio)); com.Parameters.Add(new SqlParameter("@cantHora", reservaAModificar.CantidadHoras)); com.Parameters.Add(new SqlParameter("@fechaIni", DateTime.ParseExact(reservaAModificar.FechaInicio, DATEFORMAT, CultureInfo.InvariantCulture))); com.Parameters.Add(new SqlParameter("@fechaFin", DateTime.ParseExact(reservaAModificar.FechaFin, DATEFORMAT, CultureInfo.InvariantCulture))); com.Parameters.Add(new SqlParameter("@estado", reservaAModificar.Estado)); com.ExecuteNonQuery(); } con.Close(); } reservaModificado = Obtener(reservaAModificar.Codigo); return reservaModificado; }
public string ActualizarReserva(Reserva reservaAModificar) { reservaAModificar.FechaFin = addHour(reservaAModificar.FechaInicio, reservaAModificar.CantidadHoras); Reserva reservaActualizada = null; reservaActualizada = dao.Modificar(reservaAModificar); return "La reserva registrada exitosamente (" + reservaActualizada.Codigo + ")"; }