Ejemplo n.º 1
0
        internal static void SendCoordinatorsEmail(SiteInfo si, string path)
        {
            var coordinators = GetStaffForEvent(8, si.Id);

            if (coordinators.Count == 0)
                return;

            //Logger.Info("after GetStaffForEvent");
            var sbBody = new StringBuilder("");
            const string newLine = "<br/>";

            sbBody.Append(newLine);
            sbBody.Append("<h2> Total Staff: " + si.PostTestNextDues.Count + "</h2>");
            sbBody.Append("<h2> Total Staff Post Tests Completed:" + si.StaffCompleted + "</h2>");
            int percent = 0;

            if (si.PostTestNextDues.Count > 0)
                percent = si.StaffCompleted * 100 / si.PostTestNextDues.Count;

            sbBody.Append("<h2> Total % Staff Post Tests Completed:" + percent + "%</h2>");

            if (si.SiteEmailLists.CompetencyMissingList.Count == 0)
                sbBody.Append("<h3>All staff members have completed threir competency tests.</h3>");
            else
            {
                var competencyMissingSortedList = si.SiteEmailLists.CompetencyMissingList.OrderBy(x => x.Name).ToList();
                sbBody.Append("<h3>The following staff members have not completed a competency test.</h3>");

                sbBody.Append("<table style='border-collapse:collapse;' cellpadding='5' border='1'><tr style='background-color:87CEEB'><th>Name</th><th>Role</th><th>Tests Not Completed</th><th>Email</th></tr>");
                foreach (var ptnd in competencyMissingSortedList)
                {
                    var email = "not entered";
                    if (ptnd.Email != null)
                        email = ptnd.Email;

                    var test = "";

                    switch (si.SiteId)
                    {
                        case "01":
                        case "02":
                        case "09":
                        case "13":
                        case "31":
                            if (ptnd.Role == "Nurse")
                            {
                                if (!ptnd.IsVampTested)
                                {
                                    if (test.Length > 0)
                                        test += " and ";
                                    test += "Vamp Jr";
                                }
                            }
                            break;
                        case "14":
                        case "20":
                        case "27":
                            break;
                        case "15":
                        case "18":
                        case "21":
                        case "30":
                        case "33":
                        case "36":
                        case "40":
                        case "43":
                            if (!ptnd.IsNovaStatStripTested)
                                test = "NovaStatStrip ";
                            break;
                        default:
                            if (!ptnd.IsNovaStatStripTested)
                                test = "NovaStatStrip ";
                            if (ptnd.Role == "Nurse")
                            {
                                if (!ptnd.IsVampTested)
                                {
                                    if (test.Length > 0)
                                        test += " and ";
                                    test += "Vamp Jr";
                                }
                            }
                            break;
                    }

                    sbBody.Append("<tr><td>" + ptnd.Name + "</td><td>" + ptnd.Role + "</td><td>" + test +
                                      "</td><td>" + email + "</td></tr>");

                }
                sbBody.Append("</table>");
            }

            //Logger.Info("after si.SiteEmailLists.CompetencyMissingList.Count");

            if (si.SiteEmailLists.EmailMissingList.Count > 0)
            {
                var emailMissingSortedList = si.SiteEmailLists.EmailMissingList.OrderBy(x => x.Name).ToList();
                sbBody.Append("<h3>The following staff members need to have their email address entered into the staff table.</h3>");

                sbBody.Append("<div><table style='border-collapse:collapse;' cellpadding='5' border='1'><tr style='background-color:87CEEB'><th>Name</th><th>Role</th></tr>");
                foreach (var ptnd in emailMissingSortedList)
                {
                    sbBody.Append("<tr><td>" + ptnd.Name + "</td><td>" + ptnd.Role + "</td></tr>");
                }
                sbBody.Append("</table></div>");
            }

            if (si.SiteEmailLists.EmployeeIdMissingList.Count > 0)
            {
                var employeeIdMissingSortedList = si.SiteEmailLists.EmployeeIdMissingList.OrderBy(x => x.Name).ToList();
                sbBody.Append("<h3>The following staff members need to have their employee ID entered into the staff table.</h3>");

                sbBody.Append("<div><table style='border-collapse:collapse;' cellpadding='5' border='1'><tr style='background-color:87CEEB'><th>Name</th><th>Role</th><th>Email</th></tr>");
                foreach (var ptnd in employeeIdMissingSortedList)
                {
                    var email = "not entered";
                    if (ptnd.Email != null)
                        email = ptnd.Email;
                    sbBody.Append("<tr><td>" + ptnd.Name + "</td><td>" + ptnd.Role + "</td><td>" + email + "</td></tr>");
                }
                sbBody.Append("</table></div>");
            }
            //Logger.Info("after si.SiteEmailLists.EmployeeIdMissingList.Count");

            if (si.SiteEmailLists.NewStaffList.Count == 0)
            { }
            else
            {
                var newSortedList = si.SiteEmailLists.NewStaffList.OrderBy(x => x.Name).ToList();
                sbBody.Append("<h3>The following new staff members have not completed their annual post tests.</h3>");

                sbBody.Append("<table style='border-collapse:collapse;' cellpadding='5' border='1'><tr style='background-color:87CEEB'><th>Name</th><th>Role</th><th>Email</th></tr>");
                foreach (var ptnd in newSortedList)
                {
                    sbBody.Append("<tr><td>" + ptnd.Name + "</td><td>" + ptnd.Role + "</td><td>" + ptnd.Email +
                                  "</td></tr>");
                }
                sbBody.Append("</table>");
            }
            //Logger.Info("after (si.SiteEmailLists.NewStaffList.Count");

            if (si.SiteEmailLists.ExpiredList.Count == 0)
            { }
            else
            {
                var expiredSortedList = si.SiteEmailLists.ExpiredList.OrderBy(x => x.Name).ToList();
                //Logger.Info("after var expiredSortedList");

                sbBody.Append("<h3>The following expired staff members have not completed their annual post tests.</h3>");

                sbBody.Append("<table style='border-collapse:collapse;' cellpadding='5' border='1'><tr style='background-color:87CEEB'><th>Name</th><th>Role</th><th>Due Date</th><th>Email</th></tr>");

                try
                {
                    foreach (var ptnd in expiredSortedList)
                    {
                        //Logger.Info("in foreach (var ptnd in expiredSortedList)");
                        //Debug.Assert(ptnd.NextDueDate != null, "ptnd.NextDueDate != null");
                        if (ptnd.NextDueDate != null)
                            sbBody.Append("<tr><td>" + ptnd.Name + "</td><td>" + ptnd.Role + "</td><td>" +
                                          ptnd.NextDueDate.Value.ToShortDateString() + "</td><td>" + ptnd.Email +
                                          "</td></tr>");
                    }
                }
                catch (Exception ex)
                {
                    Console.Write(ex.Message);
                }
                //Logger.Info("after foreach (var ptnd in expiredSortedList)");
                sbBody.Append("</table>");
            }
            //Logger.Info("after si.SiteEmailLists.ExpiredList.Count");

            if (si.SiteEmailLists.DueList.Count == 0)
                sbBody.Append("<h3>There are no staff members due to take their annual post tests.</h3>");
            else
            {
                var dueSortedList = si.SiteEmailLists.DueList.OrderBy(x => x.Name).ToList();
                sbBody.Append("<h3>The following staff members are due to take their annual post tests.</h3>");

                sbBody.Append("<table style='border-collapse:collapse;' cellpadding='5' border='1'><tr style='background-color:87CEEB'><th>Name</th><th>Role</th><th>Due Date</th><th>Email</th></tr>");
                foreach (var ptnd in dueSortedList)
                {
                    Debug.Assert(ptnd.NextDueDate != null, "ptnd.NextDueDate != null");
                    if (ptnd.NextDueDate != null)
                        sbBody.Append("<tr><td>" + ptnd.Name + "</td><td>" + ptnd.Role + "</td><td>" + ptnd.NextDueDate.Value.ToShortDateString() + "</td><td>" + ptnd.Email +
                                      "</td></tr>");
                }
                sbBody.Append("</table>");
            }
            //Logger.Info("after si.SiteEmailLists.DueList.Count");

            if (si.SiteEmailLists.StaffTestsNotCompletedList.Count > 0)
            {
                var notCompletedSortedList = si.SiteEmailLists.StaffTestsNotCompletedList.OrderBy(x => x.StaffName).ToList();
                sbBody.Append("<h3>The following staff members have not completed all post tests.</h3>");

                //sbBody.Append("<div><table style='border-collapse:collapse;' cellpadding='5' border='1';><tr style='background-color:87CEEB'><th>Name</th><th>Role</th><th>Email</th><th>Tests Not Completed</th><th>Tests Completed</th></tr>");
                sbBody.Append("<div><table style='border-collapse:collapse;' cellpadding='5' border='1';><tr style='background-color:87CEEB'><th>Name</th><th>Role</th><th>Email</th><th>Tests Not Completed</th></tr>");
                foreach (var tncl in notCompletedSortedList)
                {
                    if (tncl.TestsNotCompleted.Count == 0)
                        continue;

                    //sbBody.Append("<div>");
                    var email = "not entered";
                    if (tncl.Email != null)
                        email = tncl.Email;

                    sbBody.Append("<tr><td>" + tncl.StaffName + "</td><td>" + tncl.Role + "</td><td>" + email + "</td><td>");

                    foreach (var test in tncl.TestsNotCompleted)
                    {
                        sbBody.Append(test + newLine);
                    }
                    sbBody.Append("</td></tr>");

                }
                sbBody.Append("</table></div>");
                //Logger.Info("after si.SiteEmailLists.StaffTestsNotCompletedList.Count");
            }

            SendHtmlEmail("Post Tests Notifications - " + si.Name, coordinators.ToArray(), null, sbBody.ToString(), path, @"<a href='http://halfpintstudy.org/hpProd/'>Halfpint Study Website</a>");
        }
Ejemplo n.º 2
0
        static List<SiteInfo> GetSites()
        {
            var sil = new List<SiteInfo>();

            String strConn = ConfigurationManager.ConnectionStrings["Halfpint"].ToString();
            SqlDataReader rdr = null;
            using (var conn = new SqlConnection(strConn))
            {
                try
                {
                    var cmd = new SqlCommand("", conn) { CommandType = CommandType.StoredProcedure, CommandText = "GetSitesActive" };

                    conn.Open();
                    rdr = cmd.ExecuteReader();
                    while (rdr.Read())
                    {
                        var si = new SiteInfo();
                        var pos = rdr.GetOrdinal("ID");
                        si.Id = rdr.GetInt32(pos);
                        pos = rdr.GetOrdinal("Name");
                        si.Name = rdr.GetString(pos);
                        pos = rdr.GetOrdinal("SiteID");
                        si.SiteId = rdr.GetString(pos);
                        pos = rdr.GetOrdinal("EmpIDRequired");
                        si.EmpIdRequired = rdr.GetBoolean(pos);
                        sil.Add(si);
                    }
                    rdr.Close();
                }
                catch (Exception ex)
                {
                    Logger.Error(ex);
                }
                finally
                {
                    if (rdr != null)
                        rdr.Close();
                }
            }
            return sil;
        }