private void LoadRates(XmlNode inputNode, GridDescriptor gridDescriptor, Dictionary <int, TreatmentZone> treatmentZones, RasterGridPrescription prescription) { prescription.LossOfGpsRate = LoadRateFromTreatmentZones(inputNode.GetXmlNodeValue("@I"), treatmentZones).FirstOrDefault(); prescription.OutOfFieldRate = LoadRateFromTreatmentZones(inputNode.GetXmlNodeValue("@J"), treatmentZones).FirstOrDefault(); if (gridDescriptor.TreatmentZones != null) { var treatmentZone = treatmentZones.FindById(gridDescriptor.TreatmentZones.First()); if (treatmentZone == null) { return; } LoadProducts(treatmentZone, prescription); LoadRateUnits(treatmentZone, prescription); prescription.Rates = LoadRatesFromTreatmentZones(gridDescriptor, treatmentZones, prescription.ProductIds, prescription); } else if (gridDescriptor.ProductRates != null) { var treatmentZoneTemplate = treatmentZones.FindById(gridDescriptor.ProductRateTemplateId); if (treatmentZoneTemplate == null) { return; } LoadProducts(treatmentZoneTemplate, prescription); LoadRateUnits(treatmentZoneTemplate, prescription); prescription.Rates = LoadRatesFromProducts(gridDescriptor, prescription.ProductIds, prescription); } }
private static List <RxRates> LoadRatesFromTreatmentZones(GridDescriptor gridDescriptor, Dictionary <int, TreatmentZone> treatmentZones, List <int> productIds, RasterGridPrescription prescription) { var rates = new List <RxRates>(); foreach (var treatmentZoneId in gridDescriptor.TreatmentZones) { var treatmentZone = treatmentZones.FindById(treatmentZoneId); if (treatmentZone == null) { return(null); } var rate = new RxRates { RxRate = new List <RxRate>() }; for (int i = 0; i < treatmentZone.Variables.Count; i++) { var dataVariable = treatmentZone.Variables[i]; AddRate(productIds[i], dataVariable.Value, rate, prescription, treatmentZone.Variables[i].IsoUnit.ToAdaptUnit()); } rates.Add(rate); } return(rates); }
private List <DataVariable> GetDataVariables(XmlNode inputNode) { var dataVariables = new List <DataVariable>(); int treatmentZoneId; if (!inputNode.GetXmlNodeValue("@J").ParseValue(out treatmentZoneId)) { return(dataVariables); } _descriptor.ProductRateTemplateId = treatmentZoneId; var treatmentZone = _treatmentZones.FindById(treatmentZoneId); if (treatmentZone == null || treatmentZone.Variables == null) { return(dataVariables); } return(treatmentZone.Variables); }
private void LoadRates(XmlNode inputNode, GridDescriptor gridDescriptor, Dictionary<int, TreatmentZone> treatmentZones, RasterGridPrescription prescription) { prescription.LossOfGpsRate = LoadRateFromTreatmentZones(inputNode.GetXmlNodeValue("@I"), treatmentZones).FirstOrDefault(); prescription.OutOfFieldRate = LoadRateFromTreatmentZones(inputNode.GetXmlNodeValue("@J"), treatmentZones).FirstOrDefault(); if (gridDescriptor.TreatmentZones != null) { var treatmentZone = treatmentZones.FindById(gridDescriptor.TreatmentZones.First()); if (treatmentZone == null) return; LoadProducts(treatmentZone, prescription); LoadRateUnits(treatmentZone, prescription); prescription.Rates = LoadRatesFromTreatmentZones(gridDescriptor, treatmentZones, prescription.ProductIds, prescription); } else if (gridDescriptor.ProductRates != null) { var treatmentZoneTemplate = treatmentZones.FindById(gridDescriptor.ProductRateTemplateId); if (treatmentZoneTemplate == null) return; LoadProducts(treatmentZoneTemplate, prescription); LoadRateUnits(treatmentZoneTemplate, prescription); prescription.Rates = LoadRatesFromProducts(gridDescriptor, prescription.ProductIds, prescription); } }
private static List<RxRates> LoadRatesFromTreatmentZones(GridDescriptor gridDescriptor, Dictionary<int, TreatmentZone> treatmentZones, List<int> productIds, RasterGridPrescription prescription) { var rates = new List<RxRates>(); foreach (var treatmentZoneId in gridDescriptor.TreatmentZones) { var treatmentZone = treatmentZones.FindById(treatmentZoneId); if (treatmentZone == null) return null; var rate = new RxRates { RxRate = new List<RxRate>() }; for (int i = 0; i < treatmentZone.Variables.Count; i++) { var dataVariable = treatmentZone.Variables[i]; AddRate(productIds[i], dataVariable.Value, rate, prescription, treatmentZone.Variables[i].IsoUnit.ToAdaptUnit()); } rates.Add(rate); } return rates; }
public static void ReplyToRequest(this TcpClient client, Request req, Dictionary <int, string> category) { bool success; bool previous; List <string> res = new List <string>(); var method = VerifyMethod(req); var path = VerifyPath(req); var date = VerifyDate(req); var body = VerifyBody(req); switch (path) { case 1: res.Add($"{ (Reason)1 } path"); success = false; break; case 2: res.Add($"{ (Reason)2 } path"); success = false; break; default: success = true; break; } previous = success; switch (date) { case 1: res.Add($"{ (Reason)1 } date"); success = false; break; case 2: res.Add($"{ (Reason)2 } date"); success = false; break; default: success = true; break; } previous = previous & success; switch (body) { case 1: res.Add($"{ (Reason)1 } body"); success = false; break; case 2: res.Add($"{ (Reason)2 } body"); success = false; break; default: success = true; break; } previous = previous & success; switch (method) { case 1: res.Add($"{ (Reason)1 } method"); success = false; break; case 2: res.Add($"{ (Reason)2 } method"); success = false; break; default: success = true; break; } previous = previous & success; success = previous; if (success) { if (method == 3) { var newEl = JsonSerializer.Deserialize <Category>(req.Body, new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }); category.Insert(newEl.Name); var response = new { Status = $"{ (int)StatusCode.Created} Created", Body = new { cid = category.Keys.Last(), name = newEl.Name }.ToJson() }; client.SendResponse(response.ToJson()); } else if (method == 4) { string[] str = req.Path.Split("/", StringSplitOptions.RemoveEmptyEntries); var id = int.Parse(str[str.Length - 1]); var newEl = JsonSerializer.Deserialize <Category>(req.Body, new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }); if (id != newEl.Id) { var response = new { Status = $"{ (int)StatusCode.Not_Found} Not Found" }; client.SendResponse(response.ToJson()); } else { if (category.Update(newEl.Id, newEl.Name)) { var response = new { Status = $"{ (int)StatusCode.Updated} Updated" }; client.SendResponse(response.ToJson()); } else { var response = new { Status = $"{ (int)StatusCode.Not_Found} Not Found" }; client.SendResponse(response.ToJson()); } } } else if (method == 0) { if (req.Method.ToLower() == "read") { string [] str = req.Path.Split("/", StringSplitOptions.RemoveEmptyEntries); bool parsenum = int.TryParse(str[str.Length - 1], out int id); if (!parsenum) { var response = new { Status = $"{ (int)StatusCode.Ok} Ok", Body = GetAll(category) }; client.SendResponse(response.ToJson()); } else { if (category.FindById(id) == "") { var response = new { Status = $"{ (int)StatusCode.Not_Found} Not Found" }; client.SendResponse(response.ToJson()); } else { var response = new { Status = $"{ (int)StatusCode.Ok} Ok", Body = new { cid = id, name = category.FindById(id) }.ToJson() }; client.SendResponse(response.ToJson()); } } } else if (req.Method.ToLower() == "delete") { string[] str = req.Path.Split("/", StringSplitOptions.RemoveEmptyEntries); var id = int.Parse(str[str.Length - 1]); if (category.Delete(id)) { var response = new { Status = $"{ (int)StatusCode.Ok} Ok" }; client.SendResponse(response.ToJson()); } else { var response = new { Status = $"{ (int)StatusCode.Not_Found} Not Found" }; client.SendResponse(response.ToJson()); } } else if (req.Method.ToLower() == "echo") { var response = new { Status = $"{ (int)StatusCode.Ok} Ok", req.Body }; client.SendResponse(response.ToJson()); } } } else { if (res.ToArray().Length > 1) { var response = new { Status = $"{ (int)StatusCode.Bad_Request} bad request {String.Join(", ", res.ToArray())}" }; client.SendResponse(response.ToJson()); } else { var response = new { Status = $"{ (int)StatusCode.Bad_Request} bad request" }; client.SendResponse(response.ToJson()); } Console.WriteLine(res.ToArray().Length); } Thread.Sleep(100); }