public async Task <IActionResult> UpdateCar(CarFromModel car)
        {
            //var carPom = await context.Cars.FindAsync(car.Id);

            Car carSave = new Car()
            {
                Id              = car.Id,
                Mark            = car.Mark,
                AirConditioning = car.AirConditioning,
                Fuel            = car.Fuel,
                Gearshift       = car.Gearshift,
                Seat            = car.Seat.ToString(),
                Door            = car.Door.ToString(),
                YearProduction  = car.YearProduction.ToString(),
                Bags            = car.Bags.ToString(),
                RentPerDay      = car.RentPerDay.ToString(),
                ImageCar        = car.ImageCar
            };


            context.Entry(carSave).State = EntityState.Modified;

            try
            {
                await context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                return(NotFound());
            }

            return(NoContent());
        }
        public async Task <IActionResult> AddCar(CarFromModel car)
        {
            Car carPom = new Car()
            {
                Mark            = car.Mark,
                AirConditioning = car.AirConditioning,
                Bags            = car.Bags.ToString(),
                Door            = car.Door.ToString(),
                Fuel            = car.Fuel,
                Gearshift       = car.Gearshift,
                RentPerDay      = car.RentPerDay.ToString(),
                Seat            = car.Seat.ToString(),
                YearProduction  = car.YearProduction.ToString()
            };

            var company = await context.Companies.FindAsync(car.IdCompany);

            carPom.CarCompany = (CarCompany)company;

            //   carCompany.Cars = new List<Car>();

            // car.CarCompany = carCompany;

            //  carCompany.Cars.Add(car);


            context.Cars.Add(carPom);

            await context.SaveChangesAsync();

            return(Ok());
        }
        public async Task <ActionResult <CarFromModel> > GetOneCar(string id)
        {
            var car = await context.Cars.FindAsync(id);

            CarFromModel carSend = new CarFromModel()
            {
                Id              = car.Id,
                Mark            = car.Mark,
                AirConditioning = car.AirConditioning,
                Fuel            = car.Fuel,
                Gearshift       = car.Gearshift,
                Seat            = Int32.Parse(car.Seat),
                Door            = Int32.Parse(car.Door),
                YearProduction  = Int32.Parse(car.YearProduction),
                Bags            = Int32.Parse(car.Bags),
                RentPerDay      = Int32.Parse(car.RentPerDay),
                ImageCar        = car.ImageCar
            };

            if (car == null)
            {
                return(NotFound());
            }

            return(carSend);
        }
        public async Task <ActionResult <IEnumerable <CarFromModel> > > SearchAvailableCar(FilterCar filterCar)
        {
            List <CarFromModel> carFromModels = new List <CarFromModel>();

            CarCompany cc = new CarCompany();

            var listCompany = context.BranchOffices.Include(x => x.Id_company).ToList().SingleOrDefault(x => x.Id == Int32.Parse(filterCar.Id));

            if (listCompany == null)
            {
                var company = context.Companies.Find(Int32.Parse(filterCar.Id));
                cc = (CarCompany)company;
            }
            else
            {
                cc = listCompany.Id_company;
            }



            var rezervacije = context.ReservationCar.ToList();

            List <ReservationCar> filterReservation = new List <ReservationCar>();

            var pom = context.Carcompanies.Include(x => x.Cars).ToList().SingleOrDefault(x => x.Id == cc.Id).Cars.ToList();


            //PROVERITI DA LI SU KOLA NA POPUSTU

            var listaVozilaNaPopustu = context.DiscountCars.ToList();

            foreach (var popust in listaVozilaNaPopustu)
            {
                foreach (var auto in pom)
                {
                    if (auto.Id == popust.carId)
                    {
                        var poredjenje1 = DateTime.Compare(filterCar.startDay, popust.StartDay);
                        var poredjenje2 = DateTime.Compare(filterCar.endDay, popust.StartDay);

                        if (poredjenje1 < 0 && poredjenje2 < 0)
                        {
                            continue;
                        }
                        else if (poredjenje1 > 0 && poredjenje2 > 0)
                        {
                            var poredjenje3 = DateTime.Compare(filterCar.startDay, popust.EndDay);
                            var poredjenje4 = DateTime.Compare(filterCar.endDay, popust.EndDay);

                            if (poredjenje3 > 0 && poredjenje4 > 0)
                            {
                                continue;
                            }
                            else
                            {
                                carFromModels = null;
                                return(carFromModels);
                            }
                        }
                        else
                        {
                            carFromModels = null;
                            return(carFromModels);
                        }
                    }
                }
            }



            var pom1 = pom.FindAll(x => x.Mark.ToLower() == filterCar.Mark.ToLower());

            if (pom1.Count != 0)
            {
                var pom2 = pom1.FindAll(x => x.Seat == filterCar.Number.ToString());
                if (pom2.Count != 0)
                {
                    if (context.ReservationCar.ToList().Count == 0)
                    {
                        foreach (var cars in pom2)
                        {
                            CarFromModel cfm = new CarFromModel();
                            cfm.AirConditioning = cars.AirConditioning;
                            cfm.Bags            = Int32.Parse(cars.Bags);
                            cfm.Door            = Int32.Parse(cars.Door);
                            cfm.Fuel            = cars.Fuel;
                            cfm.Gearshift       = cars.Gearshift;
                            cfm.Id             = cars.Id;
                            cfm.ImageCar       = cars.ImageCar;
                            cfm.Mark           = cars.Mark;
                            cfm.RentPerDay     = Int32.Parse(cars.RentPerDay);
                            cfm.Seat           = Int32.Parse(cars.Seat);
                            cfm.YearProduction = Int32.Parse(cars.YearProduction);
                            cfm.Rating         = cars.AverageRating.ToString();
                            carFromModels.Add(cfm);
                        }
                    }

                    else
                    {
                        foreach (var cars in pom2)
                        {
                            var rez = rezervacije.FindAll(x => x.IdCar == cars.Id);
                            Model.ReservationCar rc = new Model.ReservationCar();

                            if (rez.Count() != 0)
                            {
                                foreach (var rezervacija in rez)
                                {
                                    int result  = DateTime.Compare(filterCar.startDay, rezervacija.Day1);
                                    int result2 = DateTime.Compare(filterCar.endDay, rezervacija.Day1);

                                    if (result < 0 && result2 < 0)
                                    {
                                        continue;
                                    }
                                    else if (result > 0 && result2 > 0)
                                    {
                                        int result3 = DateTime.Compare(filterCar.startDay, rezervacija.Day2);
                                        int result4 = DateTime.Compare(filterCar.endDay, rezervacija.Day2);


                                        if (result3 > 0 && result4 > 0)
                                        {
                                            continue;
                                        }
                                        else
                                        {
                                            carFromModels = null;
                                            return(carFromModels);
                                        }
                                    }
                                    else
                                    {
                                        carFromModels = null;
                                        return(carFromModels);
                                    }
                                }

                                TimeSpan t = filterCar.endDay - filterCar.startDay;

                                var elapsedDays = t.Days;

                                var price = elapsedDays * Int32.Parse(cars.RentPerDay);

                                CarFromModel cfm = new CarFromModel();
                                cfm.AirConditioning = cars.AirConditioning;
                                cfm.Bags            = Int32.Parse(cars.Bags);
                                cfm.Door            = Int32.Parse(cars.Door);
                                cfm.Fuel            = cars.Fuel;
                                cfm.Gearshift       = cars.Gearshift;
                                cfm.Id             = cars.Id;
                                cfm.ImageCar       = cars.ImageCar;
                                cfm.Mark           = cars.Mark;
                                cfm.RentPerDay     = Int32.Parse(cars.RentPerDay);
                                cfm.Seat           = Int32.Parse(cars.Seat);
                                cfm.YearProduction = Int32.Parse(cars.YearProduction);
                                cfm.Price          = price.ToString();
                                cfm.Rating         = cars.AverageRating.ToString();
                                carFromModels.Add(cfm);
                            }

                            else
                            {
                                foreach (var car in pom2)
                                {
                                    CarFromModel cfm = new CarFromModel();
                                    cfm.AirConditioning = car.AirConditioning;
                                    cfm.Bags            = Int32.Parse(car.Bags);
                                    cfm.Door            = Int32.Parse(car.Door);
                                    cfm.Fuel            = car.Fuel;
                                    cfm.Gearshift       = car.Gearshift;
                                    cfm.Id             = car.Id;
                                    cfm.ImageCar       = car.ImageCar;
                                    cfm.Mark           = car.Mark;
                                    cfm.RentPerDay     = Int32.Parse(car.RentPerDay);
                                    cfm.Seat           = Int32.Parse(car.Seat);
                                    cfm.YearProduction = Int32.Parse(car.YearProduction);
                                    cfm.Rating         = cars.AverageRating.ToString();
                                    carFromModels.Add(cfm);
                                }
                                return(carFromModels);
                            }
                        }


                        return(carFromModels);
                    }
                }
                else
                {
                    return(carFromModels);
                }
            }
            else
            {
                return(carFromModels);
            }

            return(carFromModels);
        }