
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;
}
}
}
}