using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
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;
namespace StoreServer
{
///
/// Interaction logic for MonitoringCashierPage.xaml
///
public partial class MonitoringCashierPage : Page
{
public List WorkShiftOnCashier = new List();
public MonitoringCashierPage()
{
InitializeComponent();
foreach (var item in Helper.FindStore.Cashier)
{
WorkShiftOnCashier.Add(new WorkShift
{
StartDateAndTimeWork = null,
EndDateAndTimeWork = null,
Cashier = item,
EmployeeInStore = null
});
}
ListCashier.ItemsSource = WorkShiftOnCashier;
StartSocketServer();
StartHttpServer();
}
public void StartWorkCashier(int CashierID, EmployeeInStore AuthEmployee)
{
var CurrentWorkShift = WorkShiftOnCashier.FirstOrDefault(x => x.Cashier.CashierID == CashierID);
CurrentWorkShift.StartDateAndTimeWork = DateTime.Now;
CurrentWorkShift.EmployeeInStore = AuthEmployee;
ListCashier.ItemsSource = null;
ListCashier.ItemsSource = WorkShiftOnCashier;
}
public async void StartSocketServer()
{
string IDStore = Helper.FindStore.StoreID.ToString();
IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), Convert.ToInt32("102" + IDStore));
Socket Listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Listener.Bind(iPEndPoint);
Listener.Listen(10);
while (true)
{
Socket SocketClient = await Listener.AcceptAsync();
StringBuilder stringBuilder = new StringBuilder();
byte[] data = new byte[256];
int bytes = 0;
do
{
bytes = SocketClient.Receive(data, data.Length,0);
stringBuilder = stringBuilder.Append(Encoding.UTF8.GetString(data, 0, bytes));
} while (SocketClient.Available >0);
string Message = stringBuilder.ToString();
if (Message.Contains("Code cashier="))
{
int NumberCashier = Convert.ToInt32(Message.Split(';')[0].Split('=')[1]);
var FindCashier = DB.db.Cashier.FirstOrDefault(x => x.IDStore == Helper.FindStore.StoreID && x.CashierID == NumberCashier);
if (FindCashier == null)
{
byte[] buffer = Encoding.UTF8.GetBytes("Магазин не поддерживает кассу с таким номером");
SocketClient.Send(buffer);
SocketClient.Shutdown(SocketShutdown.Both);
SocketClient.Close();
}
else
{
string CodeEmployee = Message.Split('=')[2];
var FindEmployee = DB.db.EmployeeInStore.FirstOrDefault(x => x.Employee.Code == CodeEmployee && x.IDStore == Helper.FindStore.StoreID);
if (FindEmployee == null)
{
byte[] buffer = Encoding.UTF8.GetBytes("Сотрудник не найден");
SocketClient.Send(buffer);
SocketClient.Shutdown(SocketShutdown.Both);
SocketClient.Close();
}
else
{
StartWorkCashier(FindCashier.CashierID, FindEmployee);
byte[] buffer = Encoding.UTF8.GetBytes("Добро пожаловать");
SocketClient.Send(buffer);
SocketClient.Shutdown(SocketShutdown.Both);
SocketClient.Close();
}
}
}
}
}
public async void StartHttpServer()
{
HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://127.0.0.2:" + Helper.FindStore.StoreID.ToString() + "/");
listener.Start();
while (true)
{
HttpListenerContext context = await listener.GetContextAsync();
HttpListenerRequest request = context.Request;
}
}
}
}