/// <summary> /// Save the data in the input datagram and the output datagram. Currently this saves them both to disk. /// </summary> /// <param name="datagram">Input POCO</param> /// <param name="output">Result POCO</param> private static void saveData(ManifestRequest datagram, ManifestResponse output) { string fileNameBase = string.Format("{0}@{1}", datagram.ContractorID, datagram.ShipmentID); var drives = DriveInfo.GetDrives(); //DriveInfo drive = null; ////Get the last drive on the machine //for (int lcv = 0; lcv < drives.Length; lcv++) //{ // if (drives[lcv].IsReady && drives[lcv].DriveType == DriveType.Fixed) // { // drive = drives[lcv]; // } //} //string path = drive.RootDirectory.FullName + "data"; string path = System.Configuration.ConfigurationManager.AppSettings["dataFolder"]; createDirectory(path); createDirectory(path + @"\datagrams"); createDirectory(path + @"\results"); string inputFile = string.Format("{0}\\datagrams\\{1}.datagram.json", path, fileNameBase); string outputFile = string.Format("{0}\\results\\{1}.result.json", path, fileNameBase); File.WriteAllText(inputFile, JsonConvert.SerializeObject(datagram)); File.WriteAllText(outputFile, JsonConvert.SerializeObject(output)); }
/// <summary> /// Accept and process a Manifest request. Use the Distance calculation engine to compute the distance. /// </summary> /// <param name="datagram">Input request</param> /// <returns>Manifest Response - simple POCO with results</returns> public static ManifestResponse ProcessMessage(ManifestRequest datagram) { //TASK: Use the distance calculation engine here var distance = -1; var output = new ManifestResponse() { ServerAddress = System.Environment.MachineName, ClientAddress = datagram.ClientAddress, Distance = distance, Status = distance < 1000 ? ManifestStatus.Accepted : ManifestStatus.Pending }; saveData(datagram, output); return(output); }
public ResponseBase <ManifestResponse> FindData(ManifestRequest request) { ManifestValidator validator; ValidationResult results; ResponseBase <ManifestResponse> response; ManifestResponse manifestResponse; try { //throw new Exception("webeo"); validator = new ManifestValidator(); results = validator.Validate(request); manifestResponse = new ManifestResponse(); if (results.IsValid) { var queryResult = _context.TBL_MAN_MANIFEST.Where(x => (x.VCH_DIRECTMASTERGUIDE == request.VCH_DIRECTMASTERGUIDE || request.VCH_DIRECTMASTERGUIDE == null) && (x.DAT_DEPARTUREDATE >= request.DAT_STARTDATE || request.DAT_STARTDATE == null) && (x.DAT_DEPARTUREDATE <= request.DAT_ENDDATE || request.DAT_ENDDATE == null) && (x.VCH_CONSIGNEE.Contains(request.VCH_CONSIGNEE) || request.VCH_CONSIGNEE == null) && (x.VCH_SHIPPER.Contains(request.VCH_SHIPPER) || request.VCH_SHIPPER == null) && (x.VCH_DESCRIPTION.Contains(request.VCH_DESCRIPTION) || request.VCH_DESCRIPTION == null) && (x.VCH_AIRLINE.Contains(request.VCH_AIRLINE) || request.VCH_AIRLINE == null) && (x.VCH_DESTINATION == request.VCH_DESTINATION || request.VCH_DESTINATION == null) && ((x.DAT_DEPARTUREDATE.Value.Year == request.INT_YEAR && x.INT_WEEK >= request.INT_STARTWEEK && x.INT_WEEK <= request.INT_ENDWEEK) || (request.INT_YEAR == null || request.INT_STARTWEEK == null || request.INT_ENDWEEK == null))).OrderByDescending(x => x.DAT_DEPARTUREDATE); int pageCount = queryResult.Count(); var listManifests = queryResult.Skip((request.INT_CURRENTPAGE - 1) * request.INT_LIMITPAGES).Take(request.INT_LIMITPAGES == 1000 ? pageCount : request.INT_LIMITPAGES).ToList(); manifestResponse.INT_TOTALREGISTERS = pageCount; manifestResponse.INT_CURRENTPAGE = request.INT_CURRENTPAGE; manifestResponse.Manifests = listManifests; response = new UtilityResponse <ManifestResponse>().SetResponseBaseForObj(manifestResponse); } else { response = new UtilityResponse <ManifestResponse>().SetResponseBaseFunctionalErrors(results); } return(response); } catch (Exception ex) { response = new UtilityResponse <ManifestResponse>().SetResponseBaseForException(ex); return(response); } finally { response = null; validator = null; results = null; _context.Database.Connection.Close(); } }
static void Main(string[] args) { Test(); int id = 890; List <int> ids = new List <int> { 888, 889, 890, 891, 892, 893, 894 }; if (ids.Contains(id)) { string aayaz = "aaaaa"; Console.WriteLine(aayaz); } ManifestResponse manifestResponse = new ManifestResponse(); manifestResponse = GetManifestResponse(100); }
/// <summary> /// Accept and process a Manifest request. The algorythm is based on a StackOverflow post: /// http://stackoverflow.com/questions/365826/calculate-distance-between-2-gps-coordinates /// I did some basic testing and it seems pretty legitimate. /// </summary> /// <param name="datagram">Input request</param> /// <returns>Manifest Response - simple POCO with results</returns> public static ManifestResponse ProcessMessage(ManifestRequest datagram) { var earthRadiusKm = 6371; var dLat = degreesToRadians(datagram.End.Latitude - datagram.Start.Latitude); var dLon = degreesToRadians(datagram.End.Longitude - datagram.Start.Longitude); var lat1 = degreesToRadians(datagram.End.Latitude); var lat2 = degreesToRadians(datagram.Start.Latitude); var a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) + Math.Sin(dLon / 2) * Math.Sin(dLon / 2) * Math.Cos(lat1) * Math.Cos(lat2); var c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a)); var distance = earthRadiusKm * c; var output = new ManifestResponse() { ServerAddress = System.Environment.MachineName, ClientAddress = datagram.ClientAddress, Distance = distance, Status = distance < 1000 ? ManifestStatus.Accepted : ManifestStatus.Pending }; saveData(datagram, output); return(output); }
public static ManifestResponse GetManifestResponse(int code) { code = 200; ManifestResponse manifestResponse = new ManifestResponse(); if (code == 0) { manifestResponse.ResponseCode = "00"; manifestResponse.ResponseDescription = ""; } else { string responseCodeFirst = ""; if (code.ToString().Length > 2) { //responseCodeFirst = (CommonLib.Helpers.Left((CommonLib.Helpers., 1) + 50).ToString()); } manifestResponse.ResponseCode = CommonLib.Helpers.Right("0" + responseCodeFirst, 2); } return(manifestResponse); }