예제 #1
0
        async void LoadAdvertMessage(AdvertShort advertShort, bool dbLoad = false)
        {
            if (advertShort == null)
            {
                throw new NullReferenceException("LoadAdvertMessage => advertShort == null !");
            }
            if (advertShort.AdverIDinRzeszowiak == 0)
            {
                throw new ArgumentException("LoadAdvertMessage => advertShort.AdverIDinRzeszowiak == 0");
            }

            _lastAdvertShort = advertShort;
            ErrorMessage     = String.Empty;
            Activity         = true;

            CopyAdverToViewModel(new Advert());

            Advert _advert;

            if (!dbLoad)
            {
                _advert = await _rzeszowiakRepository.GetAdvertAsync(advertShort);
            }
            else
            {
                _advert = await _setting.GetFavoriteAdvertDBAsync(advertShort);
            }

            if (_advert == null)
            {
                if (!dbLoad)
                {
                    ErrorMessage = "Błąd podczas ładowania strony.\nSprawdź połączenie internetowe i spróbuj ponownie.";
                }
                else
                {
                    ErrorMessage = "Błąd podczas wczytywania ogłoszenia z bazy danych.\nSkontaktuj się z deweloperem aplikacji.";
                }
                MailStatus = MailStatusEnum.email_default;
            }
            else
            {
                CopyAdverToViewModel(_advert);
                LastSendMailDate = await _setting.LastMailSendDateAsync(_advert);

                IsFavorite = await _setting.IsAdvertInDBAsync(_advert);

                if (LastSendMailDate.IsSend())
                {
                    MailStatus = MailStatusEnum.email_send;
                }
                else
                {
                    MailStatus = MailStatusEnum.email_default;
                }
            }
            Activity = false;
        }
예제 #2
0
        public PreviewViewModel(INavigationService navigationService, IRzeszowiak RzeszowiakRepository,
                                IRzeszowiakImageContainer rzeszowiakImageContainer, IPageDialogService pageDialog,
                                ISetting setting, IDependencyService dependencyService, IEventAggregator eventAggregator)
        {
            _rzeszowiakRepository = RzeszowiakRepository ?? throw new NullReferenceException("IRzeszowiakRepository RzeszowiakRepository == null !");
            _navigationService    = navigationService ?? throw new NullReferenceException("INavigationService navigationService == null !");
            _pageDialog           = pageDialog ?? throw new NullReferenceException("IPageDialogService pageDialog == null !");
            _imageContainer       = rzeszowiakImageContainer ?? throw new NullReferenceException("IRzeszowiakImageContainer rzeszowiakImageContainer == null !");
            _setting           = setting ?? throw new NullReferenceException("ISetting setting == null !");
            _dependencyService = dependencyService ?? throw new NullReferenceException("IDependencyService dependencyService == null !");
            _eventAggregator   = eventAggregator ?? throw new NullReferenceException("IEventAggregator eventAggregator == null !");
            _imageContainer.OnDownloadFinish += ImageDownloadFinish;

            ImageURLsList.CollectionChanged  += (s, e) => { OnPropertyChanged("ImageVisible"); };
            AdditionalData.CollectionChanged += (s, e) => { OnPropertyChanged("AdditionalData"); };

            OpenAdvertPage = new Command(() =>
            {
                if (_lastAdvert?.URL?.Length > 0)
                {
                    _dependencyService.Get <IToast>().Show("Otwieram strone ogłoszenia");
                    Device.OpenUri(new Uri(_lastAdvert?.URL));
                }
            });

            RefreshAdvert = new Command(() =>
            {
                if (_lastAdvertShort != null)
                {
                    _dependencyService.Get <IToast>().Show("Odświeżam ogłoszenie");
                    LoadAdvertMessage(_lastAdvertShort);
                }
            });

            MailAdvert = new Command(async() =>
            {
                Debug.Write("MailAdvert");
                if (MailStatus == MailStatusEnum.email_creating)
                {
                    if (LastSendMailDate.IsSend())
                    {
                        MailStatus = MailStatusEnum.email_send;
                    }
                    else
                    {
                        MailStatus = MailStatusEnum.email_default;
                    }
                    return;
                }

                if (!_setting.IsUserMailCorrect)
                {
                    await _pageDialog.DisplayAlertAsync(_setting.GetAppNameAndVersion, "Nie można wysłać wiadomości.\nUzupełnij w ustawieniach aplikacji swój adres email.", "OK");
                    return;
                }

                if (!CanSendMail())
                {
                    await _pageDialog.DisplayAlertAsync(_setting.GetAppNameAndVersion, "Nie można narazie wysłać wiadomości.", "OK");
                    return;
                }

                if (_lastAdvert?.EmailToken.Length != 10)
                {
                    await _pageDialog.DisplayAlertAsync(_setting.GetAppNameAndVersion, "Problem z wysłaniem wiadomości. Odśwież ogłoszenie.", "OK");
                    return;
                }

                MailStatus = MailStatusEnum.email_creating;
                ScrollToButtom?.Invoke();
            });

            FavoriteAdvert = new Command(async() =>
            {
                if (_lastAdvert == null)
                {
                    return;
                }

                if (IsFavorite)
                {
                    if (await _setting.DeleteAdvertDBAsync(_lastAdvert))
                    {
                        _dependencyService.Get <IToast>().Show("Usunięto ogłoszenie z ulubionych");
                        _eventAggregator.GetEvent <AdvertDeleteFavEvent>().Publish(_lastAdvertShort);
                        IsFavorite = !IsFavorite;
                    }
                    else
                    {
                        _dependencyService.Get <IToast>().Show("Wystąpił błąd podczas usuwania ogłoszenia z ulubionych");
                    }
                }
                else
                {
                    if (await _setting.InsertOrUpdateAdvertDBAsync(_lastAdvert))
                    {
                        _eventAggregator.GetEvent <AdvertAddFavEvent>().Publish(_lastAdvert);
                        _dependencyService.Get <IToast>().Show("Dodano ogłoszenie do ulubionych");
                        IsFavorite = !IsFavorite;
                    }
                    else
                    {
                        _dependencyService.Get <IToast>().Show("Wystąpił błąd podczas dodawania ogłoszenia do ulubionych");
                    }
                }
            });

            ImageTapped = new Command <int>(async(selecteIndex) =>
            {
                if (ImageURLsList.Count == 0)
                {
                    return;
                }

                var navigationParams = new NavigationParameters();
                navigationParams.Add("ImageSelectedIndex", selecteIndex);
                navigationParams.Add("ImageList", ImageURLsList);
                await _navigationService.NavigateAsync("PreviewImagePage", navigationParams, useModalNavigation: false, animated: false);
            });

            BackButtonTapped = new Command(async() =>
            {
                await _navigationService.GoBackAsync(null, false, false);
            });


            MailSendButtonTapped = new Command <string>(async(message) =>
            {
                Debug.Write("MailSendButtonTapped");
                if (!_setting.IsUserMailCorrect)
                {
                    await _pageDialog.DisplayAlertAsync(_setting.GetAppNameAndVersion, "Nie można wysłać wiadomości.\nUzupełnij w ustawieniach aplikacji swój adres email.", "OK");
                    return;
                }

                if ((message?.Length ?? 0) == 0)
                {
                    await _pageDialog.DisplayAlertAsync(_setting.GetAppNameAndVersion, "Nie można wysłać pustej wiadomości. Weź coś napisz.", "OK");
                    return;
                }

                if (!CanSendMail())
                {
                    await _pageDialog.DisplayAlertAsync(_setting.GetAppNameAndVersion, "Nie można narazie wysłać wiadomości.", "OK");
                    return;
                }

                if (_lastAdvert?.EmailToken.Length != 10)
                {
                    await _pageDialog.DisplayAlertAsync(_setting.GetAppNameAndVersion, "Problem z wysłaniem wiadomości. Odśwież ogłoszenie.", "OK");
                    return;
                }

                MailStatus = MailStatusEnum.email_sending;

                var status = await _rzeszowiakRepository.SendUserMessage(_lastAdvert, message, _setting.UserEmail);
                if (status)
                {
                    await _setting.UpdateSendMailNoticeAsync(_lastAdvert);
                    LastSendMailDate = DateTime.Now;
                    MailStatus       = MailStatusEnum.email_send;
                    await _pageDialog.DisplayAlertAsync(_setting.GetAppNameAndVersion, "Twoja wiadomość została wysłana.", "OK");
                }
                else
                {
                    MailStatus = MailStatusEnum.email_default;
                    await _pageDialog.DisplayAlertAsync(_setting.GetAppNameAndVersion, "Twoja wiadomość nie została wysłana. Wystąpił nieoczekiwany błąd.", "OK");
                }
            });
        }