|
@@ -14,7 +14,6 @@ namespace Server
|
|
|
public static gr672_pgvEntities db = new gr672_pgvEntities();
|
|
|
static void Main(string[] args)
|
|
|
{
|
|
|
-
|
|
|
Listen();
|
|
|
Console.Read();
|
|
|
}
|
|
@@ -41,7 +40,7 @@ namespace Server
|
|
|
rootFuelInStations.Add(new RootFuelInStation() { GasStationID = item.IDGasStation, Address = item.GasStation.Address, Price = item.Price });
|
|
|
}
|
|
|
var Json = JsonConvert.SerializeObject(rootFuelInStations);
|
|
|
- byte[] buffer = System.Text.Encoding.UTF8.GetBytes(Json);
|
|
|
+ byte[] buffer = Encoding.UTF8.GetBytes(Json);
|
|
|
response.ContentLength64 = buffer.Length;
|
|
|
Stream output = response.OutputStream;
|
|
|
output.Write(buffer, 0, buffer.Length);
|
|
@@ -156,14 +155,13 @@ namespace Server
|
|
|
output.Close();
|
|
|
Console.WriteLine("Выполненно");
|
|
|
}
|
|
|
-
|
|
|
+ //Получение данных с камеры, поиск машины в БД и при её отсутствии создаём новую запись о машине
|
|
|
if (request.RawUrl.Contains("/FindOrAddCar") && request.HttpMethod == "POST")
|
|
|
{
|
|
|
StreamReader reader = new StreamReader(request.InputStream, Encoding.UTF8);
|
|
|
string Json = await reader.ReadToEndAsync();
|
|
|
DataOfCamera dataOfCamera = JsonConvert.DeserializeObject<DataOfCamera>(Json);
|
|
|
- db.DataOfCamera.Add(dataOfCamera);
|
|
|
- Car FindCar = db.Car.FirstOrDefault(x => x.CarNumber == dataOfCamera.CarNumber);
|
|
|
+ Car FindCar = db.Car.FirstOrDefault(x => x.CarNumber == dataOfCamera.CarNumber);
|
|
|
RootDataOfCar rootDataOfCar = new RootDataOfCar();
|
|
|
if (FindCar == null)
|
|
|
{
|
|
@@ -175,26 +173,29 @@ namespace Server
|
|
|
{
|
|
|
CarID = ResponseCar.CarID,
|
|
|
CarNumber = ResponseCar.CarNumber,
|
|
|
- VolumeTank = FindCar.VolumeTank,
|
|
|
+ VolumeTank = ResponseCar.VolumeTank,
|
|
|
CardOfCars = null
|
|
|
};
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- List<RootDataOfCard> CardOfCars = FindCar.IDClient is null ? null : new List<RootDataOfCard>();
|
|
|
- foreach (var item in FindCar.Client.Card.ToList())
|
|
|
+ List<RootDataOfCard> CardOfCars = new List<RootDataOfCard>();
|
|
|
+ if (FindCar.IDClient != null)
|
|
|
{
|
|
|
- CardOfCars.Add(new RootDataOfCard {
|
|
|
- CardID = item.CardID,
|
|
|
- CardExpDate = item.CardExpDate,
|
|
|
- Balance = item.Balance,
|
|
|
- CardHolder = item.Client.LastName + " " + item.Client.Name,
|
|
|
- IDCardIssuer = item.IDCardIssuer,
|
|
|
- IDCardType = item.IDCardType,
|
|
|
- NumberCard = item.NumberCard
|
|
|
- });
|
|
|
+ foreach (var item in FindCar.Client.Card.ToList())
|
|
|
+ {
|
|
|
+ CardOfCars.Add(new RootDataOfCard
|
|
|
+ {
|
|
|
+ CardID = item.CardID,
|
|
|
+ CardExpDate = item.CardExpDate,
|
|
|
+ Balance = item.Balance,
|
|
|
+ CardHolder = item.Client.LastName + " " + item.Client.Name,
|
|
|
+ IDCardIssuer = item.IDCardIssuer,
|
|
|
+ IDCardType = item.IDCardType,
|
|
|
+ NumberCard = item.NumberCard
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
rootDataOfCar = new RootDataOfCar
|
|
|
{
|
|
|
CarID = FindCar.CarID,
|
|
@@ -214,6 +215,105 @@ namespace Server
|
|
|
Console.WriteLine(Json);
|
|
|
|
|
|
}
|
|
|
+ //Получение данных о об оплате заправке автомобиля
|
|
|
+ if (request.RawUrl.Contains("PostDataOfPayment") && request.HttpMethod == "POST")
|
|
|
+ {
|
|
|
+ StreamReader streamReader = new StreamReader(request.InputStream, Encoding.UTF8);
|
|
|
+ string Json = await streamReader.ReadToEndAsync();
|
|
|
+ RootDataOfPayment dataOfPayment = JsonConvert.DeserializeObject<RootDataOfPayment>(Json);
|
|
|
+ //Запись о заправке
|
|
|
+ var RefuelingColumn = db.RefuelingColumn.FirstOrDefault(x=> x.IDGasStation == dataOfPayment.RootDataOfRefuling.GasStationID);
|
|
|
+ var RefuelingGun = db.RefuelingGun.FirstOrDefault(x => x.IDFuelType == dataOfPayment.RootDataOfRefuling.CurrentFuelID && x.IDRefuelingColumn == RefuelingColumn.RefuelingColumnID);
|
|
|
+ Refueling NewRefuling = new Refueling
|
|
|
+ {
|
|
|
+ IDCar = dataOfPayment.RootDataOfRefuling.Car.CarID,
|
|
|
+ VolumeFuel = dataOfPayment.RootDataOfRefuling.VolumeFuel,
|
|
|
+ DataOfCamera = dataOfPayment.RootDataOfRefuling.DataOfCamera,
|
|
|
+ KeySession = dataOfPayment.RootDataOfRefuling.KeySession,
|
|
|
+ IDRefulingGun = RefuelingGun.RefuelingGunID
|
|
|
+ };
|
|
|
+ db.Refueling.Add(NewRefuling);
|
|
|
+ var FindCard = db.Card.FirstOrDefault(x => x.CardID == dataOfPayment.RootDataOfCard.CardID);
|
|
|
+ string LastName = dataOfPayment.RootDataOfCard.CardHolder.Split(' ')[0];
|
|
|
+ string Name = dataOfPayment.RootDataOfCard.CardHolder.Split(' ')[1];
|
|
|
+ var FindClient = db.Client.FirstOrDefault(x => x.LastName == LastName && x.Name == Name);
|
|
|
+ //Запись об оплате
|
|
|
+ Payment NewPayment = new Payment()
|
|
|
+ {
|
|
|
+ IDRefueling = NewRefuling.RefuelingID,
|
|
|
+ PriceRefueling = dataOfPayment.PriceRefueling,
|
|
|
+ Status = dataOfPayment.Status,
|
|
|
+ TransactionCode = dataOfPayment.TransactionCode,
|
|
|
+ //Создание новой карты, если с неё раньше не производилось оплаты
|
|
|
+ Card = FindCard is null ? new Card
|
|
|
+ {
|
|
|
+ NumberCard = dataOfPayment.RootDataOfCard.NumberCard,
|
|
|
+ CardExpDate = dataOfPayment.RootDataOfCard.CardExpDate,
|
|
|
+ Balance = dataOfPayment.RootDataOfCard.Balance - dataOfPayment.PriceRefueling,
|
|
|
+ IDCardType = dataOfPayment.RootDataOfCard.IDCardType,
|
|
|
+ IDCardIssuer = dataOfPayment.RootDataOfCard.IDCardIssuer,
|
|
|
+ //Добавление нового клиента, если у него раньше не было карт
|
|
|
+ Client = FindClient is null ? new Client { LastName = LastName, Name = Name } : FindClient
|
|
|
+ } : FindCard
|
|
|
+ };
|
|
|
+ db.Payment.Add(NewPayment);
|
|
|
+ //Списание топлива
|
|
|
+ var CurrentFuelInGasStation = db.FuelTypeOnGasStation
|
|
|
+ .FirstOrDefault(x => x.IDGasStation == dataOfPayment.RootDataOfRefuling.GasStationID &&
|
|
|
+ x.IDFuelType == dataOfPayment.RootDataOfRefuling.CurrentFuelID);
|
|
|
+ CurrentFuelInGasStation.AmountOfFuel = CurrentFuelInGasStation.AmountOfFuel - dataOfPayment.RootDataOfRefuling.VolumeFuel;
|
|
|
+ //Списание средств с карты
|
|
|
+ if (FindCard != null)
|
|
|
+ {
|
|
|
+ FindCard.Balance = FindCard.Balance - dataOfPayment.PriceRefueling;
|
|
|
+ }
|
|
|
+ db.SaveChanges();
|
|
|
+ FindClient = db.Client.FirstOrDefault(x => x.LastName == LastName && x.Name == Name);
|
|
|
+ //Запись о владельце автомобиля исходя из данных карты (Если это превая оплата с банковской карты)
|
|
|
+ var FindCar = db.Car.Find(dataOfPayment.RootDataOfRefuling.Car.CarID);
|
|
|
+ if (FindCar.IDClient is null)
|
|
|
+ {
|
|
|
+ FindCar.IDClient = FindClient.ClientID;
|
|
|
+ }
|
|
|
+
|
|
|
+ //if (dataOfPayment.RootDataOfCard.IDCardType == 2)
|
|
|
+ //{
|
|
|
+ // var FindSavingCard = db.Card.FirstOrDefault(x => x.IDHolder == FindClient.ClientID && x.IDCardType == 3);
|
|
|
+ // if (FindSavingCard == null)
|
|
|
+ // {
|
|
|
+ // Random random = new Random();
|
|
|
+ // string NumberCard = "";
|
|
|
+ // for (int i = 0; i < 7; i++)
|
|
|
+ // {
|
|
|
+ // NumberCard += random.Next(0, 9).ToString();
|
|
|
+ // }
|
|
|
+
|
|
|
+
|
|
|
+ // Card NewCard = new Card
|
|
|
+ // {
|
|
|
+ // NumberCard = NumberCard,
|
|
|
+ // CardExpDate = null,
|
|
|
+ // Balance = 10,
|
|
|
+ // IDCardType = 2,
|
|
|
+ // IDCardIssuer = null,
|
|
|
+ // IDHolder = FindClient.ClientID
|
|
|
+ // };
|
|
|
+ // db.Card.Add(NewCard);
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // FindSavingCard.Balance = FindSavingCard.Balance + FindCard.Balance * 3 / 100;
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ //db.SaveChanges();
|
|
|
+ HttpListenerResponse response = context.Response;
|
|
|
+ byte[] buffer = Encoding.UTF8.GetBytes("Оплата прошла успешно");
|
|
|
+ response.ContentLength64 = buffer.Length;
|
|
|
+ Stream output = response.OutputStream;
|
|
|
+ output.Write(buffer, 0, buffer.Length);
|
|
|
+ output.Close();
|
|
|
+ Console.WriteLine("Оплата прошла успешно");
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|