Ejemplo n.º 1
0
        public async Task <IActionResult> SearchCarsForRent(SearchCarsForRentParameters scfrp)
        {
            if (ModelState.IsValid)
            {
                var temp = await carService.SearchCarsForRent(scfrp);

                if (temp != null)
                {
                    return(Ok(temp));
                }
                else
                {
                    return(BadRequest(new { Message = "Something went wrong. Please, try again later." }));
                }
            }
            else
            {
                return(BadRequest(new { Message = "Invalid parameters supplied." }));
            }
        }
Ejemplo n.º 2
0
        //Rent a car u HTML
        public async Task <IEnumerable <Car> > SearchCarsForRent(SearchCarsForRentParameters scfrp)
        {
            var temp = await repo2.GetCarsOfCompanyForRent(scfrp.EnterpriseId);

            List <Car>      retValue      = new List <Car>();
            List <DateTime> datesBetween2 = new List <DateTime>();

            for (var date = scfrp.DateFrom; date <= scfrp.DateTo; date = date.AddDays(1))
            {
                datesBetween2.Add(date);
            }

            bool enterpriseLocationFrom = false;
            bool enterpriseLocationTo   = false;
            bool branchLocationFrom     = false;
            bool branchLocationTo       = false;
            bool rented = false;
            bool found  = false;

            if (temp.Address.City.ToLower() == scfrp.PickUpPlace.ToLower())
            {
                enterpriseLocationFrom = true;
            }

            if (temp.Address.City.ToLower() == scfrp.ReturnPlace.ToLower())
            {
                enterpriseLocationTo = true;
            }

            foreach (var branch in temp.Branches)
            {
                if (branch.City.ToLower() == scfrp.PickUpPlace.ToLower())
                {
                    branchLocationFrom = true;
                }

                if (branch.City.ToLower() == scfrp.ReturnPlace.ToLower())
                {
                    branchLocationTo = true;
                }
            }

            if ((branchLocationFrom == true || enterpriseLocationFrom == true) && (branchLocationTo == true || enterpriseLocationTo == true))
            {
                foreach (var car in temp.Cars)
                {
                    List <DateTime> datesBetween = new List <DateTime>();
                    foreach (var res in car.Reservations)
                    {
                        for (var date = res.DateFrom; date <= res.DateTo; date = date.AddDays(1))
                        {
                            datesBetween.Add(date);
                        }
                    }
                    if (car.Type.ToLower() != scfrp.CarType.ToLower() || Int32.Parse(scfrp.NumberOfpassengers) > car.NumberOfSeats)
                    {
                        continue;
                    }

                    foreach (var date in datesBetween)
                    {
                        foreach (var date2 in datesBetween2)
                        {
                            if (date2 == date)
                            {
                                rented = true;
                            }
                        }
                    }

                    if (rented)
                    {
                        rented = false;
                        continue;
                    }

                    if (scfrp.PriceFrom != "" && scfrp.PriceFrom != null)
                    {
                        if (Int32.Parse(scfrp.PriceFrom) > car.Price)
                        {
                            continue;
                        }
                    }

                    if (scfrp.PriceTo != "" && scfrp.PriceTo != null)
                    {
                        if (Int32.Parse(scfrp.PriceTo) < car.Price)
                        {
                            continue;
                        }
                    }

                    if (car.Discounts.Count() != 0)
                    {
                        List <DateTime> datesBetween3 = new List <DateTime>();
                        foreach (var res in car.Discounts)
                        {
                            for (var date = res.DiscountFrom; date <= res.DiscountTo; date = date.AddDays(1))
                            {
                                datesBetween3.Add(date);
                            }
                        }
                        foreach (var date1 in datesBetween3)
                        {
                            foreach (var date2 in datesBetween2)
                            {
                                if (date1 != date2)
                                {
                                    found = true;
                                }
                            }
                        }
                        if (found)
                        {
                            retValue.Add(car);
                            found = false;
                        }
                    }
                    else
                    {
                        retValue.Add(car);
                    }
                }
            }


            return(retValue);
        }