public static Model.mdlCheckinCourierRadius CheckinCourierRadius(Core.Model.mdlCheckinCourierRadiusParam param) { //var getWarehouseCoordinate = GetWarehouseCoordinate(param.CustomerID, param.WarehouseID); var listAllCoordinate = GetCustomerCoordinateAll(param.CustomerID); //var getMobileConfig = GetMobileConfig(param.BranchID); var mdlResult = new Model.mdlCheckinCourierRadius(); foreach (var coodinate in listAllCoordinate) { var SCoor = new GeoCoordinate(double.Parse(param.Latitude, CultureInfo.InvariantCulture), double.Parse(param.Longitude, CultureInfo.InvariantCulture)); var FCoor = new GeoCoordinate(double.Parse(coodinate.Latitude, CultureInfo.InvariantCulture), double.Parse(coodinate.Longitude, CultureInfo.InvariantCulture)); double distance = RadiusFacade.getDistance(SCoor, FCoor); string email = GetEmail(param.CustomerID); if (distance <= (double.Parse(param.Radius, CultureInfo.InvariantCulture) + double.Parse(coodinate.Radius, CultureInfo.InvariantCulture))) { //string res = UpdateVisitDetailRange(param.VisitID, param.CustomerID, distance, 1); mdlResult.InRange = "1"; mdlResult.Distance = distance.ToString(); return(mdlResult); } else { //string res = UpdateVisitDetailRange(param.VisitID, param.CustomerID, distance, 0); mdlResult.InRange = "0"; mdlResult.Distance = distance.ToString(); //EmailFacade.SendEmail(email); //EmailFacade.SendEmail(ConfigurationSettings.AppSettings["Email"]); } } //double distance = RadiusFacade.distance_calculate( Convert.ToDouble(param.Latitude),Convert.ToDouble(param.Longitude),Convert.ToDouble(getWarehouseCoordinate.Latitude),Convert.ToDouble(getWarehouseCoordinate.Longitude),'K')*1000; return(mdlResult); }
//Multiple Employee and to get total distance from employee's journey, above is for the single employee public static List <Model.mdlVisitReport> GetTrackingCoordinate2(List <string> lEmployeeIDlist, string branchID, DateTime date, DateTime dateEnd) { string lParam = string.Empty; foreach (var lEmployeeID in lEmployeeIDlist) { if (lParam == "") { lParam = " a.EmployeeID =" + "'" + lEmployeeID + "'"; } else { lParam += " OR a.EmployeeID =" + "'" + lEmployeeID + "'"; } } lParam = "(" + lParam + ")"; List <SqlParameter> sp = new List <SqlParameter>() { new SqlParameter() { ParameterName = "@DateStart", SqlDbType = SqlDbType.DateTime, Value = date }, new SqlParameter() { ParameterName = "@DateFinish", SqlDbType = SqlDbType.DateTime, Value = dateEnd.AddDays(1) }, new SqlParameter() { ParameterName = "@BranchID", SqlDbType = SqlDbType.NVarChar, Value = branchID } }; DataTable dtVisit = DataFacade.DTSQLCommand(@"SELECT a.BranchID,a.EmployeeID,a.VehicleID,a.StartDate,a.EndDate,a.KMStart,a.KMFinish, b.BranchName, c.EmployeeName, a.VisitDate FROM Visit a INNER JOIN Branch b ON b.BranchID = a.BranchID INNER JOIN Employee c on c.EmployeeID = a.EmployeeID WHERE (a.VisitDate BETWEEN @DateStart and @DateFinish) and (a.BranchID=@BranchID) and " + lParam + "Order By c.EmployeeName,a.StartDate", sp); var mdlVisitList = new List <Model.mdlVisitReport>(); foreach (DataRow row in dtVisit.Rows) { var mdlVisit = new Model.mdlVisitReport(); mdlVisit.BranchID = row["BranchID"].ToString(); mdlVisit.BranchName = row["BranchName"].ToString(); mdlVisit.EmployeeID = row["EmployeeID"].ToString(); mdlVisit.EmployeeName = row["EmployeeName"].ToString(); mdlVisit.VehicleID = row["VehicleID"].ToString(); mdlVisit.VisitDate = Convert.ToDateTime(row["VisitDate"]).ToString("dd-MM-yyyy"); mdlVisit.StartDate = Convert.ToDateTime(row["StartDate"]).ToString("dd-MM-yyyy HH:mm:ss"); mdlVisit.EndDate = Convert.ToDateTime(row["EndDate"]).ToString("dd-MM-yyyy HH:mm:ss"); mdlVisit.KMStart = Convert.ToInt32(row["KMStart"].ToString()); mdlVisit.KMEnd = Convert.ToInt32(row["KMFinish"].ToString()); // DataTable dtJourneyDistance = DataFacade.DTSQLCommand(@"SELECT Latitude,Longitude FROM LiveTracking // WHERE TrackingDate >= '"+Convert.ToDateTime(mdlVisit.VisitDate).ToString("yyyy-MM-dd")+"' AND TrackingDate < '"+Convert.ToDateTime(mdlVisit.EndDate).AddDays(1).ToString("yyyy-MM-dd")+"' AND BranchID = '"+mdlVisit.BranchID+"' AND EmployeeID = '"+mdlVisit.EmployeeID+"' Order by TrackingDate", sp); DataTable dtJourneyDistance = DataFacade.DTSQLCommand(@"SELECT Latitude,Longitude FROM LiveTracking WHERE TrackingDate >= '" + Convert.ToDateTime(row["VisitDate"]).ToString("yyyy-MM-dd") + "' AND TrackingDate < '" + Convert.ToDateTime(row["EndDate"]).AddDays(1).ToString("yyyy-MM-dd") + "' AND BranchID = '" + mdlVisit.BranchID + "' AND EmployeeID = '" + mdlVisit.EmployeeID + "' Order by TrackingDate", sp); var mdlTracking = new Model.mdlTrackingJourney(); double Total = 0; foreach (DataRow rowJourney in dtJourneyDistance.Rows) { if (mdlTracking.latitude == null || mdlTracking.longitude == null) { mdlTracking.latitude = rowJourney["Latitude"].ToString(); mdlTracking.longitude = rowJourney["Longitude"].ToString(); } //if (rowJourney == dtJourneyDistance.Rows[dtJourneyDistance.Rows.Count - 1]) -->> // to get the last data in looping else { mdlTracking.latitude2 = rowJourney["Latitude"].ToString(); mdlTracking.longitude2 = rowJourney["Longitude"].ToString(); var SCoor = new GeoCoordinate(double.Parse(mdlTracking.latitude, CultureInfo.InvariantCulture), double.Parse(mdlTracking.longitude, CultureInfo.InvariantCulture)); var FCoor = new GeoCoordinate(double.Parse(mdlTracking.latitude2, CultureInfo.InvariantCulture), double.Parse(mdlTracking.longitude2, CultureInfo.InvariantCulture)); double distance = RadiusFacade.getDistance(SCoor, FCoor); Total = Total + distance; mdlTracking.latitude = mdlTracking.latitude2; mdlTracking.longitude = mdlTracking.longitude2; } } mdlVisit.DistancebyGPS = Convert.ToString(Math.Ceiling(Total / 1000)); mdlVisitList.Add(mdlVisit); } return(mdlVisitList); }