Ejemplo n.º 1
0
        public ActionResult Details(int id, string carSortOrder, string carSearchString, string inspectionSortOrder, string inspectionSearchString)
        {
            var userModel        = new UserViewModel(_userService.GetUser(id));
            var carsModel        = new List <CarViewModel>();
            var inspectionsModel = new List <InspectionViewModel>();
            var carList          = _carService.GetCarsForUser(userModel.Id);
            var inspectionList   = _inspectionService.GetInspectionsForUser(userModel.Id);

            foreach (var car in carList)
            {
                var model = new CarViewModel(car);
                carsModel.Add(model);
            }

            ViewBag.CarSortOrder     = carSortOrder;
            ViewBag.CarIdSortParm    = String.IsNullOrEmpty(carSortOrder) ? "Id_desc" : "";
            ViewBag.CarMakeSortParm  = carSortOrder == "Make" ? "Make_desc" : "Make";
            ViewBag.CarModelSortParm = carSortOrder == "Model" ? "Model_desc" : "Model";
            ViewBag.CarRegistrationNumberSortParm = carSortOrder == "RegistrationNumber" ? "RegistrationNumber_desc" : "RegistrationNumber";

            var cars = from car in carsModel
                       select car;

            if (!String.IsNullOrEmpty(carSearchString))
            {
                cars = cars.Where(car => car.Id.ToString().Contains(carSearchString) ||
                                  car.Make.Contains(carSearchString) ||
                                  car.Model.Contains(carSearchString) ||
                                  car.RegistrationNumber.Contains(carSearchString));
            }
            switch (carSortOrder)
            {
            case "Id_desc":
                cars = cars.OrderByDescending(car => car.Id);
                break;

            case "Make":
                cars = cars.OrderBy(car => car.Make);
                break;

            case "Make_desc":
                cars = cars.OrderByDescending(car => car.Make);
                break;

            case "Model":
                cars = cars.OrderBy(car => car.Model);
                break;

            case "Model_desc":
                cars = cars.OrderByDescending(car => car.Model);
                break;

            case "RegistrationNumber":
                cars = cars.OrderBy(car => car.RegistrationNumber);
                break;

            case "RegistrationNumber_desc":
                cars = cars.OrderByDescending(car => car.RegistrationNumber);
                break;

            default:
                cars = cars.OrderBy(car => car.Id);
                break;
            }

            foreach (var inspection in inspectionList)
            {
                var model = new InspectionViewModel(inspection, id);
                inspectionsModel.Add(model);
            }

            ViewBag.InspectionSortOrder                   = inspectionSortOrder;
            ViewBag.InspectionCarIdSortParm               = String.IsNullOrEmpty(inspectionSortOrder) ? "CarId_desc" : "";
            ViewBag.InspectionInspectionDateSortParm      = inspectionSortOrder == "InspectionDate" ? "InspectionDate_desc" : "InspectionDate";
            ViewBag.InspectionCommentsSortParm            = inspectionSortOrder == "Comments" ? "Comments_desc" : "Comments";
            ViewBag.InspectionNextInspectionYearsSortParm = inspectionSortOrder == "NextInspectionYears" ? "NextInspectionYears_desc" : "NextInspectionYears";

            var inspections = from inspection in inspectionsModel
                              select inspection;

            if (!String.IsNullOrEmpty(inspectionSearchString))
            {
                inspections = inspections.Where(inspection => inspection.CarId.ToString().Contains(inspectionSearchString) ||
                                                (inspection.InspectionDate != null && inspection.InspectionDate.ToString().Contains(inspectionSearchString)) ||
                                                (inspection.Comments != null && inspection.Comments.Contains(inspectionSearchString)) ||
                                                inspection.NextInspectionYears.ToString().Contains(inspectionSearchString));
            }
            switch (inspectionSortOrder)
            {
            case "CarId_desc":
                inspections = inspections.OrderByDescending(inspection => inspection.CarId);
                break;

            case "InspectionDate":
                inspections = inspections.OrderBy(inspection => inspection.InspectionDate);
                break;

            case "InspectionDate_desc":
                inspections = inspections.OrderByDescending(inspection => inspection.InspectionDate);
                break;

            case "Comments":
                inspections = inspections.OrderBy(inspection => inspection.Comments);
                break;

            case "Comments_desc":
                inspections = inspections.OrderByDescending(inspection => inspection.Comments);
                break;

            case "NextInspectionYears":
                inspections = inspections.OrderBy(inspection => inspection.NextInspectionYears);
                break;

            case "NextInspectionYears_desc":
                inspections = inspections.OrderByDescending(inspection => inspection.NextInspectionYears);
                break;

            default:
                inspections = inspections.OrderBy(inspection => inspection.CarId);
                break;
            }

            var userWithCarViewModel = new UserWithCarViewModel()
            {
                User        = userModel,
                Cars        = cars.ToList(),
                Inspections = inspections.ToList()
            };

            return(View(userWithCarViewModel));
        }