Пример #1
0
        /*
         * // Post: vistaDatosReservaPostCliente - Método de acción del botón crear reserva en Details - Alejandro Moya
         * // Cogemos los datos del cliente y lo vamos rescatando
         * [HttpPost, ActionName("vistaDatosReserva")]
         * [ValidateAntiForgeryToken]
         * public async Task<IActionResult> vistaDatosReservaPostCliente(Cliente cliente)
         * {
         *  if (ModelState.IsValid)
         *  {
         *      return View(cliente);
         *  }
         *
         *  return RedirectToAction("Index", "ClientesController", "");
         * }
         *
         */

        // Se encarga de crear la vista para introducir los datos de la reserva, en este caso, solo queremos crear la vista con los datos del cliente.
        public async Task <IActionResult> vistaDatosReserva(int id)
        {
            var cliente = await _context.Cliente.SingleOrDefaultAsync(m => m.idPersona == id);

            DatosReservaViewModel datosReservaSoloCliente = new DatosReservaViewModel {
                idPersona = cliente.idPersona, nombre = cliente.nombre, apellidos = cliente.apellidos, nif = cliente.nif, fechaInicio = DateTime.Now, fechaFin = DateTime.Now
            };

            return(View(datosReservaSoloCliente));
        }
Пример #2
0
        public async Task <IActionResult> vistaDatosReservaPost([Bind("idPersona,nombre,apellidos,nif,fechaInicio,fechaFin,regimenComida,comentarios")] DatosReservaViewModel datosReserva)
        {
            if (ModelState.IsValid)
            {
                DatosHabitacionReservaViewModel datosReservasProceso = new DatosHabitacionReservaViewModel {
                    idPersona     = datosReserva.idPersona,
                    nombre        = datosReserva.nombre,
                    apellidos     = datosReserva.apellidos,
                    nif           = datosReserva.nif,
                    fechaFin      = datosReserva.fechaFin,
                    fechaInicio   = datosReserva.fechaInicio,
                    comentarios   = datosReserva.comentarios,
                    regimenComida = datosReserva.regimenComida
                };

                if (datosReserva.fechaFin.Subtract(datosReserva.fechaInicio) <= TimeSpan.Zero)
                {
                    ModelState.AddModelError("", $"Oops, posiblemente ha confundido la Fecha de Inicio con la Fecha de Fin");
                    return(View(datosReserva));
                }
                if (DateTime.Today.CompareTo(datosReserva.fechaInicio.Date) > 0)
                {
                    ModelState.AddModelError("", $"Oops, las fechas introducidas no pueden ser anteriores a la fecha actual");
                    return(View(datosReserva));
                }

                // Habitaciones disponibles
                IEnumerable <int> reservasMalas = _context.Reserva.Where(rh => (datosReserva.fechaInicio.Subtract(rh.fechaInicio) >= TimeSpan.Zero && rh.fechaFin.Subtract(datosReserva.fechaInicio) >= TimeSpan.Zero) ||
                                                                         (rh.fechaInicio.Subtract(datosReserva.fechaInicio) >= TimeSpan.Zero && datosReserva.fechaFin.Subtract(rh.fechaInicio) > TimeSpan.Zero) ||
                                                                         (rh.fechaFin.Subtract(datosReserva.fechaInicio) > TimeSpan.Zero && datosReserva.fechaFin.Subtract(rh.fechaFin) >= TimeSpan.Zero)).AsEnumerable().Select(s => s.idReserva).ToList();

                IEnumerable <int>        habmalas     = _context.ReservaHabitacion.Where(h => reservasMalas.Contains(h.Reserva.idReserva)).Select(s => s.Habitacion.numero).ToList();
                IEnumerable <Habitacion> Habitaciones = _context.Habitacion.Where <Habitacion>(h => !habmalas.Contains(h.numero)).ToList();


                // Si no hay habitaciones, devolvemos la vista de DatosReserva para que cambie las fechas seleccionadas.
                if (!Habitaciones.Any())
                {
                    ModelState.AddModelError("", $"No hay habitaciones disponibles con las fechas dadas");
                    return(View(datosReserva));
                }
                return(RedirectToAction("vistaSeleccionHabitacionReserva", datosReservasProceso));
            }
            else
            {
                ModelState.AddModelError("", $"Por favor, escriba las fechas en el formato correcto aaaa-mm-dd");
                return(View(datosReserva));
            }
        }
        public async Task vistaDatosReservaPost_ModelIsValid_NotRooms()
        {
            // Arrange
            using (context)
            {
                var controller = new ReservasController(context);
                DatosReservaViewModel expectedModel = new DatosReservaViewModel {
                    idPersona = 2
                };
                // Act
                var result = await controller.vistaDatosReservaPost(new DatosReservaViewModel { idPersona = 2, nombre = "Prueba2", apellidos = "Prueba2 Prueba2", nif = "87654321B", comentarios = "patata", fechaFin = new DateTime(2018, 01, 20), fechaInicio = new DateTime(2018, 01, 10), regimenComida = 1 });

                //Assert
                var viewResult = Assert.IsType <ViewResult>(result);
                DatosReservaViewModel model = (result as ViewResult).Model as DatosReservaViewModel;
                Assert.Equal(expectedModel, model, Comparer.Get <DatosReservaViewModel>((p1, p2) => p1.idPersona == p2.idPersona));
            }
        }
Пример #4
0
        public async Task vistaDatosReserva()
        {
            // Arrange
            using (context)
            {
                var controller = new ReservasController(context);
                DatosReservaViewModel expectedModel = new DatosReservaViewModel {
                    idPersona = 2, nombre = "Prueba2", apellidos = "Prueba2 Prueba2", nif = "87654321B"
                };

                // Act
                var result = await controller.vistaDatosReserva(2);

                //Assert
                var viewResult = Assert.IsType <ViewResult>(result);
                DatosReservaViewModel model = (result as ViewResult).Model as DatosReservaViewModel;
                Assert.Equal(expectedModel, model, Comparer.Get <DatosReservaViewModel>((p1, p2) => p1.idPersona == p2.idPersona && p1.nif == p2.nif && p1.nombre == p2.nombre && p1.apellidos == p2.apellidos));
            }
        }
        public async Task vistaDatosReservaPost_ModelIsNotValid()
        {
            // Arrange
            using (context)
            {
                var controller = new ReservasController(context);
                controller.ModelState.AddModelError("fechaInicio", "Required");
                DatosReservaViewModel expectedModel = new DatosReservaViewModel {
                    idPersona = 2
                };
                // Act
                var result = await controller.vistaDatosReservaPost(new DatosReservaViewModel { idPersona = 2 });

                //Assert
                var viewResult = Assert.IsType <ViewResult>(result);
                DatosReservaViewModel model = (result as ViewResult).Model as DatosReservaViewModel;
                Assert.Equal(expectedModel, model, Comparer.Get <DatosReservaViewModel>((p1, p2) => p1.idPersona == p2.idPersona));
            }
        }