123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- using System.Threading.Tasks;
- namespace Server
- {
- class Program
- {
- public static gr672_pgvEntities db = new gr672_pgvEntities();
- static void Main(string[] args)
- {
- Listen();
- Console.Read();
- }
- public static async void Listen()
- {
- HttpListener listener = new HttpListener();
- listener.Prefixes.Add($"http://127.0.0.1:8080/");
- listener.Start();
- Console.WriteLine("Ожидание подключений...");
- while (true)
- {
- HttpListenerContext context = await listener.GetContextAsync();
- HttpListenerRequest request = context.Request;
- //Все заправочные станции на которых есть выбранный вид топлива
- if (request.RawUrl.Contains("/stations?fuel") && request.HttpMethod == "GET")
- {
- string NameFuel = request.RawUrl.Split('=')[1];
- HttpListenerResponse response = context.Response;
- List<RootFuelInStation> rootFuelInStations = new List<RootFuelInStation>();
- var GasStation = db.FuelTypeOnGasStation.Where(x => x.FuelType.NameFuelType == NameFuel).ToList();
- foreach (var item in GasStation)
- {
- 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);
- response.ContentLength64 = buffer.Length;
- Stream output = response.OutputStream;
- output.Write(buffer, 0, buffer.Length);
- output.Close();
- Console.WriteLine($"{Json}");
- }
- //Информация о заправочной станции
- if (request.RawUrl.Contains("/getStationInfo?id") && request.HttpMethod == "GET")
- {
- int IDGasStation = Convert.ToInt32( request.RawUrl.Split('=')[1]);
- var GasStation = db.GasStation.Find(IDGasStation);
- if (GasStation == null)
- {
- 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("АЗС не найдено");
- }
- else
- {
- RootDataOfGasStation dataOfGasStation = new RootDataOfGasStation();
- dataOfGasStation.GasStationID = GasStation.GasStationID;
- dataOfGasStation.Address = GasStation.Address;
- List<FuelInCurrentGasStation> rootFuelTypes = new List<FuelInCurrentGasStation>();
- foreach (var item in GasStation.FuelTypeOnGasStation)
- {
- rootFuelTypes.Add(new FuelInCurrentGasStation()
- { IDFuelType = item.IDFuelType, AmountOfFuel = item.AmountOfFuel, Price = item.Price, NameFuelType = item.FuelType.NameFuelType });
- }
- dataOfGasStation.FuelInCurrentGasStation = rootFuelTypes;
- var Json = JsonConvert.SerializeObject(dataOfGasStation);
- byte[] buffer = Encoding.UTF8.GetBytes(Json);
- HttpListenerResponse response = context.Response;
- response.ContentLength64 = buffer.Length;
- Stream output = response.OutputStream;
- output.Write(buffer, 0, buffer.Length);
- output.Close();
- Console.WriteLine($"{Json}");
- }
- }
- //Добавление или редактирование данных о заправочной станции
- if (request.RawUrl.Contains("/setStation") && request.HttpMethod == "POST")
- {
- StreamReader reader = new StreamReader(request.InputStream, Encoding.UTF8);
- string Json = await reader.ReadToEndAsync();
- RootDataOfGasStation DataOfGasStation = JsonConvert.DeserializeObject<RootDataOfGasStation>(Json);
- //Поиск заправочной станции
- var FindGasStation = db.GasStation.Find(DataOfGasStation.GasStationID);
- if (FindGasStation == null)
- {
- //Добавление новой заправочной станции
- GasStation NewGasStation = new GasStation()
- {
- GasStationID = DataOfGasStation.GasStationID,
- Address = DataOfGasStation.Address
- };
- db.GasStation.Add(NewGasStation);
- foreach (var item in DataOfGasStation.FuelInCurrentGasStation)
- {
- FuelTypeOnGasStation fuelTypeOnGasStation = new FuelTypeOnGasStation()
- {
- IDGasStation = NewGasStation.GasStationID,
- IDFuelType = item.IDFuelType,
- AmountOfFuel = item.AmountOfFuel,
- Price = item.Price
- };
- db.FuelTypeOnGasStation.Add(fuelTypeOnGasStation);
- }
- db.SaveChanges();
- }
- else
- {
- //Редактирование заправочной станции
- FindGasStation.GasStationID = DataOfGasStation.GasStationID;
- FindGasStation.Address = DataOfGasStation.Address;
- foreach (var item in DataOfGasStation.FuelInCurrentGasStation)
- {
- //Поиск цены на топливо
- FuelTypeOnGasStation FindfuelTypeOnGasStation = db.FuelTypeOnGasStation.
- FirstOrDefault(x => x.IDGasStation == FindGasStation.GasStationID && x.IDFuelType == item.IDFuelType);
- if (FindfuelTypeOnGasStation == null)
- {
- //Добавление цен на топливо
- FuelTypeOnGasStation fuelTypeOnGasStation = new FuelTypeOnGasStation()
- {
- IDGasStation = FindGasStation.GasStationID,
- IDFuelType = item.IDFuelType,
- AmountOfFuel = item.AmountOfFuel,
- Price = item.Price
- };
- db.FuelTypeOnGasStation.Add(fuelTypeOnGasStation);
- }
- else
- {
- //Редактирование цен на топливо
- FindfuelTypeOnGasStation.Price = item.Price;
- FindfuelTypeOnGasStation.AmountOfFuel = item.AmountOfFuel;
- }
- 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("Выполненно");
- }
- }
- }
- }
- }
|