コード例 #1
0
        public async Task <IActionResult> OnGet(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            _logger.LogInformation(LoggingEvents.GetItem, "Get Reservation {ID}", id);
            Reservation = await _reservationService.GetReservation(id);

            if (Reservation == null)
            {
                _logger.LogInformation(LoggingEvents.GetItemNotFound, "Get Reservation {ID} NOT FOUND", id);
                return(NotFound());
            }

            var user = await _userManager.GetUserAsync(HttpContext.User);

            if (user.Id != Reservation.UserId.Value)
            {
                return(RedirectToPage("./List"));
            }

            return(Page());
        }
コード例 #2
0
        public async Task <ReservationHeader> GetReservation(int?id)
        {
            var reservation = await _dbContext.Reservations
                              .Include(r => r.VehicleModel)
                              .Include(r => r.Car)
                              .Include(r => r.Address)
                              .Include(r => r.User)
                              .Where(r => r.Id == id.Value)
                              .SingleOrDefaultAsync();

            ReservationHeader reservationHeader = new ReservationHeader
            {
                Id             = reservation.Id,
                AddressId      = reservation.AddressId,
                Address        = reservation.Address.ZipCode + " " + reservation.Address.City + " " + reservation.Address.StreetAddress,
                CarId          = reservation.CarId,
                Car            = reservation.Car?.PlateNumber,
                DropOffTime    = reservation.DropOffTime,
                PickUpTime     = reservation.PickUpTime,
                Price          = reservation.Price,
                State          = reservation.State,
                UserId         = reservation.UserId,
                User           = reservation.User?.UserName,
                VehicleModelId = reservation.VehicleModelId,
                VehicleType    = reservation.VehicleModel?.VehicleType
            };

            return(reservationHeader);
        }
コード例 #3
0
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            _logger.LogInformation(LoggingEvents.GetItem, "Get Reservation {ID}", id);
            Reservation = await _reservationService.GetReservation(id);

            if (Reservation == null)
            {
                _logger.LogInformation(LoggingEvents.GetItemNotFound, "Get Reservation {ID} NOT FOUND", id);
                return(NotFound());
            }
            return(Page());
        }
コード例 #4
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            _logger.LogInformation(LoggingEvents.GetItem, "Get Reservation {ID}", id);
            Reservation = await _reservationService.GetReservation(id);

            if (Reservation != null)
            {
                await _reservationService.DeleteReservation(id);

                _logger.LogInformation(LoggingEvents.DeleteItem, "Delete Reservation {ID}", id);
            }

            return(RedirectToPage("./Index"));
        }
コード例 #5
0
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            _logger.LogInformation(LoggingEvents.GetItem, "Get Reservation {ID}", id);
            Reservation = await _reservationService.GetReservation(id);

            if (Reservation == null)
            {
                _logger.LogInformation(LoggingEvents.GetItemNotFound, "Get Reservation {ID} NOT FOUND", id);
                return(NotFound());
            }

            var cars = await _carService.GetCars(Reservation.PickUpTime, Reservation.DropOffTime, Reservation.VehicleModelId);

            ViewData["CarId"] = new SelectList(cars, "Id", "PlateNumber");
            return(Page());
        }
コード例 #6
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                var cars = await _carService.GetCars(Reservation.PickUpTime, Reservation.DropOffTime, Reservation.VehicleModelId);

                ViewData["CarId"] = new SelectList(cars, "Id", "PlateNumber");
                return(Page());
            }

            _logger.LogInformation(LoggingEvents.GetItem, "Get Car {ID}", Reservation.CarId);
            var car = await _carService.GetCar(Reservation.CarId);

            if (car == null)
            {
                _logger.LogInformation(LoggingEvents.GetItemNotFound, "Get Car {ID} NOT FOUND", Reservation.CarId);
                return(NotFound());
            }

            _logger.LogInformation(LoggingEvents.GetItem, "Get Reservation {ID}", Reservation.Id);
            Reservation = await _reservationService.GetReservation(Reservation.Id);

            if (Reservation == null)
            {
                _logger.LogInformation(LoggingEvents.GetItemNotFound, "Get Reservation {ID} NOT FOUND", Reservation.Id);
                return(NotFound());
            }

            try
            {
                _logger.LogInformation(LoggingEvents.UpdateItem, "Update Reservation {ID} with Car {ID}", Reservation.Id, Reservation.CarId);
                await _reservationService.EditReservation(Reservation.Id, car.Id);
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!_reservationService.ReservationExists(Reservation.Id))
                {
                    _logger.LogInformation(LoggingEvents.UpdateItemNotFound, "Update Reservation {ID} NOT FOUND", Reservation.Id);
                    return(NotFound());
                }
                else
                {
                    return(StatusCode(409));
                }
            }

            const string view = "/Views/Emails/ReservationEmailAccepted";

            var user = await _userManager.Users
                       .Where(u => u.Id == Reservation.UserId)
                       .SingleOrDefaultAsync();

            var culture = Thread.CurrentThread.CurrentCulture.Name;

            if (!string.IsNullOrEmpty(user.Culture))
            {
                Thread.CurrentThread.CurrentCulture   = new CultureInfo(user.Culture);
                Thread.CurrentThread.CurrentUICulture = new CultureInfo(user.Culture);
            }

            var model = new EmailReservationDto
            {
                UserName    = user.Name ?? user.Email,
                Email       = user.Email,
                VehicleType = Reservation.VehicleType,
                Address     = Reservation.Address,
                PickUpTime  = Reservation.PickUpTime,
                DropOffTime = Reservation.DropOffTime,
                Price       = Reservation.Price,
                State       = Dal.Entities.Reservation.ReservationStates.Accepted
            };

            try
            {
                var message = await _render.RenderViewToStringAsync($"{view}Html.cshtml", model);

                //await _emailSender.SendEmailAsync(user.Email, "Reservation", message);
                QueueEmailMessage queueEmail = new QueueEmailMessage(user.Email, "", message, "Reservation");
                await _cloudStorageService.SendMessage(queueEmail);
            }
            catch
            (InvalidOperationException)
            {
                return(RedirectToPage("./Index"));
            }

            if (!string.IsNullOrEmpty(culture))
            {
                Thread.CurrentThread.CurrentCulture   = new CultureInfo(culture);
                Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
            }

            return(RedirectToPage("./Index"));
        }