// 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)); }
public RentalDetailsPage() { InitializeComponent(); BindingContext = new RentalDetailsViewModel(); }