// GET: Rental/Details/5
        public ActionResult Details(int id)
        {
            var rental = WebClient.ApiRequest <Rental> .GetSingleRecord($"Rentals/{id}");

            IList <Staff> staffs = WebClient.ApiRequest <Staff> .GetList("Staffs");

            IList <CD> cds = WebClient.ApiRequest <CD> .GetList("CDs");

            // Shape our RentalDetailsViewModel
            var rentalDetails = new RentalDetailsViewModel
            {
                Rental         = rental,
                StaffFirstName = staffs.Where(s => s.StaffId == rental.StaffId).Select(staf => staf.StaffFirstName).FirstOrDefault(),
                StaffLastName  = staffs.Where(s => s.StaffId == rental.StaffId).Select(staf => staf.StaffLastName).FirstOrDefault(),
                RentedCDs      = rental.RentalItems.Select(
                    ri => new CDsViewModel
                {
                    RentalId = ri.RentalId,
                    CDTitle  = cds.Where(c => c.CDId == ri.CDId).Select(cn => cn.CDTitle).FirstOrDefault(),
                    CDAuthor = cds.Where(c => c.CDId == ri.CDId).Select(cn => cn.CDAuthor).FirstOrDefault()
                }).ToList()
            };

            return(View(rentalDetails));
        }
        // GET: Rental/Delete/5
        public ActionResult Delete(int id)
        {
            // Get the Rental record based on the paremeter id
            var rental = WebClient.ApiRequest <Rental> .GetSingleRecord($"Rentals/{id}");

            // Another request to the Database to get the staff records
            IList <Staff> Staffs = WebClient.ApiRequest <Staff> .GetList("Staffs");

            // Another request to the database to get the CD records
            IList <CD> cds = WebClient.ApiRequest <CD> .GetList("CDs");

            // Shape our RentalDetailsViewModel
            var rentalDetails = new RentalDetailsViewModel
            {
                Rental         = rental,
                StaffFirstName = Staffs.Where(c => c.StaffId == rental.RentalId)
                                 .Select(staf => staf.StaffFirstName).FirstOrDefault(),
                StaffLastName = Staffs.Where(c => c.StaffId == rental.RentalId)
                                .Select(staf => staf.StaffLastName).FirstOrDefault(),
                RentedCDs = rental.RentalItems.Select(
                    ri => new CDsViewModel
                {
                    RentalId = ri.RentalId,
                    CDTitle  = cds.Where(c => c.CDId == ri.CDId).Select(cn => cn.CDTitle).FirstOrDefault(),
                    CDAuthor = cds.Where(c => c.CDId == ri.CDId).Select(cn => cn.CDAuthor).FirstOrDefault()
                }).ToList()
            };

            return(View(rentalDetails));
        }
        // GET: Rental/Details/5
        public async Task <ActionResult> Details(string id)
        {
            RentalRepository     repo   = new RentalRepository();
            IEnumerable <Rental> result = await repo.GetAllByRegistrationNumber(id);

            var viewModel = new RentalDetailsViewModel()
            {
                RegistrationNumber = id,
                Year           = result.Select(a => a.Year).Distinct().OrderBy(a => a),
                AggregatedData = GetAggregatedData(result),
                Rentals        = result
            };

            return(View(viewModel));
        }
        public async Task <IActionResult> Details(int id,
                                                  ReservationSearchModel searchModel)
        {
            var rental = await _gatewayService.Get <RentalViewModel>($"rentals/{id}");

            var reservations = await _gatewayService
                               .Get <IList <ReservationViewModel> >($"/rentals/{id}/reservations");

            // filtering should be done on backend, not here. oh no... anyway
            IEnumerable <ReservationViewModel> filteredReservations = reservations.Content;

            if (!string.IsNullOrEmpty(searchModel.FromDate) &&
                DateTime.TryParse(searchModel.FromDate, out var fromDate))
            {
                filteredReservations =
                    reservations.Content.Where(res => res.StartDateUtc >= fromDate);
            }
            if (!string.IsNullOrEmpty(searchModel.ToDate) &&
                DateTime.TryParse(searchModel.ToDate, out var toDate))
            {
                filteredReservations =
                    reservations.Content.Where(res => res.EndDateUtc <= toDate);
            }

            var viewModel = new RentalDetailsViewModel
            {
                Details      = rental.Content,
                Reservations = filteredReservations?.ToList() ?? new List <ReservationViewModel>()
            };

            viewModel.ReservationSearchModel.FromDate = searchModel.FromDate;
            viewModel.ReservationSearchModel.ToDate   = searchModel.ToDate;

            return(rental.IsSuccess
                ? View(viewModel)
                : RedirectToAction(nameof(Index))
                   .WithWarning("Oops!", rental.ErrorMessage));
        }
Exemple #5
0
 public RentalDetailsPage()
 {
     InitializeComponent();
     BindingContext = new RentalDetailsViewModel();
 }