forked from FarmMaps/FarmMapsApiClient
		
	zonering most basic flow
This commit is contained in:
		@@ -1,5 +1,12 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using FarmmapsApi.Models;
 | 
			
		||||
using FarmmapsApi.Services;
 | 
			
		||||
using FarmmapsHaulmkilling.Models;
 | 
			
		||||
using FarmmapsZonering.Models;
 | 
			
		||||
using Microsoft.Extensions.Logging;
 | 
			
		||||
using static FarmmapsApi.Extensions;
 | 
			
		||||
using static FarmmapsApiSamples.Constants;
 | 
			
		||||
 | 
			
		||||
namespace FarmmapsZonering.Services
 | 
			
		||||
{
 | 
			
		||||
@@ -16,5 +23,40 @@ namespace FarmmapsZonering.Services
 | 
			
		||||
            _farmmapsApiService = farmmapsApiService;
 | 
			
		||||
            _generalService = generalService;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public async Task<Item> CreateApplicationMapAsync(Item cropfieldItem, string formula, Output output, params InputParameter[] inputItemCodes)
 | 
			
		||||
        {
 | 
			
		||||
            var zoneringTaskRequest = new TaskRequest() {TaskType = VRAZONERING_TASK};
 | 
			
		||||
            var taskCode = await _farmmapsApiService.QueueTaskAsync(cropfieldItem.Code, zoneringTaskRequest);
 | 
			
		||||
            
 | 
			
		||||
            await PollTask(TimeSpan.FromSeconds(5), async (tokenSource) =>
 | 
			
		||||
            {
 | 
			
		||||
                var itemTaskStatus = await _farmmapsApiService.GetTaskStatusAsync(cropfieldItem.Code, taskCode);
 | 
			
		||||
                _logger.LogInformation($"Waiting on calculation of application map; Status: {itemTaskStatus.State}");
 | 
			
		||||
                if (itemTaskStatus.IsFinished)
 | 
			
		||||
                    tokenSource.Cancel();
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            var itemTask = await _farmmapsApiService.GetTaskStatusAsync(cropfieldItem.Code, taskCode);
 | 
			
		||||
            if (itemTask.State == ItemTaskState.Error)
 | 
			
		||||
            {
 | 
			
		||||
                _logger.LogError($"Something went wrong with task execution: {itemTask.Message}");
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            var itemName = $"VRAZonering";
 | 
			
		||||
            var applianceMapItem = await _generalService.FindChildItemAsync(cropfieldItem.Code,
 | 
			
		||||
                GEOTIFF_PROCESSED_ITEMTYPE, itemName,
 | 
			
		||||
                i => i.Updated >= itemTask.Finished.GetValueOrDefault(DateTime.UtcNow) &&
 | 
			
		||||
                     i.Name.ToLower().Contains(itemName.ToLower()));
 | 
			
		||||
 | 
			
		||||
            if (applianceMapItem == null)
 | 
			
		||||
            {
 | 
			
		||||
                _logger.LogError("Could not find the VRAZonering geotiff child item under cropfield");
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return applianceMapItem;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user