private async void btnBack_ClickAsync(object sender, EventArgs e) { if (mTxtBox_TripDate.Text != " - -") { APIService _reservationService = new APIService("reservation"); var reservations = await _reservationService.Get <List <ReservationDTO> >(new ReservationSearchRequest { TransportOfferId = _id.Value }); foreach (var item in reservations) { var req = new ReservationInsertRequest { StartTripDate = DateTime.Parse(mTxtBox_TripDate.Text), Canceled = item.Canceled, Finished = item.Finished, DateReserved = item.DateReserved, HotelOfferId = item.HotelOfferId, TransportOfferId = item.TransportOfferId, NumberOfDays = item.NumberOfDays, NumberOfPersons = item.NumberOfPersons, TotalPrice = item.TotalPrice, UserId = item.UserId }; var res = await _reservationService.Update <ReservationDTO>(item.Id, req); if (res == null) { MessageBox.Show("Problem occured while trying to update reservations", "OK"); } } } }
public async Task Init() { var currentUser = (await _userService.Get <List <UserDTO> >(new UserSearchRequest { UserName = APIService.Username })).FirstOrDefault(_ => _.UserName == APIService.Username); var reservations = await _reservationService.Get <List <ReservationDTO> >(new ReservationSearchRequest { UserId = currentUser.Id }); FirstName = currentUser.FirstName; LastName = currentUser.LastName; Picture = currentUser.Picture; foreach (var reservation in reservations) { var hOffer = await _hOfferService.GetById <HotelOfferDTO>(reservation.HotelOfferId); var hotel = await _hotelService.GetById <HotelDTO>(hOffer.Id); var tOffer = await _tOfferService.GetById <TransportOfferDTO>(reservation.TransportOfferId); var tCompany = await _tCompanyService.GetById <TransportCompanyDTO>(tOffer.TransportCompanyId); var date = DateTime.Now.Subtract(tOffer.EndDate); if (!reservation.Finished && !reservation.Canceled && date.Days == 0) { // do nothing yet reservation.Finished = true; var updateRequest = new ReservationInsertRequest { UserId = reservation.UserId, HotelOfferId = reservation.HotelOfferId, TransportOfferId = reservation.TransportOfferId, NumberOfPersons = reservation.NumberOfPersons, TotalPrice = reservation.TotalPrice, DateReserved = DateTime.Now, NumberOfDays = reservation.NumberOfDays }; var res = await _reservationService.Update <ReservationDTO>(reservation.Id, reservation); } var item = new ReservationDetailModel { Id = reservation.Id, TransportName = tCompany.TransportCompanyName, HotelName = hotel.HotelName, Canceled = reservation.Canceled ? "YES" : "NO", Finished = reservation.Finished ? "YES" : "NO", TripDate = reservation.StartTripDate != default(DateTime)?reservation.StartTripDate.ToString("dd.MM.yyyy"):"Not set ", DateReserved = reservation.DateReserved, Price = reservation.TotalPrice }; Reservations.Add(item); } }
private async void Reservation_Canceled(object sender, EventArgs e) { var button = sender as Button; var reservationId = (int)button.BindingContext; var reservation = await _reservationService.GetById <ReservationDTO>(reservationId); var tOffer = await _tOfferService.GetById <TransportOfferDTO>(reservation.TransportOfferId); if (reservation.Canceled) { await DisplayAlert("Info", "Reservation is already canceled", "OK"); } if (reservation.StartTripDate != default(DateTime)) { if (reservation.StartTripDate.Subtract(DateTime.Now).Days < 7) { await DisplayAlert("Info", "You can cancel reservation 7 days before trip", "OK"); } } else { var updateRequest = new ReservationInsertRequest { HotelOfferId = reservation.HotelOfferId, DateReserved = reservation.DateReserved, Finished = reservation.Finished, Canceled = true, NumberOfPersons = reservation.NumberOfPersons, TotalPrice = reservation.TotalPrice, TransportOfferId = reservation.TransportOfferId, UserId = reservation.UserId }; var result = await _reservationService.Update <ReservationDTO>(reservation.Id, updateRequest); await DisplayAlert("Info", (result != null)? "Successufully canceld reservation" : "Can't cancel reservation right now", "OK"); Device.BeginInvokeOnMainThread(() => { var parent = (StackLayout)button.Parent.Parent; var label = (Label)parent.Children[5]; label.Text = "Canceled: YES"; }); } }
private async Task <ReservationDTO> MakeReservation(object context) { var reservationModel = (ReservationDetailViewModel)context; //var rooms = reservationModel.Rooms; //var roomtypes = rooms.Where(_ => _.OrderedRooms != 0).ToList(); //float totalPrice,roomPrice = 0; //if (roomtypes.Count != 0) //{ // foreach (var room in roomtypes) // { // NumberOfPersons += (room.OrderedRooms * room.NumberOfPeople); // roomPrice += (room.Price * room.OrderedRooms); // } //} //totalPrice = roomPrice + reservationModel.TransportOffer.tOffer.Price; var user = (await _userService.Get <List <UserDTO> >(new UserSearchRequest { UserName = APIService.Username })) .FirstOrDefault(_ => _.UserName == APIService.Username); ReservationInsertRequest request = new ReservationInsertRequest() { UserId = user.Id, HotelOfferId = reservationModel.HotelOffer.hOffer.Id, TransportOfferId = reservationModel.TransportOffer.tOffer.Id, NumberOfPersons = NumberOfPersons, TotalPrice = TotalPrice, DateReserved = DateTime.Now, NumberOfDays = reservationModel.NumberOfDays }; var result = await _reservationService.Insert <ReservationDTO>(request); if (result != null) { var hotel = await _hotelService.GetById <HotelDTO>(reservationModel.HotelOffer.hOffer.HotelId); var transport = await _tCompanyService.GetById <TransportCompanyDTO>(reservationModel.TransportOffer.tOffer.TransportCompanyId); hotel.TotalVisits += request.NumberOfPersons; transport.TotalReservations += request.NumberOfPersons; var hotelUpdate = new HotelInsertRequest() { CityId = hotel.CityId, HotelAddress = hotel.HotelAddress, HotelName = hotel.HotelName, TotalVisits = hotel.TotalVisits }; await _hotelService.Update <HotelDTO>(hotel.Id, hotelUpdate); var transportUpdate = new TransportCompanyInsertRequest { TransportTypeId = transport.TransportTypeId, IsActive = transport.IsActive, Picture = transport.Picture, TransportCompanyName = transport.TransportCompanyName, TotalReservations = transport.TotalReservations }; await _tCompanyService.Update <TransportCompanyDTO>(transport.Id, transportUpdate); await Application.Current.MainPage.DisplayAlert("Info", "Successufully added reservation", "Ok"); } else { await Application.Current.MainPage.DisplayAlert("Info", "Error occured while adding reservation, please check your inputs", "Ok"); } return(result); }