Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дипломная работа_Резникова.doc
Скачиваний:
6
Добавлен:
13.11.2019
Размер:
804.86 Кб
Скачать

2.5 Страница сайта, отображающая информацию с базы данных Newsletters.Cs

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.Profile;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

using MB.AppliedMathematics.DAL.Details;

using MB.AppliedMathematics.DAL.SqlClient;

using System.IO;

using System.Net.Mail;

using System.Net;

using System.Text;

using System.Net.Mime;

using System.Web.Configuration;

using System.Net.Configuration;

using System.Collections.Generic;

namespace MB.AppliedMathematics.UI

{

public partial class Newsletters : BasePage

{

private bool _userCanEdit = false;

protected bool UserCanEdit

{

get { return _userCanEdit; }

set { _userCanEdit = value; }

}

protected void Page_Init(object sender, EventArgs e)

{

UserCanEdit = (this.User.Identity.IsAuthenticated &&

(this.User.IsInRole("Administrators") || this.User.IsInRole("Editors")));

}

protected void Page_Load(object sender, EventArgs e)

{

// панели для редактирования новости видны только администраторам и редакторам

if (!this.IsPostBack)

{ if (this.User.Identity.IsAuthenticated &&

(this.User.IsInRole("Administrators") || this.User.IsInRole("Editors")))

{ panAdd.Visible = true;

AddNews.Visible = true; }

Data(TextBoxSearch.Text); }

ImageSendGreed();

}

// показываем в ввиде картинки состояние новости, разослана она или нет подписчикам

protected void ImageSendGreed()

{ for (int i = 0; i < ListView1.Items.Count; i++)

{ Image ImageNewsletter = (Image)ListView1.Items[i].FindControl("ImageNewsletter");

Label LabelNewsletter = (Label)ListView1.Items[i].FindControl("LabelNewsletter");

if (LabelNewsletter.Text == "False")

{ImageNewsletter.ToolTip = "Новость еще не разослана";

ImageNewsletter.ImageUrl = "~/Images/Envelope.png";}

else

{ImageNewsletter.ToolTip = "Новость разослана";

ImageNewsletter.ImageUrl = "~/Images/OpenEnvelope.png";}

} }

// формируем DataSet с именами и e-mail подписчиков

protected DataSet Addresset()

{

DataSet Address = new DataSet();

Address.Tables.Add("Table");

Address.Tables["Table"].Columns.Add("User");

Address.Tables["Table"].Columns.Add("eMail");

MembershipUserCollection allUsers = Membership.GetAllUsers();

foreach (MembershipUser user in allUsers)

{ProfileCommon profile = new ProfileCommon();

profile = Profile.GetProfile(user.UserName);

if (profile.Preferences.Newsletter == "Да")

{DataRow dr = Address.Tables["Table"].NewRow();

dr["User"] = user.UserName;

dr["eMail"] = user.Email;

Address.Tables["Table"].Rows.Add(dr);

}}

return Address;

}

// процедура отправки письма с новостью

protected int SendMail(string user, string email, string subject, string bodyText)

{try

{Configuration config = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);

MailSettingsSectionGroup settings = (MailSettingsSectionGroup)config.GetSectionGroup("system.net/mailSettings");

SmtpClient Smtp = new SmtpClient(settings.Smtp.Network.Host, settings.Smtp.Network.Port);

Smtp.Credentials = new NetworkCredential(settings.Smtp.From, settings.Smtp.Network.Password);

// оправляем сообщение

MailMessage msg = new MailMessage();

msg.IsBodyHtml = false;

msg.From = new MailAddress(settings.Smtp.From);

msg.To.Add(new MailAddress(email, ""));

msg.IsBodyHtml = true;

msg.Subject = string.Format(Globals.Settings.ContactForm.MailSubject, subject);

string body = "Здравствуйте " + user + "!"+"\n";

body = body + bodyText;

msg.Body = body;

Smtp.Send(msg);

return 1;

}

catch (Exception ex)

{ return 0; }

}

// отправка писем происходит в событии таймера

protected void Timer1_Tick(object sender, EventArgs e)

{DataSet Addres = (DataSet)Application["Address"];

int index = (int)Application["index"];

NewsletterDetails zap = (NewsletterDetails)Application["Newsletter"];

if (index < Addres.Tables[0].Rows.Count)

{DataRow dr = Addres.Tables[0].Rows[index];

LabelSendCurrent.Text = (index + 1).ToString();

Application["LetterSend"] = (int)Application["LetterSend"] + SendMail(dr["User"].ToString(), dr["eMail"].ToString(), "Новости", "\n"+"Тема новости: "+zap.Subject+"\n"+zap.HtmlBody);

Application["index"] = (int)Application["index"] + 1;

}

else

{SQLNewsletterProvider MyDb = new SQLNewsletterProvider();

MyDb.UpdateNewsletterSend(zap.ID);

Timer1.Enabled = false;

int LetterSend = (int)Application["LetterSend"];

int LetterNoSend = Addres.Tables[0].Rows.Count - LetterSend;

LabelLetterSendL.Visible = true;

LabelLetterNoSendL.Visible = true;

LabelLetterSend.Text = LetterSend.ToString();

LabelLetterNoSend.Text = LetterNoSend.ToString();

PanelAnim.Visible = false;

ButtonOK.Visible = true;

Data(TextBoxSearch.Text);

ImageSendGreed();

}}

protected void clear()

{LabelLetterSendL.Visible = false;

LabelLetterNoSendL.Visible = false;

LabelLetterSend.Text = "";

LabelLetterNoSend.Text = "";

LabelSendCurrent.Text = "0"; }

protected void ButtonOK_Click(object sender, EventArgs e)

{PanelSendEmail.Visible = false;}

//кнопка поиска

protected void ImageButtonSearch_Click(object sender, ImageClickEventArgs e)

{Data(TextBoxSearch.Text);}

//заполнение данными ListView с новостями

protected void Data(string param)

{SQLNewsletterProvider myDB = new SQLNewsletterProvider();

List<NewsletterDetails> zaps = new List<NewsletterDetails>();

zaps = myDB.GetNewsletters(param);

ObjectDataSource1.SelectParameters["param"] = new Parameter("param", TypeCode.String, TextBoxSearch.Text);

ListView1.DataBind();

LabelCount.Text = zaps.Count.ToString();

TextBoxSearch.Text = "";

}

// команды в записях ListView

protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)

{ if (e.CommandName == "Send")

{

clear();

SQLNewsletterProvider MyDb = new SQLNewsletterProvider();

NewsletterDetails zap = new NewsletterDetails();

int id = Convert.ToInt32(e.CommandArgument.ToString());

zap = MyDb.GetNewsletterByID(id);

Application["Newsletter"] = zap;

DataSet Address = new DataSet();

Address = Addresset();

Application["Address"] = Address;

Application["index"] = 0;

Application["LetterSend"] = 0;

Application["LetternoSend"] = 0;

LabelCountAddress.Text = Address.Tables["Table"].Rows.Count.ToString();

PanelSendEmail.Visible = true;

Timer1.Enabled = true;

PanelAnim.Visible = true;

}

if (e.CommandName == "Del")

{

SQLNewsletterProvider MyDb = new SQLNewsletterProvider();

MyDb.DeleteNewsletter(Convert.ToInt32(e.CommandArgument.ToString()));

Data(TextBoxSearch.Text);

ImageSendGreed();

}}}}