-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAnwesenheitsListeController.cs
More file actions
61 lines (50 loc) · 2.46 KB
/
Copy pathAnwesenheitsListeController.cs
File metadata and controls
61 lines (50 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AnwesenheitsListeErweiterung.Models;
using AnwesenheitsListeErweiterung.PxRestApi;
namespace AnwesenheitsListeErweiterung
{
[Route("[controller]")]
public class AnwesenheitsListeController : Controller
{
private readonly IPxRestApiClient HttpClient;
public AnwesenheitsListeController(IPxRestApiClient httpclient) {
this.HttpClient = httpclient;
}
[HttpGet]
public async Task<IActionResult> Get() {
var responseMitarbeiter = await this.HttpClient.GetAsync("pxapi/v2/PRO/Mitarbeiter", "fields=MitarbeiterNr,Name");
if(responseMitarbeiter.StatusCode != 200) {
return StatusCode(responseMitarbeiter.StatusCode, responseMitarbeiter.Body);
}
var mitarbeiterList = responseMitarbeiter.Body.ToObject<Mitarbeiter[]>();
var attendanceList = new List<Anwesenheit>();
foreach (var mitarbeiter in mitarbeiterList) {
var attendanceListEntry = new Anwesenheit();
// Mitarbeiter Name
attendanceListEntry.MitarbeiterName = mitarbeiter.Name;
// Stempelstatus beschaffen
var responseStempelstatus = await this.HttpClient.GetAsync("pxapi/v2/ZEI/Stempel", $"fields=Eingestempelt,EinstempelnZeitpunkt&mitarbeiter={mitarbeiter.MitarbeiterNr}");
if (responseStempelstatus.StatusCode != 200) {
return StatusCode(responseStempelstatus.StatusCode, responseStempelstatus.Body);
}
var stempelstatus = responseStempelstatus.Body.ToObject<Stempel>();
// Eingestempelt
attendanceListEntry.Eingestempelt = stempelstatus.Eingestempelt;
// Dauer berechnen
if (DateTime.TryParse(stempelstatus.EinstempelnZeitpunkt, out var einstempelZeitpunkt)) {
var dauer = DateTime.Now - einstempelZeitpunkt;
attendanceListEntry.Dauer = $"{dauer.Hours}h {dauer.Minutes}min {dauer.Seconds}s";
} else {
attendanceListEntry.Dauer = "";
}
attendanceList.Add(attendanceListEntry);
}
return Ok(attendanceList);
}
}
}