public async Task <IActionResult> DeleteCarReservationWithFlight(int id)
        {
            try
            {
                FlightReservation fRes = await context.FlightReservations.FindAsync(id);

                Flight flight = await context.Flights.FindAsync(fRes.FlightId);

                ReservationCar cRes = await context.ReservationCar.SingleOrDefaultAsync(x => x.IdUser == fRes.UserId && x.Day1 == flight.TakeOff);

                if (cRes != null)
                {
                    context.ReservationCar.Remove(cRes);
                    await context.SaveChangesAsync();
                }
                else
                {
                    return(Ok());
                }

                return(Ok());
            }catch (Exception e)
            {
                return(NoContent());
            }
        }
        public async Task <IActionResult> CreateReservation(FilterCar filterCar)
        {
            if (filterCar.City1 != "" && filterCar.City2 != "" && filterCar.endDay != null && filterCar.startDay != null && filterCar.Mark != "" && filterCar.Number.ToString() != "")
            {
                ReservationCar rc = new ReservationCar();

                rc.City1 = filterCar.City1;
                rc.City2 = filterCar.City2;
                rc.Day1  = filterCar.startDay;
                rc.Day2  = filterCar.endDay;
                // rc.Car = filterCar.Id;

                //ApplicationUser user = await _userManager.Users.Include(x => x.ReservationCars).ThenInclude(x => x.Car).ThenInclude(x => x.Reservations).SingleOrDefaultAsync(x => x.Id == filterCar.Id);
                // var pomUser = _userManager.Users.Include(x => x.ReservationCars).ThenInclude(x => x.Car).SingleOrDefault(x => x.Id == filterCar.IdUser);
                var pomCar = context.Cars.Include(x => x.CarCompany).ToList().SingleOrDefault(x => x.Id == filterCar.Id);

                var pomUser = await _userManager.FindByIdAsync(filterCar.IdUser);


                rc.IdCar     = pomCar.Id;
                rc.IdUser    = pomUser.Id;
                rc.IdCompany = pomCar.CarCompany.Id.ToString();

                TimeSpan t = filterCar.endDay - filterCar.startDay;

                var elapsedDays = Math.Abs(t.Days);

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

                rc.Price = price;

                context.ReservationCar.Add(rc);

                bool saveFailed;

                do
                {
                    saveFailed = false;
                    try
                    {
                        await context.SaveChangesAsync();
                    }
                    catch (DbUpdateConcurrencyException ex)
                    {
                        saveFailed = true;
                        return(null);
                    }
                    catch (Exception e)
                    {
                        throw;
                    }
                } while (saveFailed);

                return(Ok());
            }
            else
            {
                return(BadRequest());
            }
        }
Exemplo n.º 3
0
        public async Task <ReservationCar> SetReservation(CarReservation parameters)
        {
            var car = await repo.GetOneCar(parameters.SelectedEnterprise.Id, parameters.SelectedCar.Id);

            var user = await repo5.GetUserAsync(parameters.Username);

            var temp  = new ReservationCar();
            var temp2 = new UserCarReservation();

            temp2.SelectedEnterprise = new Enterprise();
            temp2.SelectedCar        = new Car();
            temp2.RealizedPackage    = new SpecialOffer();

            temp2.IsRated         = parameters.IsRated;
            temp2.NumberOfDays    = parameters.NumberOfDays;
            temp2.Price           = parameters.Price;
            temp2.RealizedPackage = parameters.RealizedPackage;
            temp2.DateTo          = parameters.DateTo;
            temp2.DateFrom        = parameters.DateFrom;
            temp2.RentedDay       = parameters.RentedDay;

            temp.IsRated      = parameters.IsRated;
            temp.NumberOfDays = parameters.NumberOfDays;
            temp.Price        = parameters.Price;

            temp.RealizedPackage     = parameters.RealizedPackage;
            temp.DateTo              = parameters.DateTo;
            temp.DateFrom            = parameters.DateFrom;
            temp.RentedDay           = parameters.RentedDay;
            temp2.SelectedCar        = parameters.SelectedCar;
            temp2.SelectedEnterprise = parameters.SelectedEnterprise;

            car.Reservations.Add(temp);

            //try
            //{
            await unitOfWork.CompleteAsync();

            // }
            //catch
            //{
            //return null;
            //}
            var ret = SetForUser(temp2, user);

            return(temp);
        }
        public async Task <IActionResult> CancelCarReservation(string id)
        {
            try
            {
                ReservationCar res = await context.ReservationCar.FindAsync(id);

                TimeSpan ts = res.Day1 - DateTime.Now;

                if (ts.TotalDays >= 2)
                {
                    context.ReservationCar.Remove(res);
                    await context.SaveChangesAsync();
                }

                return(Ok());
            }catch (Exception e)
            {
                return(NoContent());
            }
        }
Exemplo n.º 5
0
        public async Task <ReservationCar> SetReservationForDiscount(CarReservation parameters)
        {
            var car = await repo.GetOneCar(parameters.SelectedEnterprise.Id, parameters.SelectedCar.Id);

            var temp = new ReservationCar();

            temp.IsRated      = parameters.IsRated;
            temp.NumberOfDays = parameters.NumberOfDays;
            temp.Price        = parameters.Price;

            temp.RealizedPackage = parameters.RealizedPackage;
            temp.DateTo          = parameters.DateTo;
            temp.DateFrom        = parameters.DateFrom;
            temp.RentedDay       = parameters.RentedDay;


            foreach (var discount in car.Discounts.ToList())
            {
                if (temp.DateFrom == discount.DiscountFrom && temp.DateTo == discount.DiscountTo)
                {
                    car.Discounts.Remove(discount);
                }
            }

            car.Reservations.Add(temp);
            try
            {
                await unitOfWork.CompleteAsync();
            }
            catch
            {
                return(null);
            }

            return(temp);
        }
        public async Task <IActionResult> CreateFastRate(DiscountUser discountUser)
        {
            ReservationCar rc = new ReservationCar();

            var discountRez = context.DiscountCars.Find(discountUser.IdCar);

            var daLiPostoji = context.ReservationCar.ToList();

            var postoji = daLiPostoji.Find(x => x.IdDiscountCar == discountRez.Id);

            if (postoji != null)
            {
                return(BadRequest());
            }

            else
            {
                var car = context.Cars.Include(x => x.CarCompany).SingleOrDefault(x => x.Id == discountRez.carId);

                rc.Day1  = discountRez.StartDay;
                rc.Day2  = discountRez.EndDay;
                rc.City1 = car.CarCompany.Address;
                rc.City2 = car.CarCompany.Address;


                var pomUser = await userManager.FindByIdAsync(discountUser.IdUser);


                rc.IdCar     = car.Id;
                rc.IdUser    = pomUser.Id;
                rc.IdCompany = car.CarCompany.Id.ToString();

                TimeSpan t = discountRez.StartDay - discountRez.EndDay;

                var elapsedDays = Math.Abs(t.Days);

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

                rc.Price         = price;
                rc.IdDiscountCar = discountRez.Id;

                context.ReservationCar.Add(rc);

                bool saveFailed;

                do
                {
                    saveFailed = false;
                    try
                    {
                        await context.SaveChangesAsync();
                    }
                    catch (DbUpdateConcurrencyException ex)
                    {
                        saveFailed = true;
                        return(null);
                    }
                    catch (Exception e)
                    {
                        throw;
                    }
                } while (saveFailed);
            }
            return(Ok());
        }