コード例 #1
0
        private void _printBooking(XpsDocument xpsDoc)
        {
            Logger.Log("Démarrage de l'impression");
            Thread printThread = new Thread(() =>
            {
                try
                {
                    string outDir = ConfigurationManager.AppSettings["XpsOutDir"];
                    PrintQueue defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue();
                    string jobName = $"Facture - {_clientEntity.FirstName} {_clientEntity.LastName} - {_clientEntity.BirthDate:dd/MM/yyyy}";
                    PrintSystemJobInfo xpsPrintJob = defaultPrintQueue.AddJob(jobName, $"{outDir}flowDocument.xps", false);

                    Logger.Log("Impression terminée");
                    PromptViewModel successPromptVM = new PromptViewModel("Succés", "L'impression a été effectuée.", false);
                    ViewDriverProvider.ViewDriver.ShowView <PromptViewModel>(successPromptVM);
                }
                catch (PrintJobException pje)
                {
                    Logger.Log(pje);
                }
            });

            printThread.SetApartmentState(ApartmentState.STA);
            printThread.Start();
        }
コード例 #2
0
ファイル: ClientViewModel.cs プロジェクト: yves982/Resotel
        private async Task _saveClient(ClientViewModel clientVM)
        {
            try
            {
                if (clientVM == null || clientVM.ClientEntity == null)
                {
                    throw new ArgumentException("L'argument ne peut être null et sa propriété ClientEntity non plus", nameof(clientVM));
                }
                await ClientRepository.Save(clientVM.ClientEntity.Client);

                string action = "créé";
                if (clientVM.ClientEntity.Id != 0)
                {
                    action = "mis à jour";
                }
                PromptViewModel promptVM = new PromptViewModel("Action réussie",
                                                               $"Le client {clientVM.ClientEntity.FirstName} {clientVM.ClientEntity.LastName} a été {action}.",
                                                               false
                                                               );
                ViewDriverProvider.ViewDriver.ShowView <PromptViewModel>(promptVM);
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
            }
        }
コード例 #3
0
        private async Task _saveBooking(SumUpViewModel sumUpVM)
        {
            try
            {
                bool isNew = _booking.Id == 0;
                Logger.Log($"Enregistrement de la {(isNew ? "nouvelle " : "")}réservation: {(isNew ? "" : _booking.Id.ToString())}");
                bool paymentSet = false;
                if (_hasPayment && !_hadPayment)
                {
                    sumUpVM._booking.Payment.Date = DateTime.Now;
                    paymentSet = true;
                }
                await BookingRepository.Save(sumUpVM._booking);

                Logger.Log("Enregistrement de réservation : réussi");
                _unlockEditIfNeeded();

                if (paymentSet)
                {
                    _saveBookingCommand.ChangeCanExecute();
                }

                DateRange todayRange = new DateRange {
                    Start = DateTime.Now.Date,
                    End   = DateTime.Now.Date.AddDays(1.0d)
                };

                Logger.Log("Enregistrement de réservation : Récupération des chambres disponibles");
                List <Room> availableRoomsToday = await RoomRepository.GetAvailablesBetweenAsync(todayRange);

                if (availableRoomsToday.Count < 5)
                {
                    Logger.Log("Enregistrement de réservation : Alerte -5 chambres disponibles");
                    await Mailer.SendAsync("Il y a moins de 5 chambres disponibles");
                }

                PromptViewModel successPromptVM = new PromptViewModel("Succés", "La commande a réussi", false);
                ViewDriverProvider.ViewDriver.ShowView <PromptViewModel>(successPromptVM);
            } catch (Exception ex)
            {
                Logger.Log(ex);
            }
        }
コード例 #4
0
        private async Task _cancelBooking(object arg)
        {
            Logger.Log("Annulation de réservation");
            try
            {
                int bookingPosition = _clientBookingsView.CurrentPosition;
                if (bookingPosition != -1)
                {
                    BookingEntity selectedBookingEntity = _clientBookingsView.CurrentItem as BookingEntity;
                    Logger.Log($"Annulation de réservation: ({selectedBookingEntity.Booking.Id})");

                    selectedBookingEntity.TerminatedDate = DateTime.Now.Date;
                    await BookingRepository.Save(selectedBookingEntity.Booking);

                    Logger.Log($"Annulation de réservation: réussie ({selectedBookingEntity.Booking.Id})");

                    bool refunded = selectedBookingEntity.State == BookingState.FullyCancelled;
                    if (refunded)
                    {
                        Logger.Log($"Annulation de réservation: remboursement complet ({selectedBookingEntity.Booking.Id})");
                        PromptViewModel successPromptVM = new PromptViewModel("Succés", "La réservation a été annulée.", false);
                        ViewDriverProvider.ViewDriver.ShowView <PromptViewModel>(successPromptVM);
                    }
                    else
                    {
                        Logger.Log($"Annulation de réservation: pas de remboursement ({selectedBookingEntity.Booking.Id})");
                        string          complement      = selectedBookingEntity.Payment.Ammount > 0d ? "ne sera pas remboursée" : "reste due";
                        PromptViewModel successPromptVM = new PromptViewModel("Succés", $"La réservation a été annulée, mais {complement}.", false);
                        ViewDriverProvider.ViewDriver.ShowView <PromptViewModel>(successPromptVM);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
            }
        }
コード例 #5
0
ファイル: BookingViewModel.cs プロジェクト: yves982/Resotel
        private bool _checkRoomCapacityWithBabies(BookingViewModel bookingVM)
        {
            bool success = false;

            if (_clientEntity.Bookings != null && _clientEntity.Bookings.Count > 0)
            {
                int babiesRooms, totalAdultCapacity;
                _countBabiesAndAdultsCapacity(out babiesRooms, out totalAdultCapacity);

                if (babiesRooms < _booking.BabiesCount || totalAdultCapacity < _booking.AdultsCount)
                {
                    PromptViewModel insufficientRoomsPromptVM = new PromptViewModel("Erreur",
                                                                                    $"Il n'y a pas assez de chambre pour accueillir {_booking.BabiesCount} bébés et {_booking.AdultsCount} adultes.",
                                                                                    false
                                                                                    );
                    ViewDriverProvider.ViewDriver.ShowView <PromptViewModel>(insufficientRoomsPromptVM);
                }
                else
                {
                    success = true;
                }
            }
            return(success);
        }
コード例 #6
0
ファイル: SumUpViewModel.cs プロジェクト: yves982/Resotel
        private void _printBooking(XpsDocument xpsDoc)
        {
            Logger.Log("Démarrage de l'impression");
            Thread printThread = new Thread(() =>
            {
                try
                {
                    string outDir = ConfigurationManager.AppSettings["XpsOutDir"];
                    PrintQueue defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue();
                    string jobName = $"Facture - {_clientEntity.FirstName} {_clientEntity.LastName} - {_clientEntity.BirthDate:dd/MM/yyyy}";
                    PrintSystemJobInfo xpsPrintJob = defaultPrintQueue.AddJob(jobName, $"{outDir}flowDocument.xps", false);

                    Logger.Log("Impression terminée");
                    PromptViewModel successPromptVM = new PromptViewModel("Succés", "L'impression a été effectuée.", false);
                    ViewDriverProvider.ViewDriver.ShowView<PromptViewModel>(successPromptVM);
                }
                catch (PrintJobException pje)
                {
                    Logger.Log(pje);
                }
            });

            printThread.SetApartmentState(ApartmentState.STA);
            printThread.Start();


        }
コード例 #7
0
ファイル: SumUpViewModel.cs プロジェクト: yves982/Resotel
        private async Task _saveBooking(SumUpViewModel sumUpVM)
        {
            try
            {
                bool isNew = _booking.Id == 0;
                Logger.Log($"Enregistrement de la {(isNew ? "nouvelle " : "")}réservation: {(isNew ? "" : _booking.Id.ToString())}");
                bool paymentSet = false;
                if (_hasPayment && !_hadPayment)
                {
                    sumUpVM._booking.Payment.Date = DateTime.Now;
                    paymentSet = true;
                }
                await BookingRepository.Save(sumUpVM._booking);
                Logger.Log("Enregistrement de réservation : réussi");
                _unlockEditIfNeeded();

                if (paymentSet)
                {
                    _saveBookingCommand.ChangeCanExecute();
                }

                DateRange todayRange = new DateRange {
                    Start = DateTime.Now.Date,
                    End = DateTime.Now.Date.AddDays(1.0d)
                };

                Logger.Log("Enregistrement de réservation : Récupération des chambres disponibles");
                List<Room> availableRoomsToday = await RoomRepository.GetAvailablesBetweenAsync(todayRange);

                if(availableRoomsToday.Count < 5)
                {
                    Logger.Log("Enregistrement de réservation : Alerte -5 chambres disponibles");
                    await Mailer.SendAsync("Il y a moins de 5 chambres disponibles");
                }

                PromptViewModel successPromptVM = new PromptViewModel("Succés", "La commande a réussi", false);
                ViewDriverProvider.ViewDriver.ShowView<PromptViewModel>(successPromptVM);
            } catch(Exception ex)
            {
                Logger.Log(ex);
            }
        }
コード例 #8
0
        private async Task _cancelBooking(object arg)
        {
            Logger.Log("Annulation de réservation");
            try
            {
                int bookingPosition = _clientBookingsView.CurrentPosition;
                if (bookingPosition != -1)
                {
                    BookingEntity selectedBookingEntity = _clientBookingsView.CurrentItem as BookingEntity;
                    Logger.Log($"Annulation de réservation: ({selectedBookingEntity.Booking.Id})");

                    selectedBookingEntity.TerminatedDate = DateTime.Now.Date;
                    await BookingRepository.Save(selectedBookingEntity.Booking);
                    Logger.Log($"Annulation de réservation: réussie ({selectedBookingEntity.Booking.Id})");

                    bool refunded = selectedBookingEntity.State == BookingState.FullyCancelled;
                    if (refunded)
                    {
                        Logger.Log($"Annulation de réservation: remboursement complet ({selectedBookingEntity.Booking.Id})");
                        PromptViewModel successPromptVM = new PromptViewModel("Succés", "La réservation a été annulée.", false);
                        ViewDriverProvider.ViewDriver.ShowView<PromptViewModel>(successPromptVM);
                    }
                    else
                    {
                        Logger.Log($"Annulation de réservation: pas de remboursement ({selectedBookingEntity.Booking.Id})");
                        string complement = selectedBookingEntity.Payment.Ammount > 0d ? "ne sera pas remboursée" : "reste due";
                        PromptViewModel successPromptVM = new PromptViewModel("Succés", $"La réservation a été annulée, mais {complement}.", false);
                        ViewDriverProvider.ViewDriver.ShowView<PromptViewModel>(successPromptVM);
                    }
                }
            }
            catch (Exception ex)
            {

                Logger.Log(ex);
            }
        }
コード例 #9
0
ファイル: BookingViewModel.cs プロジェクト: yves982/Resotel
        private bool _checkRoomCapacityWithBabies(BookingViewModel bookingVM)
        {
            bool success = false;
            if (_clientEntity.Bookings != null && _clientEntity.Bookings.Count > 0)
            {
                int babiesRooms, totalAdultCapacity;
                _countBabiesAndAdultsCapacity(out babiesRooms, out totalAdultCapacity);

                if (babiesRooms < _booking.BabiesCount || totalAdultCapacity < _booking.AdultsCount)
                {
                    PromptViewModel insufficientRoomsPromptVM = new PromptViewModel("Erreur",
                        $"Il n'y a pas assez de chambre pour accueillir {_booking.BabiesCount} bébés et {_booking.AdultsCount} adultes.",
                        false
                    );
                    ViewDriverProvider.ViewDriver.ShowView<PromptViewModel>(insufficientRoomsPromptVM);
                }
                else
                {
                    success = true;
                }
            }
            return success;
        }