예제 #1
0
        private Models.Reservation.GetAvailableFlghtsResponse GenerateGetAvailableFlights(DateTime?FechaInicio, DateTime?FechaFinal)
        {
            var database = new EntityFramework.Database.DatabaseEntityFramework();
            var useCase  = new UseCases.Interactors.GetVuelosInteractor(database, this._mapper);
            var request  = new UseCases.Messages.GetVuelosDisponibles.GetVuelosDisponiblesRequestMessage();

            if (FechaInicio.HasValue && FechaInicio != DateTime.MinValue)
            {
                request.FechaInicio = FechaInicio;
            }
            if (FechaFinal.HasValue && FechaFinal != DateTime.MinValue)
            {
                request.FechaFinal = FechaFinal;
            }

            try
            {
                database.Open();
                var response       = useCase.Handle(request);
                var vuelosResponse = this._mapper.Map <UseCases.Messages.GetVuelosDisponibles.Vuelo[], Models.Reservation.Vuelo[]>(response.Vuelos);

                var responseWeb = new Models.Reservation.GetAvailableFlghtsResponse();
                responseWeb.Request = null;
                responseWeb.Vuelos  = vuelosResponse;
                return(responseWeb);
            }
            finally
            {
                database.Close();
            }
        }
예제 #2
0
        public ActionResult DoReservation(Models.Reservation.DoReservation requestWeb)
        {
            int ClienteId = 1;

            var database = new EntityFramework.Database.DatabaseEntityFramework();
            var useCase  = new UseCases.Interactors.CreateReservacionVueloInteractor(database, this._mapper);
            var request  = new UseCases.Messages.CreateReservacionVuelo.CreateReservacionVueloRequestMessage();

            request.VueloId   = requestWeb.VueloId;
            request.ClienteId = ClienteId;
            var reservados = new List <UseCases.Messages.CreateReservacionVuelo.AsientoReservado>();

            foreach (var reservacion in requestWeb.Tickets)
            {
                if (reservacion.Selected)
                {
                    reservados.Add(new UseCases.Messages.CreateReservacionVuelo.AsientoReservado()
                    {
                        NumeroAsiento = reservacion.NumeroAsiento,
                        TipoPasajero  = (int)reservacion.TipoPasajero
                    });
                }
            }
            request.Asientos = reservados.ToArray();
            try
            {
                database.Open();
                var response = useCase.Handle(request);
                if (response.ValidationResult.IsValid)
                {
                    database.Commit();
                }
                else
                {
                    Vereyon.Web.FlashMessage.Danger("No se pudo generar la reservación", response.ValidationResult.Error);
                    database.Rollback();
                    return(View(requestWeb));
                }
            } catch
            {
                database.Rollback();
                throw;
            }
            finally
            {
                database.Close();
            }

            return(RedirectToAction("GetAvailableFlights"));
        }
예제 #3
0
        public ActionResult DoReservation(int?vueloId)
        {
            var database = new EntityFramework.Database.DatabaseEntityFramework();
            var useCase  = new UseCases.Interactors.FindVueloParaReservarInteractor(database, this._mapper);
            var request  = new UseCases.Messages.FindVueloParaReservar.FindVueloParaReservarRequestMessage();

            request.VueloId = vueloId.Value;

            try
            {
                database.Open();
                var response = useCase.Handle(request);
                // Mapear las propiedades
                var vueloReservacionresponse = this._mapper.Map <UseCases.Messages.FindVueloParaReservar.Vuelo, Models.Reservation.DoReservation> (response.Vuelos);

                var listaAsientos = new List <Models.Reservation.TicketAvailable>();
                for (var i = 1; i <= response.Vuelos.CapacidadTotal; i++)
                {
                    if (response.Vuelos.AsientosOcupados.Where(q => q == i).Count() == 0)
                    {
                        listaAsientos.Add(new Models.Reservation.TicketAvailable()
                        {
                            NumeroAsiento = i,
                            TipoPasajero  = Models.Enums.ETipoPasajero.Economico
                        });
                    }
                }
                vueloReservacionresponse.Tickets = listaAsientos;

                return(View(vueloReservacionresponse));
            }
            finally
            {
                database.Close();
            }
        }