private void registrationButton_Click(object sender, EventArgs e) { Form regForm = new RegPatForm(); regForm.Owner = this; regForm.ShowDialog(); }
public static bool PatientRegistrationCall(object obj, out string login, out string password) { RegPatForm regForm = (RegPatForm)obj; login = ""; password = ""; using (ModelMedDBContainer db = new ModelMedDBContainer()) { Patient newPatient = new Patient(); try { if (regForm.comboBoxGender.Text == "" || regForm.textSurname.Text == "" || regForm.textName.Text == "" || regForm.textBoxPassword2.Text == "" || regForm.textNation.Text == "" || regForm.textLiveAdress.Text == "" || regForm.textRegAdress.Text == "" || regForm.comboBoxDocType.Text == "" || regForm.textDocumentN.Text == "" || regForm.textBoxPassword1.Text == "" || regForm.textBoxBirthPlace.Text == "") { throw (new ArgumentNullException()); } if (!(nameCheck.IsMatch(regForm.textSurname.Text) && nameCheck.IsMatch(regForm.textName.Text))) { throw (new Exception("Имя, фамилия и отчество начинаются с заглавной буквы и могут содержать только буквы русского алфавита.")); } else if (regForm.textName2.Text != "" && nameCheck.IsMatch(regForm.textName2.Text)) { throw (new Exception("Имя, фамилия и отчество начинаются с заглавной буквы и могут содержать только буквы русского алфавита.")); } if (!(numCheck.IsMatch(regForm.textBoxInsuranceBillNum.Text) && nameCheck.IsMatch(regForm.textInsurancePolicyNum.Text) && nameCheck.IsMatch(regForm.textBoxWorkIncapacity.Text))) { throw (new Exception("Номера документов могут содержать только цифры.")); } newPatient.FullName = regForm.textSurname.Text + " " + regForm.textName.Text + " " + regForm.textName2.Text; newPatient.Gender = regForm.comboBoxGender.Text; newPatient.BirthDate = regForm.dateTimePickerBirthDate.Value.Date; newPatient.Nationality = regForm.textNation.Text; newPatient.LiveAdress = regForm.textLiveAdress.Text; newPatient.RegAdress = regForm.textRegAdress.Text; newPatient.RegDate = regForm.dateTimePickerRegDate.Value.Date; newPatient.InsuranceBillNum = regForm.textBoxInsuranceBillNum.Text; newPatient.InsurancePolicyNum = regForm.textInsurancePolicyNum.Text; newPatient.WorkIncapacityListNum = regForm.textBoxWorkIncapacity.Text; newPatient.BirthPlace = regForm.textBoxBirthPlace.Text; newPatient.BloodType = 0; newPatient.Rhesus = "Неизвестно"; newPatient.NameHashID = newPatient.FullName.GetHashCode(); try { long docNum = long.Parse(regForm.textDocumentN.Text); string docName = regForm.comboBoxDocType.Text; var doc = from d in db.DocumentsSet where (d.DocumentName == docName && d.DocumentNum == docNum) select d; if (docNum < 0) { throw new FormatException(); } if (doc.Count() == 0) { newPatient.Documents = new Documents { DocumentName = docName, DocumentNum = docNum, Person = newPatient } } ; else { throw new Exception("Данные документы уже приписаны к другой персоне"); } } catch (FormatException) { throw new Exception("В номере документа могут быть только цифры"); } catch (Exception a) { throw a; } if (regForm.textBoxPassword1.Text == regForm.textBoxPassword2.Text) { newPatient.Password = regForm.textBoxPassword1.Text; } else { throw new Exception("Пароль не совпадает с введённым во второй раз"); } if (db.PersonSet.Find(newPatient.BirthDate, newPatient.NameHashID) != null) { throw new Exception("Данный человек уже зарегистрирован"); } newPatient.MedCard = new MedCard(); newPatient.MedCard.Patient = newPatient; db.PersonSet.Add(newPatient); db.SaveChanges(); login = newPatient.FullName + "_" + newPatient.BirthDate.ToShortDateString(); password = newPatient.Password; return(true); } catch (ArgumentNullException) { MessageBox.Show("Заполните пустые поля, где не указано \"При наличии\""); return(false); } catch (ArgumentOutOfRangeException) { MessageBox.Show("Данные в полях выходят за границы возможных значений"); return(false); } catch (Exception a) { MessageBox.Show(a.Message); return(false); } } }