Merge remote-tracking branch 'upstream/master'
This commit is contained in:
		| @@ -40,9 +40,9 @@ namespace FarmMapsBlight | |||||||
|             var fungicide2 = "{\"ai1\": \"fluazinam\", \"ai2\": \"cymoxanil\", \"ai3\": null, \"code\": \"kunshi\", \"name\": \"kunshi\", \"maxdose\": \"0.5\", \"mindose\": \"0.4\", \"safedays\": \"1\", \"emergence\": false, \"newgrowth\": \"1\", \"contentai1\": \"375\", \"contentai2\": \"250\", \"contentai3\": \"0\", \"fastgrowth\": true, \"contentunit\": \"g/kg\", \"rainfastness\": \"2.5\", \"tuberfilling\": false, \"aidescription\": \"(fluazinam + cymoxanil) 0.5 kg/ha\", \"curativescore\": \"2\", \"dryingtimemax\": \"2\", \"dryingtimemin\": \"1\", \"vracompatible\": true, \"maxapplications\": \"5\", \"preventivescore\": \"2.9\", \"recommendeddose\": \"0.5\", \"tuberprotection\": \"3.3\", \"eradicativescore\": \"1\", \"earlytubersetting\": false, \"protectioncategory\": \"1\", \"applicationrateunit\": \"kg/ha\", \"ctgbregistrationnumber\": \"14371 n\"}"; |             var fungicide2 = "{\"ai1\": \"fluazinam\", \"ai2\": \"cymoxanil\", \"ai3\": null, \"code\": \"kunshi\", \"name\": \"kunshi\", \"maxdose\": \"0.5\", \"mindose\": \"0.4\", \"safedays\": \"1\", \"emergence\": false, \"newgrowth\": \"1\", \"contentai1\": \"375\", \"contentai2\": \"250\", \"contentai3\": \"0\", \"fastgrowth\": true, \"contentunit\": \"g/kg\", \"rainfastness\": \"2.5\", \"tuberfilling\": false, \"aidescription\": \"(fluazinam + cymoxanil) 0.5 kg/ha\", \"curativescore\": \"2\", \"dryingtimemax\": \"2\", \"dryingtimemin\": \"1\", \"vracompatible\": true, \"maxapplications\": \"5\", \"preventivescore\": \"2.9\", \"recommendeddose\": \"0.5\", \"tuberprotection\": \"3.3\", \"eradicativescore\": \"1\", \"earlytubersetting\": false, \"protectioncategory\": \"1\", \"applicationrateunit\": \"kg/ha\", \"ctgbregistrationnumber\": \"14371 n\"}"; | ||||||
|  |  | ||||||
|             List<Spray> sprays = new List<Spray>(); |             List<Spray> sprays = new List<Spray>(); | ||||||
|             sprays.Add(new Spray() { fungicide = JsonConvert.DeserializeObject<Fungicide>(fungicide1), sprayTime = new DateTime(2020, 6, 24), dose = 0.6, isVRA = false }); |             sprays.Add(new Spray() { fungicide = JsonConvert.DeserializeObject<Fungicide>(fungicide1), sprayTime = new DateTime(2020, 9, 1), dose = 0.6, isVRA = false }); | ||||||
|             sprays.Add(new Spray() { fungicide = JsonConvert.DeserializeObject<Fungicide>(fungicide2), sprayTime = new DateTime(2020, 7, 2), dose = 0.6, isVRA = false }); |             sprays.Add(new Spray() { fungicide = JsonConvert.DeserializeObject<Fungicide>(fungicide2), sprayTime = new DateTime(2020, 9, 1), dose = 0.6, isVRA = false }); | ||||||
|             //sprays.Add(new Spray() { fungicideCode = "FLEX", SprayTime = new DateTime(2020, 7, 1), dose = 0.6, isVRA = false }); |  | ||||||
|             taskRequest.attributes["sprays"] = JsonConvert.SerializeObject(sprays); |             taskRequest.attributes["sprays"] = JsonConvert.SerializeObject(sprays); | ||||||
|  |  | ||||||
|             List<Irrigation> irrigations = new List<Irrigation>(); |             List<Irrigation> irrigations = new List<Irrigation>(); | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ | |||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <None Update="appsettings.json"> |     <None Update="appsettings.json"> | ||||||
|       <CopyToOutputDirectory>>always</CopyToOutputDirectory> |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||||
|     </None> |     </None> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,10 @@ | |||||||
| using System.Collections.Generic; | using System.Collections.Generic; | ||||||
| using System.Text; | using System.Text; | ||||||
|  |  | ||||||
| namespace FarmMapsBlight.Models { | namespace FarmMapsBlight.Models | ||||||
|     public class Fungicide { | { | ||||||
|  |     public class Fungicide | ||||||
|  |     { | ||||||
|         public string code { get; set; } |         public string code { get; set; } | ||||||
|         public string name { get; set; } |         public string name { get; set; } | ||||||
|         public string ctgbregistrationnumber { get; set; } |         public string ctgbregistrationnumber { get; set; } | ||||||
| @@ -35,8 +37,10 @@ namespace FarmMapsBlight.Models { | |||||||
|         public bool earlytubersetting { get; set; } |         public bool earlytubersetting { get; set; } | ||||||
|         public bool tuberfilling { get; set; } |         public bool tuberfilling { get; set; } | ||||||
|         public int? safedays { get; set; } |         public int? safedays { get; set; } | ||||||
|         public double takeback { |         public double takeback | ||||||
|             get { |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|                 return curativescore * 6; |                 return curativescore * 6; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -5,7 +5,6 @@ namespace FarmMapsBlight.Models | |||||||
|     public class Spray |     public class Spray | ||||||
|     { |     { | ||||||
|         public DateTime sprayTime { get; set; } |         public DateTime sprayTime { get; set; } | ||||||
|         public string fungicideCode { get; set; } |  | ||||||
|         public Fungicide fungicide { get; set; } |         public Fungicide fungicide { get; set; } | ||||||
|         public double dose { get; set; } |         public double dose { get; set; } | ||||||
|         public bool isVRA { get; set; } |         public bool isVRA { get; set; } | ||||||
|   | |||||||
| @@ -6,13 +6,15 @@ | |||||||
|  |  | ||||||
|     <ItemGroup> |     <ItemGroup> | ||||||
|         <PackageReference Include="Google.Apis" Version="1.44.1" /> |         <PackageReference Include="Google.Apis" Version="1.44.1" /> | ||||||
|         <PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="3.1.2" /> |         <PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="3.1.14" /> | ||||||
|         <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.2" /> |         <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.14" /> | ||||||
|         <PackageReference Include="Microsoft.Extensions.Http" Version="3.1.2" /> |         <PackageReference Include="Microsoft.Extensions.Http" Version="3.1.14" /> | ||||||
|         <PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.2" /> |         <PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.14" /> | ||||||
|         <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.2" /> |         <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.14" /> | ||||||
|         <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.2" /> |         <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.14" /> | ||||||
|         <PackageReference Include="IdentityModel.OidcClient" Version="3.1.2" /> |         <PackageReference Include="IdentityModel.OidcClient" Version="3.1.2" /> | ||||||
|  |         <PackageReference Include="Serilog.AspNetCore" Version="4.1.0" /> | ||||||
|  |         <PackageReference Include="Serilog.Sinks.File" Version="4.1.0" /> | ||||||
|         <PackageReference Include="Winista.MimeDetect" Version="1.0.1" /> |         <PackageReference Include="Winista.MimeDetect" Version="1.0.1" /> | ||||||
|     </ItemGroup> |     </ItemGroup> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,3 +1,4 @@ | |||||||
|  | using System; | ||||||
| using System.Net.Http; | using System.Net.Http; | ||||||
| using System.Threading.Tasks; | using System.Threading.Tasks; | ||||||
| using FarmmapsApi.HttpMessageHandlers; | using FarmmapsApi.HttpMessageHandlers; | ||||||
| @@ -6,6 +7,10 @@ using FarmmapsApi.Services; | |||||||
| using IdentityModel.Client; | using IdentityModel.Client; | ||||||
| using Microsoft.Extensions.Configuration; | using Microsoft.Extensions.Configuration; | ||||||
| using Microsoft.Extensions.DependencyInjection; | using Microsoft.Extensions.DependencyInjection; | ||||||
|  | using Microsoft.Extensions.Logging; | ||||||
|  | using Serilog; | ||||||
|  | using Serilog.Events; | ||||||
|  | using Serilog.Filters; | ||||||
|  |  | ||||||
| namespace FarmmapsApi | namespace FarmmapsApi | ||||||
| { | { | ||||||
| @@ -37,10 +42,12 @@ namespace FarmmapsApi | |||||||
|                 .AddHttpMessageHandler<FarmmapsAuthenticationHandler>() |                 .AddHttpMessageHandler<FarmmapsAuthenticationHandler>() | ||||||
|                 .Services; |                 .Services; | ||||||
|  |  | ||||||
|  |  | ||||||
|             Configure(serviceCollection); |             Configure(serviceCollection); | ||||||
|  |  | ||||||
|             var serviceProvider = serviceCollection.BuildServiceProvider(); |             var serviceProvider = serviceCollection.BuildServiceProvider(); | ||||||
|  |  | ||||||
|  |             ConfigureLogger(serviceProvider); | ||||||
|  |  | ||||||
|             await serviceProvider.GetService<FarmmapsApiService>().AuthenticateAsync(); |             await serviceProvider.GetService<FarmmapsApiService>().AuthenticateAsync(); | ||||||
| //            await serviceProvider.GetService<FarmmapsEventHub>().StartEventHub(); | //            await serviceProvider.GetService<FarmmapsEventHub>().StartEventHub(); | ||||||
|  |  | ||||||
| @@ -48,5 +55,24 @@ namespace FarmmapsApi | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         protected abstract void Configure(IServiceCollection serviceCollection); |         protected abstract void Configure(IServiceCollection serviceCollection); | ||||||
|  |  | ||||||
|  |         private static void ConfigureLogger(IServiceProvider serviceProvider) | ||||||
|  |         { | ||||||
|  |             var isMicrosoftNamespace = Matching.FromSource("Microsoft"); | ||||||
|  |             var isSystem = Matching.FromSource("System"); | ||||||
|  |  | ||||||
|  |             Log.Logger = new LoggerConfiguration() | ||||||
|  |                 .MinimumLevel.Verbose() | ||||||
|  |                 .WriteTo.Logger(l =>  | ||||||
|  |                     l.WriteTo.Logger(l2 => l2 | ||||||
|  |                             .Filter.ByExcluding(v => isMicrosoftNamespace(v) || isSystem(v)) | ||||||
|  |                             .WriteTo.Console()) | ||||||
|  |                     ) | ||||||
|  |                 .WriteTo.File(path: "Logs/log.log", rollingInterval: RollingInterval.Day) | ||||||
|  |                 .CreateLogger(); | ||||||
|  |  | ||||||
|  |             var loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>(); | ||||||
|  |             loggerFactory.AddSerilog(); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @@ -283,7 +283,8 @@ namespace FarmmapsApi.Services | |||||||
|         /// <param name="progressCallback"></param> |         /// <param name="progressCallback"></param> | ||||||
|         /// <returns></returns> |         /// <returns></returns> | ||||||
|         /// <exception cref="FileNotFoundException"></exception> |         /// <exception cref="FileNotFoundException"></exception> | ||||||
|         public async Task<UploadResults> UploadFile(string filePath, string parentItemCode, string geoJsonString, |         public async Task<UploadResults> UploadFile(string filePath, string parentItemCode, | ||||||
|  |             string geoJsonString = null, | ||||||
|             Action<IUploadProgress> progressCallback = null) |             Action<IUploadProgress> progressCallback = null) | ||||||
|         { |         { | ||||||
|             if (!File.Exists(filePath)) |             if (!File.Exists(filePath)) | ||||||
| @@ -301,7 +302,7 @@ namespace FarmmapsApi.Services | |||||||
|                 Name = Path.GetFileName(filePath), |                 Name = Path.GetFileName(filePath), | ||||||
|                 ParentCode = parentItemCode, |                 ParentCode = parentItemCode, | ||||||
|                 Size = uploadStream.Length, |                 Size = uploadStream.Length, | ||||||
|                 Geometry = JObject.Parse(geoJsonString) |                 Geometry = string.IsNullOrEmpty(geoJsonString) ? null : JObject.Parse(geoJsonString) | ||||||
|             }; |             }; | ||||||
|  |  | ||||||
|             using var httpClient = CreateConfigurableHttpClient(_httpClient); |             using var httpClient = CreateConfigurableHttpClient(_httpClient); | ||||||
|   | |||||||
| @@ -51,7 +51,8 @@ namespace FarmmapsApi.Services | |||||||
|                      i.Name.ToLower().Contains(itemName.ToLower())); |                      i.Name.ToLower().Contains(itemName.ToLower())); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         public async Task<Item> UploadZipWithShapeAsync(UserRoot root, string filePath, string itemName, string geoJsonString = null) { |         public async Task<Item> UploadZipWithShapeAsync(UserRoot root, string filePath, string itemName, string geoJsonString = null) | ||||||
|  |         { | ||||||
|             var startUpload = DateTime.UtcNow.AddSeconds(-3); |             var startUpload = DateTime.UtcNow.AddSeconds(-3); | ||||||
|             var result = await _farmmapsApiService.UploadFile(filePath, root.Code, geoJsonString, |             var result = await _farmmapsApiService.UploadFile(filePath, root.Code, geoJsonString, | ||||||
|                 progress => _logger.LogInformation($"Status: {progress.Status} - BytesSent: {progress.BytesSent}")); |                 progress => _logger.LogInformation($"Status: {progress.Status} - BytesSent: {progress.BytesSent}")); | ||||||
| @@ -64,7 +65,8 @@ namespace FarmmapsApi.Services | |||||||
|                      i.Name.ToLower().Contains(itemName.ToLower())); ; |                      i.Name.ToLower().Contains(itemName.ToLower())); ; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         public async Task<Item> ShapeToGeotiff(Item shapeItem) { |         public async Task<Item> ShapeToGeotiff(Item shapeItem) | ||||||
|  |         { | ||||||
|             var startUpload = DateTime.UtcNow.AddSeconds(-3); |             var startUpload = DateTime.UtcNow.AddSeconds(-3); | ||||||
|             await RunAndWaitForTask(shapeItem, "vnd.farmmaps.task.shapetogeotiff"); |             await RunAndWaitForTask(shapeItem, "vnd.farmmaps.task.shapetogeotiff"); | ||||||
|  |  | ||||||
| @@ -74,9 +76,9 @@ namespace FarmmapsApi.Services | |||||||
|         } |         } | ||||||
|  |  | ||||||
|  |  | ||||||
|         public async Task<Item> GeotiffToShape(Item tiffItem) { |         public async Task<Item> GeotiffToShape(Item tiffItem) | ||||||
|             var taskmapRequest = new TaskRequest { TaskType = TASKMAP_TASK }; |         { | ||||||
|              |             var taskmapRequest = new TaskRequest {TaskType = TASKMAP_TASK}; | ||||||
|             taskmapRequest.attributes["cellWidth"] = "3"; |             taskmapRequest.attributes["cellWidth"] = "3"; | ||||||
|             taskmapRequest.attributes["cellHeight"] = "1"; |             taskmapRequest.attributes["cellHeight"] = "1"; | ||||||
|             taskmapRequest.attributes["angle"] = "0"; |             taskmapRequest.attributes["angle"] = "0"; | ||||||
| @@ -163,6 +165,7 @@ namespace FarmmapsApi.Services | |||||||
|             } |             } | ||||||
|             else if (outputType== "shape") { |             else if (outputType== "shape") { | ||||||
|             taskMapItem = await FindChildItemAsync(tiffItem.ParentCode, |             taskMapItem = await FindChildItemAsync(tiffItem.ParentCode, | ||||||
|  |  | ||||||
|                 SHAPE_PROCESSED_ITEMTYPE, itemName); |                 SHAPE_PROCESSED_ITEMTYPE, itemName); | ||||||
|             } |             } | ||||||
|             else |             else | ||||||
|   | |||||||
| @@ -14,9 +14,7 @@ namespace FarmmapsVRApoten | |||||||
|  |  | ||||||
|         protected override void Configure(IServiceCollection serviceCollection) |         protected override void Configure(IServiceCollection serviceCollection) | ||||||
|         { |         { | ||||||
|             serviceCollection.AddLogging(opts => opts |             serviceCollection.AddLogging() | ||||||
|                     .AddConsole() |  | ||||||
|                     .AddFilter("System.Net.Http", LogLevel.Warning)) |  | ||||||
|                 .AddTransient<PotenService>(); |                 .AddTransient<PotenService>(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -27,5 +27,4 @@ | |||||||
| 		<Folder Include="Data" /> | 		<Folder Include="Data" /> | ||||||
| 	</ItemGroup> | 	</ItemGroup> | ||||||
|  |  | ||||||
|  |  | ||||||
| </Project> | </Project> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user