public static int correct(Booking booking) { if (booking.IsCorrection) { return(-1); } if (booking.Date > BookingsHelper.getDateOfLastCashClosure()) { return(-2); } int newSourceAccountID = booking.TargetAccount.AccountID; int newTargetAccountID = booking.SourceAccount.AccountID; double amount = booking.Amount; string description = "#" + booking.BookingID + " " + IniParser.GetSetting("ACCOUNTING", "negativeBooking") + booking.SourceAccount.Number + " -> " + booking.TargetAccount.Number + ": " + amount + IniParser.GetSetting("APPSETTINGS", "currency"); int bookingID = Booking.Add(newSourceAccountID, newTargetAccountID, amount, null, UserSession.userAccountID, description, true); if (bookingID < 0) { return(-3); } return(0); }
/// <summary> /// Definiert das DateRangePanel /// </summary> /// <param name="dateFromProcessingFunction">Funktion, die vom Start-DatePicker bei Änderung aufgerufen wird</param> /// <param name="dateToProcessingFunction">Funktion, die vom Ende-DatePicker bei Änderung aufgerufen wird</param> /// <param name="datePickerFrom">Referenz zum darzustellenden DatePicker für Start</param> /// <param name="datePickerTo">Referenz zum darzustellenden DatePicker für Ende</param> public DateRangePanel(Action <DateTime> dateFromProcessingFunction, Action <DateTime> dateToProcessingFunction, ref DatePicker datePickerFrom, ref DatePicker datePickerTo) { this.dateFromProcessingFunction = dateFromProcessingFunction; this.dateToProcessingFunction = dateToProcessingFunction; this.datePickerFrom = datePickerFrom; this.datePickerTo = datePickerTo; Label lbFrom = new Label(); Label lbTo = new Label(); lbFrom.Content = IniParser.GetSetting("APPSETTINGS", "dateRangeFrom"); lbTo.Content = IniParser.GetSetting("APPSETTINGS", "dateRangeTo"); lbTo.Margin = new Thickness(10, 0, 0, 0); this.datePickerFrom.Width = 95; this.datePickerTo.Width = 95; this.datePickerFrom.SelectedDate = BookingsHelper.getDateOfLastCashClosure(); this.datePickerTo.SelectedDate = DateTime.Today; this.datePickerFrom.SelectedDateChanged += processDateFrom; this.datePickerTo.SelectedDateChanged += processDateTo; panel = new WrapPanel(); panel.HorizontalAlignment = HorizontalAlignment.Right; panel.VerticalAlignment = VerticalAlignment.Top; panel.Margin = new Thickness(30, 10, 20, 0); // links nur 30px wegen Platzmangel in Toolbar von Modul pSums panel.Children.Add(lbFrom); panel.Children.Add(this.datePickerFrom); panel.Children.Add(lbTo); panel.Children.Add(this.datePickerTo); }
public async Task <IActionResult> CreateNewBooking(NewBooking booking) { try { DateTime[] formatedDates = BookingsHelper.formatDates(booking.startDate, booking.endDate); booking.startDate = formatedDates[0]; booking.endDate = formatedDates[1]; List <string> errors = await BookingsHelper.validations(booking.startDate, booking.endDate, mySQLDBContext, booking.idRoom); errors.AddRange(BookingsHelper.validationsBooking(booking.startDate, booking.endDate, mySQLDBContext, booking.idRoom)); if (errors.Count != 0) { return(BadRequest(errors)); } Bookings newBooking = new Bookings { idRoom = booking.idRoom, startDate = booking.startDate, endDate = booking.endDate }; await mySQLDBContext.AddAsync(newBooking); await mySQLDBContext.SaveChangesAsync(); return(Ok(newBooking)); } catch (Exception e) { logger.LogError(e.Message); return(StatusCode(500)); } }
/// <summary> /// Datum zurücksetzen /// </summary> public void resetDateRange() { // Zeige standardmäßig alle Buchungen des jeweiligen Kontos vom letzten Kassenschluss bis jetzt an this.dateFrom = BookingsHelper.getDateOfLastCashClosure(); this.dateTo = BookingsHelper.makeDateGreat(DateTime.Today); this.datePickerFrom.SelectedDate = this.dateFrom; this.datePickerTo.SelectedDate = this.dateTo; }
void OnAddTime(object sender, EventArgs e) { var res = new BookingsHelper().ExtendBooking(booking.Id.Value, container.AdditionalTime); if (res.Status == System.Net.HttpStatusCode.OK) { Start(); } }
/// <summary> /// Datum "Von" aktualisieren /// </summary> /// <param name="dateFrom">Datum "von"</param> private void dateFromProcessingFunction(DateTime dateFrom) { this.dateFrom = BookingsHelper.makeDateSmall(dateFrom); // Filtere nach Datum List <BookingDataGridModel> bookingModels = this.bookingModelsUnchanged.Where(b => this.dateFrom < b.date && b.date < this.dateTo).ToList(); // Filtere Buchungen nach ausgewähltem Konto bookingModels = filterBookingModels(bookingModels); refreshDataGrid(bookingModels); }
/// <summary> /// Liste mit ungefilterten Daten generieren /// </summary> private void generateDataGridDataUnfiltered() { this.bookingModelsUnchanged.Clear(); IEnumerable <Booking> bookings = Booking.GetBookings(); DateTime lastCashClosure = BookingsHelper.getDateOfLastCashClosure(); foreach (var booking in bookings) { bookingModelsUnchanged.Add(new BookingDataGridModel(booking, lastCashClosure)); } }
public void BookingTest_DateStartingDuringAndEndingAfter_ReturnsA() { var newbooking = new Booking { Id = 2, ArrivalDate = new DateTime(2017, 1, 19), DepartureDate = new DateTime(2017, 1, 16), Reference = "a" }; var result = BookingsHelper.OverlappingBookingsExist(newbooking, _repository.Object); Assert.AreEqual("a", result); }
public void BookingTest_DateStartingAfter_ReturnsEmptyString() { var newbooking = new Booking { Id = 2, ArrivalDate = new DateTime(2017, 1, 21), DepartureDate = new DateTime(2017, 1, 25), Reference = "a" }; var result = BookingsHelper.OverlappingBookingsExist(newbooking, _repository.Object); Assert.AreEqual(string.Empty, result); }
async void OnCancel(object sender, EventArgs e) { var cancel = await DisplayAlert("Question?", "Are you sure you want to cancel booking?", "Yes", "No"); if (cancel) { var bk = new BookingsHelper().CancelBooking(booking.Id.Value); if (bk.Status == System.Net.HttpStatusCode.OK) { Start(); } } }
public async void OnHoldSeat(object sender, EventArgs e) { var opt = GlobalObjectsHelper.CwSearchOptions; var cw = GlobalObjectsHelper.SelectedCoworking; var cnt = opt.FreeCount; if (cnt == null) { cnt = 1; } if (opt.BeginDate == null || opt.EndWork == null || opt.BeginWork == null || opt.EndDate == null) { await DisplayAlert("Error!", "Please, select the date and time in menu above!", "Ok"); } else if (cw.SeatsAvailable < cnt) { await DisplayAlert("Error!", "No seats available!", "Ok"); } else { var booking = new Booking(); booking.BeginDate = opt.BeginDate; booking.EndDate = opt.EndDate; booking.CorrectDates(opt.BeginWork.Value, opt.EndWork.Value); booking.VisitorsCount = cnt; booking.CoworkingId = cw.Id; var token = DBHelper.Instance.GetToken(); if (token == null) { App.Current.MainPage = new SignUpPage(booking); } else { booking = new BookingsHelper().Create(booking); if (booking.Status == System.Net.HttpStatusCode.OK) { DBHelper.Instance.AddBooking(booking); //switch tab var tabs = (MainPage)App.Current.MainPage; tabs.CurrentPage = tabs.Children[1]; var bookingPage = (BookingPage)tabs.CurrentPage; bookingPage.Start(); } else { await DisplayAlert("Error!", "Unknown error occured! Please, try again later.", "Ok"); } } } }
async void OnCheckIn(object sender, EventArgs e) { var checkedBooking = new BookingsHelper().Get(booking.Id.Value); if (checkedBooking.IsVisitConfirmed.Value && !booking.IsExtendPending.Value) { container.CurBooking.VisitTime = checkedBooking.VisitTime; StartWorkTimer(); } else { await DisplayAlert("Error!", "You are not checked in at administrator!", "Ok"); } }
void OnBeginStop(object sender, EventArgs e) { Device.BeginInvokeOnMainThread(() => { var checkedBooking = new BookingsHelper().Get(booking.Id.Value); if (checkedBooking.IsVisitConfirmed.Value && !checkedBooking.IsClosed.Value && !checkedBooking.IsExtendPending.Value) { StartWorkTimer(); } else { BeforeStart.IsVisible = false; AfterStart.IsVisible = true; container.OnStop -= OnBeginStop; } }); }
/// <summary> /// Setzt in der GUI die Ausgaben dieses und des letzten Jahres. /// </summary> private void SetExpenses() { CashClosureHelper helper = new CashClosureHelper(false); int currentYear = DateTime.Now.Year; //Expenses of this year DateTime from = BookingsHelper.makeDateSmall(new DateTime(currentYear, 1, 1)); DateTime to = BookingsHelper.makeDateGreat(DateTime.Today); expensesThisYear = helper.getAllExpensesForPeriod(from, to); //Expenses of last year from = BookingsHelper.makeDateSmall(new DateTime(currentYear - 1, 1, 1)); to = BookingsHelper.makeDateGreat(new DateTime(currentYear - 1, 12, 31)); expensesLastYear = helper.getAllExpensesForPeriod(from, to); lExpensesThisYear.Content = SafeStringParser.safeParseToMoney(expensesThisYear, true); lExpensesLastYear.Content = SafeStringParser.safeParseToMoney(expensesLastYear, true); }
/// <summary> /// Löscht eine Buchung /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Delete_Click(object sender, RoutedEventArgs e) { try { int bookingID = (int)((Button)sender).CommandParameter; List <Booking> booking = Booking.GetBookings(bookingID).ToList(); Booking currentBooking = booking[0]; if (currentBooking == null) { throw new Exception(); } string date = SafeStringParser.safeParseToStr(currentBooking.Date, true); string warning = IniParser.GetSetting("ACCOUNTING", "warningBookingDelete").Replace("{0}", date); if (MessageBoxEnhanced.Warning(warning) == MessageBoxResult.No) { return; } if (currentBooking.Date <= BookingsHelper.getDateOfLastCashClosure()) { throw new Exception(IniParser.GetSetting("ERRORMSG", "bookingBeforeLastClosure")); } Booking.Delete(currentBooking.BookingID); // Refresh page generateDataGridDataUnfiltered(); refreshDataGrid(this.bookingModelsUnchanged); } catch { MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "deleteBooking")); } }
/// <summary> /// Öffnet das Formular zum Bearbeiten einer Buchung /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Edit_Click(object sender, RoutedEventArgs e) { try { int bookingID = (int)((Button)sender).CommandParameter; List <Booking> booking = Booking.GetBookings(bookingID).ToList(); Booking currentBooking = booking[0]; if (currentBooking == null) { throw new Exception(IniParser.GetSetting("ERRORMSG", "loadBooking")); } if (currentBooking.IsCorrection) { throw new Exception(IniParser.GetSetting("ERRORMSG", "correctionEdit")); } if (Booking.GetBookings().Where(b => b.IsCorrection).Where(b => b.Description.Contains("#" + currentBooking.BookingID.ToString())).ToList().Count > 0) { throw new Exception(IniParser.GetSetting("ERRORMSG", "correctionExists")); } if (currentBooking.Date <= BookingsHelper.getDateOfLastCashClosure()) { throw new Exception(IniParser.GetSetting("ERRORMSG", "bookingBeforeLastClosure")); } MainWindow mainWindow = Application.Current.MainWindow as MainWindow; Type pageType = typeof(pEditBooking); mainWindow.switchPage(IniParser.GetSetting("ACCOUNTING", "editBooking"), pageType, currentBooking); } catch (Exception ex) { MessageBoxEnhanced.Error(ex.Message); } }
public async Task <IActionResult> GetAvailabilityRoom(int idRoom, [FromQuery] DateTime startDate, [FromQuery] DateTime endDate) { try { DateTime[] formatedDates = BookingsHelper.formatDates(startDate, endDate); startDate = formatedDates[0]; endDate = formatedDates[1]; List <string> errors = await BookingsHelper.validations(startDate, endDate, mySQLDBContext, idRoom); if (errors.Count != 0) { return(BadRequest(errors)); } List <RoomAvailability> availability = BookingsHelper.GetRoomAvailability(idRoom, startDate, endDate, mySQLDBContext); return(Ok(availability)); } catch (Exception e) { logger.LogError(e.Message); return(StatusCode(500)); } }
public async Task <IActionResult> modifyBooking(Bookings booking) { try { DateTime[] formatedDates = BookingsHelper.formatDates(booking.startDate, booking.endDate); booking.startDate = formatedDates[0]; booking.endDate = formatedDates[1]; Bookings databaseBooking = await mySQLDBContext.Bookings.FindAsync(booking.id); if (databaseBooking == null) { return(NotFound()); } List <string> errors = await BookingsHelper.validations(booking.startDate, booking.endDate, mySQLDBContext, booking.idRoom); errors.AddRange(BookingsHelper.validationsBooking(booking.startDate, booking.endDate, mySQLDBContext, booking.idRoom, false, booking.id)); if (errors.Count != 0) { return(BadRequest(errors)); } databaseBooking.startDate = booking.startDate; databaseBooking.endDate = booking.endDate; await mySQLDBContext.SaveChangesAsync(); return(Ok(databaseBooking)); } catch (Exception e) { logger.LogError(e.Message); return(StatusCode(500)); } }
/// <summary> /// Methode welche für das Filtern der Ausweisinhaber verantwortlich ist. /// Diese filtert, je nach ausgewählten Attributen, die Ausweisinhaber und fügt sie dem DataGrid zu. /// </summary> private void filterPassHolder() { //Alle Ausweisinhaber holen. IEnumerable <Person> filteredPersons = Person.GetPersons(); //Nach Status filtern. switch (cbStatus.Text) { case "Aktiv": filteredPersons = filteredPersons.Where(p => p.IsActive); break; case "Inaktiv": filteredPersons = filteredPersons.Where(p => p.IsActive == false); break; case "Alle": //filteredPersons stays the same; break; } //Nach dem ausgewähltem Attribut filtern. switch (cbOther.Text) { case "Wohnort": string city = ((TextBox)wPDynamicContent[0]).Text; filteredPersons = filteredPersons.Where(p => p.City == city); break; case "Postleitzahl": // FormatException abfangen try { int zipCode = Convert.ToInt32(((TextBox)wPDynamicContent[0]).Text); filteredPersons = filteredPersons.Where(p => p.ZipCode == zipCode); } catch { MessageBox.Show("Bitte geben Sie ein korrekte Postleitzahl ein!", "Fehlerhafte Postleitzahl", MessageBoxButton.OK, MessageBoxImage.Error); return; } break; case "Staatsangehörigkeit": string nationality = ((TextBox)wPDynamicContent[0]).Text; filteredPersons = filteredPersons.Where(p => p.Nationality == nationality); break; case "Alter": string fromString = ((ComboBox)wPDynamicContent[1]).Text; string toString = ((ComboBox)wPDynamicContent[3]).Text; //Falls nichts ausgewählt wurde -> Fehler zeigen. if (fromString == "" || toString == "") { MessageBox.Show("Bitte wählen Sie ein Alter aus!", "Fehlendes Alter", MessageBoxButton.OK, MessageBoxImage.Error); return; } int from = Convert.ToInt32(fromString); int to = Convert.ToInt32(toString); filteredPersons = filteredPersons.Where(p => (p.Age >= from) && (p.Age <= to)); break; case "Ausweisgültigkeit bis max.": try { DateTime?end = ((DatePicker)wPDynamicContent[0]).SelectedDate; filteredPersons = filteredPersons.Where(p => p.ValidityEnd.CompareTo(end) <= 0); } catch { MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "common")); } break; case "Familienstand": string state = ((ComboBox)wPDynamicContent[0]).Text; filteredPersons = filteredPersons.Where(p => p.FamilyState.Name == state); break; case "Anzahl Kinder": string fromAgeString = ((ComboBox)wPDynamicContent[1]).Text; //wPDynamicContent[0] und ...[2] sind die Label "von" und "bis" string toAgeString = ((ComboBox)wPDynamicContent[3]).Text; //Falls nichts ausgewählt wurde -> Fehler zeigen. if (fromAgeString == "" || toAgeString == "") { MessageBox.Show("Bitte wählen Sie eine Anzahl aus!", "Fehlende Anzahl", MessageBoxButton.OK, MessageBoxImage.Error); return; } int fromAge = Convert.ToInt32(fromAgeString); int toAge = Convert.ToInt32(toAgeString); filteredPersons = filteredPersons.Where(p => (p.NumberOfChildren >= fromAge) && (p.NumberOfChildren <= toAge)); break; case "Letzter Einkauf": DateTime?fromDate = ((DatePicker)wPDynamicContent[1]).SelectedDate; DateTime?toDate = ((DatePicker)wPDynamicContent[3]).SelectedDate; toDate = BookingsHelper.makeDateGreat(toDate.Value); filteredPersons = filteredPersons.Where(p => (p.LastPurchase.GetValueOrDefault().CompareTo(fromDate) >= 0) && (p.LastPurchase.GetValueOrDefault().CompareTo(toDate) <= 0)); break; } //Ergebnis dem DataGrid zuführen. dGAnyStatistics.ItemsSource = filteredPersons; }