Exemple #1
0
        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);
        }
Exemple #2
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));
            }
        }
Exemple #4
0
 /// <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;
 }
Exemple #5
0
        void OnAddTime(object sender, EventArgs e)
        {
            var res = new BookingsHelper().ExtendBooking(booking.Id.Value, container.AdditionalTime);

            if (res.Status == System.Net.HttpStatusCode.OK)
            {
                Start();
            }
        }
Exemple #6
0
        /// <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);
        }
Exemple #7
0
        /// <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));
            }
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        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);
        }
Exemple #10
0
        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");
                    }
                }
            }
        }
Exemple #12
0
        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");
            }
        }
Exemple #13
0
 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);
        }
Exemple #15
0
        /// <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"));
            }
        }
Exemple #16
0
        /// <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));
            }
        }
Exemple #19
0
        /// <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;
        }