Skip to content

Commit

Permalink
Completed maintenance record Http client
Browse files Browse the repository at this point in the history
  • Loading branch information
davewalker5 committed Mar 12, 2024
1 parent 863255d commit a99d223
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 0 deletions.
70 changes: 70 additions & 0 deletions src/DroneFlightLog.Mvc/Api/MaintenanceRecordClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
Expand Down Expand Up @@ -33,5 +35,73 @@ public async Task<MaintenanceRecord> GetMaintenanceRecordAsync(int recordId)
MaintenanceRecord maintenanceRecord = JsonConvert.DeserializeObject<MaintenanceRecord>(json);
return maintenanceRecord;
}

/// <summary>
/// Retrieve all maintenance records for a drone
/// </summary>
/// <param name="droneId"></param>
/// <returns></returns>
public async Task<List<MaintenanceRecord>> GetMaintenanceRecordsForDoneAsync(int droneId)
{
string baseRoute = _settings.Value.ApiRoutes.First(r => r.Name == RouteKey).Route;
string route = $"{baseRoute}/drone/{droneId}";
string json = await SendDirectAsync(route, null, HttpMethod.Get);
List<MaintenanceRecord> maintenanceRecords = JsonConvert.DeserializeObject<List<MaintenanceRecord>>(json);
return maintenanceRecords;
}

/// <summary>
/// Create a new maintenance record
/// </summary>
/// <param name="maintainerId"></param>
/// <param name="droneId"></param>
/// <param name="date"></param>
/// <param name="description"></param>
/// <param name="notes"></param>
/// <returns></returns>
public async Task<MaintenanceRecord> AddMaintenanceRecordAsync(int maintainerId, int droneId, DateTime date, string description, string notes)
{
dynamic template = new
{
MaintainerId = maintainerId,
DroneId = droneId,
DateCompleted = date,
Description = description,
Notes = notes
};

string data = JsonConvert.SerializeObject(template);
string json = await SendIndirectAsync(RouteKey, data, HttpMethod.Post);
MaintenanceRecord maintenanceRecord = JsonConvert.DeserializeObject<MaintenanceRecord>(json);
return maintenanceRecord;
}

/// <summary>
/// Update an existing maintenance record
/// </summary>
/// <param name="id"></param>
/// <param name="maintainerId"></param>
/// <param name="droneId"></param>
/// <param name="date"></param>
/// <param name="description"></param>
/// <param name="notes"></param>
/// <returns></returns>
public async Task<MaintenanceRecord> UpdateMaintenanceRecordAsync(int id, int maintainerId, int droneId, DateTime date, string description, string notes)
{
dynamic template = new
{
Id = id,
MaintainerId = maintainerId,
DroneId = droneId,
DateCompleted = date,
Description = description,
Notes = notes
};

string data = JsonConvert.SerializeObject(template);
string json = await SendIndirectAsync(RouteKey, data, HttpMethod.Put);
MaintenanceRecord maintenanceRecord = JsonConvert.DeserializeObject<MaintenanceRecord>(json);
return maintenanceRecord;
}
}
}
1 change: 1 addition & 0 deletions src/DroneFlightLog.Mvc/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ public void ConfigureServices(IServiceCollection services)
services.AddHttpClient<FlightSearchClient>();
services.AddHttpClient<FlightClient>();
services.AddHttpClient<MaintainersClient>();
services.AddHttpClient<MaintenanceRecordClient>();

// Configure session state for token storage
services.AddSession(options =>
Expand Down

0 comments on commit a99d223

Please sign in to comment.