Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Текст программы.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
101.67 Кб
Скачать

Manage Taxi.Cs

using System;

using System.Windows.Forms;

using System.Text;

using System.Net;

using System.IO;

using MyLibrary;

using Microsoft.Office.Interop.Excel;

using System.Data.OleDb;

using System.Data;

using System.Linq;

using System.Collections.Generic;

using System.Drawing;

namespace WindowsFormsApplication1

{

public partial class Manage_Taxi : Form

{

public Manage_Taxi()

{

InitializeComponent();

try

{

RefreshData();

SettingsUp();

TarifsUp();

Drivers dr = new Drivers();

getTraffic();

Get_balance();

SettingsUp();

adress.databasedriver = "Drivers1.accdb";

dr.RefreshTable(adress.databasedriver);

Timer mytimer = new Timer();

mytimer.Tick+=new EventHandler(Timer_tick);

mytimer.Interval = 100000;//100 сек

mytimer.Start();

}

catch { }

}

private void Timer_tick(Object myObject, EventArgs myEventArgs)

{

getTraffic();

Get_balance();

}

private void Get_balance()

{

double bal;

SMSC balance = new SMSC();

if (double.TryParse(balance.get_balance().Replace('.',','),out bal))

label2.Text = "Баланс: " + bal;

else label2.Text = "Баланс: не загружено";

}

private void TarifsUp()//загрузка списка тарифов

{

try

{

string line;

System.IO.StreamReader file = new System.IO.StreamReader("Tarifs.txt");

while ((line = file.ReadLine()) != null)

{

string[] lines = line.Split('|');

double price=-1, oneThree=-1,FourSix=-1,SevenTen=-1,morning=-1,day=-1,evening=-1,night=-1;

bool DependsTrafic=false,DependsTime=false;

double.TryParse(lines[2],out price);

double.TryParse(lines[4],out oneThree);

double.TryParse(lines[5],out FourSix);

double.TryParse(lines[6],out SevenTen);

double.TryParse(lines[8],out morning);

double.TryParse(lines[9],out day);

double.TryParse(lines[10],out evening);

double.TryParse(lines[11],out night);

bool.TryParse(lines[3],out DependsTrafic);

bool.TryParse(lines[7],out DependsTime);

Tarifs tar = new Tarifs(lines[0], price, lines[1], DependsTrafic, oneThree, FourSix, SevenTen, DependsTime, morning, day, evening, night);

adress.tarif.Add(tar);

}

}

catch { MessageBox.Show("Ошибка чтения тарифов","Ошибка",MessageBoxButtons.OK,MessageBoxIcon.Error); }

}

private void SettingsUp()//загрузка настроек

{

try

{

string line;

System.IO.StreamReader file = new System.IO.StreamReader("Settings.txt");

while ((line = file.ReadLine()) != null)

{

if (line.IndexOf("[smsplaced]=") > -1)

{

adress.smsplaced = line.Replace("[smsplaced]=", "");

}

if (line.IndexOf("[smscanceled]=") > -1)

{

adress.smscanceled = line.Replace("[smscanceled]=", "");

}

if (line.IndexOf("[smsplaced_Driver]=") > -1)

{

adress.smsplaced_Driver = line.Replace("[smsplaced_Driver]=", "");

}

if (line.IndexOf("[smscanceled_Driver]=") > -1)

{

adress.smscanceled_Driver = line.Replace("[smscanceled_Driver]=", "");

}

if (line.IndexOf("[translit]=") > -1)

{

int.TryParse(line.Replace("[translit]=", ""), out adress.smstranslit);

}

}

}

catch { }

}

private void RefreshData()//обновление таблицы

{

try

{

OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Orders.accdb");//

OleDbCommand com = new OleDbCommand();

OleDbDataAdapter adap = new OleDbDataAdapter();

DataSet ds = new DataSet();

System.Data.DataTable dt = new System.Data.DataTable();

com.Connection = conn;

com.CommandText = "Select * from Table1 ORDER BY № DESC";

conn.Open();

adap.SelectCommand = com;

adap.Fill(ds);

dt = ds.Tables[0];

dataGridView1.DataSource = dt;

conn.Close();

for (int i = 0; i < dataGridView1.Columns.Count; i++)

dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;

}

catch { MessageBox.Show("Не удалось загрузить базу данных\nПроверьте наличие и корректность базы данных с именем Orders.accdb в папке с приложением", "Ошибка загрузки базы заказов",MessageBoxButtons.OK,MessageBoxIcon.Error); }

}

public void CloseAdding()//метод вызываемый после добавления заказа

{

RefreshData();

}

public void getTraffic()//информация о пробках

{

try

{

string uri = @"http://www.yandex.ru";

StringBuilder sb = new StringBuilder();

byte[] buf = new byte[8192];

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Stream resStream = response.GetResponseStream();

int count = 0;

do

{

count = resStream.Read(buf, 0, buf.Length);

if (count != 0)

{

sb.Append(Encoding.UTF8.GetString(buf, 0, count));

}

}

while (count > 0);

string str = sb.ToString();

int first = str.LastIndexOf("балл");

int second = str.IndexOf("баллов");

string str2="";

if (second != -1)

{

for (int i = second - 2; i < second; i++)

str2 += str[i];

}

else

if (first != -1)

{

for (int i = first - 2; i < first; i++)

str2 += str[i];

}

int.TryParse(str2, out adress.trafic);

string ending;

if ((adress.trafic == 2) || (adress.trafic == 3) || (adress.trafic == 4))

ending = " балла";

else if (adress.trafic == 1)

ending = " балл";

else ending = " баллов";

label1.Text = "Пробки: " + adress.trafic+ending;

}

catch { }

}

private void toolStripAdd_Click(object sender, EventArgs e)//добавление заказа

{

AddOrder f1 = new AddOrder();

f1.Show();

}

private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)

{

MessageBox.Show("Выполнил студент 1 курса, отделения программной инженерии\nЛапшов Иван\nПо всем вопросам ivan.lapshov99@gmail.com", "О программе", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

private void выходToolStripMenuItem_Click(object sender, EventArgs e)

{

Close();

}

private void Manage_Taxi_FormClosing(object sender, FormClosingEventArgs e)

{

DialogResult s = MessageBox.Show("Вы уверены что хотите выйти ?\nНе сохраненные данные могут быть утеряны", "Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (s == DialogResult.Yes)

{

e.Cancel = false;

}

else

e.Cancel = true;

}

private void toolStripAddTarif_Click(object sender, EventArgs e)

{

Tarif t = new Tarif();

t.Show();

}

private void toolStripAddDriver_Click(object sender, EventArgs e)

{

Drivers f = new Drivers();

f.Show();

}

private void toolStripCancel_Click(object sender, EventArgs e)

{

if (dataGridView1.CurrentRow != null)

{

if (dataGridView1[10, dataGridView1.CurrentRow.Index].Value.ToString() != "Отменен")

{

DialogResult dialogResult = MessageBox.Show("Вы действительно хотите отменить заказ?", "Подтверждение отмены заказа", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (dialogResult == DialogResult.Yes)

{

try

{

string connectionString =

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Orders.accdb";

OleDbConnection myOleDbConnection = new OleDbConnection(connectionString);

OleDbCommand myOleDbCommand = myOleDbConnection.CreateCommand();

myOleDbCommand.CommandText = "UPDATE Table1 SET Table1.Статус = 'Отменен' WHERE [№]=" + dataGridView1[0, dataGridView1.CurrentRow.Index].Value.ToString();

myOleDbConnection.Open();

myOleDbCommand.ExecuteNonQuery();

myOleDbConnection.Close();

RefreshData();

}

catch { MessageBox.Show("Ошибка базы данных", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); }

try

{

SMSC sms = new SMSC();

string smsclientcancel = adress.smscanceled.Replace("#number", dataGridView1[0, dataGridView1.CurrentRow.Index].Value.ToString());

string smsdrivercancel = adress.smscanceled_Driver.Replace("#number", dataGridView1[0, dataGridView1.CurrentRow.Index].Value.ToString());

sms.send_sms(dataGridView1[5, dataGridView1.CurrentRow.Index].Value.ToString(), smsclientcancel, adress.smstranslit);

sms.send_sms("7" + dataGridView1[7, dataGridView1.CurrentRow.Index].Value.ToString(), smsdrivercancel, adress.smstranslit);

}

catch { MessageBox.Show("Ошибка отправки смс", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); }

}

}

}

}

private void toolStripSettings_Click(object sender, EventArgs e)

{

Settings set = new Settings();

set.Show();

}

private void toolStripExcel_Click_1(object sender, EventArgs e)

{

try

{

saveFileDialog1.Filter = "Excel file|.xls";

saveFileDialog1.Title = "Экспорт в Excel";

saveFileDialog1.ShowDialog();

if (saveFileDialog1.FileName != "")

{

Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();

Workbook ExcelWorkBook;

Worksheet ExcelWorkSheet;

//Книга.

ExcelWorkBook = ExcelApp.Workbooks.Add(System.Reflection.Missing.Value);

//Таблица.

ExcelWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ExcelWorkBook.Worksheets.get_Item(1);

for (int l = 1; l < dataGridView1.Columns.Count + 1; l++)

{

ExcelWorkSheet.Cells[1, l] = dataGridView1.Columns[l - 1].HeaderText;

ExcelWorkSheet.Cells[1, l].Font.Bold = true;

}

for (int i = 0; i < dataGridView1.Rows.Count; i++)

{

for (int j = 0; j < dataGridView1.ColumnCount; j++)

{

ExcelApp.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();

}

}

ExcelWorkSheet.Columns.AutoFit();

ExcelWorkSheet.SaveAs(saveFileDialog1.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing);

ExcelApp.Quit();

}

}

catch { MessageBox.Show("Ошибка в сохранении файла", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); }

}

private void toolStripSave_Click(object sender, EventArgs e)

{

string path = "Tarifs.txt";

using (System.IO.StreamWriter file = new System.IO.StreamWriter(path, false))

{

for(int i=0;i<adress.tarif.Count;i++)

{

Tarifs tar = (Tarifs)adress.tarif[i];

file.WriteLine(tar.Name + "|" + tar.Type + "|" + tar.Price + "|" + tar.DependTrafic + "|" + tar.OneThree + "|" + tar.FourSix + "|" + tar.SevenTen + "|" + tar.DependTime + "|" + tar.Morning + "|" + tar.Day + "|" + tar.Evening + "|" + tar.Night);

}

}

}

public bool SendNews(string whom, string message, out string listphones)//Смс рассылка

{

try

{

if (whom == "Клиентам")

{

SMSC smsmews = new SMSC();

List<string> phones = new List<string>();

for (int i = 0; i < dataGridView1.Rows.Count; i++)

{

phones.Add(dataGridView1[5, i].Value.ToString());

}

IEnumerable<string> distinctphones = phones.Distinct();//убираем одинаковые номера

listphones = String.Join(",", distinctphones);

smsmews.send_sms(listphones, message, adress.smstranslit, id: adress.newsid);

string[] status = smsmews.get_status(adress.newsid, dataGridView1[5, 0].ToString());

if ((status[0] != ""))

return true;

else return false;

}

else

if (whom == "Водителям")

{

SMSC smsmews = new SMSC();

List<string> phones = new List<string>();

for (int i = 0; i < dataGridView1.Rows.Count; i++)

{

phones.Add("7" + dataGridView1[7, i].Value.ToString());

}

IEnumerable<string> distinctphones = phones.Distinct();

listphones = String.Join(",", distinctphones);

smsmews.send_sms(listphones, message, adress.smstranslit, id: adress.newsid);

string[] status = smsmews.get_status(adress.newsid, "7" + dataGridView1[7, 0].ToString());

if ((status[0] != ""))

return true;

else return false;

}

}

catch (WebException) { MessageBox.Show("Проблемы с интернет соединением"); }

catch { }

listphones = "";

return false;

}

private void toolStripSMS_Click(object sender, EventArgs e)

{

Newsletter news = new Newsletter();

news.Show();

}

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)

{

if (dataGridView1[10, e.RowIndex].Value.ToString() == "Принят")

{

dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.LightGreen;

}

else if(dataGridView1[10, e.RowIndex].Value.ToString() == "Отменен")

{

dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.LightCoral;

}

}

}

}