Ejemplo n.º 1
0
        public async Task <BookedFlight> UpdateAsync(BookedFlight entity)
        {
            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    var existing = await _context.BookedFlights.FirstOrDefaultAsync(x => x.Id == entity.Id) ?? throw new Exception("Booked flight with given identifier not found.");

                    _context.Entry(existing).CurrentValues.SetValues(entity);
                    await _context.SaveChangesAsync();

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new DbUpdateException("There was an issue updating item in the Database." + e.Message, e);
                }
            }

            return(await _context.BookedFlights
                   .AsNoTracking()
                   .Include(x => x.BookingStatus)
                   .Include(x => x.Flight)
                   .Include(x => x.UserProfile)
                   .FirstOrDefaultAsync(x => x.Id == entity.Id));
        }
Ejemplo n.º 2
0
        public async Task <BookedFlightDto> Create(int flightId, int seatNumber, int userId)
        {
            var existing = await _flightRepository.GetAsync(flightId);

            if (existing == null)
            {
                throw new Exception("Flight with given id not found");
            }

            if (!DateValidation(existing))
            {
                throw new Exception("Booking must be 72 hours before the flight.");
            }

            if (!SeatValidation(existing, seatNumber))
            {
                throw new Exception("Number of booked seats exceeds free seats.");
            }


            var newEntity = new BookedFlight()
            {
                BookingStatusId = (int)BookingStatusEnum.Submited, FlightId = flightId, BookSeats = seatNumber, UserProfileId = userId
            };
            var newEntityId = await _repository.CreateAsync(newEntity);

            var bookedFlight = await _repository.GetAsync(newEntityId);

            return(_mapper.Map <BookedFlightDto>(bookedFlight));
        }
Ejemplo n.º 3
0
        public async Task <int> CreateAsync(BookedFlight entity)
        {
            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    var result = await _context.BookedFlights.AddAsync(entity);

                    await _context.SaveChangesAsync();

                    transaction.Commit();

                    return(result.Entity.Id);
                }
                catch (DbUpdateException e)
                {
                    transaction.Rollback();
                    throw new DbUpdateException("There was an issue adding to Database", e);
                }
            }
        }
        private void btnSaveBooked_Click(object sender, RoutedEventArgs e)
        {
            BookedFlight booked = null;

            if (action == ActionState.New)
            {
                try
                {
                    Client client = (Client)cmbClients.SelectedItem;
                    Flight flight = (Flight)cmbFlights.SelectedItem;
                    //instantiem Order entity
                    booked = new BookedFlight()
                    {
                        ClientId = client.Id,
                        FlightId = flight.Id
                    };
                    //adaugam entitatea nou creata in context
                    ctx.BookedFlights.Add(booked);
                    clientBookedFlightsViewSource.View.Refresh();
                    //salvam modificarile
                    ctx.SaveChanges();
                }
                catch (DataException ex)
                {
                    MessageBox.Show(ex.Message);
                }



                btnNewBooked.IsEnabled    = true;
                btnEditBooked.IsEnabled   = true;
                btnDeleteBooked.IsEnabled = true;

                btnSaveBooked.IsEnabled   = false;
                btnCancelBooked.IsEnabled = false;

                bookedFlightsDataGrid.IsEnabled = true;

                btnPreviousBooked.IsEnabled = true;
                btnNextBooked.IsEnabled     = true;

                cmbClients.IsEnabled = true;
                cmbFlights.IsEnabled = true;
            }
            else
            {
                if (action == ActionState.Edit)
                {
                    dynamic selectedBookedFlight = bookedFlightsDataGrid.SelectedItem;
                    try
                    {
                        int curr_id            = selectedBookedFlight.Id;
                        var editedBookedFlight = ctx.BookedFlights.FirstOrDefault(s => s.Id == curr_id);
                        if (editedBookedFlight != null)
                        {
                            editedBookedFlight.ClientId = Int32.Parse(cmbClients.SelectedValue.ToString());
                            editedBookedFlight.FlightId = Convert.ToInt32(cmbFlights.SelectedValue.ToString());
                            //salvam modificarile
                            ctx.SaveChanges();
                        }
                    }
                    catch (DataException ex)
                    {
                        MessageBox.Show(ex.Message);
                    }

                    // pozitionarea pe item-ul curent
                    clientViewSource.View.MoveCurrentTo(selectedBookedFlight);

                    btnNewBooked.IsEnabled    = true;
                    btnEditBooked.IsEnabled   = true;
                    btnDeleteBooked.IsEnabled = true;

                    btnSaveBooked.IsEnabled   = false;
                    btnCancelBooked.IsEnabled = false;

                    bookedFlightsDataGrid.IsEnabled = true;

                    btnPreviousBooked.IsEnabled = true;
                    btnNextBooked.IsEnabled     = true;

                    cmbClients.IsEnabled = false;
                    cmbFlights.IsEnabled = false;
                }



                else if (action == ActionState.Delete)
                {
                    try
                    {
                        dynamic selectedBookedFlight = bookedFlightsDataGrid.SelectedItem;
                        int     curr_id             = selectedBookedFlight.Id;
                        var     deletedBookedFlight = ctx.BookedFlights.FirstOrDefault(s => s.Id == curr_id);
                        if (deletedBookedFlight != null)
                        {
                            ctx.BookedFlights.Remove(deletedBookedFlight);
                            ctx.SaveChanges();
                            MessageBox.Show("Reservation Deleted Successfully", "Message");
                        }
                    }
                    catch (DataException ex)
                    {
                        MessageBox.Show(ex.Message);
                    }

                    btnNewBooked.IsEnabled    = true;
                    btnEditBooked.IsEnabled   = true;
                    btnDeleteBooked.IsEnabled = true;

                    btnSaveBooked.IsEnabled   = false;
                    btnCancelBooked.IsEnabled = false;

                    bookedFlightsDataGrid.IsEnabled = true;

                    btnPreviousBooked.IsEnabled = true;
                    btnNextBooked.IsEnabled     = true;

                    cmbClients.IsEnabled = false;
                    cmbFlights.IsEnabled = false;

                    //SetValidationBinding();
                }
            }
        }