public static void Main()
Console.WriteLine("Hello World");
public class RioTintoApiProcessor : IApiProcessor
private readonly Logger _logger = LogManager.GetCurrentClassLogger();
private readonly IShipApiClient _shipApiClient;
private readonly IVoyageApiClient _voyageApiClient;
private readonly IVoyageRequest _voyageRequest;
private readonly ICustomerApiClient _customerApiClient;
public RioTintoApiProcessor(
IVoyageRequest voyageRequest,
IShipApiClient shipApiClient,
IVoyageApiClient voyageApiClient,
ICustomerApiClient customerApiClient)
_shipApiClient = shipApiClient;
_voyageApiClient = voyageApiClient;
_voyageRequest = voyageRequest;
_customerApiClient = customerApiClient;
public void ProcessVoyageRequest()
var model = _voyageRequest.GetDataModel();
if (model is RioTintoModel)
var rioTintoModel = model as RioTintoModel;
var ship = GetShip(rioTintoModel.CustomerId, rioTintoModel.Imo, rioTintoModel) ?? CreateShip(rioTintoModel);
VoyageStatus[] statuses = VoyageStatusses.All.Where(a => a.IsMonitoring()).ToArray();
var voyage = GetVoyage(ship.Id, VoyageTypeEnum.MonitoringStandardSubscription, statuses, rioTintoModel);
CreateVoyage(rioTintoModel, ship);
UpdateVoyage(voyage, rioTintoModel);