E
using (var context = new MyDbContext())
{
var clients = context.Clients.ToList();
var wasreg = new List<RegTest>();
var wasnomer = new List<string>();
int countCBCategory;
string nomername = "0";
if (clientid > 0)
{
clients = context.Clients.Where(x => x.idClient == clientid).ToList();
}
int key = 0;
XDocument doc = new XDocument(new XElement("CLIENTS"));
for (int i = 0; i < clients.Count(); i++)
{
wasnomer.Clear();
doc.Element("CLIENTS").Add(new XElement("CLIENT",
new XElement("name", clients[i].name.Trim()),
new XElement("surname", clients[i].surname.Trim()),
new XElement("lastname", clients[i].lastname.Trim()),
new XElement("login", clients[i].login.Trim()),
new XElement("password", clients[i].password.Trim()),
new XElement("seriaPassport", clients[i].seriaPassport.Trim()),
new XElement("numberPassport", clients[i].numberPassport.Trim()),
new XElement("deschotel", clients[i].deschotel.Trim()),
new XElement("countDaysLive", clients[i].countDaysLive.ToString().Trim()),
new XElement("dateOfBirth", clients[i].dataOfBirth.ToString().Trim()))
);
var regHotels = context.RegHotels.ToList();
foreach(var regHotel in regHotels)
{
wasreg.Clear();
if (clients[i].idClient == regHotel.idClient)
{
var hotelRooms = context.HotelRooms.ToList();
if (CBCategory.SelectedItem.ToString() != "Все")
{
//hotelRooms = context.HotelRooms.Where(x => x.category == CBCategory.SelectedItem.ToString() && x.idFlat == regHotel.idFlat).ToList();
hotelRooms = context.HotelRooms.Where(x => x.category == CBCategory.SelectedItem.ToString()).ToList();
}
if (TBCount.Text != "")
{
//hotelRooms = context.HotelRooms.Where(x => x.idFlat == regHotel.idFlat && TBCount.Text == x.countPeople.ToString()).ToList();
hotelRooms = context.HotelRooms.Where(x => TBCount.Text == x.countPeople.ToString()).ToList();
}
if (CBCategory.SelectedItem.ToString() != "Все" && TBCount.Text != "")
{
hotelRooms = context.HotelRooms.Where(x => x.category == CBCategory.SelectedItem.ToString() && TBCount.Text == x.countPeople.ToString()).ToList();
}
foreach(var hotelRoom in hotelRooms)
{
bool check = false;
foreach(var s in wasnomer)
{
if (hotelRoom.nomer.ToString() == s)
{
check = true;
}
nomername = hotelRooms.Where(x => x.idFlat == hotelRoom.idFlat).Select(x => x.nomer).First().Trim().ToString();
}
if (check == false)
{
wasnomer.Add(hotelRoom.nomer);
var HotelRoomXML = new XElement("HOTELROOM",
new XElement("nomer", hotelRoom.nomer.Trim()),
new XElement("countPeople", hotelRoom.countPeople.ToString().Trim()),
new XElement("category", hotelRoom.category.Trim()),
new XElement("payment", hotelRoom.payment.ToString().Trim())
);
var ourClient = doc.Descendants("CLIENT")
.Where(x => x.Element("name")
.Value.Equals(clients[i].name.Trim())).FirstOrDefault();
nomername = hotelRooms.Where(x => x.idFlat == hotelRoom.idFlat).Select(x => x.nomer).First().Trim().ToString();
if (ourClient != null)
{
if (!ourClient.Elements("CLIENTS").Any())
ourClient.Add(new XElement("CLIENTS"));
bool duplicatePatient = false;
foreach (var elem in ourClient.Element("CLIENTS").Elements("HOTELROOM"))
{
duplicatePatient = XNode.DeepEquals(elem, HotelRoomXML);
if (duplicatePatient)
break;
}
if (!duplicatePatient)
{
ourClient.Add(HotelRoomXML);
}
}
}
if (clients[i].idClient == regHotel.idClient)
{
bool checkss = false;
bool let = false;
foreach (var s in wasreg)
{
DateTime dateStart = DateTime.Parse(s.StartLive);
DateTime dateEnd = DateTime.Parse(s.EndLive);
string descs = s.Desclive;
int idClientMark = clients[i].idClient;
int idFlatMark = hotelRoom.idFlat;
var querys = context.RegHotels.Where(x => x.idClient == idClientMark && x.idFlat == idFlatMark && x.startLive == dateStart && x.endLive == dateEnd && x.desclive == descs);
if (querys.ToList().Count() < 1)
{
checkss = true;
}
if (s.idClient == clients[i].idClient && s.idFlat == hotelRoom.idFlat && s.StartLive == dateStart.ToString() && s.EndLive == dateEnd.ToString() && s.Desclive == descs)
{
checkss = true;
}
}
int idClientMark1 = clients[i].idClient;
int idFlatMark1 = hotelRoom.idFlat;
DateTime dateStart1 = regHotel.startLive;
DateTime dateEnd1 = regHotel.endLive;
string descs1 = regHotel.desclive;
var hotelRoomCheck = context.RegHotels.Where(x => x.idFlat == idFlatMark1 && x.idClient == idClientMark1 && x.startLive == dateStart1 && x.endLive == dateEnd1 && x.desclive == descs1);
if (hotelRoomCheck.ToList().Count() > 0)
{
let = true;
}
if (checkss == false && let == true)
{
nomername = hotelRooms.Where(x => x.idFlat == hotelRoom.idFlat).Select(x => x.nomer).First().Trim().ToString();
wasreg.Add(new RegTest(clients[i].idClient, hotelRoom.idFlat, regHotel.startLive.ToString("dd.MM.yyyy"), regHotel.endLive.ToString("dd.MM.yyyy"), regHotel.desclive));
var regHotelXml = new XElement("REGHOTELS",
new XElement("startLive", regHotel.startLive.ToString("dd.MM.yyyy").Trim()),
new XElement("endLive", regHotel.endLive.ToString("dd.MM.yyyy").Trim()),
new XElement("desclive", regHotel.desclive.ToString().Trim())
);
var ourRegHotel = doc.Descendants("CLIENT")
.Where(x => x.Element("name")
.Value.Equals(clients[i].name.Trim())).FirstOrDefault().Descendants("HOTELROOM")
.Where(x => x.Element("nomer")
.Value.Equals(nomername)).FirstOrDefault();
if(ourRegHotel != null)
{
ourRegHotel.Add(regHotelXml);
}
}
}
}
}
}
key++;
}
string filePath = @"xml\export.xml";
doc.Save(filePath);
MessageBox.Show("Экспорт завершен !");
}