Userhez is lehet már NFC kódot rendelni

This commit is contained in:
2025-04-15 19:42:48 +02:00
parent c51ee750f9
commit e151590860
19 changed files with 243 additions and 123 deletions
+69 -1
View File
@@ -21,7 +21,7 @@ namespace WorkFlowCheck.MAUI.Services
{
private readonly IUserService _userService;
public SyncService(HttpClient httpClient, IConfiguration configuration, AppDbContext dbContext, IMapper mapper, IUserService userService) : base(httpClient, configuration, dbContext, mapper)
public SyncService(HttpClient httpClient, AppDbContext dbContext, IMapper mapper, IUserService userService) : base(httpClient, dbContext, mapper)
{
_userService = userService;
}
@@ -34,6 +34,7 @@ namespace WorkFlowCheck.MAUI.Services
await SyncEquipments_Down(reportProgress);
await SyncCheckListTemplates_Down(reportProgress);
await SyncCheckListHeader_Down(reportProgress);
await SyncUsers_Down(reportProgress);
}
public async Task DownloadAPK(Action<double, string> reportProgress)
{
@@ -404,5 +405,72 @@ namespace WorkFlowCheck.MAUI.Services
}
return retVal;
}
public async Task<ApiResponseDTO<string>> SyncUsers_Up(Action<double, string> reportProgress)
{
var retVal = new ApiResponseDTO<string>();
try
{
await PrepareAuthenticatedRequestAsync();
var userList = await _dbContext.MobileUsers.ToListAsync();
var mobileUserListDTO = _mapper.Map<List<MobileUserDTO>>(userList);
var endpoint = $"{_httpClient.BaseAddress}api/Sync/UpdateAllMobileUser";
var json = JsonConvert.SerializeObject(mobileUserListDTO, new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
var jsonBytes = Encoding.UTF8.GetBytes(json);
var jsonStream = new MemoryStream(jsonBytes);
var progressContent = new ProgressableStreamContent(jsonStream, 8192, (uploaded, total) =>
{
double percentage = (double)uploaded / total * 100;
reportProgress(percentage, "Beküldés...");
});
progressContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
using (HttpResponseMessage httpResponseMessage = await _httpClient.PostAsync(endpoint, progressContent))
{
httpResponseMessage.EnsureSuccessStatusCode();
var jsonString = await httpResponseMessage.Content.ReadAsStringAsync();
retVal = JsonConvert.DeserializeObject<ApiResponseDTO<string>>(jsonString);
}
}
catch (Exception ex)
{
retVal.IsSuccess = false;
retVal.Errors.Add(ex.Message);
}
return retVal;
}
public async Task SyncUsers_Down(Action<double, string> reportProgress)
{
try
{
string endpoint = $"{_httpClient.BaseAddress}api/Sync/GetAllMobileUsers";
var responseList = DownloadDataAsync<MobileUserDTO>(endpoint, reportProgress).Result;
if (responseList != null)
{
if (responseList.IsSuccess)
{
var entityList = await _dbContext.MobileUsers.ToListAsync();
var missingItems = responseList.Data.Where(f => !entityList.Any(s => s.Id == f.Id)).ToList();
var mappedMissingItems = _mapper.Map<List<MobileUser>>(missingItems);
_dbContext.MobileUsers.AddRange(mappedMissingItems);
await _dbContext.SaveChangesAsync();
}
}
}
catch (Exception ex)
{
// Hiba visszaadása
}
}
}
}