Как правильно передать данные в моем контроллере моему представлению, используя ViewModels и несколько методов в MVC5 - PullRequest
0 голосов
/ 20 марта 2019

Я создаю сайт проката автомобилей в MVC 5 и пытаюсь показать вид со всеми сделанными оговорками.В другом виде я хочу показать оговорки, сделанные только на сегодня.

У меня есть несколько методов в контроллере для получения нужных мне данных, я просто не знаю, как передать это на мой взгляд.

Методы для сбора всех данных:

public ActionResult AlleReservations)
    {
        ReservationEmployeeViewModel cvm = new ReservationEmployeeViewModel()
        {
            Reservations = db.Reservations.ToList()
        };

        cvm.Cars = GetRelevantCars(cvm.Reservations);
        cvm.Customers = GetRelevantCustomers(cvm.Reservations);

        return View(cvm);
    }

    public ActionResult ReservationsToday()
    {
        ReservationEmployeeViewModel cvm = new ReservationEmployeeViewModel()
        {
            Reservations = GetReservationsToday()
        };

        cvm.Cars = GetRelevantCars(cvm.Reservations);
        cvm.Customers = GetRelevantCustomers(cvm.Reservations

        return View(cvm);
    }

Способ получения клиентов, соответствующих сделанным ими бронированиям:

    private IEnumerable<ApplicationUser> GetRelevanteCustomers(IEnumerable<Reservation> reservations)
    {
        List<int> relevantInvoiceIds = new List<int>();
        List<ApplicationUser> customers = new List<ApplicationUser>();

        List<ApplicationUser> allCustomers = db.Users.ToList().Where(x => UserManager.IsInRole(x.Id, "Customers")).ToList();
        IEnumerable<Invoice> invoices = db.Invoices.ToList();


        foreach (Reservation reservation in Reservations)
        {
            relevanteinvoiceIds.Add(reservation.Invoicenumber);
        }

        foreach (Invoice invoice in invoices)
        {
            if (relevanteInvoiceIds.Contains(invoice.Id))
                customers.Add(alleCustomers.Find(x => x.Id == invoice.CustomerId));
        }

        return customers;
    }

Метод получения автомобилей, взятых в аренду клиентами:

    private IEnumerable<Auto> GetRelevantCars(IEnumerable<Reservations> reservations)
    {
        List<Car> relevantCars = new List<Car>();
        List<Car> allCars = db.Cars.ToList();

        foreach (Reservation reservation in reservations)
        {
            relevantCars.Add(allCars.Find(x => x.Id == reservation.CarId));
        }

        return relevantCars;
    }

Чтобы получитьСегодняшние бронирования из базы данных:

    private IEnumerable<Reservation> GetReservationsToday()
    {
        return db.Reservations.Where(x => x.Startingdate.Day == DateTime.Now.Day).ToList();
    }

Я надеюсь, что кто-нибудь подскажет мне, как мне это передать своим взглядам.

...