Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Riepma 2021-04-21 10:17:24 +02:00
commit 462e66baea
10 changed files with 60 additions and 28 deletions

View File

@ -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>();

View File

@ -11,7 +11,7 @@
<ItemGroup> <ItemGroup>
<None Update="appsettings.json"> <None Update="appsettings.json">
<CopyToOutputDirectory>>always</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
</ItemGroup> </ItemGroup>

View File

@ -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;
} }
} }

View File

@ -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; }

View File

@ -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>

View File

@ -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();
}
} }
} }

View File

@ -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);

View File

@ -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

View File

@ -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>();
} }
} }

View File

@ -27,5 +27,4 @@
<Folder Include="Data" /> <Folder Include="Data" />
</ItemGroup> </ItemGroup>
</Project> </Project>