public static Molecule From_Molecule_Transport(MoleculeTransport MT) { Molecule Mol = new Molecule(MT.ID, MT.Structure, MT.Name); Mol.SetAdditionalInfoFromString(MT.Laboratory.ID.ToString(), MT.Person.ID.ToString(), MT.Other_Properties, MT.State, MT.Melting_Point, MT.Conditions, MT.Mass, MT.Solution, MT.Laboratory.Name, MT.Laboratory.Abb, MT.Person.Name, MT.Person.FathersName, MT.Person.Surname, MT.Person.Job, MT.Status); List <string> Analys = new List <string>(); List <string> Analys_Whom = new List <string>(); for (int i = 0; i < MT.Analysis.Count; i += 2) { Analys.Add(MT.Analysis[i]); Analys_Whom.Add(MT.Analysis[i + 1]); } Mol.AddAnalys(Analys, Analys_Whom); Mol.FileID = new List <int>(); Mol.FileName = new List <string>(); for (int i = 0; i < MT.Files.Count; i++) { Mol.FileID.Add(MT.Files[i].ID); Mol.FileName.Add(MT.Files[i].Name); } return(Mol); }
/// <summary> /// Преобразование выдачи БД в формат для передачи клиенту /// </summary> /// <param name="DataBase"></param> /// <param name="dt"></param> /// <param name="i"></param> /// <returns></returns> private MoleculeTransport DataRow_To_Molecule_Transport(DataTable dt, int i) { /* * Структура данных: (-> - Открытый, => - закодированный) * -> New molecule * 00 -> id * 01 -> name * 02 -> laboratory * 03 -> person * 04 => b_structure * 05 => state * 06 => melting_point * 07 => conditions * 08 => other_properties * 09 => mass * 10 => solution * 11 -> laboratory_name * 12 -> laboratory_Abb * 13 -> name (person) * 14 -> father's name * 15 -> surname * 16 -> job * 17 -> status * 18+ -> Виды анализа */ // Наполнение транспортного класса List <string> Lab = GetRows("SELECT `name`, `abbr` FROM `laboratory` WHERE `id`=" + dt.Rows[i].ItemArray[2].ToString() + " LIMIT 1"); List <string> Per = GetRows(@"SELECT `name`, `fathers_name`, `Surname`, `job` FROM `persons` WHERE `id`= " + dt.Rows[i].ItemArray[3].ToString() + @" LIMIT 1"); MoleculeTransport MT = new MoleculeTransport() { ID = Convert.ToInt32(FromBase(dt, i, 0)), Name = FromBase(dt, i, 1), Laboratory = new laboratory() { ID = Convert.ToInt32(FromBase(dt, i, 2)), Name = Lab[0], Abb = Lab[1] }, Person = new person() { ID = Convert.ToInt32(FromBase(dt, i, 3)), Name = Per[0], FathersName = Per[1], Surname = Per[2], Job = Per[3] }, Structure = FromBaseDecrypt(dt, i, 4), State = FromBaseDecrypt(dt, i, 5), Melting_Point = FromBaseDecrypt(dt, i, 6), Conditions = FromBaseDecrypt(dt, i, 7), Other_Properties = FromBaseDecrypt(dt, i, 8), Mass = FromBaseDecrypt(dt, i, 9), Solution = FromBaseDecrypt(dt, i, 10), Status = Convert.ToInt32(FromBase(dt, i, 11)), Analysis = GetRows(@"SELECT `analys`.`name`, `analys`.`name_whom` FROM `analys` INNER JOIN `analys_to_molecules` ON `analys_to_molecules`.`analys` = `analys`.`id` WHERE `analys_to_molecules`.`molecule` = " + dt.Rows[i].ItemArray[0].ToString() + ";"), Files = new List <file>(), }; // Получаем файлы, имеющие отношение к данному соединению DataTable files = DataBase.Query(@"SELECT `file` FROM `files_to_molecules` WHERE `molecule` = " + dt.Rows[i].ItemArray[0].ToString() + ";"); for (int f = 0; f < files.Rows.Count; f++) { file NF = new file(); NF.ID = (int)files.Rows[f].ItemArray[0]; DataTable NewFile = DataBase.Query(@"SELECT `name` FROM files WHERE `id`=" + NF.ID.ToString() + @" LIMIT 1;"); if (NewFile.Rows.Count == 0) { NF.Name = "Файл отсутствует"; } else { NF.Name = NewFile.Rows[0].ItemArray[0].ToString(); } MT.Files.Add(NF); } return(MT); }