Example #1
0
        private void btnLoad_Click(object sender, EventArgs e)
        {
            if (MainClass.IsCryptoMain() || MainClass.IsPasha())
            {
                try
                {
                    using (PriemEntities context = new PriemEntities())
                    {
                        using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.RequiresNew))
                        {
                            int marksCount = 0;

                            foreach (DataGridViewRow dgvr in dgvMarks.Rows)
                            {
                                string balWr = dgvr.Cells["Баллы (письм)"].Value == null ? string.Empty : dgvr.Cells["Баллы (письм)"].Value.ToString();
                                string balOr = dgvr.Cells["Баллы (устные)"].Value == null ? string.Empty : dgvr.Cells["Баллы (устные)"].Value.ToString();
                                string valWr = dgvr.Cells["Баллы(письм) по аппеляции"].Value == null ? string.Empty : dgvr.Cells["Баллы(письм) по аппеляции"].Value.ToString();
                                string valOr = dgvr.Cells["Баллы (устные) по аппеляции"].Value == null ? string.Empty : dgvr.Cells["Баллы (устные) по аппеляции"].Value.ToString();

                                if (string.IsNullOrEmpty(balWr) && string.IsNullOrEmpty(balOr))
                                {
                                    continue;
                                }

                                if (string.IsNullOrEmpty(valWr) && string.IsNullOrEmpty(valOr))
                                {
                                    continue;
                                }

                                Guid persId  = new Guid(dgvr.Cells["PersonId"].Value.ToString());
                                int  persNum = int.Parse(dgvr.Cells["Номер"].Value.ToString());

                                int mrkWrTmp;
                                int mrkOrTmp;

                                int?mrkWr;
                                int?mrkOr;

                                if (string.IsNullOrEmpty(valWr))
                                {
                                    mrkWr = null;
                                }
                                else if (!(int.TryParse(valWr, out mrkWrTmp) && mrkWrTmp >= 0 && mrkWrTmp < 101))
                                {
                                    dgvMarks.CurrentCell = dgvr.Cells["Баллы(письм) по аппеляции"];
                                    WinFormsServ.Error(dgvr.Cells["ФИО"].Value.ToString() + ": неправильно введены данные");
                                    return;
                                }
                                else
                                {
                                    mrkWr = mrkWrTmp;
                                }

                                if (string.IsNullOrEmpty(valOr))
                                {
                                    mrkOr = null;
                                }
                                else if (!(int.TryParse(valOr, out mrkOrTmp) && mrkOrTmp >= 0 && mrkOrTmp < 101))
                                {
                                    dgvMarks.CurrentCell = dgvr.Cells["Баллы (устные) по аппеляции"];
                                    WinFormsServ.Error(dgvr.Cells["ФИО"].Value.ToString() + ": неправильно введены данные");
                                    return;
                                }
                                else
                                {
                                    mrkOr = mrkOrTmp;
                                }

                                context.ExamsVedHistory_UpdateMarkAppeal(_vedId, persId, persNum, mrkWr);
                                context.ExamsVedHistory_UpdateMarkOralAppeal(_vedId, persId, persNum, mrkOr);

                                DataSet ds = bdc.GetDataSet(string.Format("SELECT Id, EntryId FROM ed.qAbiturient WHERE PersonId = '{0}' AND FacultyId={1} {2}", persId.ToString(), _facultyId, _studybasisId == "" ? "" : " AND ed.qAbiturient.StudyBasisId = " + _studybasisId));
                                foreach (DataRow row in ds.Tables[0].Rows)
                                {
                                    string examInPr = Exams.GetExamInEntryId(_examId, row["EntryId"].ToString());
                                    Guid   abitId   = new Guid(row["Id"].ToString());

                                    if (string.IsNullOrEmpty(examInPr))
                                    {
                                        continue;
                                    }

                                    int examInEntryId = int.Parse(examInPr);

                                    int?sumMark = 0;
                                    if (mrkWr == null && mrkOr == null)
                                    {
                                        sumMark = null;
                                    }
                                    else
                                    {
                                        sumMark = (mrkWr ?? 0) + (mrkOr ?? 0);
                                    }

                                    int cnt = (from mrk in context.qMark
                                               where mrk.ExamInEntryId == examInEntryId && mrk.AbiturientId == abitId
                                               select mrk).Count();

                                    if (cnt > 0)
                                    {
                                        context.Mark_updateByAbVedId(abitId, examInEntryId, sumMark, _dateExam, _vedId);
                                        marksCount++;
                                    }
                                }
                            }
                            transaction.Complete();
                            MessageBox.Show(marksCount + " записей изменено.", "Выполнено");
                        }
                    }
                }

                catch (Exception exc)
                {
                    WinFormsServ.Error("Ошибка сохранения данных: \n" + exc.Message);
                    return;
                }
            }
        }