216 lines
6.9 KiB
C#
216 lines
6.9 KiB
C#
using Magazyn.DataModels;
|
|
using Magazyn.Views;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net.Http;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Navigation;
|
|
using System.Windows.Shapes;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
using System.Net;
|
|
using Magazyn.Windows;
|
|
using Magazyn.Tools;
|
|
using System.Net.NetworkInformation;
|
|
using System.Configuration;
|
|
|
|
namespace Magazyn
|
|
{
|
|
public partial class MainWindow : Window
|
|
{
|
|
|
|
public int size = 4;
|
|
public int page = 0;
|
|
|
|
bool firstPage;
|
|
bool lastPage;
|
|
bool netConn;
|
|
|
|
HttpClient client;
|
|
|
|
Size windowSize;
|
|
|
|
string serverUrl;
|
|
|
|
public MainWindow()
|
|
{
|
|
InitializeComponent();
|
|
|
|
serverUrl = ConfigurationManager.AppSettings.Get("serverUrl");
|
|
|
|
client = new HttpClient();
|
|
this.Loaded += MainWindowLoaded;
|
|
netConn = checkInternetConnection();
|
|
if (netConn)
|
|
netStatus.Text = "Połączony";
|
|
else
|
|
netStatus.Text = "Rozłączony";
|
|
}
|
|
|
|
private void MainWindowLoaded(object sender, EventArgs e)
|
|
{
|
|
RefreshListOfFruits();
|
|
windowSize = new Size(this.Width, this.Height);
|
|
this.SizeChanged += Window_SizeChanged;
|
|
}
|
|
|
|
private void FruitViewSaveChangingAmountOfFruits(int amountChanged, Fruit fruit)
|
|
{
|
|
string json = "{\"id\": " + fruit.Id.ToString() + ", \"change\": " + amountChanged.ToString() + " }";
|
|
|
|
Task<HttpResponseMessage> response = client.PostAsync(serverUrl+"product/change-quantity", new StringContent(json, Encoding.UTF8, "application/json"));
|
|
while (response.IsCompleted != true) ;
|
|
|
|
if (response.Result.StatusCode == HttpStatusCode.BadRequest)
|
|
{
|
|
JObject data = JObject.Parse(response.Result.Content.ReadAsStringAsync().Result.ToString());
|
|
|
|
ErrorWindow window;
|
|
|
|
if (data["message"].ToString().Contains("Too low"))
|
|
{
|
|
window = new ErrorWindow("Wystąpił błąd niedomiaru. Próbujesz usunąć więcej owoców niż masz w magazynie.");
|
|
}
|
|
else if (data["message"].ToString().Contains("Over max"))
|
|
{
|
|
window = new ErrorWindow("Wystąpił błąd nadmiaru. Próbujesz dodać więcej owoców niż pomieści magazyn.");
|
|
}
|
|
else
|
|
{
|
|
window = new ErrorWindow("Nieznany błąd.");
|
|
}
|
|
window.Owner = this;
|
|
window.ShowDialog();
|
|
}
|
|
|
|
RefreshListOfFruits();
|
|
}
|
|
|
|
private void RefreshListOfFruits()
|
|
{
|
|
if (netConn)
|
|
{
|
|
pageBlock.Text = (page+1).ToString();
|
|
|
|
Task<HttpResponseMessage> response = client.GetAsync(serverUrl+"get-all?page=" + page.ToString() + "&size=" + size.ToString() + "&search=" + ((string.IsNullOrEmpty(searchBox.Text) || string.IsNullOrWhiteSpace(searchBox.Text)) ? "none" : searchBox.Text) );
|
|
while (response.IsCompleted != true) ;
|
|
|
|
if (response.Result.StatusCode != HttpStatusCode.OK)
|
|
{
|
|
ErrorWindow window = new ErrorWindow("Nastąpił błąd połączenia z serwerem.");
|
|
window.Owner = this;
|
|
window.ShowDialog();
|
|
|
|
page = 0;
|
|
|
|
return;
|
|
}
|
|
|
|
string responseString = response.Result.Content.ReadAsStringAsync().Result;
|
|
|
|
JObject replay = JObject.Parse(responseString);
|
|
|
|
firstPage = bool.Parse(replay["first"].ToString());
|
|
lastPage = bool.Parse(replay["last"].ToString());
|
|
|
|
Fruit[] fruits = JsonConvert.DeserializeObject<Fruit[]>(replay["content"].ToString());
|
|
|
|
UpdateListOfFruits(fruits);
|
|
}
|
|
}
|
|
|
|
private void UpdateListOfFruits(Fruit[] list)
|
|
{
|
|
fruitList.Items.Clear();
|
|
|
|
foreach (Fruit item in list)
|
|
{
|
|
FruitView fruitView = new FruitView(item);
|
|
fruitView.SaveChangingAmountOfFruits += FruitViewSaveChangingAmountOfFruits;
|
|
fruitList.Items.Add(fruitView);
|
|
}
|
|
}
|
|
|
|
private WarehousePrice GetWarehousePrice()
|
|
{
|
|
Task<HttpResponseMessage> response = client.GetAsync(serverUrl+"get-price-of-all");
|
|
while (response.IsCompleted != true) ;
|
|
|
|
WarehousePrice price = JsonConvert.DeserializeObject<WarehousePrice>(response.Result.Content.ReadAsStringAsync().Result.ToString());
|
|
|
|
return price;
|
|
}
|
|
|
|
private void Value_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
ValueWindow window = new ValueWindow(GetWarehousePrice().Price);
|
|
window.Owner = this;
|
|
window.ShowDialog();
|
|
}
|
|
|
|
private void prevButton_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (firstPage != true) page--;
|
|
RefreshListOfFruits();
|
|
}
|
|
|
|
private void nextButton_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (lastPage != true) page++;
|
|
RefreshListOfFruits();
|
|
}
|
|
|
|
private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
|
|
{
|
|
Size size = e.NewSize;
|
|
|
|
if( Math.Abs(windowSize.Height - size.Height) >= 64 )
|
|
{
|
|
//size -> number of elementy by page
|
|
this.size = (int)((size.Height - 124) / 80);
|
|
page = 0;
|
|
windowSize = size;
|
|
RefreshListOfFruits();
|
|
}
|
|
}
|
|
|
|
private void fruitListMouseDoubleClick(object sender, MouseButtonEventArgs e)
|
|
{
|
|
if (fruitList.SelectedItem != null)
|
|
{
|
|
InfoWindow window = new InfoWindow((fruitList.SelectedItem as FruitView).fruit);
|
|
window.Owner = this;
|
|
window.ShowDialog();
|
|
}
|
|
}
|
|
|
|
private Boolean checkInternetConnection()
|
|
{
|
|
try
|
|
{
|
|
return new Ping().Send("www.google.com").Status == IPStatus.Success;
|
|
} catch
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
|
|
{
|
|
page = 0;
|
|
RefreshListOfFruits();
|
|
}
|
|
}
|
|
}
|
|
|