Не удалось отправить смс в цикле, отправив несколько смс одному человеку по ошибке - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь отправить смс на номер отсутствующих, используя gridview в asp.net.Функциональность работает следующим образом: - из всех учеников в классе, когда пользователь отключен, ученики будут помечены как отсутствующие и наоборот.- теперь проблема в том, что, когда я пытаюсь снять отметку с ученика и отправить его, он отправляет мне около 50 сообщений одновременно, хотя отсутствует только один ученик.он должен отправить только сообщение для отсутствующих.Пожалуйста, помогите мне, ссылаясь на мой код ниже.Заранее спасибо:

protected void InsertAttendence()
{
    DateTime systemdate2 = DateTime.Today.Date;
    foreach (GridViewRow row in gvStudents.Rows)
    {
        if (row.RowType == DataControlRowType.DataRow)
        {
            CheckBox chkAttendance = row.FindControl("chkAttendence") as CheckBox;
            string attendanceStatus = chkAttendance.Checked ? "Present" : "Absent";
            string Class = ((row.FindControl("lblclass") as Label).Text.Trim());
            string StudentName = ((row.FindControl("lblname") as Label).Text.Trim());
            string STSNO = ((row.FindControl("lblstsno") as Label).Text.Trim());
            string Mobile = ((row.FindControl("lblmobile") as Label).Text.Trim());
            string Division = ((row.FindControl("lbldiv") as Label).Text.Trim());
            //string sttendenceDate = (this.txtDate.Text.Trim());
            string constring = ConfigurationManager.ConnectionStrings["stjosephconnect"].ConnectionString;
            using (SqlConnection conInsert = new SqlConnection(constring))
            {
                try
                {
                    string query = "INSERT INTO studentattendance(attdate, stsno, name, mobile, class, div, attendance, remarks, status, rem) "
                                   + "VALUES(@attdate, @stsno, @name, @mobile, @class, @div, @attendance, @remarks, @status, @rem)";
                    using (SqlCommand cmd = new SqlCommand(query, conInsert))
                    {
                        conInsert.Open();
                        cmd.Parameters.AddWithValue("@attdate", systemdate2);
                        cmd.Parameters.AddWithValue("@stsno", STSNO);
                        cmd.Parameters.AddWithValue("@name", StudentName);
                        cmd.Parameters.AddWithValue("@mobile", Mobile);
                        cmd.Parameters.AddWithValue("@class", Class);
                        cmd.Parameters.AddWithValue("@div", Division);
                        cmd.Parameters.AddWithValue("@attendance", attendanceStatus);
                        cmd.Parameters.AddWithValue("@remarks", "Test Remarks!");
                        cmd.Parameters.AddWithValue("@status", "1");
                        cmd.Parameters.AddWithValue("@rem", "0");
                        int i = cmd.ExecuteNonQuery();
                        if (i > 0)
                        {
                            ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('Data saved successfully, Thank-You!');", true);
                            chkAttendance.Checked = false;
                            using (SqlConnection GetAbsentCon = new SqlConnection(constring))
                            {
                                string TodaysDate = DateTime.Now.ToString("yyyy-MM-dd");
                                GetAbsentCon.Open();
                                using (SqlCommand GetAbsentCmd = new SqlCommand("select mobile from studentattendance where  convert(varchar(10), attdate, 120) = '" + TodaysDate + "' and attendance='Absent'", GetAbsentCon))
                                {
                                    SqlDataReader dr = GetAbsentCmd.ExecuteReader();
                                    while (dr.Read())
                                    {
                                        numbers = dr["mobile"].ToString().TrimStart('0');
                                        SendSMS();
                                    }
                                    GetAbsentCon.Close();
                                }
                            }
                        }
                        else
                        {
                            ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('There was some error in connection');", true);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Response.Write("<script language='javascript'>alert('" + Server.HtmlEncode(ex.Message.ToString()) + "')</script>");
                }
                finally
                {
                    conInsert.Close();
                }
            }
        }
    }
}

Пожалуйста, помогите мне выйти из этой неловкой ситуации ..

1 Ответ

0 голосов
/ 23 мая 2018

Может быть, вам стоит добавить условие для studentId или StudentNo в это заявление Sql.

using (SqlCommand GetAbsentCmd = new SqlCommand("select mobile from studentattendance where  convert(varchar(10), attdate, 120) = '" + TodaysDate + "' and attendance='Absent'", GetAbsentCon))
...