start.bat added
This commit is contained in:
2023-08-08 12:05:06 +02:00
parent ee6eb210b7
commit 2de8b4adde
36 changed files with 8 additions and 3 deletions

View File

@@ -0,0 +1,105 @@
using System.Runtime.Serialization;
using System.Text;
using ConsoleApp3.DataContracts;
using Newtonsoft.Json;
namespace CardmarketBot
{
class SevdeskService
{
private readonly HttpClient _client;
private readonly Random _random = new();
public SevdeskService(string key)
{
_client = new HttpClient
{
DefaultRequestHeaders =
{
{ "Authorization", "7251554968610b78ca865b2b774b4134" },
{ "Accept", "application/json" }
}
};
}
public async void Create(ModelRechnung rechnung)
{
if (rechnung.Invoice == null) return;
rechnung.Invoice.InvoiceNumber = string.Format("RE-{0}", await GetNextInvoiceNumber());
await WriteInv(rechnung);
}
private async Task<bool> WriteInv(ModelRechnung invoice)
{
var uri = "https://my.sevdesk.de/api/v1/Invoice/Factory/saveInvoice";
var t = JsonConvert.SerializeObject(invoice);
var content = new StringContent(JsonConvert.SerializeObject(invoice),Encoding.UTF8, "application/json");
var resp = await _client.PostAsync(uri, content);
//Console.WriteLine(resp.EnsureSuccessStatusCode());
var contents = await resp.Content.ReadAsStringAsync();
return true;
}
private async Task<Invoices> GetInvoiceAsync(string id)
{
//var uri = LexofficeApiAddressesBuilder.InvoiceUri(id);
var uri = "https://my.sevdesk.de/api/v1/Invoice/56501411/getPositions";
var response = await _client.GetAsync(uri).ConfigureAwait(false);
response.EnsureSuccessStatusCode();
var contents = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
var jsonSerializerSettings = new JsonSerializerSettings
{
MissingMemberHandling = MissingMemberHandling.Ignore
};
#pragma warning disable CS8603 // Mögliche Nullverweisrückgabe.
return JsonConvert.DeserializeObject<Invoices>(contents, jsonSerializerSettings);
#pragma warning restore CS8603 // Mögliche Nullverweisrückgabe.
}
private async Task<string> GetNextInvoiceNumber()
{
var uri = "https://my.sevdesk.de/api/v1/SevSequence/Factory/getByType?objectType=Invoice&type=RE";
var response = await _client.GetAsync(uri).ConfigureAwait(false);
response.EnsureSuccessStatusCode();
var contents = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
var jsonSerializerSettings = new JsonSerializerSettings
{
MissingMemberHandling = MissingMemberHandling.Ignore
};
var ob = JsonConvert.DeserializeObject<RNumbers>(contents, jsonSerializerSettings);
if (ob == null) return "";
if (ob.ConfigRechnungsnummer == null) return "";
return ob.ConfigRechnungsnummer.NextNumber;
}
}
[DataContract]
class RNumbers
{
[JsonProperty("objects")] public ConfigRechnungnummer? ConfigRechnungsnummer { get; set; }
}
[DataContract]
class ConfigRechnungnummer
{
[DataMember(Name = "format", EmitDefaultValue = false)]
[JsonProperty(PropertyName = "format")]
public string Format { get; set; } = "";
[DataMember(Name = "nextSequence", EmitDefaultValue = false)]
[JsonProperty(PropertyName = "nextSequence")]
public string NextNumber { get; set; } = "";
}
}