예제 #1
0
        private async Task DownloadCommentsForArticleAsync(string objectId)
        {
            LoaderIndicator.IsRunning = true;
            LoaderIndicator.IsVisible = true;
            try
            {
                using (var HttpConnector = new HttpApiConnector().GetClient())
                {
                    var Task = await HttpConnector.GetAsync(Constants.ConnectionApiUriArtykul + "Komentarz/" + objectId);

                    if (Task.IsSuccessStatusCode)
                    {
                        JsonConvert.DeserializeObject <ObservableCollection <KomentarzModel> >(await Task.Content.ReadAsStringAsync()).OrderByDescending(x => x.Data).ToList().ForEach(x => _comments.Add(x));
                    }
                }
            }
            catch (Exception err)
            {
                await DisplayAlert("Error", "Błąd pobierania komentarzy", "Ok");
            }
            finally
            {
                LoaderIndicator.IsRunning = false;
                LoaderIndicator.IsVisible = false;
            }
        }
예제 #2
0
        public async void SendChanges(object sender, EventArgs args)
        {
            using (var HttpConnector = new HttpApiConnector().GetClient())
            {
                var PendingSend = Newtonsoft.Json.JsonConvert.SerializeObject(User);
                var Buffer      = Encoding.UTF8.GetBytes(PendingSend);
                var byteContent = new ByteArrayContent(Buffer);
                byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                HttpConnector.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Application.Current.Properties["token"].ToString());
                var response = await HttpConnector.PutAsync(Constants.ConnectionApiUriUser, byteContent);

                if (response.IsSuccessStatusCode)
                {
                    var Stream = await response.Content.ReadAsByteArrayAsync();

                    Boolean responseResult = bool.Parse(Encoding.UTF8.GetString(Stream));
                    if (responseResult)
                    {
                        await DisplayAlert("Sukces", $"Wszystkie zmiany zostały zapisane", "Ok");
                    }
                    else
                    {
                        await DisplayAlert("Error", "Nie udalo sie wprowadzic zmian", "Ok");
                    }
                }
                else
                {
                    await DisplayAlert("Error", "Nie mozna nawiazac polaczenia. Haslo nie zostało zmienione", "Ok");
                }
            }
        }
        private async void RemoveReservation(object sender, EventArgs e)
        {
            var ReservationToRemove = (sender as MenuItem).CommandParameter as RezerwacjaModel;

            using (var HttpApiConnector = new HttpApiConnector().GetClient())
            {
                var Content         = JsonConvert.SerializeObject(ReservationToRemove);
                var ByteContent     = Encoding.UTF8.GetBytes(Content);
                var ByteArrayConent = new ByteArrayContent(ByteContent);
                ByteArrayConent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                HttpApiConnector.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Application.Current.Properties["token"].ToString());
                var request = new HttpRequestMessage
                {
                    Method     = HttpMethod.Delete,
                    RequestUri = new Uri(Constants.ConnectionApiUriRezerwacja + ReservationToRemove.ObjectId),
                    Content    = ByteArrayConent
                };
                var response = await HttpApiConnector.SendAsync(request);

                if (response.IsSuccessStatusCode)
                {
                    FutureReservations.Remove(ReservationToRemove);
                }
            }
        }
예제 #4
0
        public static async Task DownloadUser()
        {
            try
            {
                using (var HttpConnector = new HttpApiConnector().GetClient())
                {
                    HttpConnector.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Application.Current.Properties["token"].ToString());
                    var response = await HttpConnector.GetAsync(Constants.ConnectionApiUriUser + "auth/");

                    if (response.IsSuccessStatusCode)
                    {
                        var Context = await response.Content.ReadAsStringAsync();

                        User = Newtonsoft.Json.JsonConvert.DeserializeObject <UserModel>(Context);
                    }
                    else
                    {
                        throw new Exception();
                    }
                }
            }
            catch (Exception err)
            {
            }
        }
예제 #5
0
        private async void ChnagePasswordClicked(object sender, EventArgs e)
        {
            Loader.IsRunning = true;
            string result = await DisplayPromptAsync("Step 1", "Wprowadz swoje haslo");

            var IsValid = await CheckPasswordIsValid(new UserModel()
            {
                Mail     = User.Mail,
                Password = UserModel.EncryotPw(result)
            });

            if (!IsValid)
            {
                await DisplayAlert("Blad", "Wprowadzone haslo jest nie prawidlowe", "Ok");

                return;
            }
            var NewPassword = await GetNewPassword();

            using (var HttpConnector = new HttpApiConnector().GetClient())
            {
                User.Password = UserModel.EncryotPw(NewPassword);
                var PendingSend = Newtonsoft.Json.JsonConvert.SerializeObject(User);
                var Buffer      = Encoding.UTF8.GetBytes(PendingSend);
                var byteContent = new ByteArrayContent(Buffer);
                byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                HttpConnector.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Application.Current.Properties["token"].ToString());
                var response = await HttpConnector.PutAsync(Constants.ConnectionApiUriUser, byteContent);

                if (response.IsSuccessStatusCode)
                {
                    var Stream = await response.Content.ReadAsByteArrayAsync();

                    Boolean responseResult = bool.Parse(Encoding.UTF8.GetString(Stream));
                    if (responseResult)
                    {
                        await DisplayAlert("Sukces", $"Haslo konta {User.Mail} zostało zmienione", "Ok");
                    }
                    else
                    {
                        await DisplayAlert("Error", "Nie udalo sie zmienic hasla", "Ok");
                    }
                }
                else
                {
                    await DisplayAlert("Error", "Nie mozna nawiazac polaczenia. Haslo nie zostało zmienione", "Ok");
                }
            }
            Loader.IsRunning = false;
        }
예제 #6
0
        public async void SetUpPickerForRestaurant()
        {
            using (var HttpConnector = new HttpApiConnector().GetClient())
            {
                var result = await HttpConnector.GetAsync(Constants.ConnectionApiUriRestauracja);

                if (result.IsSuccessStatusCode)
                {
                    var Content = await result.Content.ReadAsStringAsync();

                    _restaurants            = JsonConvert.DeserializeObject <List <RestauracjaModel> >(Content);
                    Restauracja.ItemsSource = _restaurants.Select(x => x.KodRestauracji).ToList();
                }
            }
        }
        private async Task <Boolean> LoginToApplication()
        {
            var login = loginEntry.Text;
            var pw    = passwordEntry.Text;

            User = new UserModel()
            {
                Mail     = login,
                Password = UserModel.EncryotPw(pw)
            };
            var PendingSend = Newtonsoft.Json.JsonConvert.SerializeObject(User);

            using (var HtttpClientConnector = new HttpApiConnector().GetClient())
            {
                var Buffer      = Encoding.UTF8.GetBytes(PendingSend);
                var byteContent = new ByteArrayContent(Buffer);
                byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                var response = await HtttpClientConnector.PostAsync(Constants.ConnectionApiUriUser + "login/", byteContent);

                if (!response.IsSuccessStatusCode)
                {
                    await DisplayAlert("Błąd", "Wprowadzono nie prawidłowe dane logowania", "OK");

                    return(false);
                }
                else
                {
                    var token = await response.Content.ReadAsStringAsync();

                    if (Application.Current.Properties.ContainsKey("token"))
                    {
                        Application.Current.Properties["token"] = token;
                    }
                    else
                    {
                        Application.Current.Properties.Add("token", token);
                    }
                    if (Zapamietaj.IsChecked)
                    {
                        await Application.Current.SavePropertiesAsync();
                    }
                    await Main.DownloadUser();

                    User = Main.User;
                    return(true);
                }
            }
        }
        private async void ActivateByTableCode(string result)
        {
            await DisplayAlert("Read rsponse ", $"{result}", "Ok");

            if (result.Contains('.'))
            {
                var Restaurant = result.Split('.')[0];
                var Table      = result.Split('.')[1];

                if (_rezerwacja.Stolik.KodRestauracji != Restaurant)
                {
                    await DisplayAlert("Błąd", "Rezerwacja dotyczy innej restauracji", "Ok");

                    return;
                }
                if (_rezerwacja.Stolik.NumerStolika != Int32.Parse(Table))
                {
                    await DisplayAlert("Błąd", "Rezerwacja dotyczy innego stolika", "Ok");

                    return;
                }

                _rezerwacja.Status = "Active";
                using (var HttpApiConnector = new HttpApiConnector().GetClient())
                {
                    var Content     = JsonConvert.SerializeObject(_rezerwacja);
                    var bytes       = Encoding.UTF8.GetBytes(Content);
                    var byteContent = new ByteArrayContent(bytes);
                    byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    HttpApiConnector.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Application.Current.Properties["token"].ToString());
                    var response = await HttpApiConnector.PutAsync(Constants.ConnectionApiUriRezerwacja, byteContent);

                    if (response.IsSuccessStatusCode)
                    {
                        ActivationButton.IsEnabled       = false;
                        ActivationButton.Text            = "Aktywna";
                        ActivationButton.BackgroundColor = Color.FromHex("#66ff66");
                        ActivationButton.TextColor       = Color.FromHex("#074a07");
                    }
                }
            }
        }
        private async void DownlaodUserReservations()
        {
            var TempList = new List <RezerwacjaModel>();

            using (var HttpApiConnector = new HttpApiConnector().GetClient())
            {
                var UserMail = Main.User.Mail;
                var response = await HttpApiConnector.GetAsync(Constants.ConnectionApiUriRezerwacja + UserMail);

                if (response.IsSuccessStatusCode)
                {
                    TempList = JsonConvert.DeserializeObject <List <RezerwacjaModel> >(await response.Content.ReadAsStringAsync());

                    FutureReservations = new ObservableCollection <RezerwacjaModel>(TempList.Where(x => (DateTime.Compare(x.KoniecRezerwacji, DateTime.Now.AddMinutes(5.0F)) > 0 && x.Status == "Planned") || x.Status == "Active").ToList());
                    PastReservations   = TempList.Where(x => DateTime.Compare(x.KoniecRezerwacji, DateTime.Now) < 0).ToList();

                    if (FutureReservations.Any())
                    {
                        _rezerwacja = FutureReservations.OrderBy(x => x.StartRezerwacji).First();
                        FutureReservations.Remove(_rezerwacja);
                        RezerwacjaLayout.BindingContext = _rezerwacja;
                        ReservationItemList.ItemsSource = FutureReservations;
                        if (_rezerwacja.Status == "Planned")
                        {
                            var da  = DateTime.Now;
                            var daw = _rezerwacja.StartRezerwacji.AddMinutes(-5.0F);
                            ActivationButton.IsEnabled = da >= daw;
                        }
                        else if (_rezerwacja.Status == "Active")
                        {
                            ActivationButton.Text      = "Aktywna";
                            ActivationButton.IsEnabled = false;
                        }
                    }
                    else
                    {
                        ActivationButton.IsEnabled = false;
                    }
                }
            }
        }
예제 #10
0
        private async Task <Boolean> CheckPasswordIsValid(UserModel userModel)
        {
            var PendingSend = Newtonsoft.Json.JsonConvert.SerializeObject(userModel);

            using (var HtttpClientConnector = new HttpApiConnector().GetClient())
            {
                var Buffer      = Encoding.UTF8.GetBytes(PendingSend);
                var byteContent = new ByteArrayContent(Buffer);
                byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                var response = await HtttpClientConnector.PostAsync(Constants.ConnectionApiUriUser + "login/", byteContent);

                if (!response.IsSuccessStatusCode)
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
        }
예제 #11
0
        private async Task <bool> CheckIfReservationCanBeDone(RezerwacjaModel Rezerwacja)
        {
            using (var HttpConnector = new HttpApiConnector().GetClient())
            {
                var content     = JsonConvert.SerializeObject(Rezerwacja);
                var Buffer      = Encoding.UTF8.GetBytes(content);
                var byteContent = new ByteArrayContent(Buffer);
                byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                var response = await HttpConnector.PostAsync(Constants.ConnectionApiUriRezerwacja + "Check/", byteContent);

                if (response.IsSuccessStatusCode)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
예제 #12
0
        async Task SetUpAllDrinks()
        {
            try
            {
                using (var HttpClient = new HttpApiConnector().GetClient())
                {
                    var response = await HttpClient.GetAsync(Constants.ConnectionApiUriNapoj);

                    if (response.IsSuccessStatusCode)
                    {
                        string Content = await response.Content.ReadAsStringAsync();

                        var tempList = JsonConvert.DeserializeObject <List <NapojModel> >(Content);
                        _Drinks = new ObservableCollection <NapojModel>(tempList);
                    }
                }
            }
            catch (Exception err)
            {
                await DisplayAlert("Error", "Connection refused!", "Ok");
            }
        }
예제 #13
0
        private async Task <int> DownloadArticlesToList(int v) // Liczva ostatnio pobranych
        {
            var InfTemp = new List <ArticleModel>();

            try
            {
                using (var HttpClient = new HttpApiConnector().GetClient())
                {
                    var response = await HttpClient.GetAsync(Constants.ConnectionApiUriArtykul + v);

                    if (response.IsSuccessStatusCode)
                    {
                        string Content = await response.Content.ReadAsStringAsync();

                        InfTemp = JsonConvert.DeserializeObject <List <ArticleModel> >(Content);
                    }
                }
            }
            catch (Exception err)
            {
                await DisplayAlert("Error", "Connection refused!", "Ok");

                return(0);
            }
            finally
            {
                for (int i = 0; i < (InfTemp.Count / 2); i++)
                {
                    NewsGrid.RowDefinitions.Add(new RowDefinition()
                    {
                        Height = new GridLength(200, GridUnitType.Absolute)
                    });
                }
                LoadedArticles.AddRange(InfTemp);
                ActivityIndicator.IsRunning = false;
                ActivityIndicator.IsVisible = false;
            }
            return(InfTemp.Count);
        }
예제 #14
0
        private async Task <Boolean> SendReservation(RezerwacjaModel Rezerwacja)
        {
            using (var HttpConnector = new HttpApiConnector().GetClient())
            {
                var content     = JsonConvert.SerializeObject(Rezerwacja);
                var Buffer      = Encoding.UTF8.GetBytes(content);
                var byteContent = new ByteArrayContent(Buffer);
                byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                HttpConnector.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Application.Current.Properties["token"].ToString());

                var response = await HttpConnector.PostAsync(Constants.ConnectionApiUriRezerwacja, byteContent);

                if (response.IsSuccessStatusCode)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
        private async Task <RestauracjaModel> DownlaodRestaurnatOnReservationCode(RezerwacjaModel rezerwacja)
        {
            RestauracjaModel tempRestaurantModel = null;

            try
            {
                using (var HttpConnector = new HttpApiConnector().GetClient())
                {
                    var result = await HttpConnector.GetAsync(Constants.ConnectionApiUriRestauracja);

                    if (result.IsSuccessStatusCode)
                    {
                        var Content = await result.Content.ReadAsStringAsync();

                        tempRestaurantModel = JsonConvert.DeserializeObject <List <RestauracjaModel> >(Content).ToList().First(x => x.KodRestauracji == rezerwacja.Stolik.KodRestauracji);
                    }
                }
            }
            catch (Exception er)
            {
                await DisplayAlert("Błąd", "Nie mozna pobrac miejsca docelowego", "Ok");
            }
            return(tempRestaurantModel);
        }
예제 #16
0
        private async void RegisterUser(object sender, EventArgs e)
        {
            var User = CreateUserFromParams(MailEntry.Text, PasswordEntry.Text, IsAgreedTermsOfUse.IsChecked, NameEntry.Text, SubNameEntry.Text);

            if (User == null)
            {
                return;
            }
            var PendingSend = JsonConvert.SerializeObject(User);

            try
            {
                using (var HttpClient = new HttpApiConnector().GetClient())
                {
                    var Buffer      = Encoding.UTF8.GetBytes(PendingSend);
                    var byteContent = new ByteArrayContent(Buffer);
                    byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                    var response = await HttpClient.PostAsync(Constants.ConnectionApiUriUser, byteContent);

                    if (response.IsSuccessStatusCode)
                    {
                        this.ParentPage.CurrentPage = this.ParentPage.Children[0];
                        await DisplayAlert("Sukces", "Możesz sie zalogować za pomocą wprowadzonych danych", "OK");
                    }
                    else
                    {
                        await DisplayAlert("Wystąpił błąd...", "Uzytkownik nie moze zostac dodany, ponieważ inne konto zostało zarejestrowane pod tym adresem", "OK");
                    }
                }
            }
            catch (Exception err)
            {
                await DisplayAlert("Wystąpił błąd...", err.StackTrace, "OK");
            }
        }
예제 #17
0
        private async void DeleteUserAccount(object sender, EventArgs e)
        {
            using (var HtttpClientConnector = new HttpApiConnector().GetClient())
            {
                var PendingSend = Newtonsoft.Json.JsonConvert.SerializeObject(Main.User);
                var Buffer      = Encoding.UTF8.GetBytes(PendingSend);
                var byteContent = new ByteArrayContent(Buffer);
                byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                HtttpClientConnector.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Application.Current.Properties["token"].ToString());
                var request = new HttpRequestMessage
                {
                    Method     = HttpMethod.Delete,
                    RequestUri = new Uri(Constants.ConnectionApiUriUser),
                    Content    = byteContent,
                };
                var response = await HtttpClientConnector.SendAsync(request);

                if (response.IsSuccessStatusCode)
                {
                    await DisplayAlert("Sukces", "Udalo sie usunac konto", "Ok");
                }
            }
            Logout_Clicked(null, null);
        }
예제 #18
0
        private async void Button_Clicked(object sender, EventArgs e)
        {
            LoaderIndicator.IsRunning = true;
            LoaderIndicator.IsVisible = true;
            try
            {
                var KomentObject = new KomentarzModel()
                {
                    ArtukulID = artyukul.ObjectId,
                    Tresc     = Komentarz.Text,
                    Autor     = Main.User.Mail,
                    Data      = DateTime.Now
                };
                if (!Application.Current.Properties.ContainsKey("token"))
                {
                    await DisplayAlert("Ooops", "Musisz być zalogowany aby dodać komentarz", "OK");

                    return;
                }
                if (String.IsNullOrEmpty(KomentObject.Tresc))
                {
                    await DisplayAlert("Ooops", "Nie mozesz dodac pustego komentarza", "OK");

                    return;
                }

                var PendingContext = JsonConvert.SerializeObject(KomentObject);
                using (var HttpConnector = new HttpApiConnector().GetClient())
                {
                    var Buffer      = Encoding.UTF8.GetBytes(PendingContext);
                    var byteContent = new ByteArrayContent(Buffer);
                    byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    HttpConnector.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Application.Current.Properties["token"].ToString());
                    var response = await HttpConnector.PostAsync(Constants.ConnectionApiUriArtykul + "komentarz/", byteContent);

                    if (response.IsSuccessStatusCode)
                    {
                        await DisplayAlert("Sukcess", "Dodano komentarz do artykulu", "Ok");

                        _comments.Insert(0, KomentObject);
                        //this.CommentsGrid.RowDefinitions.Add(new RowDefinition() { Height = 60 });
                        ////this.CommentsGrid.Children.Add(new Frame() { Content = new Label() { Text = KomentObject.Tresc } }, 0, this.CommentsGrid.Children.Count);
                        //this.CommentsGrid.Children.Add(new CommentView() { BindingContext = KomentObject }, 0, this.CommentsGrid.Children.Count);
                        this.Komentarz.Text = String.Empty;
                    }
                    else
                    {
                        await DisplayAlert("Error", "Blad dodania komentarza", "Ok");
                    }
                }
            }
            catch (Exception err)
            {
                await DisplayAlert("Error", "Błąd podaczas dodawanie komentarza", "Ok");
            }
            finally
            {
                LoaderIndicator.IsRunning = false;
                LoaderIndicator.IsVisible = false;
            }
        }