public static void RunBirthdaysWithoutSMSorEmail(bool includeValidation = true) { bool enableEmails = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendEmail").Value) == 1; string emailAddress = SystemVariableDB.GetByDescr("BirthdayNotificationEmail_EmailAddress").Value; bool incPatientsWithMobile = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_IncPatientsWithMobile").Value) == 1; bool incPatientsWithEmail = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_IncPatientsWithEmail").Value) == 1; bool sendMondays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendMondays").Value) == 1; bool sendTuesdays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendTuesdays").Value) == 1; bool sendWednesdays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendWednesdays").Value) == 1; bool sendThursdays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendThursdays").Value) == 1; bool sendFridays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendFridays").Value) == 1; bool sendSaturdays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendSaturdays").Value) == 1; bool sendSundays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendSundays").Value) == 1; int fromDaysAheadMondays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendFromDaysAhead_Mondays").Value); int untilDaysAheadMondays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendUntilDaysAhead_Mondays").Value); int fromDaysAheadTuesdays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendFromDaysAhead_Tuesdays").Value); int untilDaysAheadTuesdays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendUntilDaysAhead_Tuesdays").Value); int fromDaysAheadWednesdays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendFromDaysAhead_Wednesdays").Value); int untilDaysAheadWednesdays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendUntilDaysAhead_Wednesdays").Value); int fromDaysAheadThursdays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendFromDaysAhead_Thursdays").Value); int untilDaysAheadThursdays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendUntilDaysAhead_Thursdays").Value); int fromDaysAheadFridays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendFromDaysAhead_Fridays").Value); int untilDaysAheadFridays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendUntilDaysAhead_Fridays").Value); int fromDaysAheadSaturdays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendFromDaysAhead_Saturdays").Value); int untilDaysAheadSaturdays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendUntilDaysAhead_Saturdays").Value); int fromDaysAheadSundays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendFromDaysAhead_Sundays").Value); int untilDaysAheadSundays = Convert.ToInt32(SystemVariableDB.GetByDescr("BirthdayNotificationEmail_SendUntilDaysAhead_Sundays").Value); if (includeValidation && !enableEmails) { return; } if (!Utilities.IsValidEmailAddresses(emailAddress, false)) { return; } if (includeValidation && DateTime.Today.DayOfWeek == DayOfWeek.Monday && !sendMondays) { return; } if (includeValidation && DateTime.Today.DayOfWeek == DayOfWeek.Tuesday && !sendTuesdays) { return; } if (includeValidation && DateTime.Today.DayOfWeek == DayOfWeek.Wednesday && !sendWednesdays) { return; } if (includeValidation && DateTime.Today.DayOfWeek == DayOfWeek.Thursday && !sendThursdays) { return; } if (includeValidation && DateTime.Today.DayOfWeek == DayOfWeek.Friday && !sendFridays) { return; } if (includeValidation && DateTime.Today.DayOfWeek == DayOfWeek.Saturday && !sendSaturdays) { return; } if (includeValidation && DateTime.Today.DayOfWeek == DayOfWeek.Sunday && !sendSundays) { return; } if (fromDaysAheadMondays > untilDaysAheadMondays) { return; } if (fromDaysAheadTuesdays > untilDaysAheadTuesdays) { return; } if (fromDaysAheadWednesdays > untilDaysAheadWednesdays) { return; } if (fromDaysAheadThursdays > untilDaysAheadThursdays) { return; } if (fromDaysAheadFridays > untilDaysAheadFridays) { return; } if (fromDaysAheadSaturdays > untilDaysAheadSaturdays) { return; } if (fromDaysAheadSundays > untilDaysAheadSundays) { return; } int fromDaysAhead = 0, untilDaysAhead = 0; if (DateTime.Today.DayOfWeek == DayOfWeek.Monday) { fromDaysAhead = fromDaysAheadMondays; untilDaysAhead = untilDaysAheadMondays; } if (DateTime.Today.DayOfWeek == DayOfWeek.Tuesday) { fromDaysAhead = fromDaysAheadTuesdays; untilDaysAhead = untilDaysAheadTuesdays; } if (DateTime.Today.DayOfWeek == DayOfWeek.Wednesday) { fromDaysAhead = fromDaysAheadWednesdays; untilDaysAhead = untilDaysAheadWednesdays; } if (DateTime.Today.DayOfWeek == DayOfWeek.Thursday) { fromDaysAhead = fromDaysAheadThursdays; untilDaysAhead = untilDaysAheadThursdays; } if (DateTime.Today.DayOfWeek == DayOfWeek.Friday) { fromDaysAhead = fromDaysAheadFridays; untilDaysAhead = untilDaysAheadFridays; } if (DateTime.Today.DayOfWeek == DayOfWeek.Saturday) { fromDaysAhead = fromDaysAheadSaturdays; untilDaysAhead = untilDaysAheadSaturdays; } if (DateTime.Today.DayOfWeek == DayOfWeek.Sunday) { fromDaysAhead = fromDaysAheadSundays; untilDaysAhead = untilDaysAheadSundays; } DateTime start = DateTime.Now.AddDays(fromDaysAhead); DateTime end = DateTime.Now.AddDays(untilDaysAhead); System.Data.DataTable dt; try { dt = PatientDB.GetBirthdays_DataTable(start.Month, start.Day, end.Month, end.Day); } catch (CustomMessageException ex) { Logger.LogException(ex); return; } // get their mobile and emails to filter Patient[] patients = new Patient[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { patients[i] = PatientDB.Load(dt.Rows[i]); patients[i].Person = PersonDB.Load(dt.Rows[i]); patients[i].Person.Title = IDandDescrDB.Load(dt.Rows[i], "t_title_id", "t_descr"); } Hashtable patientContactPhoneNbrHash = GetPatientPhoneNbrCache(patients); Hashtable patientContactEmailHash = GetPatientEmailCache(patients); dt.Columns.Add("mobile", typeof(string)); dt.Columns.Add("email", typeof(string)); for (int i = dt.Rows.Count - 1; i >= 0; i--) { string phoneNumPatient = GetPhoneNbr(patientContactPhoneNbrHash, patients[i].Person.EntityID, true); string emailPatient = GetEmail(patientContactEmailHash, patients[i].Person.EntityID); if ((!incPatientsWithMobile && (phoneNumPatient != null && phoneNumPatient.Length > 0)) || (!incPatientsWithEmail && (emailPatient != null && emailPatient.Length > 0))) { dt.Rows.RemoveAt(i); continue; } dt.Rows[i]["mobile"] = phoneNumPatient == null ? "" : phoneNumPatient; dt.Rows[i]["email"] = emailPatient == null ? "" : emailPatient; } // put in file to email System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("\"" + "D.O.B." + "\"").Append(","); sb.Append("\"" + "Name" + "\"").Append(","); sb.Append("\"" + "Clinic Patient" + "\"").Append(","); sb.Append("\"" + "Mobile" + "\"").Append(","); sb.Append("\"" + "Email" + "\"").Append(","); sb.AppendLine(); bool tblEmpty = (dt.Rows.Count == 1 && dt.Rows[0][0] == DBNull.Value); if (!tblEmpty) { for (int i = 0; i < dt.Rows.Count; i++) { sb.Append("\"" + Convert.ToDateTime(dt.Rows[i]["dob"]).ToString("d MMMMM, yyyy") + "\"").Append(","); sb.Append("\"" + dt.Rows[i]["firstname"].ToString() + " " + dt.Rows[i]["surname"].ToString() + (dt.Rows[i]["t_title_id"] == DBNull.Value || Convert.ToInt32(dt.Rows[i]["t_title_id"]) == 0 ? "" : " (" + dt.Rows[i]["t_descr"] + ")") + "\"").Append(","); sb.Append("\"" + (Convert.ToBoolean(dt.Rows[i]["is_clinic_patient"]) ? "Yes" : "No") + "\"").Append(","); sb.Append("\"" + dt.Rows[i]["mobile"].ToString() + "\"").Append(","); sb.Append("\"" + dt.Rows[i]["email"].ToString() + "\"").Append(","); sb.AppendLine(); } } // put in file, then email it string tmpLettersDirectory = Letter.GetTempLettersDirectory(); if (!System.IO.Directory.Exists(tmpLettersDirectory)) { throw new CustomMessageException("Temp letters directory doesn't exist"); } string tmpDir = FileHelper.GetTempDirectoryName(tmpLettersDirectory); System.IO.Directory.CreateDirectory(tmpDir); string tmpFileName = tmpDir + "Birthdays.csv"; System.IO.File.WriteAllText(tmpFileName, sb.ToString()); Emailer.SimpleEmail(emailAddress, "Upcoming Birthdays", "Please find attached all birthdays from " + fromDaysAhead + " days ahead until " + untilDaysAhead + " days ahead.<br /><br />Regards,<br />Mediclinic", true, new string[] { tmpFileName }, null); System.IO.File.Delete(tmpFileName); System.IO.Directory.Delete(tmpDir); }
protected void FillGrid() { DataTable dt; try { dt = PatientDB.GetBirthdays_DataTable(Convert.ToInt32(ddlStartDate_Month.SelectedValue), Convert.ToInt32(ddlStartDate_Day.SelectedValue), Convert.ToInt32(ddlEndDate_Month.SelectedValue), Convert.ToInt32(ddlEndDate_Day.SelectedValue)); } catch (CustomMessageException ex) { SetErrorMessage(ex.Message); return; } // get their mobile and emails Patient[] patients = new Patient[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { patients[i] = PatientDB.Load(dt.Rows[i]); patients[i].Person = PersonDB.Load(dt.Rows[i]); patients[i].Person.Title = IDandDescrDB.Load(dt.Rows[i], "t_title_id", "t_descr"); } Hashtable patientContactPhoneNbrHash = GetPatientPhoneNbrCache(patients); Hashtable patientContactEmailHash = GetPatientEmailCache(patients); ArrayList patientIDs = new ArrayList(); dt.Columns.Add("mobile", typeof(string)); dt.Columns.Add("email", typeof(string)); for (int i = dt.Rows.Count - 1; i >= 0; i--) { string phoneNumPatient = GetPhoneNbr(patientContactPhoneNbrHash, patients[i].Person.EntityID, true); string emailPatient = GetEmail(patientContactEmailHash, patients[i].Person.EntityID); if ((!chkIncWithMobile.Checked && (phoneNumPatient != null && phoneNumPatient.Length > 0)) || (!chkIncWithEmail.Checked && (emailPatient != null && emailPatient.Length > 0))) { dt.Rows.RemoveAt(i); continue; } dt.Rows[i]["mobile"] = phoneNumPatient == null ? "" : phoneNumPatient; dt.Rows[i]["email"] = emailPatient == null ? "" : emailPatient; patientIDs.Add(patients[i].PatientID); } hiddenPatientIDs.Value = string.Join(",", (int[])patientIDs.ToArray(typeof(int))); Session["data_bookingswithoutsmsoremail"] = dt; if (!IsPostBack) { chkUsePaging.Checked = dt.Rows.Count > 50; } this.GrdSummaryReport.AllowPaging = chkUsePaging.Checked; if (dt.Rows.Count > 0) { if (IsPostBack && Session["sortExpression_bookingswithoutsmsoremail"] != null && Session["sortExpression_bookingswithoutsmsoremail"].ToString().Length > 0) { DataView dataView = new DataView(dt); dataView.Sort = Session["sortExpression_bookingswithoutsmsoremail"].ToString(); GrdSummaryReport.DataSource = dataView; } else { GrdSummaryReport.DataSource = dt; } try { GrdSummaryReport.DataBind(); GrdSummaryReport.PagerSettings.FirstPageText = "1"; GrdSummaryReport.PagerSettings.LastPageText = GrdSummaryReport.PageCount.ToString(); GrdSummaryReport.DataBind(); } catch (Exception ex) { SetErrorMessage(ex.ToString()); } } else { dt.Rows.Add(dt.NewRow()); GrdSummaryReport.DataSource = dt; GrdSummaryReport.DataBind(); int TotalColumns = GrdSummaryReport.Rows[0].Cells.Count; GrdSummaryReport.Rows[0].Cells.Clear(); GrdSummaryReport.Rows[0].Cells.Add(new TableCell()); GrdSummaryReport.Rows[0].Cells[0].ColumnSpan = TotalColumns; GrdSummaryReport.Rows[0].Cells[0].Text = "No Record Found"; } }