private void PostApplications() { try { List <object[]> appsData = _DB_Connection.Select(DB_Table.APPLICATIONS, new string[] { "id", "mcado", "chernobyl", "needs_hostel", "passing_examinations", "priority_right", "entrant_id", "status" }, new List <Tuple <string, Relation, object> > { new Tuple <string, Relation, object>("campaign_id", Relation.EQUAL, _CampaignID), new Tuple <string, Relation, object>("master_appl", Relation.EQUAL, false), new Tuple <string, Relation, object>("status", Relation.NOT_EQUAL, "withdrawn") }); string connectionStr = "server=" + server + ";port=3306;database=" + dbname + ";user="******";password="******";"; MySql.Data.MySqlClient.MySqlConnection connection = new MySql.Data.MySqlClient.MySqlConnection(connectionStr); if (appsData.Count > 0) { if ((cbPost.Checked) && (rbDirectToDB.Checked)) { connection.Open(); string Query = "SET foreign_key_checks = 0;" + "LOCK TABLES `" + dbname + "`.`abitur_tmptable` WRITE, " + "`" + dbname + "`.`application_tmptable` WRITE, " + "`" + dbname + "`.`profile_table` READ, " + "`" + dbname + "`.`direction_table` AS dt READ, " + "`" + dbname + "`.`faculty_table` AS ft READ;" + "TRUNCATE TABLE `" + dbname + "`.`abitur_tmptable`;" + "TRUNCATE TABLE `" + dbname + "`.`application_tmptable`;"; new MySql.Data.MySqlClient.MySqlCommand(Query, connection).ExecuteNonQuery(); } XDocument PackageData = new XDocument(new XElement("Root")); PackageData.Root.Add(new XElement("AuthData", _AuthData)); PackageData.Root.Add(new XElement("PackageData")); IEnumerable <DB_Queries.Mark> marks = DB_Queries.GetMarks(_DB_Connection, appsData.Select(s => (uint)s[0]), _CampaignID); IEnumerable <DB_Queries.Document> documents = DB_Queries.GetDocuments(_DB_Connection, appsData.Select(s => (uint)s[0])); var passwords = _DB_Connection.Select(DB_Table.ENTRANTS, "id", "personal_password").Select(s => new { EntrID = (uint)s[0], Password = s[1].ToString() }); var names = _DB_Connection.Select(DB_Table.ENTRANTS_VIEW, "id", "last_name", "first_name", "middle_name").Select(s => new { EntrID = (uint)s[0], LastName = s[1].ToString(), FirstName = s[2].ToString(), MiddleName = s[3] as string }); count = 0; foreach (object[] application in appsData) { if ((threadPost.ThreadState == ThreadState.Aborted) || (threadPost.ThreadState == ThreadState.Stopped)) { break; } XElement abitur = new XElement("Abitur", new XElement("Uin", application[0]), new XElement("EntrantUin", application[6]), new XElement("Surname", names.Single(s => s.EntrID == (uint)application[6]).LastName), new XElement("Name", names.Single(s => s.EntrID == (uint)application[6]).FirstName), new XElement("Name2", names.Single(s => s.EntrID == (uint)application[6]).MiddleName), new XElement("Password", passwords.Single(s => s.EntrID == (uint)application[6]).Password), new XElement("Status", application[7]), new XElement("MathBall", 0), new XElement("CheckedByFISMath", 0), new XElement("PhisBall", 0), new XElement("CheckedByFISPhis", 0), new XElement("RusBall", 0), new XElement("CheckedByFISRus", 0), new XElement("ObshBall", 0), new XElement("CheckedByFISObsh", 0), new XElement("ForenBall", 0), new XElement("CheckedByFISForen", 0), new XElement("IABall", 0), new XElement("ODO", 0), new XElement("Olymp", 0), new XElement("Exam", 0), new XElement("Hostel", 0), new XElement("PP", 0), new XElement("MCADO", 0), new XElement("Chern", 0), new XElement("Documents", new XElement("ApplicationOfAdmission", 1), new XElement("PassportCopy", 0), new XElement("CertificateDiplomCopy", 0), new XElement("HRRefCopy", 0), new XElement("ReferralPK", 0), new XElement("MedRef", 0), new XElement("Photo", 0), new XElement("OrphanDocument", 0), new XElement("InvalidDocument", 0), new XElement("AbsenceOfContraindicationsForTraining", 0)), new XElement("Applications")); if ((bool)application[4]) { abitur.SetElementValue("Exam", 1); } if ((bool)application[3]) { abitur.SetElementValue("Hostel", 1); } if ((bool)application[5]) { abitur.SetElementValue("PP", 1); abitur.Element("Documents").SetElementValue("ReferralPK", 1); } if ((bool)application[1]) { abitur.SetElementValue("MCADO", 1); } if ((bool)application[2]) { abitur.SetElementValue("Chern", 1); abitur.Element("Documents").SetElementValue("ReferralPK", 1); } SetMarks((uint)application[0], abitur, marks); SetDocuments((uint)application[0], abitur, documents); SetIA((uint)application[0], abitur); SetEntrances((uint)application[0], abitur); if ((cbPost.Checked) && (rbDirectToDB.Checked)) { string Query = "INSERT INTO `" + dbname + "`.`abitur_tmptable` " + "(`abitur_id`, `uin`, `entrant_uin`, `surname`, `_name`, `name2`, `status`, " + "`math_ball`, `checked_by_FIS_math`, `phis_ball`, `checked_by_FIS_phis`, `rus_ball`, `checked_by_FIS_rus`, " + "`obsh_ball`, `checked_by_FIS_obsh`, `foren_ball`, `checked_by_FIS_foren`, `IA_ball`, " + "`ODO`, `Olymp`, `Exam`, `hostel`, `PP`, `MCADO`, `Chern`, `appl_of_admission`, " + "`passport_copy`, `a_d_copy`, `hr_ref_copy`, `referral_pk`, `med_ref`, `photo`, `password`, " + "`orphan_document`, `invalid_document`, `pmp_document`, `absence_of_contraindications`) VALUES " + "(0, " + abitur.Element("Uin").Value.ToString() + ", " + abitur.Element("EntrantUin").Value.ToString() + ", '" + abitur.Element("Surname").Value.ToString() + "', '" + abitur.Element("Name").Value.ToString() + "' ,'" + abitur.Element("Name2").Value.ToString() + "' ,'" + abitur.Element("Status").Value.ToString() + "' ," + abitur.Element("MathBall").Value.ToString() + " ," + abitur.Element("CheckedByFISMath").Value.ToString() + " ," + abitur.Element("PhisBall").Value.ToString() + " ," + abitur.Element("CheckedByFISPhis").Value.ToString() + " ," + abitur.Element("RusBall").Value.ToString() + " ," + abitur.Element("CheckedByFISRus").Value.ToString() + " ," + abitur.Element("ObshBall").Value.ToString() + " ," + abitur.Element("CheckedByFISObsh").Value.ToString() + " ," + abitur.Element("ForenBall").Value.ToString() + " ," + abitur.Element("CheckedByFISForen").Value.ToString() + " ," + abitur.Element("IABall").Value.ToString() + " ," + abitur.Element("ODO").Value.ToString() + ", " + abitur.Element("Olymp").Value.ToString() + " ," + abitur.Element("Exam").Value.ToString() + ", " + abitur.Element("Hostel").Value.ToString() + " ," + abitur.Element("PP").Value.ToString() + ", " + abitur.Element("MCADO").Value.ToString() + ", " + abitur.Element("Chern").Value.ToString() + " ," + abitur.Element("Documents").Element("ApplicationOfAdmission").Value.ToString() + " ," + abitur.Element("Documents").Element("PassportCopy").Value.ToString() + " ," + abitur.Element("Documents").Element("CertificateDiplomCopy").Value.ToString() + " ," + abitur.Element("Documents").Element("HRRefCopy").Value.ToString() + " ," + abitur.Element("Documents").Element("ReferralPK").Value.ToString() + " ," + abitur.Element("Documents").Element("MedRef").Value.ToString() + " ," + abitur.Element("Documents").Element("Photo").Value.ToString() + ", '" + abitur.Element("Password").Value.ToString() + "', " + abitur.Element("Documents").Element("OrphanDocument").Value.ToString() + ", " + abitur.Element("Documents").Element("InvalidDocument").Value.ToString() + ", 0, " + abitur.Element("Documents").Element("AbsenceOfContraindicationsForTraining").Value.ToString() + ");"; string direction, profile; int direction_id = 1000, profile_id = 1000; string query_tmp; foreach (XElement appl in abitur.Element("Applications").Elements()) { direction = appl.Element("Direction").Value; profile = appl.Element("Profile").Value; if (direction != "0") { query_tmp = "SELECT dt.direction_id FROM `" + dbname + "`.`direction_table` AS dt, " + "`" + dbname + "`.`faculty_table` AS ft WHERE (dt.id_by_FIS=" + direction + ") AND " + "(ft.short_caption='" + appl.Element("Faculty").Value + "') AND " + "(dt.faculty_id=ft.faculty_id)"; direction_id = Convert.ToInt16(new MySql.Data.MySqlClient.MySqlCommand(query_tmp, connection).ExecuteScalar().ToString()); } if (profile != "") { query_tmp = "SELECT profile_id FROM `" + dbname + "`.`profile_table` WHERE short_caption='" + profile + "'"; profile_id = Convert.ToInt16(new MySql.Data.MySqlClient.MySqlCommand(query_tmp, connection).ExecuteScalar().ToString()); } Query = Query + "INSERT INTO `" + dbname + "`.`application_tmptable` " + "(`application_id`, `uin`, `direction_id`, `profile_id`, `_condition`, `appl_of_consent`, `form_of_education`) VALUES " + "(0, " + abitur.Element("Uin").Value + ", " + direction_id.ToString() + ", " + profile_id.ToString() + " ," + appl.Element("Condition").Value + " ," + appl.Element("ApplicationOfConsent").Value + " ," + appl.Element("FormOfEducation").Value + ");"; } new MySql.Data.MySqlClient.MySqlCommand(Query, connection).ExecuteNonQuery(); } PackageData.Root.Element("PackageData").Add(abitur); count++; lCount.BeginInvoke(new InvokeDelegate(() => { lCount.Text = count.ToString() + " абитуриентов"; })); } if ((cbPost.Checked) && (rbDirectToDB.Checked)) { new MySql.Data.MySqlClient.MySqlCommand("UNLOCK TABLES;", connection).ExecuteNonQuery(); } timerSum.Stop(); //timerSum.Enabled = false; _SchemaSet.Add(null, SchemaPath); PackageData.Validate(_SchemaSet, (send, ee) => { throw ee.Exception; }); if (cbSave.Checked) { PackageData.Save("doc.xml"); } if ((cbPost.Checked) && (rbDirectToDB.Checked)) { connection.Close(); HttpWebRequest HttpRequest = (HttpWebRequest)WebRequest.Create(script); HttpWebResponse HttpResponse; HttpResponse = (HttpWebResponse)HttpRequest.GetResponse(); if (HttpResponse.StatusCode == HttpStatusCode.OK) { System.IO.Stream responseStream = HttpResponse.GetResponseStream(); string responseStr = new System.IO.StreamReader(responseStream).ReadToEnd(); tbResponse.BeginInvoke(new InvokeDelegate(() => { tbResponse.Text = tbResponse.Text + responseStr + "\r\n" + "Отправлено: " + count.ToString() + " абитуриента за " + (sumTime / 60).ToString() + " мин. " + (sumTime % 60).ToString() + " сек.; " + "Среднее время на одного абитуриента: " + System.Math.Round((float)sumTime / count, 2) + " сек.\r\n\r\n"; })); HttpResponse.Close(); } } if ((cbPost.Checked) && (rbPostMethod.Checked)) { byte[] bytesData = System.Text.Encoding.UTF8.GetBytes("XMLData=" + PackageData.ToString()); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(cbAdress.Text); request.ContentType = "application/x-www-form-urlencoded"; request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"; request.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"; request.ContentLength = bytesData.Length; request.Method = "POST"; System.IO.Stream requestStream = request.GetRequestStream(); requestStream.Write(bytesData, 0, bytesData.Length); requestStream.Close(); HttpWebResponse response; response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode == HttpStatusCode.OK) { System.IO.Stream responseStream = response.GetResponseStream(); string responseStr = new System.IO.StreamReader(responseStream).ReadToEnd(); tbResponse.Text = responseStr; } } if ((cbPost.Checked) && (rbFTPMethod.Checked)) { // Get the object used to communicate with the server. FtpWebRequest FtpRequest = (FtpWebRequest)WebRequest.Create(tbServer.Text + "/doc.xml"); FtpRequest.Method = WebRequestMethods.Ftp.UploadFile; // This example assumes the FTP site uses anonymous logon. FtpRequest.Credentials = new NetworkCredential(tbUser.Text, tbPassword.Text); // Copy the contents of the file to the request stream. System.IO.StreamReader sourceStream = new System.IO.StreamReader("doc.xml"); byte[] fileContents = System.Text.Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()); sourceStream.Close(); FtpRequest.ContentLength = fileContents.Length; System.IO.Stream requestStream = FtpRequest.GetRequestStream(); requestStream.Write(fileContents, 0, fileContents.Length); requestStream.Close(); FtpWebResponse FtpResponse = (FtpWebResponse)FtpRequest.GetResponse(); tbResponse.Text = tbResponse.Text + DateTime.Now.ToString() + ": " + FtpResponse.StatusDescription + "\n"; FtpResponse.Close(); //FtpResponse.StatusCode=FtpStatusCode.ClosingData if (FtpResponse.StatusCode == FtpStatusCode.ClosingData) { HttpWebRequest HttpRequest = (HttpWebRequest)WebRequest.Create(tbAdress.Text); HttpWebResponse HttpResponse; HttpResponse = (HttpWebResponse)HttpRequest.GetResponse(); if (HttpResponse.StatusCode == HttpStatusCode.OK) { System.IO.Stream responseStream = HttpResponse.GetResponseStream(); string responseStr = new System.IO.StreamReader(responseStream).ReadToEnd(); tbResponse.Text = tbResponse.Text + responseStr + "\r\n"; HttpResponse.Close(); } } } } } catch (Exception e) { MessageBox.Show(e.Message); } }
private void toolStrip_Distribute_Click(object sender, EventArgs e) { if (DB_Queries.ExaminationHasMarks(_DB_Connection, SelectedExamID)) { MessageBox.Show("В экзамен уже включены абитуриенты. При повторном распределении они не будут удалены."); } Cursor.Current = Cursors.WaitCursor; var applications = _DB_Connection.Select( DB_Table.APPLICATIONS, new string[] { "id", "registration_time", "entrant_id" }, new List <Tuple <string, Relation, object> > { new Tuple <string, Relation, object>("passing_examinations", Relation.EQUAL, true), new Tuple <string, Relation, object>("status", Relation.EQUAL, "new") }).Where(a => (DateTime)a[1] >= (DateTime)dataGridView.SelectedRows[0].Cells[dataGridView_RegStartDate.Index].Value && (DateTime)a[1] < (DateTime)dataGridView.SelectedRows[0].Cells[dataGridView_RegEndDate.Index].Value + new TimeSpan(1, 0, 0, 0) ).Select(s => new { ApplID = (uint)s[0], EntrID = (uint)s[2] }); uint subjectID = _DB_Helper.GetDictionaryItemID(FIS_Dictionary.SUBJECTS, dataGridView.SelectedRows[0].Cells[dataGridView_Subject.Index].Value.ToString()); IEnumerable <uint> excludedAppls = DB_Queries.GetMarks( _DB_Connection, applications.Select(s => s.ApplID), Classes.Settings.CurrentCampaignID ).Where(s => s.FromExamDate.HasValue && (s.SubjID == subjectID || s.Value < _DB_Helper.GetMinMark(s.SubjID) )).Select(s => s.ApplID); applications = applications.Where(s => !excludedAppls.Contains(s.ApplID)); var applsDirections = _DB_Connection.Select( DB_Table.APPLICATIONS_ENTRANCES, "application_id", "faculty_short_name", "direction_id" ); var subjectDirections = _DB_Connection.Select( DB_Table.ENTRANCE_TESTS, new string[] { "direction_faculty", "direction_id" }, new List <Tuple <string, Relation, object> > { new Tuple <string, Relation, object>("campaign_id", Relation.EQUAL, Classes.Settings.CurrentCampaignID), new Tuple <string, Relation, object>("subject_id", Relation.EQUAL, subjectID) }); var applsSubjects = applsDirections.Join( subjectDirections, k1 => Tuple.Create(k1[1], k1[2]), k2 => Tuple.Create(k2[0], k2[1]), (s1, s2) => (uint)s1[0] ).Distinct(); applications = applications.Join( applsSubjects, k1 => k1.ApplID, k2 => k2, (s1, s2) => s1 ); if (applications.Count() == 0) { MessageBox.Show("Ни один абитуриент не попал в экзамен по условиям фильтрации.", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } var entrantsIDs = _DB_Connection.Select(DB_Table.ENTRANTS, "id").Join( applications, en => en[0], a => a.EntrID, (s1, s2) => s2.EntrID ).Distinct();//TODO Нужно? foreach (object entrID in entrantsIDs) { _DB_Connection.InsertOnDuplicateUpdate( DB_Table.ENTRANTS_EXAMINATIONS_MARKS, new Dictionary <string, object> { { "entrant_id", entrID }, { "examination_id", SelectedExamID } } ); } ToggleButtons(); Cursor.Current = Cursors.Default; }
private void bPrint_Click(object sender, EventArgs e) { if (!cbActs.Checked && !cbReceipts.Checked && !cbExamSheets.Checked) { MessageBox.Show("Не отмечена информация к печати.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Cursor.Current = Cursors.WaitCursor; IEnumerable <string> ordersNumbers; if (rbDate.Checked) { ordersNumbers = _DB_Connection.Select( DB_Table.ORDERS, new string[] { "number" }, new List <Tuple <string, Relation, object> > { new Tuple <string, Relation, object>("date", Relation.GREATER_EQUAL, dtpStart.Value.Date), new Tuple <string, Relation, object>("date", Relation.LESS, dtpEnd.Value.Date.AddDays(1)) }).Select(s => s[0].ToString()); } else { ordersNumbers = new string[] { tbNumber.Text } }; DB_Helper dbHelper = new DB_Helper(_DB_Connection); var orders = ordersNumbers.Join( _DB_Connection.Select( DB_Table.ORDERS,//TODO убрать лишние поля new string[] { "number", "type", "date", "protocol_number", "protocol_date", "edu_form_id", "edu_source_id", "faculty_short_name", "direction_id", "profile_short_name", "campaign_id" }, new List <Tuple <string, Relation, object> > { new Tuple <string, Relation, object>("campaign_id", Relation.EQUAL, Classes.Settings.CurrentCampaignID), new Tuple <string, Relation, object>("type", Relation.EQUAL, "admission"), new Tuple <string, Relation, object>("protocol_number", Relation.NOT_EQUAL, null) }), k1 => k1, k2 => k2[0], (s1, s2) => new { Number = s1, Date = (DateTime)s2[2], ProtocolNumber = (ushort)s2[3], ProtocolDate = (DateTime)s2[4], EduForm = (uint)s2[5], EduSource = (uint)s2[6], Faculty = s2[7].ToString(), Direction = (uint)s2[8], Profile = s2[9] as string, Master = dbHelper.GetCampaignType((uint)s2[10]) == DB_Helper.CampaignType.MASTER }); if (orders.Count() == 0) { MessageBox.Show("Не найдено соответствующих приказов.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Dictionary <uint, string> forms = new Dictionary <uint, string> { { 11, "очной формы" }, { 12, "очно-заочной (вечерней) формы" }, { 10, "заочной формы" } }; uint mathID = dbHelper.GetDictionaryItemID(FIS_Dictionary.SUBJECTS, DB_Helper.SubjectMath); uint physID = dbHelper.GetDictionaryItemID(FIS_Dictionary.SUBJECTS, DB_Helper.SubjectPhis); uint rusID = dbHelper.GetDictionaryItemID(FIS_Dictionary.SUBJECTS, DB_Helper.SubjectRus); uint socID = dbHelper.GetDictionaryItemID(FIS_Dictionary.SUBJECTS, DB_Helper.SubjectObsh); uint forID = dbHelper.GetDictionaryItemID(FIS_Dictionary.SUBJECTS, DB_Helper.SubjectForen); List <Classes.DocumentCreator.DocumentParameters> actsDocs = new List <Classes.DocumentCreator.DocumentParameters>(); List <Classes.DocumentCreator.DocumentParameters> receiptsDocs = new List <Classes.DocumentCreator.DocumentParameters>(); List <Classes.DocumentCreator.DocumentParameters> sheetsDocs = new List <Classes.DocumentCreator.DocumentParameters>(); foreach (var order in orders) { var applications = _DB_Connection.Select( DB_Table.ORDERS_HAS_APPLICATIONS, new string[] { "applications_id", "record_book_number" }, new List <Tuple <string, Relation, object> > { new Tuple <string, Relation, object>("orders_number", Relation.EQUAL, order.Number) } ).Join( _DB_Connection.Select(DB_Table.APPLICATIONS, "id", "entrant_id", "status"), k1 => k1[0], k2 => k2[0], (s1, s2) => new { ApplID = (uint)s2[0], EntrID = (uint)s2[1], RecordBook = s1[1].ToString() } ).Join( _DB_Connection.Select(DB_Table.ENTRANTS_VIEW, "id", "last_name", "first_name", "middle_name"), k1 => k1.EntrID, k2 => k2[0], (s1, s2) => new { s1.ApplID, s1.EntrID, s1.RecordBook, LastName = s2[1].ToString(), FirstName = s2[2].ToString(), MiddleName = s2[3] as string } ); List <Tuple <string, Relation, object> > whereExpr = new List <Tuple <string, Relation, object> > { new Tuple <string, Relation, object>("type", Relation.EQUAL, "exception"), new Tuple <string, Relation, object>("protocol_number", Relation.NOT_EQUAL, null), new Tuple <string, Relation, object>("edu_form_id", Relation.EQUAL, order.EduForm), new Tuple <string, Relation, object>("edu_source_id", Relation.EQUAL, order.EduSource), new Tuple <string, Relation, object>("faculty_short_name", Relation.EQUAL, order.Faculty), new Tuple <string, Relation, object>("direction_id", Relation.EQUAL, order.Direction) }; if (order.Profile != null) { whereExpr.Add(new Tuple <string, Relation, object>("profile_short_name", Relation.EQUAL, order.Profile)); } applications = applications.Where(s => { IEnumerable <DateTime> admDates = _DB_Connection.Select( DB_Table.ORDERS_HAS_APPLICATIONS, new string[] { "orders_number" }, new List <Tuple <string, Relation, object> > { new Tuple <string, Relation, object>("applications_id", Relation.EQUAL, s.ApplID) } ).Join( _DB_Connection.Select(DB_Table.ORDERS, new string[] { "number", "date" }, whereExpr ), k1 => k1[0], k2 => k2[0], (s1, s2) => (DateTime)s2[1] ); return(!admDates.Any(d => d > order.Date)); }); if (applications.Count() == 0) { continue; } if (dbHelper.GetCampaignType(Classes.Settings.CurrentCampaignID) == DB_Helper.CampaignType.MASTER) { var table = applications.Join( _DB_Connection.Select( DB_Table.MASTERS_EXAMS_MARKS, new string[] { "entrant_id", "mark", "bonus" }, new List <Tuple <string, Relation, object> > { new Tuple <string, Relation, object>("campaign_id", Relation.EQUAL, Classes.Settings.CurrentCampaignID), new Tuple <string, Relation, object>("faculty", Relation.EQUAL, order.Faculty), new Tuple <string, Relation, object>("direction_id", Relation.EQUAL, order.Direction), new Tuple <string, Relation, object>("profile_short_name", Relation.EQUAL, order.Profile), }), k1 => k1.EntrID, k2 => k2[0], (s1, s2) => new { s1.ApplID, s1.LastName, s1.FirstName, s1.MiddleName, s1.RecordBook, Mark = (short)s2[1] + (ushort)s2[2] } ); //Tuple<string, string> dirNameCode = dbHelper.GetDirectionNameAndCode(order.Direction); //string dirSocr = dbHelper.GetDirectionShortName(order.Faculty, order.Direction); //if (cbActs.Checked) // actsDocs.Add(new Classes.DocumentCreator.DocumentParameters( // Classes.Settings.DocumentsTemplatesPath + "Act.xml", // null, // null, // new string[] // { // DateTime.Now.ToShortDateString(), // order.Date.Year.ToString(), // forms[order.EduForm] + " обучения" + // (order.EduSource == dbHelper.GetDictionaryItemID(FIS_Dictionary.EDU_SOURCE, DB_Helper.EduSourceP) ? " по договорам с оплатой стоимости обучения" : ""), // order.Faculty, // dirNameCode.Item2, // dirNameCode.Item1, // order.Master?"Магистерская программа: " :(order.Profile != null ?(dirNameCode.Item2.Split('.')[1]=="05"?"Специализация": "Профиль")+": " : ""), // order.Profile != null ? order.Profile + " - " + DB_Queries.GetProfileName(_DB_Connection,order.Faculty,order.Direction,order.Profile).Split('|')[0] : "" // }, // new IEnumerable<string[]>[] { table.Select(s=>new // { // Name = s.LastName + " " + s.FirstName + " " + s.MiddleName, // s.RecordBook // }).OrderBy(s => s.Name).Select(s => new string[] { s.Name, s.RecordBook }) })); foreach (var appl in table) { //if (cbReceipts.Checked) // receiptsDocs.Add(new Classes.DocumentCreator.DocumentParameters( // Classes.Settings.DocumentsTemplatesPath + "AdmReceipt.xml", // null, // null, // new string[] // { // order.Number, // order.Date.ToShortDateString(), // (appl.LastName+" "+appl.FirstName[0]+"."+(appl.MiddleName.Length!=0?appl.MiddleName[0].ToString()+".":"")).ToUpper(), // order.Faculty, // order.Profile != null ?order.Profile:dirSocr // }, // null // )); if (cbExamSheets.Checked) { sheetsDocs.Add(new Classes.DocumentCreator.DocumentParameters( Classes.Settings.DocumentsTemplatesPath + "ExamSheetM.xml", null, null, new string[] { appl.Mark.ToString(), dbHelper.GetDictionaryItemName(FIS_Dictionary.EDU_FORM, order.EduForm), appl.ApplID.ToString(), appl.LastName.ToUpper(), appl.FirstName.ToUpper(), appl.MiddleName.ToUpper(), order.Profile }, null )); } } } else { IEnumerable <DB_Queries.Mark> marks = DB_Queries.GetMarks(_DB_Connection, applications.Select(s => s.ApplID), Classes.Settings.CurrentCampaignID); var table = applications.Join( marks.GroupBy( k => Tuple.Create(k.ApplID, k.SubjID), (k, g) => new { g.First().ApplID, Mark = g.First(s => s.Value == g.Max(m => m.Value)) } ).GroupBy( k => k.ApplID, (k, g) => new { g.First().ApplID, Subjects = g.Select(s => s.Mark) } ), k1 => k1.ApplID, k2 => k2.ApplID, (s1, s2) => new { s1.ApplID, s1.LastName, s1.FirstName, s1.MiddleName, s1.RecordBook, s2.Subjects } ); Tuple <string, string> dirNameCode = dbHelper.GetDirectionNameAndCode(order.Direction); string dirSocr = dbHelper.GetDirectionShortName(order.Faculty, order.Direction); if (cbActs.Checked) { actsDocs.Add(new Classes.DocumentCreator.DocumentParameters( Classes.Settings.DocumentsTemplatesPath + "Act.xml", null, null, new string[] { DateTime.Now.ToShortDateString(), order.Date.Year.ToString(), forms[order.EduForm] + " обучения" + (order.EduSource == dbHelper.GetDictionaryItemID(FIS_Dictionary.EDU_SOURCE, DB_Helper.EduSourceP) ? " по договорам с оплатой стоимости обучения" : ""), order.Faculty, dirNameCode.Item2, dirNameCode.Item1, order.Master?"Магистерская программа: " :(order.Profile != null ?(dirNameCode.Item2.Split('.')[1] == "05"?"Специализация": "Профиль") + ": " : ""), order.Profile != null ? order.Profile + " - " + DB_Queries.GetProfileName(_DB_Connection, order.Faculty, order.Direction, order.Profile).Split('|')[0] : "" }, new IEnumerable <string[]>[] { table.Select(s => new { Name = s.LastName + " " + s.FirstName + " " + s.MiddleName, s.RecordBook }).OrderBy(s => s.Name).Select(s => new string[] { s.Name, s.RecordBook }) })); } foreach (var appl in table) { if (cbReceipts.Checked) { receiptsDocs.Add(new Classes.DocumentCreator.DocumentParameters( Classes.Settings.DocumentsTemplatesPath + "AdmReceipt.xml", null, null, new string[] { order.Number, order.Date.ToShortDateString(), (appl.LastName + " " + appl.FirstName[0] + "." + (appl.MiddleName.Length != 0?appl.MiddleName[0].ToString() + ".":"")).ToUpper(), order.Faculty, order.Profile != null ?order.Profile:dirSocr }, null )); } if (cbExamSheets.Checked) { sheetsDocs.Add(new Classes.DocumentCreator.DocumentParameters( Classes.Settings.DocumentsTemplatesPath + "ExamSheet.xml", null, null, new string[] { appl.Subjects.SingleOrDefault(s => s.SubjID == mathID)?.Value.ToString(), dbHelper.GetDictionaryItemName(FIS_Dictionary.EDU_FORM, order.EduForm), appl.Subjects.SingleOrDefault(s => s.SubjID == physID)?.Value.ToString(), appl.ApplID.ToString(), appl.Subjects.SingleOrDefault(s => s.SubjID == rusID)?.Value.ToString(), appl.LastName.ToUpper(), appl.Subjects.SingleOrDefault(s => s.SubjID == socID)?.Value.ToString(), appl.FirstName.ToUpper(), appl.Subjects.SingleOrDefault(s => s.SubjID == forID)?.Value.ToString(), appl.MiddleName.ToUpper(), order.Profile != null ?order.Profile:dirSocr }, null )); } } } } if (cbActs.Checked) { string doc = Classes.Settings.TempPath + "acts" + new Random().Next(); Classes.DocumentCreator.Create(doc, actsDocs, false); System.Diagnostics.Process.Start(doc + ".docx"); } if (cbReceipts.Checked) { string doc = Classes.Settings.TempPath + "receipts" + new Random().Next(); Classes.DocumentCreator.Create(doc, receiptsDocs, false); System.Diagnostics.Process.Start(doc + ".docx"); } if (cbExamSheets.Checked) { string doc = Classes.Settings.TempPath + "examSheets" + new Random().Next(); Classes.DocumentCreator.Create(doc, sheetsDocs, false); System.Diagnostics.Process.Start(doc + ".docx"); } Cursor.Current = Cursors.Default; } }