/// <summary> /// Crear objeto Reserva con los datos requeridos para su creación en la base de datos. /// </summary> /// <param name="filtroReserva"></param> private Reserva CrearReserva(ReservaVueloFilter filtroReserva) { Reserva reserva = new Reserva() { FechaReserva = DateTime.Now, IdUsuario = filtroReserva.IdUsuario, IdVuelo = filtroReserva.IdVuelo, ValorTotalReserva = filtroReserva.TiquetePasajero.Sum(item => item.ValorTiquete), TiquetePasajero = filtroReserva.TiquetePasajero .Select(tiquete => new TiquetePasajero() { IdTipoAsiento = tiquete.IdTipoAsiento, ValorTiquete = tiquete.ValorTiquete, Pasajero = new Pasajero() { Apellido = tiquete.Pasajero.Apellido, Cedula = tiquete.Pasajero.Cedula, Celular = tiquete.Pasajero.Celular, Correo = tiquete.Pasajero.Correo, Direccion = tiquete.Pasajero.Direccion, Nombre = tiquete.Pasajero.Nombre, Sexo = tiquete.Pasajero.Sexo, Telefono = tiquete.Pasajero.Telefono, } }).ToList() }; return(reserva); }
/// <summary> /// Reservar Vuelo. /// </summary> /// <param name="reservaVuelo"></param> public void ReservarVuelo(ReservaVueloFilter filtroReserva) { IReservaRepository reservaRepository = DependencyInjectionContainer.Resolve <IReservaRepository>(); ILoginRepository loginRepository = DependencyInjectionContainer.Resolve <ILoginRepository>(); IReservaDomain reservaDomain = DependencyInjectionContainer.Resolve <IReservaDomain>(); Reserva reserva = new Reserva(); //Consultar Reservas previas del usuario. List <Reserva> reservasPrevias = reservaRepository.ConsultarReservas(filtroReserva.IdUsuario, filtroReserva.FechaVuelo); //Validar datos del usuario y reservas previas. Usuario usuario = loginRepository.ConsultarUsuario(filtroReserva.IdUsuario); reserva = reservaDomain.ValidarReserva(filtroReserva, reservasPrevias, usuario); if (reserva != null) { //Crear la reserva del vuelo reservaRepository.ReservarVuelo(reserva); } else { throw new BussinesException(Messages.ErrorReservaVuelo); } }
public void ReservarVueloTest() { ReservaApplication target = new ReservaApplication(); List <TiquetePasajeroFilter> tiquetesPasajero = new List <TiquetePasajeroFilter>(); tiquetesPasajero.Add(new TiquetePasajeroFilter() { IdTipoAsiento = 3, ValorTiquete = 70000, Pasajero = new PasajeroFilter() { Apellido = "Pelaez", Cedula = "1037587268", Celular = "3016199800", Correo = "*****@*****.**", Direccion = "Carrera 78 # 48-51", Nombre = "Miguel", Sexo = "M", Telefono = "2998547" } }); tiquetesPasajero.Add(new TiquetePasajeroFilter() { IdTipoAsiento = 3, ValorTiquete = 70000, Pasajero = new PasajeroFilter() { Apellido = "Perez", Cedula = "1037587269", Celular = "3016199801", Correo = "*****@*****.**", Direccion = "Carrera 78 # 48-52", Nombre = "Juan", Sexo = "M", Telefono = "2998548" } }); ReservaVueloFilter filtro = new ReservaVueloFilter { FechaVuelo = new DateTime(2016, 12, 15, 7, 15, 0), IdUsuario = 1, IdVuelo = 1, TiquetePasajero = tiquetesPasajero }; try { target.ReservarVuelo(filtro); } catch (BussinesException ex) { //Excepción esperada según alguna regla de negocio. Assert.IsNotNull(ex); } }
/// <summary> /// Validar datos del usuario y reservas previas. /// </summary> /// <param name="filtroReserva"></param> /// <param name="reservasPrevias"></param> /// <returns></returns> public Reserva ValidarReserva(ReservaVueloFilter filtroReserva, List <Reserva> reservasPrevias, Usuario usuario) { //Validar que el usuario sea mayor de edad if ((DateTime.Today.Year - usuario.FechaNacimiento.Year) < int.Parse(ConfigurationKeys.GetKeyAppSettings("EdadMayorEdad"))) { throw new BussinesException(Messages.ErrorUsuarioMenorEdad); } //Validar que el usuario no tenga un vuelo previamente reservado para el mismo día. if (reservasPrevias.Count > 0) { throw new BussinesException(Messages.ErrorReservasPrevias); } //Si supera todas las validaciones se crea la reserva. return(CrearReserva(filtroReserva)); }
public IActionResult ReservaVuelo([FromBody] ReservaVueloFilter reservaFiltro) { try { if (reservaFiltro.IdUsuario == 0 || reservaFiltro.IdVuelo == 0 || !reservaFiltro.TiquetePasajero.Any()) { return(BadRequest(BadRequestError)); } new ReservaApplication().ReservarVuelo(reservaFiltro); return(Ok()); } catch (Exception ex) { logger.Error(ex, InternalServerErrorReservarVuelo); return(StatusCode((int)HttpStatusCode.InternalServerError, InternalServerErrorReservarVuelo)); } }