Пример #1
0
        public async Task <IActionResult> SearchCars(CarsFilterDto model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            return(Ok());
        }
Пример #2
0
        public async Task <IActionResult> SearchCars([FromQuery] CarsFilterDto filter)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var model = new SearchCarDto();
            var cars  = new List <CarForListDto>();

            if (filter.PickUpLocationId == 0 || filter.PickUpLocationId == null)
            {
                return(BadRequest());
            }
            if (filter.PickUpDate == null)
            {
                return(BadRequest());
            }
            if (filter.ReturnDate == null)
            {
                return(BadRequest());
            }

            if (filter.ReturnLocationId == 0 || filter.ReturnLocationId == null)
            {
                filter.ReturnLocationId = filter.PickUpLocationId;
            }


            //filter.paginationParams = new PaginationParams();
            //filter.paginationParams.PageSize = 2;

            var dateTimePickUpArray = filter.PickUpDate.Split(" ");
            var dateTimeReturnArray = filter.ReturnDate.Split(" ");

            var dateTimePickUp = dateTimePickUpArray[1] + " " + dateTimePickUpArray[2] + " " + dateTimePickUpArray[3] + " " + dateTimePickUpArray[4];

            var dateTimeReturn = dateTimeReturnArray[1] + " " + dateTimeReturnArray[2] + " " + dateTimeReturnArray[3] + " " + dateTimeReturnArray[4];


            var dateTimePickUpFinal = Convert.ToDateTime(dateTimePickUp);
            var dateTimeReturnFinal = Convert.ToDateTime(dateTimeReturn);


            var filterO = new CarsFilterDtoOriginal();

            filterO.PickUpLocationId = filter.PickUpLocationId;
            filterO.ReturnDate       = dateTimeReturnFinal;
            filterO.ReturnLocationId = filter.ReturnLocationId;
            filterO.PickUpDate       = dateTimePickUpFinal;
            filterO.DriverAge        = filter.DriverAge;
            filterO.paginationParams = new PaginationParams
            {
                PageSize   = filter.PageSize,
                PageNumber = filter.PageNumber
            };

            var resultAsync = await _carService.GetCarsFromSearch(filterO);

            if (resultAsync == null)
            {
                return(BadRequest("No car founded"));
            }

            var result = resultAsync.ToList();

            for (int i = 0; i < result.Count(); i++)
            {
                var carUploadPath = await _carUploadService.GetPathOfCarUploadAsync(result[i].Id);

                cars.Add(new CarForListDto
                {
                    Id              = result[i].Id,
                    CarNumber       = result[i].CarNumber,
                    BrandName       = result[i].Brand.Name,
                    ModelName       = result[i].Model.Name,
                    CarCapacity     = result[i].CarCapacity,
                    CarColor        = result[i].CarColor,
                    CarLocation     = await _locationService.GetLocationAsync((int)result[i].CarLocationId),
                    FuelType        = result[i].FuelType.Name,
                    ModelYear       = result[i].ModelYear,
                    NumberOfDoors   = result[i].NumberOfDoors,
                    TransmisionType = result[i].TransmisionType.Name,
                    PriceForDay     = Math.Round((decimal)result[i].PriceForDay, 2),
                    Description     = result[i].Description,
                    Path            = Url.Content(carUploadPath)
                });
            }

            model.Cars          = cars;
            model.PicUpLocation = await _locationService.GetLocationAsync((int)filter.PickUpLocationId);

            model.ReturnLocation = await _locationService.GetLocationAsync((int)filter.ReturnLocationId);

            model.PickUpDate       = filterO.PickUpDate;
            model.ReturnDate       = filterO.ReturnDate;
            model.PickUpLocationId = filter.PickUpLocationId;
            model.ReturnLocationId = filter.ReturnLocationId;



            Response.AddPagination(resultAsync.CurrentPage, resultAsync.PageSize, resultAsync.TotalCount, resultAsync.TotalPages);

            return(Ok(model));
        }