597 lines
36 KiB
C#
597 lines
36 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.Globalization;
|
|
using SafeMobileLib;
|
|
using System.Threading;
|
|
using System.IO;
|
|
|
|
namespace ReportstoEmail
|
|
{
|
|
public partial class ReportsControl : UserControl
|
|
{
|
|
private SMdb_access smdbObj;
|
|
private String glwhere,msgLimit,msgInteger,msgMustSel;
|
|
private rep_type RepType;
|
|
private ConvertDT convDT;
|
|
private ArrayList vehicleListNames;
|
|
private ArrayList ZoneListNames;
|
|
private volatile Boolean ValidReport = false;
|
|
private String minval = "";
|
|
private Boolean ButtonStatusCancel = false;
|
|
public static volatile Hashtable IdReportHS = new Hashtable();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void backDB_DoWork(object sender, DoWorkEventArgs e)
|
|
{
|
|
BackgroundWorker worker = sender as BackgroundWorker;
|
|
e.Result = ComputeDB(worker, e);
|
|
}
|
|
|
|
long ComputeDB(BackgroundWorker worker, DoWorkEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
ValidReport = true;
|
|
if ((RepType != rep_type.ENDOFDAY) && (RepType != rep_type.STOP) && (RepType != rep_type.IDLE) && (RepType != rep_type.FLEET))
|
|
{
|
|
CheckValue();
|
|
switch (RepType)
|
|
{
|
|
case rep_type.LOG:
|
|
smdbObj.get_log_view_all(glwhere);
|
|
break;
|
|
case rep_type.EMERG:
|
|
smdbObj.get_EMERG(glwhere);
|
|
break;
|
|
case rep_type.HIST:
|
|
IdReportHS.Clear();
|
|
smdbObj.get_History(glwhere, cbComputeAddress.Checked, ckSelectALL.Checked);
|
|
if (cbComputeAddress.Checked)
|
|
{
|
|
GisAddressWorker.RunWorkerAsync();
|
|
retrynew = true;
|
|
inwhile = false;
|
|
int cntmax = 0;
|
|
if (IdReportHS.Keys.Count > 0)
|
|
{
|
|
Int32 contNR = IdReportHS.Keys.Count;
|
|
if (cntmax >= contNR)
|
|
{
|
|
retrynew = false;
|
|
inwhile = false;
|
|
}
|
|
while (retrynew)
|
|
{
|
|
inwhile = true;
|
|
Thread.Sleep(1000);
|
|
SM.Debug("Wait 1 second to update");
|
|
cntmax++;
|
|
if (cntmax > contNR) retrynew = false;
|
|
}
|
|
if (GisAddressWorker.IsBusy) GisAddressWorker.CancelAsync();
|
|
}
|
|
try
|
|
{
|
|
foreach (StopData obj3 in MainForm1.HistDataReport)
|
|
{
|
|
if (IdReportHS[obj3.Location] != null)
|
|
{
|
|
obj3.Location = (String)IdReportHS[obj3.Location];
|
|
if (obj3.Location != "no address") smdbObj.Update_address_hist(obj3.Location, obj3.unique_id, obj3.Location);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SM.Debug("Exception on add address data in DB:" + ex.ToString());
|
|
}
|
|
}
|
|
break;
|
|
case rep_type.ALLALARM:
|
|
smdbObj.get_ALLAlarm(glwhere);
|
|
break;
|
|
case rep_type.GEOFENC:
|
|
case rep_type.LAND:
|
|
smdbObj.get_LANDANDZONE(glwhere, RepType);
|
|
break;
|
|
case rep_type.TELEMETRY_EVENT:
|
|
case rep_type.TELEMETRY_ALARM:
|
|
if (glwhere != "") glwhere = glwhere + " and ";
|
|
else glwhere = " where ";
|
|
if (RepType == rep_type.TELEMETRY_ALARM) glwhere = glwhere + " alarm =1 ";
|
|
else glwhere = glwhere + " alarm =0 ";
|
|
smdbObj.get_TelemHist_alarm_event(glwhere);
|
|
foreach (SpeedData obj in MainForm1.SpeedingList)
|
|
{
|
|
Boolean updateDB = false;
|
|
if ((obj.Address == "") || (obj.Address == " "))
|
|
{
|
|
try
|
|
{
|
|
Int32 step = ((Vehicle)MainForm1.vehicleHT[(String)MainForm1.VehIDHash[obj.sc_id]]).gps_interval;
|
|
if (step * 2 < 120) step = 120;
|
|
else step = step * 2;
|
|
//gethistory
|
|
SMposition neartheTime = null;
|
|
ArrayList tmp = smdbObj.get_HistoryTelem(obj.sc_id, obj.timeGMT - step, obj.timeGMT + step);
|
|
if (tmp.Count > 0)
|
|
{
|
|
foreach (SMposition obj2 in tmp)
|
|
{
|
|
if (neartheTime == null) neartheTime = obj2;
|
|
else if (Math.Abs(neartheTime.m_time - obj.timeGMT) > Math.Abs(obj2.m_time - obj.timeGMT)) neartheTime = obj2;
|
|
}
|
|
if ((neartheTime.m_address == "") || (neartheTime.m_address == " "))
|
|
{
|
|
if (cbComputeAddress.Checked)
|
|
{
|
|
MainForm1.AddrCnt++;
|
|
MainForm1.AddrGISQueue.Enqueue(new AddrAndID(MainForm1.AddrCnt, neartheTime.m_lat, neartheTime.m_lng));
|
|
MainForm1.IdReportHS.Add(MainForm1.AddrCnt.ToString(), "no address");
|
|
String Idtofind = MainForm1.AddrCnt.ToString();
|
|
Boolean retrynew = true;
|
|
Int32 cntmax = 0;
|
|
while (retrynew)
|
|
{
|
|
cntmax++;
|
|
retrynew = false;
|
|
if ((String)MainForm1.IdReportHS[Idtofind] == "no address")
|
|
{
|
|
System.Threading.Thread.Sleep(200);
|
|
SM.Debug("wait 200msec for address");
|
|
retrynew = true;
|
|
}
|
|
else obj.Address = (String)MainForm1.IdReportHS[Idtofind];
|
|
if (cntmax > 10) retrynew = false;
|
|
}
|
|
}
|
|
else obj.Address = "";
|
|
if ((obj.Address == "") || (obj.Address == " "))
|
|
obj.Address = "LAT:" + Math.Round(neartheTime.m_lat, 5).ToString() + " , LNG:" + Math.Round(neartheTime.m_lng, 5).ToString();
|
|
else updateDB = true;
|
|
}
|
|
else
|
|
{
|
|
obj.Address = neartheTime.m_address;
|
|
updateDB = true;
|
|
}
|
|
}
|
|
else obj.Address = "N/A";
|
|
//update datebase telemetry
|
|
if (updateDB) smdbObj.Update_address_telem(obj.sc_id, obj.timeGMT, obj.Address.Replace(',', ' '));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SM.Debug("Error on update telemetry address:" + ex.ToString());
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case rep_type.SPEED:
|
|
smdbObj.get_Speeding(glwhere);
|
|
foreach (SpeedData obj in MainForm1.SpeedingList)
|
|
{
|
|
Boolean updateDB = false;
|
|
if (obj.Address == "no address")
|
|
{
|
|
try
|
|
{
|
|
Int32 step = ((Vehicle)MainForm1.vehicleHT[(String)MainForm1.VehIDHash[obj.sc_id]]).gps_interval;
|
|
if (step * 2 < 120) step = 120;
|
|
else step = step * 2;
|
|
//gethistory
|
|
SMposition neartheTime = null;
|
|
ArrayList tmp = smdbObj.get_HistorySpeed(obj.sc_id, obj.timeGMT - step, obj.timeGMT + step, obj.timeGMT);
|
|
if (tmp.Count > 0)
|
|
{
|
|
foreach (SMposition obj2 in tmp)
|
|
{
|
|
if (neartheTime == null) neartheTime = obj2;
|
|
else if (Math.Abs(neartheTime.m_time - obj.timeGMT) > Math.Abs(obj2.m_time - obj.timeGMT)) neartheTime = obj2;
|
|
}
|
|
if ((neartheTime.m_address == "") || (neartheTime.m_address == " "))
|
|
{
|
|
if (cbComputeAddress.Checked)
|
|
{
|
|
MainForm1.AddrCnt++;
|
|
MainForm1.AddrGISQueue.Enqueue(new AddrAndID(MainForm1.AddrCnt, neartheTime.m_lat, neartheTime.m_lng));
|
|
MainForm1.IdReportHS.Add(MainForm1.AddrCnt.ToString(), "no address");
|
|
String Idtofind = MainForm1.AddrCnt.ToString();
|
|
Boolean retrynew = true;
|
|
Int32 cntmax = 0;
|
|
while (retrynew)
|
|
{
|
|
cntmax++;
|
|
retrynew = false;
|
|
if ((String)MainForm1.IdReportHS[Idtofind] == "no address")
|
|
{
|
|
System.Threading.Thread.Sleep(200);
|
|
SM.Debug("Wait 200msec");
|
|
retrynew = true;
|
|
}
|
|
else obj.Address = (String)MainForm1.IdReportHS[Idtofind];
|
|
if (cntmax > 10) retrynew = false;
|
|
}
|
|
}
|
|
else obj.Address = "";
|
|
if ((obj.Address == "") || (obj.Address == " "))
|
|
obj.Address = "LAT:" + Math.Round(neartheTime.m_lat, 5).ToString() + " , LNG:" + Math.Round(neartheTime.m_lng, 5).ToString();
|
|
else updateDB = true;
|
|
}
|
|
else
|
|
{
|
|
obj.Address = neartheTime.m_address;
|
|
updateDB = true;
|
|
}
|
|
}
|
|
else obj.Address = "N/A";
|
|
//update datebase Speed
|
|
if (updateDB) smdbObj.Update_address_speed(obj.sc_id, obj.timeGMT, obj.Address.Replace(',', ' '));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SM.Debug("Error on update telemetry address:" + ex.ToString());
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (CheckLimit())
|
|
{
|
|
if ((RepType == rep_type.ENDOFDAY) || (RepType == rep_type.STOP) || (RepType == rep_type.IDLE))
|
|
{
|
|
//MainForm1.PositionList = smdbObj.get_position_for_report((Int32)(new ConvertDT().GetSecondsLocalFromDT(dtFrom.Value)) - dtFrom.Value.Hour * 3600 - dtFrom.Value.Minute * 60 - dtFrom.Value.Second, (Int32)(new ConvertDT().GetSecondsLocalFromDT(dtTo.Value)) - dtTo.Value.Hour * 3600 - dtTo.Value.Minute * 60 - dtTo.Value.Second + 86400, (((RadComboBoxItem)cbVehName.Items[cbVehName.SelectedIndex]).Value as VehandID).sc_id);
|
|
MainForm1.PositionList = smdbObj.get_position_for_report((Int32)(new ConvertDT().GetSecondsLocalFromDT(dtFrom.Value)), (Int32)(new ConvertDT().GetSecondsLocalFromDT(dtTo.Value)), (((RadListDataItem)cbVehName.Items[cbVehName.SelectedIndex]).Value as VehandID).sc_id);
|
|
MainForm1.NameReport = (((RadListDataItem)cbVehName.Items[cbVehName.SelectedIndex]).Value as VehandID).Name;
|
|
}
|
|
if (RepType == rep_type.FLEET)
|
|
{
|
|
foreach (FleetIdandPos obj in MainForm1.FleetPosList)
|
|
{
|
|
//obj.Position = smdbObj.get_position_for_report((Int32)(new ConvertDT().GetSecondsLocalFromDT(dtFrom.Value)) - dtFrom.Value.Hour * 3600 - dtFrom.Value.Minute * 60 - dtFrom.Value.Second, (Int32)(new ConvertDT().GetSecondsLocalFromDT(dtTo.Value)) - dtTo.Value.Hour * 3600 - dtTo.Value.Minute * 60 - dtTo.Value.Second + 86400, ((Vehicle)MainForm1.vehicleHT[obj.Name]).sc_id);
|
|
obj.Position = smdbObj.get_position_for_report((Int32)(new ConvertDT().GetSecondsLocalFromDT(dtFrom.Value)), (Int32)(new ConvertDT().GetSecondsLocalFromDT(dtTo.Value)), ((Vehicle)MainForm1.vehicleHT[obj.Name]).sc_id);
|
|
SM.Debug(obj.Name + " " + obj.Position.Count);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
SM.Debug("Not valid Report");
|
|
ValidReport = false;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SM.Debug("Error compute date from DB:" + ex.ToString());
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
private void backDB_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
|
{
|
|
switch (RepType)
|
|
{
|
|
case rep_type.LOG:
|
|
ONOFFReport tmp = new ONOFFReport();
|
|
tmp.timeCaptionTextBox.Value = MainForm1.returnLNGString("SMSMessTime");
|
|
switch (MainForm1.radioType)
|
|
{
|
|
case RADIOTYPE.CONECTPLUS:
|
|
case RADIOTYPE.MOTO:
|
|
tmp.titleTextBox.Value = MainForm1.returnLNGString("SMSlogradio");
|
|
break;
|
|
case RADIOTYPE.HYT:
|
|
tmp.titleTextBox.Value = MainForm1.returnLNGString("SMSlogradioHYT");
|
|
break;
|
|
case RADIOTYPE.HARRIS:
|
|
tmp.titleTextBox.Value = MainForm1.returnLNGString("SMSlogradioHARRIS");
|
|
break;
|
|
case RADIOTYPE.ATLAS:
|
|
tmp.titleTextBox.Value = MainForm1.returnLNGString("SMSlogradioAstro");
|
|
break;
|
|
case RADIOTYPE.TETRA:
|
|
tmp.titleTextBox.Value = MainForm1.returnLNGString("SMSlogradioTetra");
|
|
break;
|
|
}
|
|
tmp.statusCaptionTextBox.Value = MainForm1.returnLNGString("SMSStatus");
|
|
tmp.nameCaptionTextBox.Value = MainForm1.returnLNGString("htableVehiclesListColumns1");
|
|
reportViewer1.ReportSource = tmp;
|
|
break;
|
|
case rep_type.SPEED:
|
|
lbwaitbar.Visible = false;
|
|
prog.Visible = false;
|
|
cbComputeAddress.Visible = true;
|
|
SpeedingReport tmpSpeed = new SpeedingReport();
|
|
tmpSpeed.nameCaptionTextBox.Value = MainForm1.returnLNGString("htableVehiclesListColumns1");
|
|
if (MainForm1.isInMile) tmpSpeed.speedCaptionTextBox.Value = MainForm1.returnLNGString("tablevehiclesListColumns3") + " (" + MainForm1.milesh + ")";
|
|
else tmpSpeed.speedCaptionTextBox.Value = MainForm1.returnLNGString("tablevehiclesListColumns3") + " (" + MainForm1.kmh + ")";
|
|
tmpSpeed.timeCaptionTextBox.Value = MainForm1.returnLNGString("alarmsListColumns1");
|
|
tmpSpeed.titleTextBox.Value = MainForm1.returnLNGString("speedalarm");
|
|
tmpSpeed.dataCaptionTextBox.Value = MainForm1.returnLNGString("rapday");
|
|
tmpSpeed.addressCaptionTextBox.Value = MainForm1.returnLNGString("addrOrLatLng");
|
|
tmpSpeed.txObeserv.Value = MainForm1.returnLNGString("obsSpeed");
|
|
reportViewer1.ReportSource = tmpSpeed;
|
|
break;
|
|
case rep_type.TELEMETRY_EVENT:
|
|
case rep_type.TELEMETRY_ALARM:
|
|
lbwaitbar.Visible = false;
|
|
prog.Visible = false;
|
|
cbComputeAddress.Visible = true;
|
|
SpeedingReport tmpTelem = new SpeedingReport();
|
|
tmpTelem.nameCaptionTextBox.Value = MainForm1.returnLNGString("htableVehiclesListColumns1");
|
|
tmpTelem.timeCaptionTextBox.Value = MainForm1.returnLNGString("alarmsListColumns1");
|
|
if (RepType == rep_type.TELEMETRY_ALARM)
|
|
{
|
|
tmpTelem.titleTextBox.Value = MainForm1.returnLNGString("telemreport");
|
|
tmpTelem.speedCaptionTextBox.Value = MainForm1.returnLNGString("alarmtype");
|
|
}
|
|
else
|
|
{
|
|
tmpTelem.titleTextBox.Value = MainForm1.returnLNGString("telemevent");
|
|
tmpTelem.speedCaptionTextBox.Value = MainForm1.returnLNGString("eventype");
|
|
}
|
|
tmpTelem.dataCaptionTextBox.Value = MainForm1.returnLNGString("rapday");
|
|
tmpTelem.addressCaptionTextBox.Value = MainForm1.returnLNGString("addrOrLatLng");
|
|
tmpTelem.txObeserv.Value = "";
|
|
reportViewer1.ReportSource = tmpTelem;
|
|
break;
|
|
case rep_type.GEOFENC:
|
|
ZoneReport tmpZone = new ZoneReport();
|
|
tmpZone.landNameCaptionTextBox.Value = MainForm1.returnLNGString("zonename");
|
|
tmpZone.landTypeCaptionTextBox.Value = MainForm1.returnLNGString("alarmtype");
|
|
tmpZone.nameCaptionTextBox.Value = MainForm1.returnLNGString("htableVehiclesListColumns1");
|
|
tmpZone.timeCaptionTextBox.Value = MainForm1.returnLNGString("alarmsListColumns1");
|
|
tmpZone.titleTextBox.Value = MainForm1.returnLNGString("InZoneReport");
|
|
reportViewer1.ReportSource = tmpZone;
|
|
break;
|
|
case rep_type.LAND:
|
|
ZoneReport tmpLand = new ZoneReport();
|
|
tmpLand.landNameCaptionTextBox.Value = MainForm1.returnLNGString("landmarkname");
|
|
tmpLand.landTypeCaptionTextBox.Value = MainForm1.returnLNGString("alarmtype");
|
|
tmpLand.nameCaptionTextBox.Value = MainForm1.returnLNGString("htableVehiclesListColumns1");
|
|
tmpLand.timeCaptionTextBox.Value = MainForm1.returnLNGString("alarmsListColumns1");
|
|
tmpLand.titleTextBox.Value = MainForm1.returnLNGString("landmarkrep");
|
|
reportViewer1.ReportSource = tmpLand;
|
|
break;
|
|
case rep_type.EMERG:
|
|
ONOFFReport tmpEmerg = new ONOFFReport();
|
|
tmpEmerg.timeCaptionTextBox.Value = MainForm1.returnLNGString("alarmsListColumns1");
|
|
tmpEmerg.titleTextBox.Value = MainForm1.returnLNGString("emergAlarmRep");
|
|
tmpEmerg.statusCaptionTextBox.Value = MainForm1.returnLNGString("rapday");
|
|
tmpEmerg.nameCaptionTextBox.Value = MainForm1.returnLNGString("htableVehiclesListColumns1");
|
|
reportViewer1.ReportSource = tmpEmerg;
|
|
break;
|
|
case rep_type.HIST:
|
|
MainForm1.IsHistroyNotStop = true;
|
|
if (cbComputeAddress.Checked)
|
|
{
|
|
//btPrintReport.Enabled = true;
|
|
lbwaitbar.Visible = false;
|
|
prog.Visible = false;
|
|
cbComputeAddress.Visible = true;
|
|
}
|
|
StopReport tmpRep2 = new StopReport();
|
|
//tmpRep2.titleTextBox.Value = MainForm1.returnLNGString("namesandvehicleHistory") + " " + cbVehName.Text;
|
|
if (chVehName.Checked) tmpRep2.titleTextBox.Value = MainForm1.returnLNGString("HistoryRep") + " " + MainForm1.returnLNGString("forvehicle") + " " + cbVehName.Text;
|
|
else tmpRep2.titleTextBox.Value = MainForm1.returnLNGString("HistoryRep");
|
|
tmpRep2.timeCaptionTextBox.Value = MainForm1.returnLNGString("label3");
|
|
tmpRep2.locationCaptionTextBox.Value = MainForm1.returnLNGString("addrOrLatLng");
|
|
if (MainForm1.isInMile) tmpRep2.durationCaptionTextBox.Value = MainForm1.returnLNGString("tablevehiclesListColumns3") + " (" + MainForm1.milesh + ")";
|
|
else tmpRep2.durationCaptionTextBox.Value = MainForm1.returnLNGString("tablevehiclesListColumns3") + " (" + MainForm1.kmh + ")";
|
|
tmpRep2.dataCaptionTextBox.Value = MainForm1.returnLNGString("dateSTOP");
|
|
reportViewer1.ReportSource = tmpRep2;
|
|
|
|
/* Telerik.Reporting.Processing.ReportProcessor reportProcessor = new Telerik.Reporting.Processing.ReportProcessor();
|
|
Telerik.Reporting.InstanceReportSource instanceReportSource = new Telerik.Reporting.InstanceReportSource();
|
|
instanceReportSource.ReportDocument = (Telerik.Reporting.Report)tmpRep2;
|
|
Telerik.Reporting.Processing.RenderingResult result = reportProcessor.RenderReport("PDF", instanceReportSource, null);
|
|
|
|
using (FileStream fs = new FileStream("C:\\biguhist.pdf", FileMode.Create))
|
|
{
|
|
fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
|
|
}*/
|
|
break;
|
|
case rep_type.ALLALARM:
|
|
MainForm1.IsHistroyNotStop = true;
|
|
StopReport tmpRep3 = new StopReport();
|
|
if (chVehName.Checked)
|
|
tmpRep3.titleTextBox.Value = MainForm1.returnLNGString("allAlarmTitle") + " " + MainForm1.returnLNGString("forvehicle") + " " + cbVehName.Text;
|
|
else tmpRep3.titleTextBox.Value = MainForm1.returnLNGString("allAlarmTitle");
|
|
tmpRep3.timeCaptionTextBox.Value = MainForm1.returnLNGString("alarmtype");
|
|
tmpRep3.locationCaptionTextBox.Value = MainForm1.returnLNGString("SMSMessTime");
|
|
tmpRep3.durationCaptionTextBox.Value = MainForm1.returnLNGString("lbDescript");
|
|
tmpRep3.dataCaptionTextBox.Value = MainForm1.returnLNGString("htableVehiclesListColumns1");
|
|
reportViewer1.ReportSource = tmpRep3;
|
|
break;
|
|
case rep_type.ENDOFDAY:
|
|
if (ValidReport)
|
|
{
|
|
EndOfDay tmpEND = new EndOfDay();
|
|
tmpEND.distanceCaptionTextBox.Value = MainForm1.returnLNGString("namedistance");
|
|
tmpEND.startAddressCaptionTextBox.Value = MainForm1.returnLNGString("namestrlocTRAV");
|
|
tmpEND.stopAddressCaptionTextBox.Value = MainForm1.returnLNGString("namestoplocTRAV");
|
|
tmpEND.startTimeCaptionTextBox.Value = MainForm1.returnLNGString("namestrhourTRAV");
|
|
tmpEND.stopTimeCaptionTextBox.Value = MainForm1.returnLNGString("label3");
|
|
tmpEND.titleTextBox.Value = MainForm1.returnLNGString("nameandvehicleTRAV") + " " + cbVehName.Text;
|
|
tmpEND.tripCaptionTextBox.Value = MainForm1.returnLNGString("nameroad");
|
|
reportViewer1.ReportSource = tmpEND;
|
|
}
|
|
break;
|
|
case rep_type.STOP:
|
|
if (ValidReport)
|
|
{
|
|
MainForm1.IsHistroyNotStop = false;
|
|
MainForm1.IsIdle = false;
|
|
StopReport tmpRep = new StopReport();
|
|
tmpRep.titleTextBox.Value = MainForm1.returnLNGString("namesandvehicleSTOP") + " " + cbVehName.Text;
|
|
tmpRep.timeCaptionTextBox.Value = MainForm1.returnLNGString("label3");
|
|
tmpRep.locationCaptionTextBox.Value = MainForm1.returnLNGString("locationSTOP");
|
|
tmpRep.durationCaptionTextBox.Value = MainForm1.returnLNGString("waitingSTOP");
|
|
tmpRep.dataCaptionTextBox.Value = MainForm1.returnLNGString("dateSTOP");
|
|
reportViewer1.ReportSource = tmpRep;
|
|
}
|
|
break;
|
|
case rep_type.IDLE:
|
|
if (ValidReport)
|
|
{
|
|
MainForm1.IsHistroyNotStop = false;
|
|
MainForm1.IsIdle = true;
|
|
StopReport tmpIDLE = new StopReport();
|
|
tmpIDLE.titleTextBox.Value = MainForm1.returnLNGString("namesandvehicleSTOPENG") + " " + cbVehName.Text;
|
|
tmpIDLE.timeCaptionTextBox.Value = MainForm1.returnLNGString("label3");
|
|
tmpIDLE.locationCaptionTextBox.Value = MainForm1.returnLNGString("locationSTOP");
|
|
tmpIDLE.durationCaptionTextBox.Value = MainForm1.returnLNGString("waitingSTOP");
|
|
tmpIDLE.dataCaptionTextBox.Value = MainForm1.returnLNGString("dateSTOP");
|
|
reportViewer1.ReportSource = tmpIDLE;
|
|
}
|
|
break;
|
|
case rep_type.FLEET:
|
|
if (ValidReport)
|
|
{
|
|
FleetReport tmpFleet = new FleetReport();
|
|
tmpFleet.distanceCaptionTextBox.Value = MainForm1.returnLNGString("namedistance");
|
|
tmpFleet.nameCaptionTextBox.Value = MainForm1.returnLNGString("htableVehiclesListColumns1");
|
|
tmpFleet.startCaptionTextBox.Value = MainForm1.returnLNGString("namefirst") + " " + MainForm1.returnLNGString("namerun");
|
|
tmpFleet.stopCaptionTextBox.Value = MainForm1.returnLNGString("namefirst") + " " + MainForm1.returnLNGString("namewait");
|
|
tmpFleet.titleTextBox.Value = MainForm1.returnLNGString("titleFLEET");
|
|
tmpFleet.tripsCaptionTextBox.Value = MainForm1.returnLNGString("nameroute");
|
|
reportViewer1.ReportSource = tmpFleet;
|
|
}
|
|
break;
|
|
}
|
|
|
|
//reportViewer1.RefreshReport();
|
|
ButtonStatusCancel = false;
|
|
btPrintReport.Text = MainForm1.returnLNGString("btShowReport");
|
|
}
|
|
|
|
|
|
public static volatile Queue AddrGISQueue = new Queue();
|
|
private volatile Boolean findaddress;
|
|
private volatile AddrAndID tmpAddrAndID;
|
|
private Double valHash;
|
|
private volatile String AddrtmpX;
|
|
private volatile GoogleAddr2 volltmpGo = new GoogleAddr2();
|
|
private volatile Boolean retrynew;
|
|
private volatile Boolean inwhile = false;
|
|
|
|
private void GisAddressWorker_DoWork(object sender, DoWorkEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
BackgroundWorker worker = sender as BackgroundWorker;
|
|
|
|
while (AddrGISQueue.Count > 0)
|
|
{
|
|
if ((worker.CancellationPending == true))
|
|
{
|
|
e.Cancel = true;
|
|
break;
|
|
}
|
|
|
|
tmpAddrAndID = (AddrAndID)AddrGISQueue.Dequeue();
|
|
findaddress = false;
|
|
try
|
|
{
|
|
tmpAddrAndID.LNG = Math.Round(tmpAddrAndID.LNG, 4);
|
|
tmpAddrAndID.LAT = Math.Round(tmpAddrAndID.LAT, 4);
|
|
valHash = tmpAddrAndID.LNG + tmpAddrAndID.LAT * 0.000001;
|
|
if (MainForm1.AddrHass[valHash] != null)
|
|
{
|
|
tmpAddrAndID.Address = (String)MainForm1.AddrHass[valHash];
|
|
findaddress = true;
|
|
}
|
|
else
|
|
{
|
|
AddrtmpX = smdbObj.get_address(tmpAddrAndID.LAT, tmpAddrAndID.LNG);
|
|
if (AddrtmpX != "")
|
|
{
|
|
MainForm1.AddrHass.Add(valHash, AddrtmpX);
|
|
tmpAddrAndID.Address = AddrtmpX;
|
|
findaddress = true;
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
if (!findaddress)
|
|
{
|
|
tmpAddrAndID.Address = volltmpGo.getAddressLATLNG(tmpAddrAndID.LAT, tmpAddrAndID.LNG);
|
|
}
|
|
|
|
if ((tmpAddrAndID.Address != "") && (tmpAddrAndID.Address != " "))
|
|
{
|
|
if (!findaddress)
|
|
{
|
|
try
|
|
{
|
|
if (tmpAddrAndID.Address != "N/A")
|
|
{
|
|
valHash = tmpAddrAndID.LNG + tmpAddrAndID.LAT * 0.000001;
|
|
MainForm1.AddrHass.Add(valHash, tmpAddrAndID.Address);
|
|
AddrtmpX = smdbObj.get_address(tmpAddrAndID.LAT, tmpAddrAndID.LNG); //just for avoid Error from Event Viewer
|
|
if (AddrtmpX == "") smdbObj.Insert_Address(tmpAddrAndID.Address, tmpAddrAndID.LAT, tmpAddrAndID.LNG);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SM.Debug("Error: " + ex.ToString());
|
|
}
|
|
}
|
|
IdReportHS[tmpAddrAndID.ID.ToString()] = tmpAddrAndID.Address;
|
|
}
|
|
else
|
|
{
|
|
//dau in open street maps si apoi ies prin prin cene
|
|
Thread.Sleep(1100);
|
|
tmpAddrAndID.Address = volltmpGo.getAddressLATLNG2(tmpAddrAndID.LAT, tmpAddrAndID.LNG);
|
|
if ((tmpAddrAndID.Address != "") && (tmpAddrAndID.Address != " "))
|
|
{
|
|
if (!findaddress)
|
|
{
|
|
try
|
|
{
|
|
if (tmpAddrAndID.Address != "N/A")
|
|
{
|
|
valHash = tmpAddrAndID.LNG + tmpAddrAndID.LAT * 0.000001;
|
|
MainForm1.AddrHass.Add(valHash, tmpAddrAndID.Address);
|
|
AddrtmpX = smdbObj.get_address(tmpAddrAndID.LAT, tmpAddrAndID.LNG); //just for avoid Error from Event Viewer
|
|
if (AddrtmpX == "") smdbObj.Insert_Address(tmpAddrAndID.Address, tmpAddrAndID.LAT, tmpAddrAndID.LNG);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SM.Debug("Error: " + ex.ToString());
|
|
}
|
|
}
|
|
IdReportHS[tmpAddrAndID.ID.ToString()] = tmpAddrAndID.Address;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SM.Debug("Error retrive address:" + ex.ToString());
|
|
}
|
|
Thread.Sleep(10);
|
|
}
|
|
|
|
}
|
|
}
|