protected void btnSubmit_Click(object sender, EventArgs e) { if (GetUrlParamType() == UrlParamType.View) { maintable.Visible = false; // hide this so that we don't send all the page data (all suburbs, etc) to display before it redirects Response.Redirect(UrlParamModifier.AddEdit(Request.RawUrl, "type", "edit")); } else if (GetUrlParamType() == UrlParamType.Edit) { if (!IsValidFormID()) { HideTableAndSetErrorMessage(); return; } ContactAus contact = ContactAusDB.GetByID(GetFormID()); if (contact == null) { HideTableAndSetErrorMessage("Invalid contact ID"); return; } bool isAddress = contact.ContactType.ContactTypeGroup.ID == 1; bool isTelecoms = contact.ContactType.ContactTypeGroup.ID == 2; bool isBedroom = contact.ContactType.ContactTypeGroup.ID == 3; bool isWeb = contact.ContactType.ContactTypeGroup.ID == 4; bool isMobile = Convert.ToInt32(ddlContactType.SelectedValue) == 30; bool isPOBox = Convert.ToInt32(ddlContactType.SelectedValue) == 37 || Convert.ToInt32(ddlContactType.SelectedValue) == 262; bool isEmail = Convert.ToInt32(ddlContactType.SelectedValue) == 27; bool isWebsite = Convert.ToInt32(ddlContactType.SelectedValue) == 28; txtAddrLine1.Text = txtAddrLine1.Text.Trim(); if (isMobile && !System.Text.RegularExpressions.Regex.Replace(txtAddrLine1.Text, "[^0-9]", "").StartsWith("0")) { SetErrorMessage("Mobile number must start with 0"); return; } if (isTelecoms && System.Text.RegularExpressions.Regex.Replace(txtAddrLine1.Text, "[^0-9]", "").Length > 13) { SetErrorMessage("Phone number can not be more than 13 digits"); return; } if (isEmail && !Utilities.IsValidEmailAddress(txtAddrLine1.Text)) { SetErrorMessage("Invalid email address"); return; } if (isWebsite && !Utilities.IsValidWebURL(txtAddrLine1.Text)) { SetErrorMessage("Invalid website"); return; } if (isPOBox && !Regex.IsMatch(txtAddrLine1.Text, "PO Box", RegexOptions.IgnoreCase) && !Regex.IsMatch(txtAddrLine2.Text, "PO Box", RegexOptions.IgnoreCase)) { SetErrorMessage("The address text must contain \"PO Box\""); return; } ContactAusDB.Update(Convert.ToInt32(lblId.Text), Convert.ToInt32(ddlContactType.SelectedValue), txtFreeText.Text, isTelecoms ? System.Text.RegularExpressions.Regex.Replace(txtAddrLine1.Text, "[^0-9]", "") : txtAddrLine1.Text, txtAddrLine2.Text, txtStreet.Text, isAddress ? Convert.ToInt32(ddlAddressChannelType.SelectedValue) : (contact.AddressChannelType == null ? -1 : contact.AddressChannelType.ID), //isAddress ? Convert.ToInt32(ddlSuburb.SelectedValue) : (contact.Suburb == null ? -1 : contact.Suburb.SuburbID), isAddress ? Convert.ToInt32(suburbID.Value) : (contact.Suburb == null ? -1 : contact.Suburb.SuburbID), isAddress ? Convert.ToInt32(ddlCountry.SelectedValue) : (contact.Country == null ? -1 : contact.Country.ID), contact.Site == null ? Convert.ToInt32(Session["SiteID"]) : contact.Site.SiteID, isAddress || isWeb ? chkIsBilling.Checked : contact.IsBilling, isAddress || isWeb ? chkIsNonBilling.Checked : contact.IsNonBilling); //close this window maintable.Visible = false; // hide this so that we don't send all the page data (all suburbs, etc) to display before it closes bool refresh_on_close = Request.QueryString["refresh_on_close"] != null && Request.QueryString["refresh_on_close"] == "1"; if (refresh_on_close) { Page.ClientScript.RegisterStartupScript(this.GetType(), "close", "<script language=javascript>window.opener.location.href=window.opener.location.href;self.close();</script>"); } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "close", "<script language=javascript>window.returnValue=false;self.close();</script>"); } } else if (GetUrlParamType() == UrlParamType.Add) { if (!IsValidFormID()) { HideTableAndSetErrorMessage(); return; } int entityID = GetFormID(); if (!EntityDB.IDExists(entityID)) { HideTableAndSetErrorMessage("Invalid entity ID"); return; } int contactTypeGroupID = -1; UrlParamContactTypeGroup urlParamContactTypeGroup = GetUrlParamContactTypeGroup(); if (urlParamContactTypeGroup == UrlParamContactTypeGroup.Mailing) { contactTypeGroupID = 1; } else if (urlParamContactTypeGroup == UrlParamContactTypeGroup.Telecoms) { contactTypeGroupID = 2; } else if (urlParamContactTypeGroup == UrlParamContactTypeGroup.Bedroom) { contactTypeGroupID = 3; } else if (urlParamContactTypeGroup == UrlParamContactTypeGroup.Internet) { contactTypeGroupID = 4; } else { HideTableAndSetErrorMessage("Invalid contact_group_type ID"); return; } bool isAddress = contactTypeGroupID == 1; bool isTelecoms = contactTypeGroupID == 2; bool isBedroom = contactTypeGroupID == 3; bool isWeb = contactTypeGroupID == 4; bool isMobile = Convert.ToInt32(ddlContactType.SelectedValue) == 30; bool isPOBox = Convert.ToInt32(ddlContactType.SelectedValue) == 37 || Convert.ToInt32(ddlContactType.SelectedValue) == 262; bool isEmail = Convert.ToInt32(ddlContactType.SelectedValue) == 27; bool isWebsite = Convert.ToInt32(ddlContactType.SelectedValue) == 28; txtAddrLine1.Text = txtAddrLine1.Text.Trim(); if (isMobile && !System.Text.RegularExpressions.Regex.Replace(txtAddrLine1.Text, "[^0-9]", "").StartsWith("0")) { SetErrorMessage("Mobile number must start with 0"); return; } if (isTelecoms && System.Text.RegularExpressions.Regex.Replace(txtAddrLine1.Text, "[^0-9]", "").Length > 13) { SetErrorMessage("Phone number can not be more than 13 digits"); return; } if (isEmail && !Utilities.IsValidEmailAddress(txtAddrLine1.Text)) { SetErrorMessage("Invalid email address"); return; } if (isWebsite && !Utilities.IsValidWebURL(txtAddrLine1.Text)) { SetErrorMessage("Invalid website"); return; } if (isPOBox && !Regex.IsMatch(txtAddrLine1.Text, "PO Box", RegexOptions.IgnoreCase) && !Regex.IsMatch(txtAddrLine2.Text, "PO Box", RegexOptions.IgnoreCase)) { SetErrorMessage("The address text must contain \"PO Box\""); return; } int contactID = ContactAusDB.Insert(entityID, Convert.ToInt32(ddlContactType.SelectedValue), txtFreeText.Text, isTelecoms ? System.Text.RegularExpressions.Regex.Replace(txtAddrLine1.Text, "[^0-9]", "") : txtAddrLine1.Text, txtAddrLine2.Text, txtStreet.Text, isAddress ? Convert.ToInt32(ddlAddressChannelType.SelectedValue) : -1, //isAddress ? Convert.ToInt32(ddlSuburb.SelectedValue) : -1, isAddress ? Convert.ToInt32(suburbID.Value) : -1, isAddress ? Convert.ToInt32(ddlCountry.SelectedValue) : -1, Convert.ToInt32(Session["SiteID"]), isAddress || isWeb ? chkIsBilling.Checked : true, isAddress || isWeb ? chkIsNonBilling.Checked : true); // close this window maintable.Visible = false; // hide this so that we don't send all the page data (all suburbs, etc) to display before it closes bool refresh_on_close = Request.QueryString["refresh_on_close"] != null && Request.QueryString["refresh_on_close"] == "1"; if (refresh_on_close) { Page.ClientScript.RegisterStartupScript(this.GetType(), "close", "<script language=javascript>window.opener.location.href=window.opener.location.href;self.close();</script>"); } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "close", "<script language=javascript>window.returnValue=false;self.close();</script>"); } } else { HideTableAndSetErrorMessage("", "Invalid URL Parameters"); } }
protected int AddPhoneNbrIfNotExists(Patient patient, int siteID, string phoneNumber) { // add phone number if different from existing int phone_id = -1; string[] phoneNumbers; if (Utilities.GetAddressType().ToString() == "Contact") { phoneNumbers = ContactDB.GetByEntityID(2, patient.Person.EntityID, -1).Select(r => r.AddrLine1).ToArray(); } else if (Utilities.GetAddressType().ToString() == "ContactAus") { phoneNumbers = ContactAusDB.GetByEntityID(2, patient.Person.EntityID, -1).Select(r => r.AddrLine1).ToArray(); } else { throw new Exception("Unknown AddressType in config: " + Utilities.GetAddressType().ToString().ToString()); } bool phoneNumberAlreadyExists = false; foreach (string p in phoneNumbers) { if (Regex.Replace(p, "[^0-9]", "") == Regex.Replace(phoneNumber, "[^0-9]", "")) { phoneNumberAlreadyExists = true; } } if (!phoneNumberAlreadyExists) { if (Utilities.GetAddressType().ToString() == "Contact") { if (phoneNumber.Length > 0) { phone_id = ContactDB.Insert(patient.Person.EntityID, Convert.ToInt32(ddlPhoneNumberType.SelectedValue), "", System.Text.RegularExpressions.Regex.Replace(phoneNumber, "[^0-9]", ""), string.Empty, -1, -1, -1, siteID, true, true); } } else if (Utilities.GetAddressType().ToString() == "ContactAus") { if (phoneNumber.Length > 0) { phone_id = ContactAusDB.Insert(patient.Person.EntityID, Convert.ToInt32(ddlPhoneNumberType.SelectedValue), "", System.Text.RegularExpressions.Regex.Replace(phoneNumber, "[^0-9]", ""), string.Empty, string.Empty, -1, -1, -1, siteID, true, true); } } else { throw new Exception("Unknown AddressType in config: " + Utilities.GetAddressType().ToString().ToString()); } } return(phone_id); }
protected int AddEmailIfNotExists(Patient patient, int siteID, string email) { // add email if different from existing int email_id = -1; string[] emails = ContactDB.GetEmailsByEntityID(patient.Person.EntityID); bool emailAlreadyExists = false; foreach (string e in emails) { if (e == email) { emailAlreadyExists = true; } } if (!emailAlreadyExists) { if (Utilities.GetAddressType().ToString() == "Contact") { if (email.Length > 0) { email_id = ContactDB.Insert(patient.Person.EntityID, 27, "", email, string.Empty, -1, -1, -1, Convert.ToInt32(siteID), true, true); } } else if (Utilities.GetAddressType().ToString() == "ContactAus") { if (email.Length > 0) { email_id = ContactAusDB.Insert(patient.Person.EntityID, 27, "", email, string.Empty, string.Empty, -1, -1, -1, Convert.ToInt32(siteID), true, true); } } else { throw new Exception("Unknown AddressType in config: " + Utilities.GetAddressType().ToString().ToString()); } } return(email_id); }
protected void btnSubmit_Click(object sender, EventArgs e) { // need to be able to roll back .. so keep id's same as invoice int person_id = -1; int referrer_id = -1; int new_org_id = 0; bool referrer_added = false; int address_id = -1; int phone_id1 = -1; int phone_id2 = -1; int email_id = -1; bool contacts_added = false; try { // add referrer if (lblId.Text == "-1") // add new referrer { Staff loggedInStaff = StaffDB.GetByID(Convert.ToInt32(Session["StaffID"])); person_id = PersonDB.Insert(loggedInStaff.Person.PersonID, Convert.ToInt32(ddlTitle.SelectedValue), Utilities.FormatName(txtFirstname.Text), Utilities.FormatName(txtMiddlename.Text), Utilities.FormatName(txtSurname.Text), "", ddlGender.SelectedValue, new DateTime(1900, 1, 1)); referrer_id = ReferrerDB.Insert(person_id); } else // set existing referrer { referrer_id = Convert.ToInt32(lblId.Text); } // get org (or add new org) int org_id = 0; if (orgsListRow.Visible) { org_id = Convert.ToInt32(ddlOrgsList.SelectedValue); } else { org_id = new_org_id = OrganisationDB.InsertExtOrg(191, txtOrgName.Text, txtOrgACN.Text, txtOrgABN.Text, false, false, "", txtOrgComments.Text); // add contact info Organisation org = OrganisationDB.GetByID(org_id); if (Utilities.GetAddressType().ToString() == "Contact") { if (txtAddressAddrLine1.Text.Trim().Length > 0 || txtAddressAddrLine2.Text.Trim().Length > 0) { address_id = ContactDB.Insert(org.EntityID, Convert.ToInt32(ddlAddressContactType.SelectedValue), txtAddressFreeText.Text, txtAddressAddrLine1.Text, txtAddressAddrLine2.Text, Convert.ToInt32(ddlAddressAddressChannel.SelectedValue), //Convert.ToInt32(ddlAddressSuburb.SelectedValue), Convert.ToInt32(suburbID.Value), Convert.ToInt32(ddlAddressCountry.SelectedValue), Convert.ToInt32(Session["SiteID"]), true, true); } if (txtPhoneNumber1.Text.Trim().Length > 0) { phone_id1 = ContactDB.Insert(org.EntityID, Convert.ToInt32(ddlPhoneNumber1.SelectedValue), txtPhoneNumber1FreeText.Text, System.Text.RegularExpressions.Regex.Replace(txtPhoneNumber1.Text, "[^0-9]", ""), string.Empty, -1, -1, -1, Convert.ToInt32(Session["SiteID"]), true, true); } if (txtPhoneNumber2.Text.Trim().Length > 0) { phone_id2 = ContactDB.Insert(org.EntityID, Convert.ToInt32(ddlPhoneNumber2.SelectedValue), txtPhoneNumber2FreeText.Text, System.Text.RegularExpressions.Regex.Replace(txtPhoneNumber2.Text, "[^0-9]", ""), string.Empty, -1, -1, -1, Convert.ToInt32(Session["SiteID"]), true, true); } if (txtEmailAddrLine1.Text.Trim().Length > 0) { email_id = ContactDB.Insert(org.EntityID, Convert.ToInt32(ddlEmailContactType.SelectedValue), "", txtEmailAddrLine1.Text, string.Empty, -1, -1, -1, Convert.ToInt32(Session["SiteID"]), true, true); } } else if (Utilities.GetAddressType().ToString() == "ContactAus") { if (txtAddressAddrLine1.Text.Trim().Length > 0 || txtAddressAddrLine2.Text.Trim().Length > 0) { address_id = ContactAusDB.Insert(org.EntityID, Convert.ToInt32(ddlAddressContactType.SelectedValue), txtAddressFreeText.Text, txtAddressAddrLine1.Text, txtAddressAddrLine2.Text, txtStreet.Text, Convert.ToInt32(ddlAddressAddressChannelType.SelectedValue), //Convert.ToInt32(ddlAddressSuburb.SelctedValue), Convert.ToInt32(suburbID.Value), Convert.ToInt32(ddlAddressCountry.SelectedValue), Convert.ToInt32(Session["SiteID"]), true, true); } if (txtPhoneNumber1.Text.Trim().Length > 0) { phone_id1 = ContactAusDB.Insert(org.EntityID, Convert.ToInt32(ddlPhoneNumber1.SelectedValue), txtPhoneNumber1FreeText.Text, System.Text.RegularExpressions.Regex.Replace(txtPhoneNumber1.Text, "[^0-9]", ""), string.Empty, string.Empty, -1, -1, -1, Convert.ToInt32(Session["SiteID"]), true, true); } if (txtPhoneNumber2.Text.Trim().Length > 0) { phone_id2 = ContactAusDB.Insert(org.EntityID, Convert.ToInt32(ddlPhoneNumber2.SelectedValue), txtPhoneNumber2FreeText.Text, System.Text.RegularExpressions.Regex.Replace(txtPhoneNumber2.Text, "[^0-9]", ""), string.Empty, string.Empty, -1, -1, -1, Convert.ToInt32(Session["SiteID"]), true, true); } if (txtEmailAddrLine1.Text.Trim().Length > 0) { email_id = ContactAusDB.Insert(org.EntityID, Convert.ToInt32(ddlEmailContactType.SelectedValue), "", txtEmailAddrLine1.Text, string.Empty, string.Empty, -1, -1, -1, Convert.ToInt32(Session["SiteID"]), true, true); } } else { throw new Exception("Unknown AddressType in config: " + Utilities.GetAddressType().ToString().ToString()); } } contacts_added = true; // join association RegisterReferrerDB.Insert(org_id, referrer_id, txtProviderNumber.Text, chkIsReportEveryVisit.Checked, chkIsBatchSendAllPatientsTreatmentNotes.Checked); referrer_added = true; if (GetUrlIsPopup()) { Page.ClientScript.RegisterStartupScript(this.GetType(), "close", "<script language=javascript>window.returnValue=false;self.close();</script>"); } else { Response.Redirect("~/ReferrerList_DoctorClinicV2.aspx?surname_search=" + Utilities.FormatName(txtSurname.Text) + "&surname_starts_with=1", false); return; } } catch (Exception) { // roll back - backwards of creation order if (Utilities.GetAddressType().ToString() == "Contact") { ContactDB.Delete(address_id); ContactDB.Delete(phone_id1); ContactDB.Delete(phone_id2); ContactDB.Delete(email_id); } else if (Utilities.GetAddressType().ToString() == "ContactAus") { ContactAusDB.Delete(address_id); ContactAusDB.Delete(phone_id1); ContactAusDB.Delete(phone_id2); ContactAusDB.Delete(email_id); } else { throw new Exception("Unknown AddressType in config: " + Utilities.GetAddressType().ToString().ToString()); } OrganisationDB.Delete(new_org_id); ReferrerDB.Delete(referrer_id); PersonDB.Delete(person_id); throw; } }