示例#1
0
        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);
        }
示例#2
0
        /// <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);
        }