Пример #1
0
        protected void HistoriqueArret(object sender, EventArgs e)
        {
            string userDate1 = this.DateField1.Value.ToString();

            string[] du = userDate1.Split(' ');
            userDate1 = du[0] + " " + this.TimeField1.Value.ToString();

            string userDate2 = this.DateField2.Value.ToString();

            string[] du2 = userDate2.Split(' ');
            userDate2 = du2[0] + " " + this.TimeField2.Value.ToString();
            string vehiculeid = "";

            vehiculeid = this.MultiCombo1.SelectedItem.Value;
            if (vehiculeid == "" || userDate1 == "" || userDate2 == "")
            {
                X.Msg.Show(new MessageBoxConfig
                {
                    Title   = Resources.Resource.Information,
                    Message = "Veuillez choisir un véhicule, une date début et une date fin pour consulter les trajets",
                    Buttons = MessageBox.Button.OK,
                    Icon    = MessageBox.Icon.INFO
                });
            }
            else
            {
                TimeSpan k = DateTime.ParseExact(userDate2, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture) - DateTime.ParseExact(userDate1, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                if (k.TotalDays <= 0)
                {
                    X.Msg.Show(new MessageBoxConfig
                    {
                        Title   = Resources.Resource.Information,
                        Message = "La date  début doit être inferieure à la date fin",
                        Buttons = MessageBox.Button.OK,
                        Icon    = MessageBox.Icon.INFO
                    });
                }
                else
                {
                    string        _reqTime = "select * from(select top 1 d.RTCDateTime from Datatracker d order by d.datatrackerid desc) a union select * from (select top 1 d.RTCDateTime from Datatracker d order by d.datatrackerid )b ";
                    SqlDataReader drT      = Select(_reqTime);

                    int m = 0;
                    while (drT.Read())
                    {
                        du[m] = drT[0].ToString();
                        m++;
                    }
                    drT.Close();
                    DateTime dsup = DateTime.ParseExact(du[1], "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                    DateTime dinf = DateTime.ParseExact(du[0], "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                    if (dsup < dinf)
                    {
                        dinf = DateTime.ParseExact(du[1], "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                        dsup = DateTime.ParseExact(du[0], "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                    }


                    if (DateTime.ParseExact(userDate1, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture) < dinf ||
                        DateTime.ParseExact(userDate1, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture) > dsup ||
                        DateTime.ParseExact(userDate2, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture) < dinf ||
                        DateTime.ParseExact(userDate2, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture) > dsup)
                    {
                        X.Msg.Show(new MessageBoxConfig
                        {
                            Title   = Resources.Resource.Information,
                            Message = "Les dates début et fin doivent être comprises entre " + dinf + " et " + dsup,
                            Buttons = MessageBox.Button.OK,
                            Icon    = MessageBox.Icon.INFO
                        });
                    }
                    else
                    {
                        int           Compt    = 0;
                        int           vites    = 0;
                        string        c        = "";
                        string        _reqlist = "select d.GPSDateTime,d.latitude,d.longitude ,p.nom+' '+p.prenom as conducteur,d.speed ,d.contact,d.adress from Datatracker d inner join boitier b on b.imei=d.imei inner join affectation_vehicule_boitier abv on abv.boitierid=b.boitierid inner join vehicules  v on v.vehiculeid = abv.vehiculeid inner join vehicule_personnel vp on vp.vehiculeid=v.vehiculeid inner join personnel p on p.personnelid=vp.personnelid where  cast(d.GPSDateTime AS datetime) >= '" + userDate1 + "' AND cast(d.GPSDateTime AS datetime) < '" + userDate2 + "' and v.vehiculeid='" + vehiculeid + "' order by cast(d.GPSDateTime AS datetime)";
                        SqlDataReader drlist   = Select(_reqlist);
                        int           ve       = 0;
                        int           tr       = 0;

                        //    while (drlist.Read())
                        //    {
                        //        Datatracker t = new Datatracker();

                        //        t.contact = Convert.ToInt32(drlist[5]);
                        //        t.GPSDateTime = drlist[0].ToString();
                        //        t.latitude = (double)drlist[1];
                        //        t.longitude = (double)drlist[2];



                        //        if (t.contact == 0)
                        //        {
                        //            tr++;
                        //            if (tr == 1)
                        //            {
                        //                arret = new Arret();
                        //                arret.SetDateD(DateTime.ParseExact(t.GPSDateTime, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture));
                        //                arret.setlatitude(t.latitude.ToString());
                        //                arret.setlongitude(t.longitude.ToString());
                        //            }



                        //        }

                        //        if (t.contact == 1 )
                        //        {
                        //            if (tr != 0)
                        //            {
                        //                arret.SetDateF(DateTime.ParseExact(t.GPSDateTime, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture));
                        //                ListArret.Add(arret);
                        //                tr = 0;
                        //            }

                        //        }



                        //    }


                        //drlist.Close();
                        while (drlist.Read())
                        {
                            Datatracker t = new Datatracker();

                            t.contact     = Convert.ToInt32(drlist[5]);
                            t.GPSDateTime = drlist[0].ToString();
                            t.latitude    = (double)drlist[1];
                            t.longitude   = (double)drlist[2];
                            t.adress      = drlist[6].ToString();;
                            List.Add(t);
                        }


                        drlist.Close();
                        for (int s = 0; s < List.Count; s++)
                        {
                            if (List[s].contact == 0)
                            {
                                tr++;
                                if (tr == 1)
                                {
                                    arret = new Arret();
                                    arret.SetDateD(DateTime.ParseExact(List[s].GPSDateTime, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture));
                                    arret.setlatitude(List[s].latitude.ToString());
                                    arret.setlongitude(List[s].longitude.ToString());
                                    arret.setadr(List[s].adress.ToString());
                                }
                            }

                            if (List[s].contact == 1)
                            {
                                if (tr != 0)
                                {
                                    arret.SetDateF(DateTime.ParseExact(List[s].GPSDateTime, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture));
                                    ListArret.Add(arret);
                                    tr = 0;
                                }
                            }
                            if (s == List.Count - 1 && List[s].contact == 0)
                            {
                                if (tr != 0)
                                {
                                    arret.SetDateF(DateTime.ParseExact(List[s].GPSDateTime, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture));
                                    ListArret.Add(arret);
                                    tr = 0;
                                }
                            }
                        }


                        List <object> lo = new List <object>();
                        if (ListArret.Count == 0)
                        {
                            X.Msg.Show(new MessageBoxConfig
                            {
                                Title   = Resources.Resource.Information,
                                Message = "Aucun arrêt n'a été fait",
                                Buttons = MessageBox.Button.OK,
                                Icon    = MessageBox.Icon.INFO
                            });
                        }
                        else
                        {
                            Store1.RemoveAll();
                            //Store Store1 = this.GridPanelVoyage.GetStore();
                            for (int i = 0; i < ListArret.Count; i++)
                            {
                                //string lat = ListArret[i].latitude;
                                //string lng = ListArret[i].longitude;
                                //string lat1 = ListArret[i].latitude.Replace(",",".");
                                //string lng1 = ListArret[i].longitude.Replace(",", ".");
                                //string adr1 = RetrieveFormatedAddress(lat1, lng1);
                                //adr1 = adr1.Replace("<formatted_address>", "*");
                                //adr1 = adr1.Replace("</formatted_address>", "*");
                                //string[] s = adr1.Split('*');
                                //string adr = s[1];
                                DateTime d  = DateTime.ParseExact(ListArret[i].GetDateD().ToString(), "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                                DateTime dd = DateTime.ParseExact(ListArret[i].GetDateF().ToString(), "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);



                                //  Address[] addresses = geoCoder.ReverseGeoCode(38.8976777, -77.036517);
                                TimeSpan duree = dd - d;
                                object[] test  = new object[6];
                                test[0] = ListArret[i].adr.ToString();
                                test[1] = ListArret[i].dateD.ToShortDateString() + " " + ListArret[i].dateD.ToLongTimeString();
                                test[2] = duree.ToString();
                                test[3] = ListArret[i].dateF.ToShortDateString() + " " + ListArret[i].dateF.ToLongTimeString();

                                test[4] = ListArret[i].latitude;
                                test[5] = ListArret[i].longitude;

                                //{ c, "adrD", Listtrajet[i].position[0].GPSDateTime, "adrF", Listtrajet[i].position[Listtrajet[i].position.Count - 1].GPSDateTime, duree.ToString(), Listtrajet[i].vitesse + " Km/H", polyline, color[col], Listtrajet[i].km + " Km" };
                                lo.Add(test);
                                //            lo.Add(new object[] { adr, ListArret[i].dateD.ToShortDateString() + " " + ListArret[i].dateD.ToLongTimeString(), duree.ToString(), ListArret[i].latitude, ListArret[i].longitude }
                                //);
                            }


                            Store1.Add(lo);
                            Store1.CommitChanges();
                        }
                    }
                }
            }
        }
Пример #2
0
        protected void HistoriqueTrajet(object sender, EventArgs e)
        {
            string userDate1 = this.DateField1.Value.ToString();

            string[] du = userDate1.Split(' ');
            userDate1 = du[0] + " " + this.TimeField1.Value.ToString();

            string userDate2 = this.DateField2.Value.ToString();

            string[] du2 = userDate2.Split(' ');
            userDate2 = du2[0] + " " + this.TimeField2.Value.ToString();
            string vehiculeid = "";

            vehiculeid = this.MultiCombo1.SelectedItem.Value;
            if (vehiculeid == "" || userDate1 == "" || userDate2 == "")
            {
                X.Msg.Show(new MessageBoxConfig
                {
                    Title   = Resources.Resource.Information,
                    Message = "Veuillez choisir un véhicule, une date début et une date fin pour consulter les trajets",
                    Buttons = MessageBox.Button.OK,
                    Icon    = MessageBox.Icon.INFO
                });
            }
            else
            {
                TimeSpan k = DateTime.ParseExact(userDate2, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture) - DateTime.ParseExact(userDate1, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                if (k.TotalDays <= 0)
                {
                    X.Msg.Show(new MessageBoxConfig
                    {
                        Title   = Resources.Resource.Information,
                        Message = "La date  début doit être inferieure à la date fin",
                        Buttons = MessageBox.Button.OK,
                        Icon    = MessageBox.Icon.INFO
                    });
                }
                else
                {
                    string        _reqTime = "select * from(select top 1 d.RTCDateTime from Datatracker d order by d.datatrackerid desc) a union select * from (select top 1 d.RTCDateTime from Datatracker d order by d.datatrackerid )b ";
                    SqlDataReader drT      = Select(_reqTime);

                    int m = 0;
                    while (drT.Read())
                    {
                        du[m] = drT[0].ToString();
                        m++;
                    }
                    drT.Close();
                    DateTime dsup = DateTime.ParseExact(du[1], "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                    DateTime dinf = DateTime.ParseExact(du[0], "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                    if (dsup < dinf)
                    {
                        dinf = DateTime.ParseExact(du[1], "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                        dsup = DateTime.ParseExact(du[0], "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                    }


                    if (DateTime.ParseExact(userDate1, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture) < dinf ||
                        DateTime.ParseExact(userDate1, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture) > dsup ||
                        DateTime.ParseExact(userDate2, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture) < dinf ||
                        DateTime.ParseExact(userDate2, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture) > dsup)
                    {
                        X.Msg.Show(new MessageBoxConfig
                        {
                            Title   = Resources.Resource.Information,
                            Message = "Les dates début et fin doivent être comprises entre " + dinf + " et " + dsup,
                            Buttons = MessageBox.Button.OK,
                            Icon    = MessageBox.Icon.INFO
                        });
                    }
                    else
                    {
                        int           Compt    = 0;
                        int           vites    = 0;
                        string        c        = "";
                        string        _reqlist = "select d.GPSDateTime,d.latitude,d.longitude ,p.nom+' '+p.prenom as conducteur,d.speed ,d.contact,d.Odometer,d.adress from Datatracker d inner join boitier b on b.imei=d.imei inner join affectation_vehicule_boitier abv on abv.boitierid=b.boitierid inner join vehicules  v on v.vehiculeid = abv.vehiculeid inner join vehicule_personnel vp on vp.vehiculeid=v.vehiculeid inner join personnel p on p.personnelid=vp.personnelid where  cast(d.GPSDateTime AS datetime) >= '" + userDate1 + "' AND cast(d.GPSDateTime AS datetime) < '" + userDate2 + "' and v.vehiculeid='" + vehiculeid + "' order by  cast(d.GPSDateTime AS datetime)";
                        SqlDataReader drlist   = Select(_reqlist);
                        int           ve       = 0;
                        int           tr       = 0;

                        while (drlist.Read())
                        {
                            Datatracker t = new Datatracker();

                            t.contact     = Convert.ToInt32(drlist[5]);
                            t.GPSDateTime = drlist[0].ToString();
                            t.latitude    = (double)drlist[1];
                            t.longitude   = (double)drlist[2];
                            t.speed       = (int)drlist[4];
                            c             = drlist[3].ToString();
                            t.Odometer    = (int)drlist[6];
                            t.adress      = drlist[7].ToString();
                            List.Add(t);
                        }

                        drlist.Close();

                        for (int s = 0; s < List.Count; s++)
                        {
                            if (List[s].contact == 1)
                            {
                                tr++;
                                if (tr == 1)
                                {
                                    Listtrack = new List <Datatracker>();
                                }
                                Listtrack.Add(List[s]);
                                vites += (int)List[s].speed;
                                ve     = 0;
                            }

                            if (List[s].contact == 0)
                            {
                                ve++;
                            }
                            if (ve == 1 && tr != 0)
                            {
                                Htrajet tt = new Htrajet();
                                tt.setposition(Listtrack);
                                tt.setConducteur(c);
                                tt.Setvehicule(vehiculeid);
                                tt.SetDateD(DateTime.ParseExact(tt.position[0].GPSDateTime, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture));
                                tt.SetDateF(DateTime.ParseExact(tt.position[tt.position.Count - 1].GPSDateTime, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture));
                                tt.vitesse = vites / (tt.position.Count);
                                vites      = 0;
                                tt.setkm((int)(tt.position[tt.position.Count - 1].Odometer - tt.position[0].Odometer) / 10);
                                Listtrajet.Add(tt);

                                tr = 0;
                            }
                            if (s == List.Count - 1 && ve == 0)
                            {
                                Htrajet tt = new Htrajet();
                                tt.setposition(Listtrack);
                                tt.setConducteur(c);
                                tt.Setvehicule(vehiculeid);
                                tt.SetDateD(DateTime.ParseExact(tt.position[0].GPSDateTime, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture));
                                tt.SetDateF(DateTime.ParseExact(tt.position[tt.position.Count - 1].GPSDateTime, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture));
                                tt.vitesse = vites / (tt.position.Count - 1);
                                vites      = 0;
                                tt.setkm((double)(((double)(tt.position[tt.position.Count - 1].Odometer) - (double)(tt.position[0].Odometer))) / 10);
                                Listtrajet.Add(tt);
                            }
                        }

                        List <object> lo = new List <object>();
                        if (Listtrajet.Count == 0)
                        {
                            X.Msg.Show(new MessageBoxConfig
                            {
                                Title   = Resources.Resource.Information,
                                Message = "Aucun trajet n'a été parcouru",
                                Buttons = MessageBox.Button.OK,
                                Icon    = MessageBox.Icon.INFO
                            });
                        }
                        else
                        {
                            Store1.RemoveAll();
                            //Store Store1 = this.GridPanelVoyage.GetStore();
                            DateTime d1 = DateTime.ParseExact(DateTime.Now.ToString("dd'/'MM'/'yyyy HH:mm:ss.fff"), "dd'/'MM'/'yyyy HH:mm:ss.fff", CultureInfo.InvariantCulture);
                            for (int i = 0; i < Listtrajet.Count; i++)
                            {
                                if (i % 4 == 0 && i >= 4)
                                {
                                    System.Threading.Thread.Sleep(1000);


                                    //DateTime d2 = DateTime.ParseExact(DateTime.Now.ToString("dd'/'MM'/'yyyy HH:mm:ss.fff"), "dd'/'MM'/'yyyy HH:mm:ss.fff", CultureInfo.InvariantCulture);
                                    //TimeSpan t = d2 - d1;
                                    //int ms = (int)t.TotalMilliseconds;
                                    //if (ms < 999)
                                    //{
                                    //    System.Threading.Thread.Sleep((1000 -ms)+5);
                                    //}
                                    //d1 = DateTime.ParseExact(DateTime.Now.ToString("dd'/'MM'/'yyyy HH:mm:ss.fff"), "dd'/'MM'/'yyyy HH:mm:ss.fff", CultureInfo.InvariantCulture);
                                }
                                DateTime d  = DateTime.ParseExact(Listtrajet[i].GetDateD().ToString(), "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                                DateTime dd = DateTime.ParseExact(Listtrajet[i].GetDateF().ToString(), "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                                //string lat = Listtrajet[i].position[0].latitude.ToString().Replace(",", ".");
                                //string lng = Listtrajet[i].position[0].longitude.ToString().Replace(",", ".");
                                //string adrD,adrF;
                                //    string adr1 = RetrieveFormatedAddress(lat, lng);
                                //    if (adr1.Contains("<formatted_address>"))
                                //    {
                                //        adr1 = adr1.Replace("<formatted_address>", "*");
                                //        adr1 = adr1.Replace("</formatted_address>", "*");
                                //        string[] s = adr1.Split('*');
                                //         adrD = s[1];
                                //    }
                                //    else
                                //    {
                                //        adrD = "pas d'adresse";
                                //    }

                                //    // string adrF = RetrieveFormatedAddress("33.5992364201655", "-7.570799214941417");
                                //    lat = Listtrajet[i].position[Listtrajet[i].position.Count - 1].latitude.ToString().Replace(",", ".");
                                //    lng = Listtrajet[i].position[Listtrajet[i].position.Count - 1].longitude.ToString().Replace(",", ".");
                                //    string adr11 = RetrieveFormatedAddress(lat, lng);
                                //    if (adr11.Contains("<formatted_address>"))
                                //    {
                                //        adr11 = adr11.Replace("<formatted_address>", "*");
                                //        adr11 = adr11.Replace("</formatted_address>", "*");
                                //        string[] ss = adr11.Split('*');
                                //         adrF = ss[1];
                                //    }
                                //    else
                                //    {
                                //          adrF = "pas d'adresse";
                                //    }

                                //  Address[] addresses = geoCoder.ReverseGeoCode(38.8976777, -77.036517);
                                TimeSpan duree = dd - d;

                                string polyline = " ";

                                for (int p = 0; p < Listtrajet[i].position.Count - 1; p++)
                                {
                                    polyline += "new google.maps.LatLng(" + Listtrajet[i].position[p].latitude.ToString().Replace(",", ".") + "," + Listtrajet[i].position[p].longitude.ToString().Replace(",", ".") + ");";
                                }

                                polyline += "new google.maps.LatLng(" + Listtrajet[i].position[Listtrajet[i].position.Count - 1].latitude.ToString().Replace(",", ".") + "," + Listtrajet[i].position[Listtrajet[i].position.Count - 1].longitude.ToString().Replace(",", ".") + ")";
                                object[] test = new object[12];
                                test[0]  = vehiculeid;
                                test[1]  = c;
                                test[2]  = Listtrajet[i].position[0].adress.ToString();
                                test[3]  = Listtrajet[i].position[0].GPSDateTime;
                                test[4]  = Listtrajet[i].position[Listtrajet[i].position.Count - 1].adress.ToString();
                                test[5]  = Listtrajet[i].position[Listtrajet[i].position.Count - 1].GPSDateTime;
                                test[6]  = duree.ToString();
                                test[7]  = Listtrajet[i].vitesse + " Km/H";
                                test[8]  = polyline;
                                test[9]  = color[col];
                                test[10] = Listtrajet[i].km + " Km";
                                //{ c, "adrD", Listtrajet[i].position[0].GPSDateTime, "adrF", Listtrajet[i].position[Listtrajet[i].position.Count - 1].GPSDateTime, duree.ToString(), Listtrajet[i].vitesse + " Km/H", polyline, color[col], Listtrajet[i].km + " Km" };

                                lo.Add(test);
                                //   lo.Add(new object[] { c, adrD, Listtrajet[i].position[0].GPSDateTime, adrF, Listtrajet[i].position[Listtrajet[i].position.Count - 1].GPSDateTime, duree.ToString(), Listtrajet[i].vitesse + " Km/H", polyline, color[col], Listtrajet[i].km + " Km" }
                                // );


                                //        //Rows[i].Cells[j].Value = image_matric[i, j].monChamp;

                                //        Ext.Net.Column newCol = new Ext.Net.Column
                                //{

                                //};
                                //        newCol.AddCls("background-color :"+color[col]);

                                //        GridPanelVoyage.ColumnModel.Add(newCol);

                                Column11.AddCls("background-color :" + color[col]);
                                Column11.TdCls = "background-color :" + color[col];

                                if (col == 9)
                                {
                                    col = 0;
                                }
                                else
                                {
                                    col++;
                                }
                            }


                            Store1.Add(lo);
                            Store1.CommitChanges();
                        }
                    }
                }
            }
        }
        protected void HistoriquePoi(object sender, EventArgs e)
        {
            string userDate1 = this.DateField1.Value.ToString();

            string[] du = userDate1.Split(' ');
            userDate1 = du[0] + " " + this.TimeField1.Value.ToString();

            string userDate2 = this.DateField2.Value.ToString();

            string[] du2 = userDate2.Split(' ');
            userDate2 = du2[0] + " " + this.TimeField2.Value.ToString();
            string vehiculeid = "";

            vehiculeid = this.MultiCombo1.SelectedItem.Value;
            if (vehiculeid == "" || userDate1 == "" || userDate2 == "")
            {
                X.Msg.Show(new MessageBoxConfig
                {
                    Title   = Resources.Resource.Information,
                    Message = "Veuillez choisir un véhicule, une date début et une date fin pour consulter les trajets",
                    Buttons = MessageBox.Button.OK,
                    Icon    = MessageBox.Icon.INFO
                });
            }
            else
            {
                TimeSpan k = DateTime.ParseExact(userDate2, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture) - DateTime.ParseExact(userDate1, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                if (k.TotalDays <= 0)
                {
                    X.Msg.Show(new MessageBoxConfig
                    {
                        Title   = Resources.Resource.Information,
                        Message = "La date  début doit être inferieure à la date fin",
                        Buttons = MessageBox.Button.OK,
                        Icon    = MessageBox.Icon.INFO
                    });
                }
                else
                {
                    string        _reqTime = "select * from(select top 1 d.RTCDateTime from Datatracker d order by d.datatrackerid desc) a union select * from (select top 1 d.RTCDateTime from Datatracker d order by d.datatrackerid )b ";
                    SqlDataReader drT      = Select(_reqTime);

                    int m = 0;
                    while (drT.Read())
                    {
                        du[m] = drT[0].ToString();
                        m++;
                    }
                    drT.Close();
                    DateTime dsup = DateTime.ParseExact(du[1], "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                    DateTime dinf = DateTime.ParseExact(du[0], "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                    if (dsup < dinf)
                    {
                        dinf = DateTime.ParseExact(du[1], "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                        dsup = DateTime.ParseExact(du[0], "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                    }


                    if (DateTime.ParseExact(userDate1, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture) < dinf ||
                        DateTime.ParseExact(userDate1, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture) > dsup ||
                        DateTime.ParseExact(userDate2, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture) < dinf ||
                        DateTime.ParseExact(userDate2, "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture) > dsup)
                    {
                        X.Msg.Show(new MessageBoxConfig
                        {
                            Title   = Resources.Resource.Information,
                            Message = "Les dates début et fin doivent être comprises entre " + dinf + " et " + dsup,
                            Buttons = MessageBox.Button.OK,
                            Icon    = MessageBox.Icon.INFO
                        });
                    }
                    else
                    {
                        int    Compt    = 0;
                        int    vites    = 0;
                        string c        = "";
                        string _reqlist = "select * from "
                                          + " (select p.libelle as poi, p.type_poi ,p.longitude as lng ,p.latitude as lat,GPSDateTime as date,"
                                          + " per.prenom+' '+per.nom as conducteur,"
                                          + " geography::STGeomFromText('POINT('+convert(varchar(20),p.longitude)+' '+convert(varchar(20),p.latitude)+')',4326).STBuffer(p.tolerance).STIntersects "
                                          + " (geography::STGeomFromText('POINT('+convert(varchar(20),d.longitude)+' '+convert(varchar(20),d.latitude)+')',4326).STBuffer(10)) as inter"
                                          + " from Poi p  CROSS JOIN Datatracker  d "
                                          + "  inner join boitier b on b.imei=d.imei "
                                          + "  inner join affectation_vehicule_boitier abv on abv.boitierid=b.boitierid"
                                          + "  inner join vehicules  v on v.vehiculeid = abv.vehiculeid "
                                          + "  inner join vehicule_personnel vp on vp.vehiculeid=v.vehiculeid"
                                          + "  inner join personnel per on per.personnelid=vp.personnelid"
                                          + " where  cast(d.GPSDateTime AS datetime) >= '" + userDate1 + "' "
                                          + " AND cast(d.GPSDateTime AS datetime) < '" + userDate2 + "'and v.vehiculeid='" + vehiculeid + "'"
                                          + " and p.actif='1' and p.clientid='" + this.getCurrentUser().getClientId() + "' and p.userid ='" + this.getCurrentUser().getUserId() + "'  and d.speed=0) aff where aff.inter=1   ";

                        SqlDataReader drlist = Select(_reqlist);


                        while (drlist.Read())
                        {
                            Pois t = new Pois();
                            t.nom   = drlist[0].ToString();
                            t.lat   = drlist[3].ToString();
                            t.lng   = drlist[2].ToString();
                            t.type  = drlist[1].ToString();
                            t.cond  = drlist[5].ToString();
                            t.dateD = drlist[4].ToString();
                            Listpoi.Add(t);
                        }

                        drlist.Close();

                        for (int i = 0; i < Listpoi.Count - 1; i++)
                        {
                            Pois p = new Pois();
                            p.dateD = Listpoi[i].dateD;
                            int j;
                            for (j = i; j < Listpoi.Count - 1 && Listpoi[j].lat == Listpoi[j + 1].lat && Listpoi[j].lng == Listpoi[j + 1].lng; j++)
                            {
                                ;
                            }
                            i       = j;
                            p.dateF = Listpoi[i].dateD;
                            if (i == Listpoi.Count - 1)
                            {
                                p.dateF = Listpoi[i].dateD;
                            }

                            p.nom  = Listpoi[i].nom;
                            p.lat  = Listpoi[i].lat;
                            p.lng  = Listpoi[i].lng;
                            p.type = Listpoi[i].type;
                            p.cond = Listpoi[i].cond;
                            DateTime d     = DateTime.ParseExact(p.dateD.ToString(), "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                            DateTime dd    = DateTime.ParseExact(p.dateF.ToString(), "dd'/'MM'/'yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                            TimeSpan duree = dd - d;
                            p.duree = duree.ToString();
                            ListpoiAff.Add(p);
                        }


                        List <object> lo = new List <object>();
                        if (ListpoiAff.Count == 0)
                        {
                            X.Msg.Show(new MessageBoxConfig
                            {
                                Title   = Resources.Resource.Information,
                                Message = "Aucun trajet n'a été parcouru",
                                Buttons = MessageBox.Button.OK,
                                Icon    = MessageBox.Icon.INFO
                            });
                        }
                        else
                        {
                            Store1.RemoveAll();

                            for (int i = 0; i < ListpoiAff.Count; i++)
                            {
                                object[] test = new object[9];
                                test[0] = ListpoiAff[i].cond;
                                test[1] = ListpoiAff[i].nom;
                                test[2] = ListpoiAff[i].type;
                                test[3] = ListpoiAff[i].dateD;
                                test[4] = ListpoiAff[i].dateF;
                                test[5] = ListpoiAff[i].duree;
                                test[6] = ListpoiAff[i].lat;
                                test[7] = ListpoiAff[i].lng;

                                //{ c, "adrD", Listtrajet[i].position[0].GPSDateTime, "adrF", Listtrajet[i].position[Listtrajet[i].position.Count - 1].GPSDateTime, duree.ToString(), Listtrajet[i].vitesse + " Km/H", polyline, color[col], Listtrajet[i].km + " Km" };
                                lo.Add(test);
                                //            lo.Add(new object[] { ListpoiAff[i].cond, ListpoiAff[i].nom,ListpoiAff[i].type, ListpoiAff[i].dateD, ListpoiAff[i].dateF, ListpoiAff[i].duree, ListpoiAff[i].lat, ListpoiAff[i].lng }
                                //);
                            }


                            Store1.Add(lo);
                            Store1.CommitChanges();
                        }
                    }
                }
            }
        }